You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by no...@apache.org on 2010/10/12 16:15:50 UTC

svn commit: r1021782 - in /incubator/aries/trunk/jndi: jndi-api/ jndi-api/src/main/java/org/apache/aries/jndi/spi/ jndi-bundle/ jndi-core/src/main/java/org/apache/aries/jndi/ jndi-core/src/main/java/org/apache/aries/jndi/startup/

Author: not
Date: Tue Oct 12 14:15:49 2010
New Revision: 1021782

URL: http://svn.apache.org/viewvc?rev=1021782&view=rev
Log:
ARIES-452 Deliver ability to call out to augment the JNDI environment.

Added:
    incubator/aries/trunk/jndi/jndi-api/src/main/java/org/apache/aries/jndi/spi/
    incubator/aries/trunk/jndi/jndi-api/src/main/java/org/apache/aries/jndi/spi/EnvironmentAugmentation.java
Modified:
    incubator/aries/trunk/jndi/jndi-api/pom.xml
    incubator/aries/trunk/jndi/jndi-bundle/pom.xml
    incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/ContextManagerService.java
    incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/OSGiInitialContextFactoryBuilder.java
    incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/Utils.java
    incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/startup/Activator.java

Modified: incubator/aries/trunk/jndi/jndi-api/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jndi/jndi-api/pom.xml?rev=1021782&r1=1021781&r2=1021782&view=diff
==============================================================================
--- incubator/aries/trunk/jndi/jndi-api/pom.xml (original)
+++ incubator/aries/trunk/jndi/jndi-api/pom.xml Tue Oct 12 14:15:49 2010
@@ -32,7 +32,8 @@
     <properties>
         <aries.osgi.export>
             org.osgi.service.jndi;version="1.0.0",
-            org.apache.aries.jndi.urls;version=${version}
+            org.apache.aries.jndi.urls;version=${version},
+            org.apache.aries.jndi.spi;version=${version}
         </aries.osgi.export>
         <aries.osgi.import>
             !org.osgi.service.jndi*,

Added: incubator/aries/trunk/jndi/jndi-api/src/main/java/org/apache/aries/jndi/spi/EnvironmentAugmentation.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jndi/jndi-api/src/main/java/org/apache/aries/jndi/spi/EnvironmentAugmentation.java?rev=1021782&view=auto
==============================================================================
--- incubator/aries/trunk/jndi/jndi-api/src/main/java/org/apache/aries/jndi/spi/EnvironmentAugmentation.java (added)
+++ incubator/aries/trunk/jndi/jndi-api/src/main/java/org/apache/aries/jndi/spi/EnvironmentAugmentation.java Tue Oct 12 14:15:49 2010
@@ -0,0 +1,8 @@
+package org.apache.aries.jndi.spi;
+
+import java.util.Hashtable;
+
+public interface EnvironmentAugmentation 
+{
+  public void augmentEnvironment(Hashtable<?, ?> env);
+}
\ No newline at end of file

Modified: incubator/aries/trunk/jndi/jndi-bundle/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jndi/jndi-bundle/pom.xml?rev=1021782&r1=1021781&r2=1021782&view=diff
==============================================================================
--- incubator/aries/trunk/jndi/jndi-bundle/pom.xml (original)
+++ incubator/aries/trunk/jndi/jndi-bundle/pom.xml Tue Oct 12 14:15:49 2010
@@ -33,7 +33,8 @@
     <properties>
         <aries.osgi.export>
             org.osgi.service.jndi;version="1.0",
-            org.apache.aries.jndi.urls;version=${version}
+            org.apache.aries.jndi.urls;version=${version},
+            org.apache.aries.jndi.spi;version=${version}
         </aries.osgi.export>
         <aries.osgi.import>
             net.sf.cglib*;resolution:=optional,

