You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2009/02/20 16:11:33 UTC

svn commit: r746272 - /servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/

Author: gnodet
Date: Fri Feb 20 15:11:33 2009
New Revision: 746272

URL: http://svn.apache.org/viewvc?rev=746272&view=rev
Log:
SMX4NMR-94: add some javadocs and move InitialContextWrapper to upper level

Added:
    servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/InitialContextWrapper.java
Modified:
    servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/GlobalInitialContextFactoryBuilder.java
    servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/InitialContextFactoryWrapper.java
    servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/OSGiContext.java
    servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/OSGiInitialContextFactoryBuilder.java

Modified: servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/GlobalInitialContextFactoryBuilder.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/GlobalInitialContextFactoryBuilder.java?rev=746272&r1=746271&r2=746272&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/GlobalInitialContextFactoryBuilder.java (original)
+++ servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/GlobalInitialContextFactoryBuilder.java Fri Feb 20 15:11:33 2009
@@ -1,3 +1,19 @@
+/*
+ * 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.servicemix.naming;
 
 import java.util.Hashtable;
@@ -8,11 +24,13 @@
 import javax.naming.Context;
 
 import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.DisposableBean;
 import org.apache.xbean.naming.global.GlobalContextManager;
 
 /**
+ * An InitialContextFactoryBuilder used to return an XBean Naming context.
  */
-public class GlobalInitialContextFactoryBuilder implements InitialContextFactoryBuilder, InitializingBean {
+public class GlobalInitialContextFactoryBuilder implements InitialContextFactoryBuilder, InitializingBean, DisposableBean {
 
     private Context globalContext;
 
@@ -28,6 +46,10 @@
         GlobalContextManager.setGlobalContext(globalContext);
     }
 
+    public void destroy() throws Exception {
+        GlobalContextManager.setGlobalContext(null);
+    }
+
     public InitialContextFactory createInitialContextFactory(Hashtable<?, ?> environment) throws NamingException {
         return new GlobalContextManager();
     }

Modified: servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/InitialContextFactoryWrapper.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/InitialContextFactoryWrapper.java?rev=746272&r1=746271&r2=746272&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/InitialContextFactoryWrapper.java (original)
+++ servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/InitialContextFactoryWrapper.java Fri Feb 20 15:11:33 2009
@@ -19,24 +19,15 @@
 import java.util.Hashtable;
 
 import javax.naming.spi.InitialContextFactory;
-import javax.naming.spi.NamingManager;
 import javax.naming.Context;
 import javax.naming.NamingException;
-import javax.naming.Name;
-import javax.naming.NameClassPair;
-import javax.naming.NamingEnumeration;
-import javax.naming.Binding;
-import javax.naming.NameParser;
-import javax.naming.InitialContext;
-
-import org.apache.xbean.naming.context.ContextFlyweight;
 
 /**
+ * A wrapper around an InitialContextFactory used to ensure the InitialContext returned by
+ * the factory is correctly wrapped to allow access to the OSGi context and other URL contexts. 
  */
 public class InitialContextFactoryWrapper implements InitialContextFactory {
 
-    public static final String OSGI_SCHEME = "osgi";
-
     private final InitialContextFactory delegate;
     private final Context osgiContext;
 
@@ -46,61 +37,7 @@
     }
 
     public Context getInitialContext(Hashtable<?, ?> environment) throws NamingException {
-        return new ContextWrapper(delegate.getInitialContext(environment), osgiContext, environment);
+        return new InitialContextWrapper(delegate.getInitialContext(environment), osgiContext, environment);
     }
 
-    public static class ContextWrapper extends InitialContext {
-
-        private final Context delegate;
-        private final Context osgiContext;
-
-        public ContextWrapper(Context delegate, Context osgiContext, Hashtable<?, ?> environment) throws NamingException {
-            super(environment);
-            this.delegate = delegate;
-            this.osgiContext = osgiContext;
-        }
-
-        protected Context getDefaultInitCtx() throws NamingException {
-            return delegate;
-        }
-
-        protected Context getURLOrDefaultInitCtx(String name) throws NamingException {
-            String scheme = getURLScheme(name);
-            if (OSGI_SCHEME.equals(scheme)) {
-                return osgiContext;
-            } else if (scheme != null) {
-                Context ctx = NamingManager.getURLContext(scheme, delegate.getEnvironment());
-                if (ctx != null) {
-                    return ctx;
-                }
-            }
-            return delegate;
-        }
-
-        protected Context getURLOrDefaultInitCtx(Name name) throws NamingException {
-            if (name.size() > 0) {
-                String first = name.get(0);
-                String scheme = getURLScheme(first);
-                if (OSGI_SCHEME.equals(scheme)) {
-                    return osgiContext;
-                } else if (scheme != null) {
-                    Context ctx = NamingManager.getURLContext(scheme, delegate.getEnvironment());
-                    if (ctx != null) {
-                        return ctx;
-                    }
-                }
-            }
-            return delegate;
-        }
-
-        private static String getURLScheme(String str) {
-            int colon_posn = str.indexOf(':');
-            int slash_posn = str.indexOf('/');
-            if (colon_posn > 0 && (slash_posn == -1 || colon_posn < slash_posn)) {
-                return str.substring(0, colon_posn);
-            }
-            return null;
-        }
-
-    }
 }

