class AppConstants extends Properties implements Serializable {

	public String getResolvedProperty(String key) {
		String value = null;
		value=getSystemProperty(key); // first try custom properties
		if (value==null) {
			value = super.getProperty(key); // then try DeploymentSpecifics and appConstants
		}
		if (value != null) {
			try {
				String result=StringResolver.substVars(value, this);
				if (log.isTraceEnabled()) {
					if (!value.equals(result)){
						log.trace("resolved key ["+key+"], value ["+value+"] to ["+result+"]");
					}

				}
				return result;
			} catch (IllegalArgumentException e) {
				log.error("Bad option value [" + value + "].", e);
				return value;
			}
		} else {
			if (log.isTraceEnabled()) log.trace("getResolvedProperty: key ["+key+"] resolved to value ["+value+"]");
			return null;
		}
	}

}

class AppConstantsTest {

	private Logger log;
	private ClassLoaderMock classLoader;
	private AppConstants constants;
	private ClassLoader contextClassLoader;

	@Test
	public void onlyInAppConstants() {

		assertEquals("1", constants.getResolvedProperty("only.in.appconstants"));
	}

}