Modified: incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/ContextManagerService.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/ContextManagerService.java?rev=1021782&r1=1021781&r2=1021782&view=diff
==============================================================================
--- incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/ContextManagerService.java (original)
+++ incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/ContextManagerService.java Tue Oct 12 14:15:49 2010
@@ -71,6 +71,7 @@ public class ContextManagerService imple
     
     private Context getInitialContext(Map<?,?> environment) throws NamingException {        
         Hashtable<?,?> env = Utils.toHashtable(environment);
+        Utils.augmentEnvironment(env);
         Context context = ContextHelper.getInitialContext(callerContext, env);
         contexts.add(context);
         return context;

Modified: incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/OSGiInitialContextFactoryBuilder.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/OSGiInitialContextFactoryBuilder.java?rev=1021782&r1=1021781&r2=1021782&view=diff
==============================================================================
--- incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/OSGiInitialContextFactoryBuilder.java (original)
+++ incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/OSGiInitialContextFactoryBuilder.java Tue Oct 12 14:15:49 2010
@@ -40,6 +40,8 @@ public class OSGiInitialContextFactoryBu
 	public Context getInitialContext(Hashtable<?, ?> environment) 
 	    throws NamingException {
 	    
+	    Utils.augmentEnvironment(environment);
+	  
 	    BundleContext context = Utils.getBundleContext(environment, InitialContext.class.getName());	    
 	    if (context == null) {
 	        context = Utils.getBundleContext(environment, InitialDirContext.class.getName());

Modified: incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/Utils.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/Utils.java?rev=1021782&r1=1021781&r2=1021782&view=diff
==============================================================================
--- incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/Utils.java (original)
+++ incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/Utils.java Tue Oct 12 14:15:49 2010
@@ -28,6 +28,8 @@ import java.util.Map;
 
 import javax.naming.NamingException;
 
+import org.apache.aries.jndi.spi.EnvironmentAugmentation;
+import org.apache.aries.jndi.startup.Activator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleReference;
 import org.osgi.framework.ServiceReference;
@@ -162,4 +164,17 @@ public final class Utils {
             }
         }
     }
-}
+
+    public static void augmentEnvironment(Hashtable<?, ?> environment) 
+    {
+      Object[] objects = Activator.getEnvironmentAugmentors();
+      
+      if (objects != null) {
+        for (Object obj : objects) {
+          if (obj instanceof EnvironmentAugmentation) {
+            ((EnvironmentAugmentation)obj).augmentEnvironment(environment);
+          }
+        }
+      }
+    }
+}
\ No newline at end of file

Modified: incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/startup/Activator.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/startup/Activator.java?rev=1021782&r1=1021781&r2=1021782&view=diff
==============================================================================
--- incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/startup/Activator.java (original)
+++ incubator/aries/trunk/jndi/jndi-core/src/main/java/org/apache/aries/jndi/startup/Activator.java Tue Oct 12 14:15:49 2010
@@ -34,6 +34,7 @@ import org.apache.aries.jndi.OSGiInitial
 import org.apache.aries.jndi.OSGiObjectFactoryBuilder;
 import org.apache.aries.jndi.ProviderAdminServiceFactory;
 import org.apache.aries.jndi.Utils;
+import org.apache.aries.jndi.spi.EnvironmentAugmentation;
 import org.apache.aries.jndi.tracker.ServiceTrackerCustomizers;
 import org.apache.aries.jndi.urls.URLObjectFactoryFinder;
 import org.osgi.framework.BundleActivator;
@@ -56,6 +57,7 @@ public class Activator implements Bundle
     private static ServiceTracker urlObjectFactoryFinders;
     private static ServiceTracker initialContextFactories;
     private static ServiceTracker objectFactories;
+    private static ServiceTracker environmentAugmentors;
     
     public void start(BundleContext context) {
         
@@ -63,6 +65,7 @@ public class Activator implements Bundle
         objectFactories = initServiceTracker(context, ObjectFactory.class, ServiceTrackerCustomizers.URL_FACTORY_CACHE);
         icfBuilders = initServiceTracker(context, InitialContextFactoryBuilder.class, ServiceTrackerCustomizers.LAZY);
         urlObjectFactoryFinders = initServiceTracker(context, URLObjectFactoryFinder.class, ServiceTrackerCustomizers.LAZY);
+        environmentAugmentors = initServiceTracker(context, EnvironmentAugmentation.class, null);
         
         try {
             OSGiInitialContextFactoryBuilder builder = new OSGiInitialContextFactoryBuilder();
@@ -121,7 +124,7 @@ public class Activator implements Bundle
         urlObjectFactoryFinders.close();
         objectFactories.close();
         initialContextFactories.close();
-        
+        environmentAugmentors.close();
     }
     
     /*
@@ -168,4 +171,9 @@ public class Activator implements Bundle
       
       return refs;
     }
+    
+    public static Object[] getEnvironmentAugmentors()
+    {
+      return environmentAugmentors.getServices();
+    }
 }