/*
* Copyright 2008-2014 the original author or authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kaleidofoundry.core.config;
import static java.lang.System.out;
import org.kaleidofoundry.core.context.Context;
/**
* <p>
* <h3>Simple configuration usage</h3> Inject {@link Configuration} context and instance using {@link Context} annotation without parameters
* </p>
* <p>
* The following java env. variable have been set :
*
* <pre>
* -Dkaleido.configurations=myConfig=classpath:/config/myContext.properties
* </pre>
*
* Configuration resource file : "classpath:/config/myConfig.properties" contains :
*
* <pre>
*
* # your application properties
* myapp.name=my new application
* myapp.admin.email=myadmin@mysociete.com
* myapp.sample.date=2010-12-01T02:45:30
* myapp.sample.float=123.45
* myapp.sample.boolean=false
* </pre>
*
* Context resource file : "classpath:/config/myContext.properties" contains :
*
* <pre>
*
* # simple configuration context properties
* configurations.myConfig.readonly=true
* configurations.myConfig.fileStoreUri=classpath:/config/myConfig.properties
*
* # simple configuration context (optional) - used for cache manager policies
* #configurations.myConfig.cacheManagerRef=myCacheManager
* cacheManagers.myCacheManager.providerCode=ehCache
* cacheManagers.myCacheManager.fileStoreUri=classpath:/config/ehcache.xml
*
*
*
*
*
* # http configuration context properties
* configurations.myHttpConfig.readonly=true
* configurations.myHttpConfig.fileStoreUri=http://localhost:8380/kaleido-it/config/myHttpConfig.properties
*
* # http configuration context (optional) - used for file store (proxy or other parameters...)
* #configurations.myHttpConfig.fileStoreRef=myConfigStore
* fileStores.myConfigStore.readonly=false
* fileStores.myConfigStore.connectTimeout=1500
* fileStores.myConfigStore.readTimeout=10000
* fileStores.myConfigStore.proxySet=false
* #fileStores.myConfigStore.proxyHost=yourProxyHost
* #fileStores.myConfigStore.proxyUser=yourProxyUser
* #fileStores.myConfigStore.proxyPassword=proxyUserPassword
*
*
* </pre>
*
* </p>
*
* @author jraduget
* @see ConfigurationContextBuilder
*/
public class ConfigurationSample01 {
@Context
private Configuration myConfig;
/**
* a sample method, using injected configuration
*/
public void echo() {
// you can use several configuration key syntax like : { "myapp.name" , "//myapp/name" , "myapp/name" }
out.printf("application name: %s\n", myConfig.getString("myapp.name"));
out.printf("application admin mail : %s\n", myConfig.getString("myapp.admin.email"));
out.printf("date sample: %s\n", myConfig.getString("myapp.sample.date"));
out.printf("date typed sample: %s\n", myConfig.getDate("myapp.sample.date"));
out.printf("float sample : %s\n", myConfig.getString("myapp.sample.float"));
out.printf("float typed sample : %s\n", myConfig.getFloat("myapp.sample.float"));
out.printf("boolean sample : %s\n", myConfig.getString("myapp.sample.boolean"));
out.printf("boolean typed sample : %s\n", myConfig.getBoolean("myapp.sample.boolean"));
out.println("keys:");
for (final String key : myConfig.keySet()) {
out.printf("\tkey=%s\n", key);
}
}
/**
* used only for junit assertions
*
* @return current configuration instance
*/
Configuration getConfiguration() {
return myConfig;
}
}