You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by er...@apache.org on 2005/09/11 02:25:05 UTC
svn commit: r280052 - in
/directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration:
./ impl/
Author: erodriguez
Date: Sat Sep 10 17:25:00 2005
New Revision: 280052
URL: http://svn.apache.org/viewcvs?rev=280052&view=rev
Log:
Refactoring to remove tangles:
o Removed load, PID generation, delete, update, and list configs from Config Admin Factory.
o Moved load and PID generation to Config Admin.
o Moved update and delete to ConfigurationImpl.
o Moved all Configuration generation and list retrieval to the store.
o Widened some Hashtable's to Dictionary's.
Config Admin Factory is now only dealing with service dynamics and, therefore, ready for an update to use Service Binder.
Modified:
directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/ConfigurationStore.java
directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationAdminFactory.java
directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationAdminImpl.java
directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationDictionary.java
directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationImpl.java
Modified: directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/ConfigurationStore.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/ConfigurationStore.java?rev=280052&r1=280051&r2=280052&view=diff
==============================================================================
--- directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/ConfigurationStore.java (original)
+++ directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/ConfigurationStore.java Sat Sep 10 17:25:00 2005
@@ -22,12 +22,20 @@
import java.util.Enumeration;
import org.apache.configuration.impl.ConfigurationDictionary;
-
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.service.cm.Configuration;
public interface ConfigurationStore
{
public abstract Enumeration listPids();
+ public abstract Configuration[] listConfigurations( String filter ) throws IOException, InvalidSyntaxException;
+
+ public abstract Configuration getNewConfiguration( String bundleLocation, String factoryPid, String servicePid );
+
+ public abstract Configuration getNewConfiguration( String bundleLocation, String factoryPid, String servicePid,
+ ConfigurationDictionary properties );
+
public abstract ConfigurationDictionary load( String pid ) throws IOException;
public abstract ConfigurationDictionary[] loadAll( String factoryPid ) throws IOException;
@@ -39,6 +47,6 @@
public abstract void deleteAll( String factoryPid ) throws IOException;
public abstract String generatePid( String factoryPid ) throws IOException;
-
+
public abstract void setConfigurationListener( ConfigurationListener configurationListener );
}
Modified: directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationAdminFactory.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationAdminFactory.java?rev=280052&r1=280051&r2=280052&view=diff
==============================================================================
--- directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationAdminFactory.java (original)
+++ directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationAdminFactory.java Sat Sep 10 17:25:00 2005
@@ -18,11 +18,8 @@
package org.apache.configuration.impl;
import java.io.IOException;
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
-import java.util.Enumeration;
+import java.util.Dictionary;
import java.util.Hashtable;
import java.util.List;
@@ -33,7 +30,6 @@
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.ServiceEvent;
import org.osgi.framework.ServiceFactory;
@@ -94,7 +90,7 @@
lookForAlreadyRegisteredServices();
}
- public void configurationChanged( Hashtable configuration )
+ public void configurationChanged( Dictionary configuration )
{
try
{
@@ -106,6 +102,44 @@
}
}
+ public Object getService( Bundle bundle, ServiceRegistration registration )
+ {
+ return new ConfigurationAdminImpl( store, bundle );
+ }
+
+ public void ungetService( Bundle bundle, ServiceRegistration registration, Object service )
+ {
+ // For now we do nothing here
+ }
+
+ public void bundleChanged( BundleEvent event )
+ {
+ if ( event.getType() == BundleEvent.UNINSTALLED )
+ {
+ String uninstalledBundleLocation = event.getBundle().getLocation();
+ existingBundleLocations.remove( uninstalledBundleLocation );
+ findAndUnbindConfigurationsDynamicallyBoundTo( uninstalledBundleLocation );
+ }
+ else
+ if ( event.getType() == BundleEvent.INSTALLED )
+ {
+ String installedBundleLocation = event.getBundle().getLocation();
+ existingBundleLocations.put( installedBundleLocation, installedBundleLocation );
+ }
+ }
+
+ public void serviceChanged( ServiceEvent event )
+ {
+ ServiceReference sr = event.getServiceReference();
+ int eventType = event.getType();
+ String[] objectClasses = (String[]) sr.getProperty( "objectClass" );
+
+ for ( int ii = 0; ii < objectClasses.length; ++ii )
+ {
+ serviceChanged( sr, eventType, objectClasses[ ii ] );
+ }
+ }
+
private void lookForAlreadyRegisteredServices()
{
notifyRegisteredServices( ConfigurationPlugin.class.getName() );
@@ -187,7 +221,7 @@
+ DYNAMIC_BUNDLE_LOCATION + "=" + Boolean.TRUE + "))";
try
{
- Configuration[] configurations = listConfigurations( filter );
+ Configuration[] configurations = store.listConfigurations( filter );
for ( int ii = 0; configurations != null && ii < configurations.length; ++ii )
{
configurations[ ii ].setBundleLocation( null );
@@ -290,7 +324,7 @@
}
}
- private void updateTargetServicesMatching( ConfigurationDictionary cd ) throws IOException
+ void updateTargetServicesMatching( ConfigurationDictionary cd ) throws IOException
{
String servicePid = (String) cd.get( Constants.SERVICE_PID );
@@ -438,159 +472,6 @@
{
log.error( "Invalid syntax in ldap filter " + filter, e );
return new ServiceReference[ 0 ];
- }
- }
-
- void delete( final ConfigurationImpl config ) throws IOException
- {
- try
- {
- AccessController.doPrivileged( new PrivilegedExceptionAction()
- {
- public Object run() throws IOException
- {
- ConfigurationDictionary cd = store.delete( config.getPid() );
-
- if ( cd != null )
- {
- updateTargetServicesMatching( cd );
- }
-
- return null;
- }
- } );
- }
- catch ( PrivilegedActionException e )
- {
- throw (IOException) e.getException();
- }
- }
-
- void update( final ConfigurationImpl config ) throws IOException
- {
- try
- {
- AccessController.doPrivileged( new PrivilegedExceptionAction()
- {
- public Object run() throws IOException
- {
- store.store( config.getPid(), config.getFactoryPid(), config.getConfigurationDictionary() );
- updateTargetServicesMatching( config.getConfigurationDictionary() );
- return null;
- }
- } );
- }
- catch ( PrivilegedActionException e )
- {
- throw (IOException) e.getException();
- }
- }
-
- String generatePid( final String factoryPid ) throws IOException
- {
- try
- {
- return (String) AccessController.doPrivileged( new PrivilegedExceptionAction()
- {
- public Object run() throws IOException
- {
- return store.generatePid( factoryPid );
- }
- } );
- }
- catch ( PrivilegedActionException e )
- {
- throw (IOException) e.getException();
- }
- }
-
- ConfigurationDictionary load( final String pid ) throws IOException
- {
- try
- {
- return (ConfigurationDictionary) AccessController.doPrivileged( new PrivilegedExceptionAction()
- {
- public Object run() throws IOException
- {
- return store.load( pid );
- }
- } );
- }
- catch ( PrivilegedActionException e )
- {
- throw (IOException) e.getException();
- }
- }
-
- Configuration[] listConfigurations( String filterString ) throws IOException, InvalidSyntaxException
- {
- Enumeration configurationPids = store.listPids();
-
- List results = new ArrayList();
-
- while ( configurationPids.hasMoreElements() )
- {
- String pid = (String) configurationPids.nextElement();
- ConfigurationDictionary config = store.load( pid );
-
- if ( config == null )
- {
- continue;
- }
-
- if ( filterString == null )
- {
- results.add( new ConfigurationImpl( this, config ) );
- }
- else
- {
- Filter filter = ConfigurationFactory.bc.createFilter( filterString );
-
- if ( filter.match( config ) )
- {
- results.add( new ConfigurationImpl( this, config ) );
- }
- }
- }
-
- return (Configuration[]) results.toArray( new Configuration[ results.size() ] );
- }
-
- public Object getService( Bundle bundle, ServiceRegistration registration )
- {
- return new ConfigurationAdminImpl( this, bundle );
- }
-
- public void ungetService( Bundle bundle, ServiceRegistration registration, Object service )
- {
- // For now we do nothing here
- }
-
- public void bundleChanged( BundleEvent event )
- {
- if ( event.getType() == BundleEvent.UNINSTALLED )
- {
- String uninstalledBundleLocation = event.getBundle().getLocation();
- existingBundleLocations.remove( uninstalledBundleLocation );
- findAndUnbindConfigurationsDynamicallyBoundTo( uninstalledBundleLocation );
- }
- else
- if ( event.getType() == BundleEvent.INSTALLED )
- {
- String installedBundleLocation = event.getBundle().getLocation();
- existingBundleLocations.put( installedBundleLocation, installedBundleLocation );
- }
- }
-
- public void serviceChanged( ServiceEvent event )
- {
- ServiceReference sr = event.getServiceReference();
- int eventType = event.getType();
- String[] objectClasses = (String[]) sr.getProperty( "objectClass" );
-
- for ( int ii = 0; ii < objectClasses.length; ++ii )
- {
- serviceChanged( sr, eventType, objectClasses[ ii ] );
}
}
Modified: directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationAdminImpl.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationAdminImpl.java?rev=280052&r1=280051&r2=280052&view=diff
==============================================================================
--- directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationAdminImpl.java (original)
+++ directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationAdminImpl.java Sat Sep 10 17:25:00 2005
@@ -22,6 +22,7 @@
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import org.apache.configuration.ConfigurationStore;
import org.osgi.framework.AdminPermission;
import org.osgi.framework.Bundle;
import org.osgi.framework.InvalidSyntaxException;
@@ -38,14 +39,14 @@
{
private static final AdminPermission ADMIN_PERMISSION = new AdminPermission();
- private final ConfigurationAdminFactory factory;
private Bundle callingBundle;
private String callingBundleLocation;
+ private ConfigurationStore store;
- ConfigurationAdminImpl( ConfigurationAdminFactory factory, Bundle callingBundle )
+ ConfigurationAdminImpl( ConfigurationStore store, Bundle callingBundle )
{
+ this.store = store;
this.callingBundle = callingBundle;
- this.factory = factory;
this.callingBundleLocation = callingBundle.getLocation();
}
@@ -56,8 +57,7 @@
public Configuration createFactoryConfiguration( String factoryPid, String location ) throws IOException
{
- ConfigurationImpl config = new ConfigurationImpl( factory, location, factoryPid, this.factory
- .generatePid( factoryPid ) );
+ Configuration config = store.getNewConfiguration( location, factoryPid, generatePid( factoryPid ) );
config.update();
@@ -70,7 +70,7 @@
try
{
- dictionary = factory.load( pid );
+ dictionary = load( pid );
}
catch ( IOException e )
{
@@ -79,7 +79,7 @@
if ( dictionary == null )
{
- return new ConfigurationImpl( factory, callingBundleLocation, null, pid );
+ return store.getNewConfiguration( callingBundleLocation, null, pid );
}
String bundleLocation = (String) dictionary.get( ConfigurationAdmin.SERVICE_BUNDLELOCATION );
@@ -93,7 +93,7 @@
String factoryPid = (String) dictionary.get( ConfigurationAdmin.SERVICE_FACTORYPID );
- return new ConfigurationImpl( factory, bundleLocation, factoryPid, pid, dictionary );
+ return store.getNewConfiguration( bundleLocation, factoryPid, pid, dictionary );
}
public Configuration getConfiguration( String pid, String location ) throws IOException
@@ -102,7 +102,7 @@
try
{
- dictionary = this.factory.load( pid );
+ dictionary = load( pid );
}
catch ( IOException e )
{
@@ -111,7 +111,7 @@
if ( dictionary == null )
{
- ConfigurationImpl c = new ConfigurationImpl( factory, location, null, pid );
+ Configuration c = store.getNewConfiguration( location, null, pid );
if ( location != null )
{
@@ -124,7 +124,25 @@
String bundleLocation = (String) dictionary.get( ConfigurationAdmin.SERVICE_BUNDLELOCATION );
String factoryPid = (String) dictionary.get( ConfigurationAdmin.SERVICE_FACTORYPID );
- return new ConfigurationImpl( factory, bundleLocation, factoryPid, pid, dictionary );
+ return store.getNewConfiguration( bundleLocation, factoryPid, pid, dictionary );
+ }
+
+ private ConfigurationDictionary load( final String pid ) throws IOException
+ {
+ try
+ {
+ return (ConfigurationDictionary) AccessController.doPrivileged( new PrivilegedExceptionAction()
+ {
+ public Object run() throws IOException
+ {
+ return store.load( pid );
+ }
+ } );
+ }
+ catch ( PrivilegedActionException e )
+ {
+ throw (IOException) e.getException();
+ }
}
public Configuration[] listConfigurations( final String filterString ) throws IOException, InvalidSyntaxException
@@ -137,7 +155,7 @@
{
public Object run() throws IOException, InvalidSyntaxException
{
- return factory.listConfigurations( filterString );
+ return store.listConfigurations( filterString );
}
} );
}
@@ -154,5 +172,23 @@
}
return configurations;
+ }
+
+ private String generatePid( final String factoryPid ) throws IOException
+ {
+ try
+ {
+ return (String) AccessController.doPrivileged( new PrivilegedExceptionAction()
+ {
+ public Object run() throws IOException
+ {
+ return store.generatePid( factoryPid );
+ }
+ } );
+ }
+ catch ( PrivilegedActionException e )
+ {
+ throw (IOException) e.getException();
+ }
}
}
Modified: directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationDictionary.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationDictionary.java?rev=280052&r1=280051&r2=280052&view=diff
==============================================================================
--- directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationDictionary.java (original)
+++ directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationDictionary.java Sat Sep 10 17:25:00 2005
@@ -68,7 +68,7 @@
allowedPrimitiveTypes.put( Boolean.TYPE, Boolean.TYPE );
}
- private final static Hashtable classToPrimitiveType = new Hashtable();
+ private final static Map classToPrimitiveType = new HashMap();
static
{
@@ -92,7 +92,7 @@
* A dictionary holding the key-value pairs of the configuration with
* the keys in the original case they were entered in.
*/
- final Hashtable originalCase;
+ final Dictionary originalCase;
public ConfigurationDictionary()
{
@@ -104,7 +104,7 @@
*
* @param dictionary The original dictionary.
*/
- public ConfigurationDictionary( Hashtable dictionary )
+ public ConfigurationDictionary( Dictionary dictionary )
{
this.lowercaseToOriginalCase = new Hashtable();
this.originalCase = dictionary;
@@ -214,7 +214,7 @@
return originalCase.size();
}
- Hashtable getOriginal()
+ Dictionary getOriginal()
{
return originalCase;
}
Modified: directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationImpl.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationImpl.java?rev=280052&r1=280051&r2=280052&view=diff
==============================================================================
--- directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationImpl.java (original)
+++ directory/sandbox/trunk/osgi-spec/trunk/configuration/src/main/java/org/apache/configuration/impl/ConfigurationImpl.java Sat Sep 10 17:25:00 2005
@@ -18,8 +18,12 @@
package org.apache.configuration.impl;
import java.io.IOException;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import java.util.Dictionary;
+import org.apache.configuration.ConfigurationStore;
import org.osgi.framework.Constants;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
@@ -29,12 +33,12 @@
/**
* The configuration information for a ManagedService or ManagedServiceFactory object.
*/
-class ConfigurationImpl implements Configuration
+public class ConfigurationImpl implements Configuration
{
/** the log for this class */
private static final Logger log = LoggerFactory.getLogger( ConfigurationImpl.class );
- private final ConfigurationAdminFactory factory;
+ private final ConfigurationStore store;
private final String factoryPid;
private final String servicePid;
@@ -43,16 +47,16 @@
private ConfigurationDictionary properties;
- ConfigurationImpl( ConfigurationAdminFactory factory, String bundleLocation, String factoryPid, String servicePid )
+ ConfigurationImpl( ConfigurationStore store, String bundleLocation, String factoryPid, String servicePid )
{
- this( factory, bundleLocation, factoryPid, servicePid, null );
+ this( store, bundleLocation, factoryPid, servicePid, null );
}
- ConfigurationImpl( ConfigurationAdminFactory factory, String bundleLocation, String factoryPid, String servicePid,
+ ConfigurationImpl( ConfigurationStore store, String bundleLocation, String factoryPid, String servicePid,
ConfigurationDictionary properties )
{
this.bundleLocation = bundleLocation;
- this.factory = factory;
+ this.store = store;
this.factoryPid = factoryPid;
this.servicePid = servicePid;
this.properties = properties;
@@ -63,20 +67,20 @@
}
}
- ConfigurationImpl( ConfigurationAdminFactory factory, ConfigurationDictionary properties )
+ ConfigurationImpl( ConfigurationStore store, ConfigurationDictionary properties )
{
this.bundleLocation = (String) properties.get( ConfigurationAdmin.SERVICE_BUNDLELOCATION );
this.factoryPid = (String) properties.get( ConfigurationAdmin.SERVICE_FACTORYPID );
this.servicePid = (String) properties.get( Constants.SERVICE_PID );
- this.factory = factory;
+ this.store = store;
this.properties = properties;
}
public void delete() throws IOException
{
throwIfDeleted();
- factory.delete( this );
+ delete( this );
deleted = true;
}
@@ -190,7 +194,46 @@
{
throwIfDeleted();
ensureAutoPropertiesAreWritten();
- factory.update( this );
+ update( this );
+ }
+
+ void delete( final ConfigurationImpl config ) throws IOException
+ {
+ try
+ {
+ AccessController.doPrivileged( new PrivilegedExceptionAction()
+ {
+ public Object run() throws IOException
+ {
+ store.delete( config.getPid() );
+
+ return null;
+ }
+ } );
+ }
+ catch ( PrivilegedActionException e )
+ {
+ throw (IOException) e.getException();
+ }
+ }
+
+ void update( final ConfigurationImpl config ) throws IOException
+ {
+ try
+ {
+ AccessController.doPrivileged( new PrivilegedExceptionAction()
+ {
+ public Object run() throws IOException
+ {
+ store.store( config.getPid(), config.getFactoryPid(), config.getConfigurationDictionary() );
+ return null;
+ }
+ } );
+ }
+ catch ( PrivilegedActionException e )
+ {
+ throw (IOException) e.getException();
+ }
}
void ensureAutoPropertiesAreWritten()