Fix for FELIX-443: Make classes static and pass ConfigurationManager.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@607019 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java b/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
index c9ee8b6..8e339a7 100644
--- a/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
+++ b/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
@@ -21,37 +21,12 @@
import java.io.IOException;
import java.security.SecureRandom;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
+import java.util.*;
import org.apache.felix.cm.PersistenceManager;
import org.apache.felix.cm.file.FilePersistenceManager;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.BundleListener;
-import org.osgi.framework.Constants;
-import org.osgi.framework.Filter;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.cm.ConfigurationAdmin;
-import org.osgi.service.cm.ConfigurationEvent;
-import org.osgi.service.cm.ConfigurationException;
-import org.osgi.service.cm.ConfigurationListener;
-import org.osgi.service.cm.ConfigurationPlugin;
-import org.osgi.service.cm.ManagedService;
-import org.osgi.service.cm.ManagedServiceFactory;
+import org.osgi.framework.*;
+import org.osgi.service.cm.*;
import org.osgi.service.log.LogService;
import org.osgi.util.tracker.ServiceTracker;
@@ -210,8 +185,8 @@
configurationAdminRegistration = bundleContext.registerService( ConfigurationAdmin.class.getName(), caf, props );
// start handling ManagedService[Factory] services
- managedServiceTracker = new ManagedServiceTracker();
- managedServiceFactoryTracker = new ManagedServiceFactoryTracker();
+ managedServiceTracker = new ManagedServiceTracker(this);
+ managedServiceFactoryTracker = new ManagedServiceFactoryTracker(this);
}
@@ -1289,11 +1264,14 @@
}
}
- private abstract class AbstractManagedServiceTracker extends ServiceTracker
+ private static abstract class AbstractManagedServiceTracker extends ServiceTracker
{
- AbstractManagedServiceTracker( String className )
+ protected final ConfigurationManager cm;
+
+ AbstractManagedServiceTracker( ConfigurationManager cm, String className )
{
- super( bundleContext, className, null );
+ super( cm.bundleContext, className, null );
+ this.cm = cm;
open();
}
@@ -1304,7 +1282,7 @@
String pid = ( String ) reference.getProperty( Constants.SERVICE_PID );
if ( pid != null )
{
- ConfigurationImpl cfg = getCachedConfiguration( pid );
+ ConfigurationImpl cfg = cm.getCachedConfiguration( pid );
if ( cfg != null && reference.equals( cfg.getServiceReference() ) )
{
cfg.setServiceReference( null );
@@ -1315,11 +1293,12 @@
}
}
- private class ManagedServiceTracker extends AbstractManagedServiceTracker
+ private static class ManagedServiceTracker extends AbstractManagedServiceTracker
{
- ManagedServiceTracker()
+
+ ManagedServiceTracker(ConfigurationManager cm)
{
- super( ManagedService.class.getName() );
+ super( cm, ManagedService.class.getName() );
}
@@ -1330,22 +1309,22 @@
// configure the managed service
if ( serviceObject instanceof ManagedService )
{
- configure( reference, ( ManagedService ) serviceObject );
+ cm.configure(reference, ( ManagedService ) serviceObject);
}
else
{
- log( LogService.LOG_WARNING, "Service " + serviceObject + " is not a ManagedService", null );
+ cm.log( LogService.LOG_WARNING, "Service " + serviceObject + " is not a ManagedService", null );
}
return serviceObject;
}
}
- private class ManagedServiceFactoryTracker extends AbstractManagedServiceTracker
+ private static class ManagedServiceFactoryTracker extends AbstractManagedServiceTracker
{
- ManagedServiceFactoryTracker()
+ ManagedServiceFactoryTracker(ConfigurationManager cm)
{
- super( ManagedServiceFactory.class.getName() );
+ super( cm, ManagedServiceFactory.class.getName() );
}
@@ -1356,11 +1335,11 @@
// configure the managed service factory
if ( serviceObject instanceof ManagedServiceFactory )
{
- configure( reference, ( ManagedServiceFactory ) serviceObject );
+ cm.configure( reference, ( ManagedServiceFactory ) serviceObject );
}
else
{
- log( LogService.LOG_WARNING, "Service " + serviceObject + " is not a ManagedServiceFactory", null );
+ cm.log( LogService.LOG_WARNING, "Service " + serviceObject + " is not a ManagedServiceFactory", null );
}
return serviceObject;