Added: servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/InitialContextWrapper.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/InitialContextWrapper.java?rev=746272&view=auto
==============================================================================
--- servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/InitialContextWrapper.java (added)
+++ servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/InitialContextWrapper.java Fri Feb 20 15:11:33 2009
@@ -0,0 +1,89 @@
+/*
+ * 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.servicemix.naming;
+
+import java.util.Hashtable;
+
+import javax.naming.InitialContext;
+import javax.naming.Context;
+import javax.naming.NamingException;
+import javax.naming.Name;
+import javax.naming.spi.NamingManager;
+
+/**
+ * InitialContext wrapper allowing the use of the default context provided, the OSGi context
+ * or any URL context supported by the JVM.
+ */
+public class InitialContextWrapper extends InitialContext {
+
+    public static final String OSGI_SCHEME = "osgi";
+
+    private final Context delegate;
+    private final Context osgiContext;
+
+    public InitialContextWrapper(Context delegate, Context osgiContext, Hashtable<?, ?> environment) throws NamingException {
+        super(environment);
+        this.delegate = delegate;
+        this.osgiContext = osgiContext;
+    }
+
+    @Override
+    protected Context getDefaultInitCtx() throws NamingException {
+        return delegate;
+    }
+
+    @Override
+    protected Context getURLOrDefaultInitCtx(String name) throws NamingException {
+        String scheme = getURLScheme(name);
+        if (OSGI_SCHEME.equals(scheme)) {
+            return osgiContext;
+        } else if (scheme != null) {
+            Context ctx = NamingManager.getURLContext(scheme, delegate.getEnvironment());
+            if (ctx != null) {
+                return ctx;
+            }
+        }
+        return delegate;
+    }
+
+    @Override
+    protected Context getURLOrDefaultInitCtx(Name name) throws NamingException {
+        if (name.size() > 0) {
+            String first = name.get(0);
+            String scheme = getURLScheme(first);
+            if (OSGI_SCHEME.equals(scheme)) {
+                return osgiContext;
+            } else if (scheme != null) {
+                Context ctx = NamingManager.getURLContext(scheme, delegate.getEnvironment());
+                if (ctx != null) {
+                    return ctx;
+                }
+            }
+        }
+        return delegate;
+    }
+
+    private static String getURLScheme(String str) {
+        int colon_posn = str.indexOf(':');
+        int slash_posn = str.indexOf('/');
+        if (colon_posn > 0 && (slash_posn == -1 || colon_posn < slash_posn)) {
+            return str.substring(0, colon_posn);
+        }
+        return null;
+    }
+
+}

Modified: servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/OSGiContext.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/OSGiContext.java?rev=746272&r1=746271&r2=746272&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/OSGiContext.java (original)
+++ servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/OSGiContext.java Fri Feb 20 15:11:33 2009
@@ -29,7 +29,8 @@
 import org.osgi.framework.BundleContext;
 
 /**
- *
+ * A read-only JNDI context that allows access to OSGi services in the registry.
+ * The result of a lookup will be a proxy to the filtered OSGi service.
  */
 public class OSGiContext extends ImmutableContext implements BundleContextAware {
 
@@ -37,7 +38,7 @@
     private BundleContext bundleContext;
 
     public OSGiContext() throws NamingException {
-        super(Collections.EMPTY_MAP);
+        super(Collections.<String, Object>emptyMap());
     }
 
     public BundleContext getBundleContext() {
@@ -73,7 +74,7 @@
     public class OSGiServicesContext extends ImmutableContext {
 
         public OSGiServicesContext() throws NamingException {
-            super(Collections.EMPTY_MAP);
+            super(Collections.<String, Object>emptyMap());
         }
 
         @Override

Modified: servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/OSGiInitialContextFactoryBuilder.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/OSGiInitialContextFactoryBuilder.java?rev=746272&r1=746271&r2=746272&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/OSGiInitialContextFactoryBuilder.java (original)
+++ servicemix/smx4/nmr/trunk/naming/src/main/java/org/apache/servicemix/naming/OSGiInitialContextFactoryBuilder.java Fri Feb 20 15:11:33 2009
@@ -34,6 +34,8 @@
 import org.springframework.util.Assert;
 
 /**
+ * An InitialContextFactoryBuilder which delegates to any InitialContextFactoryBuilder found
+ * in the OSGi registry. 
  */
 public class OSGiInitialContextFactoryBuilder implements InitialContextFactoryBuilder, BundleContextAware,
                                                          InitializingBean, DisposableBean {