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 {