You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sirona.apache.org by rm...@apache.org on 2013/11/13 09:09:47 UTC

svn commit: r1541417 [1/2] - in /incubator/sirona/trunk: agent/performance/aop/src/main/java/org/apache/sirona/aop/ agent/performance/web/src/main/java/org/apache/sirona/web/lifecycle/ agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/reposi...

Author: rmannibucau
Date: Wed Nov 13 08:09:46 2013
New Revision: 1541417

URL: http://svn.apache.org/r1541417
Log:
splitting Configuration in Configuration and IoCs - I dont think we need a SPI here (would induce an overhead we don't want)

Added:
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/AutoSet.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/Created.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/Destroying.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java
Modified:
    incubator/sirona/trunk/agent/performance/aop/src/main/java/org/apache/sirona/aop/SironaProxyFactory.java
    incubator/sirona/trunk/agent/performance/web/src/main/java/org/apache/sirona/web/lifecycle/SironaLifecycle.java
    incubator/sirona/trunk/agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/repository/PullRepository.java
    incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeBuilder.java
    incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeCounterDataStore.java
    incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeDataStoreFactory.java
    incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeGaugeDataStore.java
    incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeNodeStatusDataStore.java
    incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteBuilder.java
    incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteCounterDataStore.java
    incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteDataStoreFactory.java
    incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteGaugeDataStore.java
    incubator/sirona/trunk/agent/store/graphite/src/test/java/org/apache/sirona/graphite/GraphiteTestBase.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/Configuration.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/DefaultGaugeManager.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/DefaultRepository.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/Repository.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/SPI.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/DefaultDataStoreFactory.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/counter/BatchCounterDataStore.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/gauge/AggregatedGaugeDataStoreAdapter.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/status/PeriodicNodeStatusDataStore.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/Environment.java
    incubator/sirona/trunk/server/collector/src/main/java/org/apache/sirona/collector/server/Collector.java
    incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/CubeDataStoreCompatibilityTest.java
    incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/HttpCollectorTest.java
    incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/RegistrationTest.java
    incubator/sirona/trunk/server/plugins/tomee/agent/src/test/java/org/apache/sirona/tomee/agent/GaugesTest.java
    incubator/sirona/trunk/server/plugins/tomee/agent/src/test/java/org/apache/sirona/tomee/agent/ValidationsTest.java
    incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/SironaController.java
    incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/graph/Line.java
    incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/handler/internal/EndpointInfo.java
    incubator/sirona/trunk/server/reporting/src/test/java/org/apache/sirona/reporting/template/StatusTest.java
    incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/CassandraBuilder.java
    incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/CassandraSirona.java
    incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CassandraCollectorCounterDataStore.java
    incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/gauge/CassandraCollectorGaugeDataStore.java
    incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/status/CassandraCollectorNodeStatusDataStore.java
    incubator/sirona/trunk/server/store/cassandra/src/test/java/org/apache/sirona/cassandra/framework/CassandraRunner.java
    incubator/sirona/trunk/src/site/markdown/configuration.md

Modified: incubator/sirona/trunk/agent/performance/aop/src/main/java/org/apache/sirona/aop/SironaProxyFactory.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/performance/aop/src/main/java/org/apache/sirona/aop/SironaProxyFactory.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/performance/aop/src/main/java/org/apache/sirona/aop/SironaProxyFactory.java (original)
+++ incubator/sirona/trunk/agent/performance/aop/src/main/java/org/apache/sirona/aop/SironaProxyFactory.java Wed Nov 13 08:09:46 2013
@@ -16,10 +16,10 @@
  */
 package org.apache.sirona.aop;
 
-import org.apache.sirona.configuration.Configuration;
-import org.apache.sirona.util.ClassLoaders;
 import org.apache.commons.proxy.Invoker;
 import org.apache.commons.proxy.ProxyFactory;
+import org.apache.sirona.configuration.ioc.IoCs;
+import org.apache.sirona.util.ClassLoaders;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -27,7 +27,7 @@ import java.lang.reflect.Method;
 public final class SironaProxyFactory {
     public static <T> T monitor(final Class<T> clazz, final Object instance) {
         return clazz.cast(
-            Configuration.findOrCreateInstance(ProxyFactory.class)
+            IoCs.findOrCreateInstance(ProxyFactory.class)
                 .createInvokerProxy(ClassLoaders.current(), new SironaPerformanceHandler(instance), new Class<?>[]{clazz}));
     }
 

Modified: incubator/sirona/trunk/agent/performance/web/src/main/java/org/apache/sirona/web/lifecycle/SironaLifecycle.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/performance/web/src/main/java/org/apache/sirona/web/lifecycle/SironaLifecycle.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/performance/web/src/main/java/org/apache/sirona/web/lifecycle/SironaLifecycle.java (original)
+++ incubator/sirona/trunk/agent/performance/web/src/main/java/org/apache/sirona/web/lifecycle/SironaLifecycle.java Wed Nov 13 08:09:46 2013
@@ -16,12 +16,12 @@
  */
 package org.apache.sirona.web.lifecycle;
 
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 
-// needs to be activate when commons-monitoring-core is in a webapp
+// needs to be activate when sirona-core is in a webapp
 public class SironaLifecycle implements ServletContextListener {
     @Override
     public void contextInitialized(final ServletContextEvent sce) {
@@ -30,6 +30,6 @@ public class SironaLifecycle implements 
 
     @Override
     public void contextDestroyed(final ServletContextEvent sce) {
-        Configuration.shutdown();
+        IoCs.shutdown();
     }
 }

Modified: incubator/sirona/trunk/agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/repository/PullRepository.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/repository/PullRepository.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/repository/PullRepository.java (original)
+++ incubator/sirona/trunk/agent/pull/src/main/java/org/apache/sirona/agent/webapp/pull/repository/PullRepository.java Wed Nov 13 08:09:46 2013
@@ -17,7 +17,7 @@
 package org.apache.sirona.agent.webapp.pull.repository;
 
 import org.apache.sirona.agent.webapp.pull.gauge.PullGaugeManager;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.cube.Cube;
 import org.apache.sirona.cube.CubeBuilder;
 import org.apache.sirona.cube.MapBuilder;
@@ -41,7 +41,7 @@ public class PullRepository extends Defa
 
     public PullRepository() {
         super(new InMemoryCounterDataStore(), new GaugeDataStoreAdapter(), new EmptyStatuses());
-        cube = Configuration.findOrCreateInstance(CubeBuilder.class).build();
+        cube = IoCs.findOrCreateInstance(CubeBuilder.class).build();
     }
 
     @Override

Modified: incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeBuilder.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeBuilder.java (original)
+++ incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeBuilder.java Wed Nov 13 08:09:46 2013
@@ -17,7 +17,7 @@
 package org.apache.sirona.cube;
 
 import org.apache.sirona.SironaException;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.AutoSet;
 
 import javax.net.ssl.KeyManager;
 import javax.net.ssl.KeyManagerFactory;
@@ -31,7 +31,7 @@ import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.security.KeyStore;
 
-@Configuration.AutoSet
+@AutoSet
 public class CubeBuilder {
     private static final String DEFAULT_MARKER = "sirona";
 

Modified: incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeCounterDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeCounterDataStore.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeCounterDataStore.java (original)
+++ incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeCounterDataStore.java Wed Nov 13 08:09:46 2013
@@ -16,14 +16,14 @@
  */
 package org.apache.sirona.cube;
 
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.store.counter.BatchCounterDataStore;
 
 import java.util.Collection;
 
 public class CubeCounterDataStore extends BatchCounterDataStore {
-    private final Cube cube = Configuration.findOrCreateInstance(CubeBuilder.class).build();
+    private final Cube cube = IoCs.findOrCreateInstance(CubeBuilder.class).build();
 
     @Override
     protected synchronized void pushCountersByBatch(final Collection<Counter> instances) {

Modified: incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeDataStoreFactory.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeDataStoreFactory.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeDataStoreFactory.java (original)
+++ incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeDataStoreFactory.java Wed Nov 13 08:09:46 2013
@@ -16,14 +16,14 @@
  */
 package org.apache.sirona.cube;
 
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.store.DelegateDataStoreFactory;
 
 public class CubeDataStoreFactory extends DelegateDataStoreFactory {
     public CubeDataStoreFactory() {
         super(
-            Configuration.processInstance(new CubeCounterDataStore()),
+            IoCs.processInstance(new CubeCounterDataStore()),
             new CubeGaugeDataStore(),
-            Configuration.processInstance(new CubeNodeStatusDataStore()));
+            IoCs.processInstance(new CubeNodeStatusDataStore()));
     }
 }

Modified: incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeGaugeDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeGaugeDataStore.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeGaugeDataStore.java (original)
+++ incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeGaugeDataStore.java Wed Nov 13 08:09:46 2013
@@ -17,7 +17,7 @@
 package org.apache.sirona.cube;
 
 import org.apache.sirona.Role;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.gauges.GaugeDataStoreAdapter;
 
 import java.util.logging.Level;
@@ -26,7 +26,7 @@ import java.util.logging.Logger;
 public class CubeGaugeDataStore extends GaugeDataStoreAdapter {
     private static final Logger LOGGER = Logger.getLogger(CubeGaugeDataStore.class.getName());
 
-    private final Cube cube = Configuration.findOrCreateInstance(CubeBuilder.class).build();
+    private final Cube cube = IoCs.findOrCreateInstance(CubeBuilder.class).build();
 
     @Override
     public void addToGauge(final Role role, final long time, final double value) {

Modified: incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeNodeStatusDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeNodeStatusDataStore.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeNodeStatusDataStore.java (original)
+++ incubator/sirona/trunk/agent/store/cube/src/main/java/org/apache/sirona/cube/CubeNodeStatusDataStore.java Wed Nov 13 08:09:46 2013
@@ -16,12 +16,12 @@
  */
 package org.apache.sirona.cube;
 
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.status.NodeStatus;
 import org.apache.sirona.store.status.PeriodicNodeStatusDataStore;
 
 public class CubeNodeStatusDataStore extends PeriodicNodeStatusDataStore {
-    private final Cube cube = Configuration.findOrCreateInstance(CubeBuilder.class).build();
+    private final Cube cube = IoCs.findOrCreateInstance(CubeBuilder.class).build();
 
     @Override
     protected void reportStatus(final NodeStatus nodeStatus) {

Modified: incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteBuilder.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteBuilder.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteBuilder.java (original)
+++ incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteBuilder.java Wed Nov 13 08:09:46 2013
@@ -17,13 +17,13 @@
 package org.apache.sirona.graphite;
 
 import org.apache.sirona.SironaException;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.AutoSet;
 
 import javax.net.SocketFactory;
 import java.io.IOException;
 import java.nio.charset.Charset;
 
-@Configuration.AutoSet
+@AutoSet
 public class GraphiteBuilder {
     private String address;
     private int port;

Modified: incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteCounterDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteCounterDataStore.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteCounterDataStore.java (original)
+++ incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteCounterDataStore.java Wed Nov 13 08:09:46 2013
@@ -16,7 +16,7 @@
  */
 package org.apache.sirona.graphite;
 
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.counters.MetricData;
 import org.apache.sirona.store.counter.BatchCounterDataStore;
@@ -32,7 +32,7 @@ public class GraphiteCounterDataStore ex
     private static final String COUNTER_PREFIX = "counter-";
     private static final char SEP = '-';
 
-    private final Graphite graphite = Configuration.findOrCreateInstance(GraphiteBuilder.class).build();
+    private final Graphite graphite = IoCs.findOrCreateInstance(GraphiteBuilder.class).build();
 
     @Override
     protected synchronized void pushCountersByBatch(final Collection<Counter> instances) {

Modified: incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteDataStoreFactory.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteDataStoreFactory.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteDataStoreFactory.java (original)
+++ incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteDataStoreFactory.java Wed Nov 13 08:09:46 2013
@@ -16,15 +16,15 @@
  */
 package org.apache.sirona.graphite;
 
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.store.DelegateDataStoreFactory;
 import org.apache.sirona.store.status.EmptyStatuses;
 
 public class GraphiteDataStoreFactory extends DelegateDataStoreFactory {
     public GraphiteDataStoreFactory() {
         super(
-            Configuration.processInstance(new GraphiteCounterDataStore()),
-            Configuration.processInstance(new GraphiteGaugeDataStore()),
+            IoCs.processInstance(new GraphiteCounterDataStore()),
+            IoCs.processInstance(new GraphiteGaugeDataStore()),
             new EmptyStatuses());
     }
 }

Modified: incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteGaugeDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteGaugeDataStore.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteGaugeDataStore.java (original)
+++ incubator/sirona/trunk/agent/store/graphite/src/main/java/org/apache/sirona/graphite/GraphiteGaugeDataStore.java Wed Nov 13 08:09:46 2013
@@ -17,7 +17,7 @@
 package org.apache.sirona.graphite;
 
 import org.apache.sirona.Role;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.store.gauge.AggregatedGaugeDataStoreAdapter;
 import org.apache.sirona.store.gauge.Value;
 
@@ -31,7 +31,7 @@ public class GraphiteGaugeDataStore exte
 
     private static final String GAUGE_PREFIX = "gauge-";
 
-    private final Graphite graphite = Configuration.findOrCreateInstance(GraphiteBuilder.class).build();
+    private final Graphite graphite = IoCs.findOrCreateInstance(GraphiteBuilder.class).build();
 
     @Override
     protected void pushGauges(final Map<Role, Value> gauges) {

Modified: incubator/sirona/trunk/agent/store/graphite/src/test/java/org/apache/sirona/graphite/GraphiteTestBase.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/store/graphite/src/test/java/org/apache/sirona/graphite/GraphiteTestBase.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/store/graphite/src/test/java/org/apache/sirona/graphite/GraphiteTestBase.java (original)
+++ incubator/sirona/trunk/agent/store/graphite/src/test/java/org/apache/sirona/graphite/GraphiteTestBase.java Wed Nov 13 08:09:46 2013
@@ -16,7 +16,7 @@
  */
 package org.apache.sirona.graphite;
 
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.gauges.Gauge;
 import org.apache.sirona.graphite.server.GraphiteMockServer;
 import org.apache.sirona.repositories.Repository;
@@ -39,7 +39,7 @@ public abstract class GraphiteTestBase {
 
     @After
     public void shutdownGraphite() throws IOException {
-        Configuration.shutdown();
+        IoCs.shutdown();
         gauges.destroy();
         server.stop();
         Repository.INSTANCE.clearCounters();

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/Configuration.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/Configuration.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/Configuration.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/Configuration.java Wed Nov 13 08:09:46 2013
@@ -16,42 +16,22 @@
  */
 package org.apache.sirona.configuration;
 
-import org.apache.sirona.SironaException;
-import org.apache.sirona.util.ClassLoaders;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.InputStream;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import java.lang.reflect.Array;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
 import java.util.Properties;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+// Configuration holder
 public final class Configuration {
     private static final Logger LOGGER = Logger.getLogger(Configuration.class.getName());
 
     public static final String CONFIG_PROPERTY_PREFIX = "org.apache.sirona.";
 
-    private static final Map<Class<?>, Object> SINGLETONS = new ConcurrentHashMap<Class<?>, Object>();
-    private static final Collection<ToDestroy> INSTANCES = new ArrayList<ToDestroy>();
-
     private static final String[] DEFAULT_CONFIGURATION_FILES = new String[]{ "sirona.properties", "collector-sirona.properties" };
 
-    private static Thread shutdownHook = null;
-
     private static final Properties PROPERTIES = new Properties();
 
     static {
@@ -82,126 +62,6 @@ public final class Configuration {
         return null;
     }
 
-    public static <T> T[] newInstances(final Class<T> api) {
-        final String names = PROPERTIES.getProperty(api.getName());
-        if (names == null) {
-            return (T[]) Array.newInstance(api, 0);
-        }
-
-        final String[] split = names.split(",");
-        final T[] array = (T[]) Array.newInstance(api, split.length);
-        for (int i = 0; i < array.length; i++) {
-            try {
-                array[i] = newInstance(api, split[i]);
-            } catch (final Exception e) {
-                throw new SironaException(e);
-            }
-        }
-        return array;
-    }
-
-    public static synchronized <T> T findOrCreateInstance(final Class<T> clazz) {
-        final T t = clazz.cast(SINGLETONS.get(clazz));
-        if (t != null) {
-            return t;
-        }
-        return newInstance(clazz);
-    }
-
-    public static synchronized <T> T newInstance(final Class<T> clazz) {
-        try {
-            String config = PROPERTIES.getProperty(clazz.getName());
-            if (config == null) {
-                if (clazz.isInterface()) {
-                    config = clazz.getPackage().getName() + ".Default" + clazz.getSimpleName();
-                } else {
-                    config = clazz.getName();
-                }
-            }
-
-            final T t = newInstance(clazz, config);
-            SINGLETONS.put(clazz, t);
-            return t;
-        } catch (final Exception e) {
-            throw new SironaException(e);
-        }
-    }
-
-    private static <T> T newInstance(final Class<T> clazz, final String config) throws InstantiationException, IllegalAccessException, InvocationTargetException {
-        Class<?> loadedClass;
-        try {
-            loadedClass = ClassLoaders.current().loadClass(config);
-        } catch (final Throwable throwable) { // NoClassDefFoundError or Exception
-            loadedClass = clazz;
-        }
-        return clazz.cast(internalProcessInstance(loadedClass.newInstance()));
-    }
-
-    public static <T> T processInstance(final T instance) {
-        try {
-            return internalProcessInstance(instance);
-        } catch (final Exception e) {
-            throw new SironaException(e);
-        }
-    }
-
-    private static <T> T internalProcessInstance(final T instance) throws IllegalAccessException, InvocationTargetException {
-        final Class<?> loadedClass = instance.getClass();
-        for (final Method m : loadedClass.getMethods()) {
-            if (m.getAnnotation(Created.class) != null) {
-                m.invoke(instance);
-            } else if (m.getAnnotation(Destroying.class) != null) {
-                if (shutdownHook == null == is(CONFIG_PROPERTY_PREFIX + "shutdown.hook", true)) {
-                    shutdownHook = new Thread() {
-                        @Override
-                        public void run() {
-                            shutdown();
-                        }
-                    };
-                    Runtime.getRuntime().addShutdownHook(shutdownHook);
-                }
-                INSTANCES.add(new ToDestroy(m, instance));
-            }
-        }
-
-        if (loadedClass.getAnnotation(AutoSet.class) != null) {
-            Class<?> current = loadedClass;
-            while (current != null && !current.isInterface() && !Object.class.equals(current)) {
-                for (final Field field : loadedClass.getDeclaredFields()) {
-                    if (Modifier.isFinal(field.getModifiers())) {
-                        continue;
-                    }
-
-                    final String value = PROPERTIES.getProperty(loadedClass.getName() + "." + field.getName());
-                    if (value != null) {
-                        final boolean acc = field.isAccessible();
-                        if (!acc) {
-                            field.setAccessible(true);
-                        }
-                        try {
-                            field.set(instance, convertTo(field.getType(), value));
-                        } finally {
-                            if (!acc) {
-                                field.setAccessible(false);
-                            }
-                        }
-                    }
-                }
-                current = current.getSuperclass();
-            }
-        }
-
-        return instance;
-    }
-
-    public static void setSingletonInstance(final Class<?> clazz, final Object instance) {
-        SINGLETONS.put(clazz, instance);
-    }
-
-    public static <T> T getInstance(final Class<T> clazz) {
-        return clazz.cast(SINGLETONS.get(clazz));
-    }
-
     public static boolean is(final String key, final boolean defaultValue) {
         return Boolean.parseBoolean(getProperty(key, Boolean.toString(defaultValue)));
     }
@@ -214,64 +74,7 @@ public final class Configuration {
         return PROPERTIES.getProperty(key, defaultValue);
     }
 
-    public static void shutdown() {
-        for (final ToDestroy c : INSTANCES) {
-            c.destroy();
-        }
-        INSTANCES.clear();
-        SINGLETONS.clear();
-    }
-
     private Configuration() {
         // no-op
     }
-
-    @Retention(RetentionPolicy.RUNTIME)
-    @Target(ElementType.METHOD)
-    public static @interface Created {
-    }
-
-    @Retention(RetentionPolicy.RUNTIME)
-    @Target(ElementType.METHOD)
-    public static @interface Destroying {
-    }
-
-    @Retention(RetentionPolicy.RUNTIME)
-    @Target(ElementType.TYPE)
-    public static @interface AutoSet {
-    }
-
-    private static Object convertTo(final Class<?> type, final String value) {
-        if (String.class.equals(type)) {
-            return value;
-        }
-        if (String[].class.equals(type)) {
-            return value.split(",");
-        }
-        if (int.class.equals(type)) {
-            return Integer.parseInt(value);
-        }
-        if (long.class.equals(type)) {
-            return Long.parseLong(value);
-        }
-        throw new IllegalArgumentException("Type " + type.getName() + " not supported");
-    }
-
-    private static class ToDestroy {
-        private final Method method;
-        private final Object target;
-
-        public ToDestroy(final Method m, final Object instance) {
-            this.method = m;
-            this.target = instance;
-        }
-
-        public void destroy() {
-            try {
-                method.invoke(target);
-            } catch (final Exception e) {
-                // no-op
-            }
-        }
-    }
 }

Added: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/AutoSet.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/AutoSet.java?rev=1541417&view=auto
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/AutoSet.java (added)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/AutoSet.java Wed Nov 13 08:09:46 2013
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sirona.configuration.ioc;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface AutoSet {
+}

Added: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/Created.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/Created.java?rev=1541417&view=auto
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/Created.java (added)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/Created.java Wed Nov 13 08:09:46 2013
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sirona.configuration.ioc;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Created {
+}

Added: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/Destroying.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/Destroying.java?rev=1541417&view=auto
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/Destroying.java (added)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/Destroying.java Wed Nov 13 08:09:46 2013
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sirona.configuration.ioc;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Destroying {
+}

Added: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java?rev=1541417&view=auto
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java (added)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java Wed Nov 13 08:09:46 2013
@@ -0,0 +1,204 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.sirona.configuration.ioc;
+
+import org.apache.sirona.SironaException;
+import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.util.ClassLoaders;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+// very light "IoC" not respecting lazy init (so take care yourself of dependencies)
+public final class IoCs {
+    private static final Map<Class<?>, Object> SINGLETONS = new ConcurrentHashMap<Class<?>, Object>();
+    private static final Collection<ToDestroy> INSTANCES = new ArrayList<ToDestroy>();
+    private static Thread shutdownHook = null;
+
+    public static <T> T[] newInstances(final Class<T> api) {
+        final String names = Configuration.getProperty(api.getName(), null);
+        if (names == null) {
+            return (T[]) Array.newInstance(api, 0);
+        }
+
+        final String[] split = names.split(",");
+        final T[] array = (T[]) Array.newInstance(api, split.length);
+        for (int i = 0; i < array.length; i++) {
+            try {
+                array[i] = newInstance(api, split[i]);
+            } catch (final Exception e) {
+                throw new SironaException(e);
+            }
+        }
+        return array;
+    }
+
+    public static synchronized <T> T findOrCreateInstance(final Class<T> clazz) {
+        final T t = clazz.cast(SINGLETONS.get(clazz));
+        if (t != null) {
+            return t;
+        }
+        return newInstance(clazz);
+    }
+
+    public static synchronized <T> T newInstance(final Class<T> clazz) {
+        try {
+            String config = Configuration.getProperty(clazz.getName(), null);
+            if (config == null) {
+                if (clazz.isInterface()) {
+                    config = clazz.getPackage().getName() + ".Default" + clazz.getSimpleName();
+                } else {
+                    config = clazz.getName();
+                }
+            }
+
+            final T t = newInstance(clazz, config);
+            SINGLETONS.put(clazz, t);
+            return t;
+        } catch (final Exception e) {
+            throw new SironaException(e);
+        }
+    }
+
+    private static <T> T newInstance(final Class<T> clazz, final String config) throws InstantiationException, IllegalAccessException, InvocationTargetException {
+        Class<?> loadedClass;
+        try {
+            loadedClass = ClassLoaders.current().loadClass(config);
+        } catch (final Throwable throwable) { // NoClassDefFoundError or Exception
+            loadedClass = clazz;
+        }
+        return clazz.cast(internalProcessInstance(loadedClass.newInstance()));
+    }
+
+    public static <T> T processInstance(final T instance) {
+        try {
+            return internalProcessInstance(instance);
+        } catch (final Exception e) {
+            throw new SironaException(e);
+        }
+    }
+
+    private static <T> T internalProcessInstance(final T instance) throws IllegalAccessException, InvocationTargetException {
+        final Class<?> loadedClass = instance.getClass();
+        for (final Method m : loadedClass.getMethods()) {
+            if (m.getAnnotation(Created.class) != null) {
+                m.invoke(instance);
+            } else if (m.getAnnotation(Destroying.class) != null) {
+                if (shutdownHook == null == Configuration.is(Configuration.CONFIG_PROPERTY_PREFIX + "shutdown.hook", true)) {
+                    shutdownHook = new Thread() {
+                        @Override
+                        public void run() {
+                            shutdown();
+                        }
+                    };
+                    Runtime.getRuntime().addShutdownHook(shutdownHook);
+                }
+                INSTANCES.add(new ToDestroy(m, instance));
+            }
+        }
+
+        if (loadedClass.getAnnotation(AutoSet.class) != null) {
+            Class<?> current = loadedClass;
+            while (current != null && !current.isInterface() && !Object.class.equals(current)) {
+                for (final Field field : loadedClass.getDeclaredFields()) {
+                    if (Modifier.isFinal(field.getModifiers())) {
+                        continue;
+                    }
+
+                    final String value = Configuration.getProperty(loadedClass.getName() + "." + field.getName(), null);
+                    if (value != null) {
+                        final boolean acc = field.isAccessible();
+                        if (!acc) {
+                            field.setAccessible(true);
+                        }
+                        try {
+                            field.set(instance, convertTo(field.getType(), value));
+                        } finally {
+                            if (!acc) {
+                                field.setAccessible(false);
+                            }
+                        }
+                    }
+                }
+                current = current.getSuperclass();
+            }
+        }
+
+        return instance;
+    }
+
+    public static void setSingletonInstance(final Class<?> clazz, final Object instance) {
+        SINGLETONS.put(clazz, instance);
+    }
+
+    public static <T> T getInstance(final Class<T> clazz) {
+        return clazz.cast(SINGLETONS.get(clazz));
+    }
+
+    public static void shutdown() {
+        for (final ToDestroy c : INSTANCES) {
+            c.destroy();
+        }
+        INSTANCES.clear();
+        SINGLETONS.clear();
+    }
+
+    private static Object convertTo(final Class<?> type, final String value) {
+        if (String.class.equals(type)) {
+            return value;
+        }
+        if (String[].class.equals(type)) {
+            return value.split(",");
+        }
+        if (int.class.equals(type)) {
+            return Integer.parseInt(value);
+        }
+        if (long.class.equals(type)) {
+            return Long.parseLong(value);
+        }
+        throw new IllegalArgumentException("Type " + type.getName() + " not supported");
+    }
+
+    private static class ToDestroy {
+        private final Method method;
+        private final Object target;
+
+        public ToDestroy(final Method m, final Object instance) {
+            this.method = m;
+            this.target = instance;
+        }
+
+        public void destroy() {
+            try {
+                method.invoke(target);
+            } catch (final Exception e) {
+                // no-op
+            }
+        }
+    }
+
+    private IoCs() {
+        // no-op
+    }
+}

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/DefaultGaugeManager.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/DefaultGaugeManager.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/DefaultGaugeManager.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/DefaultGaugeManager.java Wed Nov 13 08:09:46 2013
@@ -17,9 +17,7 @@
 package org.apache.sirona.gauges;
 
 import org.apache.sirona.Role;
-import org.apache.sirona.configuration.Configuration;
-import org.apache.sirona.gauges.jvm.CPUGauge;
-import org.apache.sirona.gauges.jvm.UsedMemoryGauge;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.store.gauge.GaugeDataStore;
 
 import java.util.Map;
@@ -70,7 +68,7 @@ public final class DefaultGaugeManager i
         private final GaugeDataStore store;
 
         public GaugeTask(final Gauge gauge) {
-            this.store = Configuration.getInstance(GaugeDataStore.class);
+            this.store = IoCs.getInstance(GaugeDataStore.class);
             this.gauge = gauge;
         }
 

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/DefaultRepository.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/DefaultRepository.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/DefaultRepository.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/DefaultRepository.java Wed Nov 13 08:09:46 2013
@@ -16,16 +16,18 @@
  */
 package org.apache.sirona.repositories;
 
-import org.apache.sirona.SironaException;
 import org.apache.sirona.Role;
+import org.apache.sirona.SironaException;
 import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.Destroying;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.gauges.DefaultGaugeManager;
 import org.apache.sirona.gauges.Gauge;
 import org.apache.sirona.gauges.GaugeManager;
 import org.apache.sirona.gauges.jvm.CPUGauge;
-import org.apache.sirona.gauges.jvm.UsedNonHeapMemoryGauge;
 import org.apache.sirona.gauges.jvm.UsedMemoryGauge;
+import org.apache.sirona.gauges.jvm.UsedNonHeapMemoryGauge;
 import org.apache.sirona.status.NodeStatus;
 import org.apache.sirona.stopwatches.CounterStopWatch;
 import org.apache.sirona.stopwatches.StopWatch;
@@ -58,19 +60,19 @@ public class DefaultRepository implement
         this.nodeStatusDataStore = status;
 
         if (CollectorCounterStore.class.isInstance(counter)) {
-            Configuration.setSingletonInstance(CollectorCounterStore.class, counter);
+            IoCs.setSingletonInstance(CollectorCounterStore.class, counter);
         } else {
-            Configuration.setSingletonInstance(CounterDataStore.class, counter);
+            IoCs.setSingletonInstance(CounterDataStore.class, counter);
         }
         if (CollectorGaugeDataStore.class.isInstance(gauge)) {
-            Configuration.setSingletonInstance(CollectorGaugeDataStore.class, gauge);
+            IoCs.setSingletonInstance(CollectorGaugeDataStore.class, gauge);
         } else {
-            Configuration.setSingletonInstance(GaugeDataStore.class, gauge);
+            IoCs.setSingletonInstance(GaugeDataStore.class, gauge);
         }
         if (CollectorNodeStatusDataStore.class.isInstance(status)) {
-            Configuration.setSingletonInstance(CollectorNodeStatusDataStore.class, status);
+            IoCs.setSingletonInstance(CollectorNodeStatusDataStore.class, status);
         } else {
-            Configuration.setSingletonInstance(NodeStatusDataStore.class, status);
+            IoCs.setSingletonInstance(NodeStatusDataStore.class, status);
         }
 
         this.gaugeManager = findGaugeManager();
@@ -87,7 +89,7 @@ public class DefaultRepository implement
         if (GaugeDataStore.class.isInstance(gaugeDataStore)) {
             GaugeManager mgr;
             try {
-                mgr = Configuration.findOrCreateInstance(GaugeManager.class);
+                mgr = IoCs.findOrCreateInstance(GaugeManager.class);
             } catch (final SironaException e) {
                 mgr = new DefaultGaugeManager();
             }
@@ -101,12 +103,12 @@ public class DefaultRepository implement
     private static NodeStatusDataStore findStatusDataStore() {
         NodeStatusDataStore status = null;
         try {
-            status = Configuration.findOrCreateInstance(NodeStatusDataStore.class);
+            status = IoCs.findOrCreateInstance(NodeStatusDataStore.class);
         } catch (final SironaException e) {
             // no-op
         }
         if (status == null) {
-            status = Configuration.findOrCreateInstance(DataStoreFactory.class).getNodeStatusDataStore();
+            status = IoCs.findOrCreateInstance(DataStoreFactory.class).getNodeStatusDataStore();
         }
         return status;
     }
@@ -114,19 +116,19 @@ public class DefaultRepository implement
     private static CommonGaugeDataStore findGaugeDataStore() {
         CommonGaugeDataStore gauge = null;
         try {
-            gauge = Configuration.findOrCreateInstance(GaugeDataStore.class);
+            gauge = IoCs.findOrCreateInstance(GaugeDataStore.class);
         } catch (final SironaException e) {
             // no-op
         }
         if (gauge == null) {
             try {
-                gauge = Configuration.findOrCreateInstance(CollectorGaugeDataStore.class);
+                gauge = IoCs.findOrCreateInstance(CollectorGaugeDataStore.class);
             } catch (final SironaException e) {
                 // no-op
             }
         }
         if (gauge == null) {
-            gauge = Configuration.findOrCreateInstance(DataStoreFactory.class).getGaugeDataStore();
+            gauge = IoCs.findOrCreateInstance(DataStoreFactory.class).getGaugeDataStore();
         }
         return gauge;
     }
@@ -134,24 +136,24 @@ public class DefaultRepository implement
     private static CounterDataStore findCounterDataStore() {
         CounterDataStore counter = null;
         try {
-            counter = Configuration.findOrCreateInstance(CounterDataStore.class);
+            counter = IoCs.findOrCreateInstance(CounterDataStore.class);
         } catch (final SironaException e) {
             // no-op
         }
         if (counter == null) {
             try {
-                counter = Configuration.findOrCreateInstance(CollectorCounterStore.class);
+                counter = IoCs.findOrCreateInstance(CollectorCounterStore.class);
             } catch (final SironaException e) {
                 // no-op
             }
         }
         if (counter == null) {
-            counter = Configuration.findOrCreateInstance(DataStoreFactory.class).getCounterDataStore();
+            counter = IoCs.findOrCreateInstance(DataStoreFactory.class).getCounterDataStore();
         }
         return counter;
     }
 
-    @Configuration.Destroying
+    @Destroying
     public void stopGaugeManager() {
         if (gaugeManager != null) {
             gaugeManager.stop();

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/Repository.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/Repository.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/Repository.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/repositories/Repository.java Wed Nov 13 08:09:46 2013
@@ -18,7 +18,7 @@
 package org.apache.sirona.repositories;
 
 import org.apache.sirona.Role;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.gauges.Gauge;
 import org.apache.sirona.status.NodeStatus;
@@ -28,7 +28,7 @@ import java.util.Collection;
 import java.util.Map;
 
 public interface Repository {
-    Repository INSTANCE = Configuration.findOrCreateInstance(Repository.class);
+    Repository INSTANCE = IoCs.findOrCreateInstance(Repository.class);
 
     Counter getCounter(Counter.Key key);
 

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/SPI.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/SPI.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/SPI.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/SPI.java Wed Nov 13 08:09:46 2013
@@ -16,11 +16,11 @@
  */
 package org.apache.sirona.spi;
 
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 
 // ServiceLoader is sometimes just wrong
 public interface SPI {
-    SPI INSTANCE = Configuration.findOrCreateInstance(SPI.class);
+    SPI INSTANCE = IoCs.findOrCreateInstance(SPI.class);
 
     <T> Iterable<T> find(Class<T> api, ClassLoader loader);
 }

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/DefaultDataStoreFactory.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/DefaultDataStoreFactory.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/DefaultDataStoreFactory.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/DefaultDataStoreFactory.java Wed Nov 13 08:09:46 2013
@@ -16,7 +16,7 @@
  */
 package org.apache.sirona.store;
 
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.store.counter.InMemoryCounterDataStore;
 import org.apache.sirona.store.gauge.InMemoryGaugeDataStore;
 import org.apache.sirona.store.status.PeriodicNodeStatusDataStore;
@@ -24,6 +24,6 @@ import org.apache.sirona.store.status.Pe
 public class DefaultDataStoreFactory extends DelegateDataStoreFactory {
     public DefaultDataStoreFactory() {
         super(new InMemoryCounterDataStore(), new InMemoryGaugeDataStore(),
-            Configuration.processInstance(new PeriodicNodeStatusDataStore())); // this one has hooks
+            IoCs.processInstance(new PeriodicNodeStatusDataStore())); // this one has hooks
     }
 }

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/counter/BatchCounterDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/counter/BatchCounterDataStore.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/counter/BatchCounterDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/counter/BatchCounterDataStore.java Wed Nov 13 08:09:46 2013
@@ -17,6 +17,7 @@
 package org.apache.sirona.store.counter;
 
 import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.Destroying;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.repositories.Repository;
 import org.apache.sirona.store.BatchFuture;
@@ -50,7 +51,7 @@ public abstract class BatchCounterDataSt
             Configuration.getInteger(Configuration.CONFIG_PROPERTY_PREFIX + name + ".period", 60000));
     }
 
-    @Configuration.Destroying
+    @Destroying
     public void shutdown() {
         scheduledTask.done();
     }

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/gauge/AggregatedGaugeDataStoreAdapter.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/gauge/AggregatedGaugeDataStoreAdapter.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/gauge/AggregatedGaugeDataStoreAdapter.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/gauge/AggregatedGaugeDataStoreAdapter.java Wed Nov 13 08:09:46 2013
@@ -19,6 +19,7 @@ package org.apache.sirona.store.gauge;
 import org.apache.commons.math3.stat.descriptive.SummaryStatistics;
 import org.apache.sirona.Role;
 import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.Destroying;
 import org.apache.sirona.gauges.GaugeDataStoreAdapter;
 import org.apache.sirona.store.BatchFuture;
 import org.apache.sirona.util.DaemonThreadFactory;
@@ -55,7 +56,7 @@ public abstract class AggregatedGaugeDat
             Configuration.getInteger(Configuration.CONFIG_PROPERTY_PREFIX + name + ".period", 60000));
     }
 
-    @Configuration.Destroying
+    @Destroying
     public void shutdown() {
         scheduledTask.done();
     }

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/status/PeriodicNodeStatusDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/status/PeriodicNodeStatusDataStore.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/status/PeriodicNodeStatusDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/status/PeriodicNodeStatusDataStore.java Wed Nov 13 08:09:46 2013
@@ -17,6 +17,7 @@
 package org.apache.sirona.store.status;
 
 import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.Destroying;
 import org.apache.sirona.status.NodeStatus;
 import org.apache.sirona.status.NodeStatusReporter;
 import org.apache.sirona.store.BatchFuture;
@@ -46,7 +47,7 @@ public class PeriodicNodeStatusDataStore
         reload();
     }
 
-    @Configuration.Destroying
+    @Destroying
     public void shutdown() {
         final BatchFuture task = scheduledTask.get();
         if (task != null) {

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/Environment.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/Environment.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/Environment.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/Environment.java Wed Nov 13 08:09:46 2013
@@ -16,9 +16,9 @@
  */
 package org.apache.sirona.util;
 
-import org.apache.sirona.configuration.Configuration;
-import org.apache.sirona.store.counter.CollectorCounterStore;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.repositories.Repository;
+import org.apache.sirona.store.counter.CollectorCounterStore;
 
 public final class Environment {
     private Environment() {
@@ -26,7 +26,7 @@ public final class Environment {
     }
 
     public static boolean isCollector() {
-        Configuration.findOrCreateInstance(Repository.class); // ensure we have a repo which init store classes by default
-        return Configuration.getInstance(CollectorCounterStore.class) != null;
+        IoCs.findOrCreateInstance(Repository.class); // ensure we have a repo which init store classes by default
+        return IoCs.getInstance(CollectorCounterStore.class) != null;
     }
 }

Modified: incubator/sirona/trunk/server/collector/src/main/java/org/apache/sirona/collector/server/Collector.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/collector/src/main/java/org/apache/sirona/collector/server/Collector.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/collector/src/main/java/org/apache/sirona/collector/server/Collector.java (original)
+++ incubator/sirona/trunk/server/collector/src/main/java/org/apache/sirona/collector/server/Collector.java Wed Nov 13 08:09:46 2013
@@ -19,11 +19,12 @@ package org.apache.sirona.collector.serv
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.sirona.SironaException;
 import org.apache.sirona.Role;
+import org.apache.sirona.SironaException;
 import org.apache.sirona.collector.server.api.SSLSocketFactoryProvider;
 import org.apache.sirona.collector.server.api.SecurityProvider;
 import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.counters.Unit;
 import org.apache.sirona.math.M2AwareStatisticalSummary;
@@ -96,10 +97,10 @@ public class Collector extends HttpServl
         super.init(sc);
 
         // force init to ensure we have stores
-        Configuration.findOrCreateInstance(Repository.class);
+        IoCs.findOrCreateInstance(Repository.class);
 
         {
-            final CollectorGaugeDataStore gds = Configuration.findOrCreateInstance(CollectorGaugeDataStore.class);
+            final CollectorGaugeDataStore gds = IoCs.findOrCreateInstance(CollectorGaugeDataStore.class);
             if (gds == null) {
                 throw new IllegalStateException("Collector only works with " + CollectorGaugeDataStore.class.getName());
             }
@@ -107,7 +108,7 @@ public class Collector extends HttpServl
         }
 
         {
-            final CollectorCounterStore cds = Configuration.findOrCreateInstance(CollectorCounterStore.class);
+            final CollectorCounterStore cds = IoCs.findOrCreateInstance(CollectorCounterStore.class);
             if (cds == null) {
                 throw new IllegalStateException("Collector only works with " + CollectorCounterStore.class.getName());
             }
@@ -115,7 +116,7 @@ public class Collector extends HttpServl
         }
 
         {
-            final NodeStatusDataStore nds = Configuration.findOrCreateInstance(CollectorNodeStatusDataStore.class);
+            final NodeStatusDataStore nds = IoCs.findOrCreateInstance(CollectorNodeStatusDataStore.class);
             if (!CollectorNodeStatusDataStore.class.isInstance(nds)) {
                 throw new IllegalStateException("Collector only works with " + CollectorNodeStatusDataStore.class.getName());
             }
@@ -154,13 +155,13 @@ public class Collector extends HttpServl
             }
 
             try {
-                securityProvider = Configuration.findOrCreateInstance(SecurityProvider.class);
+                securityProvider = IoCs.findOrCreateInstance(SecurityProvider.class);
             } catch (final Exception e) {
                 securityProvider = null;
             }
 
             try {
-                sslSocketFactoryProvider = Configuration.findOrCreateInstance(SSLSocketFactoryProvider.class);
+                sslSocketFactoryProvider = IoCs.findOrCreateInstance(SSLSocketFactoryProvider.class);
             } catch (final Exception e) {
                 sslSocketFactoryProvider = null;
             }

Modified: incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/CubeDataStoreCompatibilityTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/CubeDataStoreCompatibilityTest.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/CubeDataStoreCompatibilityTest.java (original)
+++ incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/CubeDataStoreCompatibilityTest.java Wed Nov 13 08:09:46 2013
@@ -17,7 +17,7 @@
 package org.apache.sirona.collector.server;
 
 import org.apache.sirona.Role;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.counters.DefaultCounter;
 import org.apache.sirona.counters.Unit;
@@ -51,7 +51,7 @@ public class CubeDataStoreCompatibilityT
     public void cubeMe() {
         new SeeMyProtectedStuffStore().doPush();
 
-        final CollectorCounterStore store = Configuration.getInstance(CollectorCounterStore.class);
+        final CollectorCounterStore store = IoCs.getInstance(CollectorCounterStore.class);
         final Counter counter1 = store.getOrCreateCounter(new Counter.Key(new Role("cube", Unit.UNARY), "client"));
         final Counter counter1Client1 = store.getOrCreateCounter(new Counter.Key(new Role("cube", Unit.UNARY), "client"), "local");
 

Modified: incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/HttpCollectorTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/HttpCollectorTest.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/HttpCollectorTest.java (original)
+++ incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/HttpCollectorTest.java Wed Nov 13 08:09:46 2013
@@ -18,7 +18,7 @@ package org.apache.sirona.collector.serv
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.sirona.Role;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.counters.Unit;
 import org.apache.sirona.reporting.web.template.MapBuilder;
@@ -95,7 +95,7 @@ public class HttpCollectorTest {
             doPost(events2);
         }
 
-        final CollectorCounterStore store = Configuration.getInstance(CollectorCounterStore.class);
+        final CollectorCounterStore store = IoCs.getInstance(CollectorCounterStore.class);
         final Counter counter1 = store.getOrCreateCounter(new Counter.Key(new Role("role1", Unit.UNARY), "counter1"));
         final Counter counter1Client1 = store.getOrCreateCounter(new Counter.Key(new Role("role1", Unit.UNARY), "counter1"), "client1");
         final Counter counter1Client2 = store.getOrCreateCounter(new Counter.Key(new Role("role1", Unit.UNARY), "counter1"), "client2");
@@ -150,7 +150,7 @@ public class HttpCollectorTest {
             doPost(events2);
         }
 
-        final CollectorGaugeDataStore store = Configuration.getInstance(CollectorGaugeDataStore.class);
+        final CollectorGaugeDataStore store = IoCs.getInstance(CollectorGaugeDataStore.class);
         final GaugeValuesRequest gaugeValuesRequest = new GaugeValuesRequest(0, System.currentTimeMillis() + 1000, new Role("event-role", Unit.UNARY));
         final Map<Long, Double> aggregated = store.getGaugeValues(gaugeValuesRequest);
         final Map<Long, Double> node1 = store.getGaugeValues(gaugeValuesRequest, "node1");
@@ -196,7 +196,7 @@ public class HttpCollectorTest {
             doPost(events2);
         }
 
-        final NodeStatusDataStore store = Configuration.getInstance(CollectorNodeStatusDataStore.class);
+        final NodeStatusDataStore store = IoCs.getInstance(CollectorNodeStatusDataStore.class);
         final Map<String,NodeStatus> statuses = store.statuses();
         assertEquals(2, statuses.size());
         assertEquals(Status.OK, statuses.get("node1").getStatus());

Modified: incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/RegistrationTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/RegistrationTest.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/RegistrationTest.java (original)
+++ incubator/sirona/trunk/server/collector/src/test/java/org/apache/sirona/collector/server/RegistrationTest.java Wed Nov 13 08:09:46 2013
@@ -36,13 +36,13 @@ import io.netty.handler.codec.http.HttpR
 import io.netty.handler.codec.http.HttpResponseStatus;
 import io.netty.handler.codec.http.HttpVersion;
 import io.netty.handler.stream.ChunkedWriteHandler;
-import org.apache.sirona.SironaException;
 import org.apache.sirona.Role;
-import org.apache.sirona.store.gauge.DelegatedCollectorGaugeDataStore;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.SironaException;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.repositories.Repository;
 import org.apache.sirona.store.gauge.CollectorGaugeDataStore;
+import org.apache.sirona.store.gauge.DelegatedCollectorGaugeDataStore;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -64,7 +64,7 @@ public class RegistrationTest {
     public void start() {
         agent = new HttpServer("localhost", Integer.getInteger("collector.server.port", 1234)).start();
         Repository.INSTANCE.reset();
-        DelegatedCollectorGaugeDataStore.class.cast(Configuration.getInstance(CollectorGaugeDataStore.class)).reset();
+        DelegatedCollectorGaugeDataStore.class.cast(IoCs.getInstance(CollectorGaugeDataStore.class)).reset();
     }
 
     @After

Modified: incubator/sirona/trunk/server/plugins/tomee/agent/src/test/java/org/apache/sirona/tomee/agent/GaugesTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/plugins/tomee/agent/src/test/java/org/apache/sirona/tomee/agent/GaugesTest.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/plugins/tomee/agent/src/test/java/org/apache/sirona/tomee/agent/GaugesTest.java (original)
+++ incubator/sirona/trunk/server/plugins/tomee/agent/src/test/java/org/apache/sirona/tomee/agent/GaugesTest.java Wed Nov 13 08:09:46 2013
@@ -21,7 +21,7 @@ import org.apache.openejb.jee.StatelessB
 import org.apache.openejb.junit.ApplicationComposer;
 import org.apache.openejb.testing.Module;
 import org.apache.sirona.Role;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.gauges.Gauge;
 import org.apache.sirona.repositories.Repository;
 import org.apache.sirona.store.status.NodeStatusDataStore;
@@ -61,7 +61,7 @@ public class GaugesTest {
             loader.destroy();
         }
         Repository.INSTANCE.reset();
-        PeriodicNodeStatusDataStore.class.cast(Configuration.getInstance(NodeStatusDataStore.class)).shutdown();
+        PeriodicNodeStatusDataStore.class.cast(IoCs.getInstance(NodeStatusDataStore.class)).shutdown();
     }
 
     @Test

Modified: incubator/sirona/trunk/server/plugins/tomee/agent/src/test/java/org/apache/sirona/tomee/agent/ValidationsTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/plugins/tomee/agent/src/test/java/org/apache/sirona/tomee/agent/ValidationsTest.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/plugins/tomee/agent/src/test/java/org/apache/sirona/tomee/agent/ValidationsTest.java (original)
+++ incubator/sirona/trunk/server/plugins/tomee/agent/src/test/java/org/apache/sirona/tomee/agent/ValidationsTest.java Wed Nov 13 08:09:46 2013
@@ -20,6 +20,7 @@ import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.junit.ApplicationComposer;
 import org.apache.openejb.testing.Configuration;
 import org.apache.openejb.testing.Module;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.repositories.Repository;
 import org.apache.sirona.status.NodeStatus;
 import org.apache.sirona.status.Status;
@@ -68,14 +69,14 @@ public class ValidationsTest {
     @After
     public void shutdown() {
         Repository.INSTANCE.reset();
-        PeriodicNodeStatusDataStore.class.cast(org.apache.sirona.configuration.Configuration.getInstance(NodeStatusDataStore.class)).shutdown();
+        PeriodicNodeStatusDataStore.class.cast(IoCs.getInstance(NodeStatusDataStore.class)).shutdown();
     }
 
     @Test
     public void checkValidations() throws InterruptedException {
         Thread.sleep(150);
 
-        final NodeStatus result = org.apache.sirona.configuration.Configuration.getInstance(NodeStatusDataStore.class).statuses().values().iterator().next();
+        final NodeStatus result = IoCs.getInstance(NodeStatusDataStore.class).statuses().values().iterator().next();
         assertEquals(1, result.getResults().length);
 
         final ValidationResult validationResult = result.getResults()[0];

Modified: incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/SironaController.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/SironaController.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/SironaController.java (original)
+++ incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/SironaController.java Wed Nov 13 08:09:46 2013
@@ -16,7 +16,7 @@
  */
 package org.apache.sirona.reporting.web;
 
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.reporting.web.handler.FilteringEndpoints;
 import org.apache.sirona.reporting.web.handler.HomeEndpoint;
 import org.apache.sirona.reporting.web.handler.internal.EndpointInfo;
@@ -61,7 +61,7 @@ public class SironaController implements
 
     @Override
     public void init(final FilterConfig config) throws ServletException {
-        Configuration.findOrCreateInstance(Repository.class); // ensure datastore are loaded
+        IoCs.findOrCreateInstance(Repository.class); // ensure datastore are loaded
 
         classloader = Thread.currentThread().getContextClassLoader();
         initMapping(config.getInitParameter("monitoring-mapping"));

Modified: incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/graph/Line.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/graph/Line.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/graph/Line.java (original)
+++ incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/graph/Line.java Wed Nov 13 08:09:46 2013
@@ -17,10 +17,10 @@
 package org.apache.sirona.reporting.web.graph;
 
 import org.apache.sirona.Role;
-import org.apache.sirona.configuration.Configuration;
-import org.apache.sirona.store.gauge.CollectorGaugeDataStore;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.reporting.web.plugin.json.Jsons;
 import org.apache.sirona.repositories.Repository;
+import org.apache.sirona.store.gauge.CollectorGaugeDataStore;
 import org.apache.sirona.store.gauge.GaugeValuesRequest;
 import org.apache.sirona.util.Environment;
 
@@ -64,7 +64,7 @@ public class Line {
             return "[" + Line.toJson(label, Line.DEFAULT_COLOR, Repository.INSTANCE.getGaugeValues(start, end, role)) + "]";
         }
 
-        final CollectorGaugeDataStore gaugeStore = Configuration.findOrCreateInstance(CollectorGaugeDataStore.class);
+        final CollectorGaugeDataStore gaugeStore = IoCs.findOrCreateInstance(CollectorGaugeDataStore.class);
         final Iterator<String> markers = gaugeStore.markers().iterator();
         final StringBuilder builder = new StringBuilder("[");
         final Iterator<String> colors = COLORS.iterator();

Modified: incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/handler/internal/EndpointInfo.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/handler/internal/EndpointInfo.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/handler/internal/EndpointInfo.java (original)
+++ incubator/sirona/trunk/server/reporting/src/main/java/org/apache/sirona/reporting/web/handler/internal/EndpointInfo.java Wed Nov 13 08:09:46 2013
@@ -16,7 +16,7 @@
  */
 package org.apache.sirona.reporting.web.handler.internal;
 
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.reporting.web.handler.api.Regex;
 import org.apache.sirona.reporting.web.handler.api.TemplateHelper;
 
@@ -36,7 +36,7 @@ public class EndpointInfo {
 
     public static EndpointInfo build(final Class<?> endpointClass, final String id, final String rootMapping) {
         final EndpointInfo info = new EndpointInfo();
-        final Object instance = Configuration.newInstance(endpointClass);
+        final Object instance = IoCs.newInstance(endpointClass);
         for (final Method method : endpointClass.getMethods()) {
             if (method.getDeclaringClass() == Object.class) {
                 continue;

Modified: incubator/sirona/trunk/server/reporting/src/test/java/org/apache/sirona/reporting/template/StatusTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/reporting/src/test/java/org/apache/sirona/reporting/template/StatusTest.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/reporting/src/test/java/org/apache/sirona/reporting/template/StatusTest.java (original)
+++ incubator/sirona/trunk/server/reporting/src/test/java/org/apache/sirona/reporting/template/StatusTest.java Wed Nov 13 08:09:46 2013
@@ -17,7 +17,7 @@
 package org.apache.sirona.reporting.template;
 
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.repositories.Repository;
 import org.apache.sirona.status.NodeStatus;
 import org.apache.sirona.status.Status;
@@ -34,8 +34,8 @@ import static org.junit.Assert.assertTha
 public class StatusTest extends SironaReportingTestBase {
     @BeforeClass
     public static void addStatus() {
-        Configuration.findOrCreateInstance(Repository.class);
-        Configuration.getInstance(NodeStatusDataStore.class).statuses().put("node1", new NodeStatus(new ValidationResult[] { new ValidationResult("validation #1", Status.OK, "all is fine") }));
+        IoCs.findOrCreateInstance(Repository.class);
+        IoCs.getInstance(NodeStatusDataStore.class).statuses().put("node1", new NodeStatus(new ValidationResult[] { new ValidationResult("validation #1", Status.OK, "all is fine") }));
     }
 
     @Test

Modified: incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/CassandraBuilder.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/CassandraBuilder.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/CassandraBuilder.java (original)
+++ incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/CassandraBuilder.java Wed Nov 13 08:09:46 2013
@@ -17,9 +17,9 @@
 package org.apache.sirona.cassandra;
 
 import me.prettyprint.hector.api.HConsistencyLevel;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.AutoSet;
 
-@Configuration.AutoSet
+@AutoSet
 public class CassandraBuilder {
     private String hosts = "localhost:9171";
     private String cluster = "sirona-cluster";

Modified: incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/CassandraSirona.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/CassandraSirona.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/CassandraSirona.java (original)
+++ incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/CassandraSirona.java Wed Nov 13 08:09:46 2013
@@ -33,7 +33,8 @@ import me.prettyprint.hector.api.ddl.Com
 import me.prettyprint.hector.api.factory.HFactory;
 import org.apache.sirona.cassandra.CassandraBuilder;
 import org.apache.sirona.cassandra.DynamicDelegatedSerializer;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.Destroying;
+import org.apache.sirona.configuration.ioc.IoCs;
 
 import java.util.Collection;
 import java.util.HashSet;
@@ -47,7 +48,7 @@ public class CassandraSirona {
     private static final String EMPTY_VALUE = "";
     private static final String SEPARATOR = "->";
 
-    private final CassandraBuilder builder = Configuration.findOrCreateInstance(CassandraBuilder.class);
+    private final CassandraBuilder builder = IoCs.findOrCreateInstance(CassandraBuilder.class);
     private final Cluster cluster;
     private final Keyspace keyspace;
 
@@ -95,7 +96,7 @@ public class CassandraSirona {
         return builder.toString();
     }
 
-    @Configuration.Destroying
+    @Destroying
     public void shutdown() {
         HFactory.shutdownCluster(cluster);
     }

Modified: incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CassandraCollectorCounterDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CassandraCollectorCounterDataStore.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CassandraCollectorCounterDataStore.java (original)
+++ incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/counter/CassandraCollectorCounterDataStore.java Wed Nov 13 08:09:46 2013
@@ -31,7 +31,7 @@ import me.prettyprint.hector.api.query.Q
 import org.apache.sirona.Role;
 import org.apache.sirona.cassandra.DynamicDelegatedSerializer;
 import org.apache.sirona.cassandra.collector.CassandraSirona;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.counters.Counter;
 import org.apache.sirona.counters.Unit;
 import org.apache.sirona.math.M2AwareStatisticalSummary;
@@ -56,7 +56,7 @@ public class CassandraCollectorCounterDa
     private final CassandraSirona cassandra;
 
     public CassandraCollectorCounterDataStore() {
-        this.cassandra = Configuration.findOrCreateInstance(CassandraSirona.class);
+        this.cassandra = IoCs.findOrCreateInstance(CassandraSirona.class);
         this.keyspace = cassandra.getKeyspace();
         this.family = cassandra.getCounterColumnFamily();
     }

Modified: incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/gauge/CassandraCollectorGaugeDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/gauge/CassandraCollectorGaugeDataStore.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/gauge/CassandraCollectorGaugeDataStore.java (original)
+++ incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/gauge/CassandraCollectorGaugeDataStore.java Wed Nov 13 08:09:46 2013
@@ -27,7 +27,7 @@ import me.prettyprint.hector.api.factory
 import me.prettyprint.hector.api.query.QueryResult;
 import org.apache.sirona.Role;
 import org.apache.sirona.cassandra.collector.CassandraSirona;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.counters.Unit;
 import org.apache.sirona.store.gauge.CollectorGaugeDataStore;
 import org.apache.sirona.store.gauge.GaugeValuesRequest;
@@ -48,7 +48,7 @@ public class CassandraCollectorGaugeData
     private final String markerFamily;
 
     public CassandraCollectorGaugeDataStore() {
-        this.cassandra = Configuration.findOrCreateInstance(CassandraSirona.class);
+        this.cassandra = IoCs.findOrCreateInstance(CassandraSirona.class);
         this.keyspace = cassandra.getKeyspace();
         this.valueFamily = cassandra.getGaugeValuesColumnFamily();
         this.markerFamily = cassandra.getMarkerGaugesColumFamily();

Modified: incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/status/CassandraCollectorNodeStatusDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/status/CassandraCollectorNodeStatusDataStore.java?rev=1541417&r1=1541416&r2=1541417&view=diff
==============================================================================
--- incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/status/CassandraCollectorNodeStatusDataStore.java (original)
+++ incubator/sirona/trunk/server/store/cassandra/src/main/java/org/apache/sirona/cassandra/collector/status/CassandraCollectorNodeStatusDataStore.java Wed Nov 13 08:09:46 2013
@@ -27,7 +27,7 @@ import me.prettyprint.hector.api.factory
 import me.prettyprint.hector.api.mutation.Mutator;
 import me.prettyprint.hector.api.query.QueryResult;
 import org.apache.sirona.cassandra.collector.CassandraSirona;
-import org.apache.sirona.configuration.Configuration;
+import org.apache.sirona.configuration.ioc.IoCs;
 import org.apache.sirona.status.NodeStatus;
 import org.apache.sirona.status.Status;
 import org.apache.sirona.status.ValidationResult;
@@ -47,7 +47,7 @@ public class CassandraCollectorNodeStatu
     private final String family;
 
     public CassandraCollectorNodeStatusDataStore() {
-        final CassandraSirona cassandra = Configuration.findOrCreateInstance(CassandraSirona.class);
+        final CassandraSirona cassandra = IoCs.findOrCreateInstance(CassandraSirona.class);
         this.keyspace = cassandra.getKeyspace();
         this.family = cassandra.getStatusColumnFamily();
     }