You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2010/04/15 09:03:03 UTC
svn commit: r934301 [2/2] - in /geronimo/yoko/trunk: ./ yoko-core/
yoko-core/src/main/java/org/apache/yoko/orb/CORBA/
yoko-core/src/main/java/org/apache/yoko/orb/OB/
yoko-core/src/main/java/org/apache/yoko/orb/OBCORBA/
yoko-core/src/main/java/org/apach...
Added: geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml
URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml?rev=934301&view=auto
==============================================================================
--- geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml (added)
+++ geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml Thu Apr 15 07:03:02 2010
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<!--
+
+ blueprint configuration for jndi providers
+ -->
+
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+
+ <!--<service id="yokoRegistry"-->
+ <!--interface="org.apache.yoko.osgi.ProviderRegistry"-->
+ <!--activation="eager">-->
+ <!--<ref component-id="yokoRegistryBean"/>-->
+ <!--</service>-->
+ <service id="yokoRegister"
+ interface="org.apache.yoko.osgi.locator.Register"
+ activation="eager">
+ <ref component-id="yokoRegistryBean"/>
+ </service>
+ <bean id="yokoRegistryBean"
+ class="org.apache.yoko.osgi.locator.ProviderRegistryImpl"
+ init-method="start"
+ destroy-method="stop"
+ activation="eager"/>
+
+ <bean class="org.apache.yoko.osgi.locator.ProviderBean"
+ activation="eager"
+ init-method="start"
+ destroy-method="stop">
+ <argument>
+ <value>javax.rmi.CORBA.UtilClass</value>
+ </argument>
+ <argument>
+ <value>org.apache.yoko.rmi.impl.UtilImpl</value>
+ </argument>
+ <argument>
+ <ref component-id="blueprintBundle"/>
+ </argument>
+ <argument>
+ <ref component-id="yokoRegistryBean"/>
+ </argument>
+ </bean>
+ <bean class="org.apache.yoko.osgi.locator.ServiceBean"
+ activation="eager"
+ init-method="start"
+ destroy-method="stop">
+ <argument>
+ <value>javax.rmi.CORBA.PortableRemoteObjectClass</value>
+ </argument>
+ <argument>
+ <value>org.apache.yoko.rmi.impl.PortableRemoteObjectImpl</value>
+ </argument>
+ <argument>
+ <ref component-id="blueprintBundle"/>
+ </argument>
+ <argument>
+ <ref component-id="yokoRegistryBean"/>
+ </argument>
+ </bean>
+ <bean class="org.apache.yoko.osgi.locator.ServiceBean"
+ activation="eager"
+ init-method="start"
+ destroy-method="stop">
+ <argument>
+ <value>org.apache.yoko.rmi.PortableRemoteObjectExtClass</value>
+ </argument>
+ <argument>
+ <value>org.apache.yoko.rmi.impl.PortableRemoteObjectExtImpl</value>
+ </argument>
+ <argument>
+ <ref component-id="blueprintBundle"/>
+ </argument>
+ <argument>
+ <ref component-id="yokoRegistryBean"/>
+ </argument>
+ </bean>
+
+
+</blueprint>
\ No newline at end of file
Propchange: geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: geronimo/yoko/trunk/yoko-rmi-spec/src/main/java/org/apache/yoko/rmispec/util/UtilLoader.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-rmi-spec/src/main/java/org/apache/yoko/rmispec/util/UtilLoader.java?rev=934301&r1=934300&r2=934301&view=diff
==============================================================================
--- geronimo/yoko/trunk/yoko-rmi-spec/src/main/java/org/apache/yoko/rmispec/util/UtilLoader.java (original)
+++ geronimo/yoko/trunk/yoko-rmi-spec/src/main/java/org/apache/yoko/rmispec/util/UtilLoader.java Thu Apr 15 07:03:02 2010
@@ -18,6 +18,8 @@
package org.apache.yoko.rmispec.util;
+import org.apache.yoko.osgi.ProviderLocator;
+
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
@@ -39,16 +41,10 @@ public class UtilLoader {
throws ClassNotFoundException {
Class result = null;
- if (loader != null) {
- try {
- logger.finer("trying provided class loader");
- result = loader.loadClass(name);
- } catch (ClassNotFoundException ex) {
- // skip //
- }
-
- if (result != null)
- return result;
+ try {
+ return ProviderLocator.loadClass(name, null, loader);
+ } catch (ClassNotFoundException e) {
+ //skip
}
ClassLoader stackLoader = null;
Modified: geronimo/yoko/trunk/yoko-spec-corba/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-spec-corba/pom.xml?rev=934301&r1=934300&r2=934301&view=diff
==============================================================================
--- geronimo/yoko/trunk/yoko-spec-corba/pom.xml (original)
+++ geronimo/yoko/trunk/yoko-spec-corba/pom.xml Thu Apr 15 07:03:02 2010
@@ -30,6 +30,16 @@
<dependencies>
<dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>4.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>4.2.0</version>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
Copied: geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderLocator.java (from r932781, geronimo/specs/trunk/geronimo-osgi-support/geronimo-osgi-locator/src/main/java/org/apache/geronimo/osgi/locator/ProviderLocator.java)
URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderLocator.java?p2=geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderLocator.java&p1=geronimo/specs/trunk/geronimo-osgi-support/geronimo-osgi-locator/src/main/java/org/apache/geronimo/osgi/locator/ProviderLocator.java&r1=932781&r2=934301&rev=934301&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-osgi-support/geronimo-osgi-locator/src/main/java/org/apache/geronimo/osgi/locator/ProviderLocator.java (original)
+++ geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderLocator.java Thu Apr 15 07:03:02 2010
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.geronimo.osgi.locator;
+package org.apache.yoko.osgi;
import java.io.BufferedReader;
import java.io.File;
@@ -33,58 +33,21 @@ import java.util.List;
import java.util.Properties;
import java.util.Set;
-import org.apache.geronimo.osgi.registry.api.ProviderRegistry;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
-
public class ProviderLocator {
- // our bundle context
- static private BundleContext context;
// a service tracker for the registry service
// NB: This is declared as just Object to avoid classloading issues if we're running
// outside of an OSGi environment.
- static private Object registryTracker;
+ static private ProviderRegistry registry;
private ProviderLocator() {
// private constructor to prevent an instance from getting created.
}
- /**
- * initialize the tracker statics for this bundle
- *
- * @param c The starup BundleContext.
- */
- public static void init(BundleContext c) {
- try {
- // just create a tracker for our lookup service
- // NB: We use the hard coded name in case the registry service has not
- // been started first. The ServiceTracker itself only uses the string name.
- // We need to avoid trying to load the ProviderRegistry interface until the
- // registry tracker returns a non-null service instance.
- registryTracker = new ServiceTracker(c, "org.apache.geronimo.osgi.registry.api.ProviderRegistry", null);
- ((ServiceTracker)registryTracker).open();
- // do this last...it helps indicate if we have an initialized registry.
- context = c;
- } catch (Throwable e) {
- // if there were any errors, then the registry is not available.
- registryTracker = null;
- }
- }
-
- /**
- * Cleanup resources on bundle shutdown.
- */
- public static void destroy() {
- if (registryTracker != null) {
- // shutdown our tracking of the provider registry.
- ((ServiceTracker)registryTracker).close();
- registryTracker = null;
- }
+ public static void setRegistry(ProviderRegistry registry) {
+ ProviderLocator.registry = registry;
}
-
/**
* Locate a class by its provider id indicator. .
*
@@ -95,7 +58,7 @@ public class ProviderLocator {
* loaded.
*/
static public Class<?> locate(String providerId) {
- Object registry = getRegistry();
+ ProviderRegistry registry = getRegistry();
// if no registry service available, this is a failure
if (registry == null) {
return null;
@@ -105,7 +68,7 @@ public class ProviderLocator {
// safe now.
// the rest of the work is done by the registry
- return ((ProviderRegistry)registry).locate(providerId);
+ return registry.locate(providerId);
}
/**
@@ -614,17 +577,7 @@ public class ProviderLocator {
* @return The registry service instance, or null if it is not
* available for any reason.
*/
- private static Object getRegistry() {
- // if not initialized in an OSGi environment, this is a failure
- if (registryTracker == null) {
- return null;
- }
- // get the service, if it exists. NB: it is only safe to reference the
- // interface class if the tracker returns a non-null service object. The
- // interface class will not be loaded in our bundle context until the
- // service class can be statisfied. Therefore, we always return this as
- // just an object and the call needs to perform the cast, which will
- // force the classload at that time.
- return ((ServiceTracker)registryTracker).getService();
+ private static ProviderRegistry getRegistry() {
+ return registry;
}
}
Propchange: geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderLocator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderLocator.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderLocator.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderRegistry.java (from r932781, geronimo/specs/trunk/geronimo-osgi-support/geronimo-osgi-registry/src/main/java/org/apache/geronimo/osgi/registry/api/ProviderRegistry.java)
URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderRegistry.java?p2=geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderRegistry.java&p1=geronimo/specs/trunk/geronimo-osgi-support/geronimo-osgi-registry/src/main/java/org/apache/geronimo/osgi/registry/api/ProviderRegistry.java&r1=932781&r2=934301&rev=934301&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-osgi-support/geronimo-osgi-registry/src/main/java/org/apache/geronimo/osgi/registry/api/ProviderRegistry.java (original)
+++ geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderRegistry.java Thu Apr 15 07:03:02 2010
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.geronimo.osgi.registry.api;
+package org.apache.yoko.osgi;
import java.util.List;
@@ -96,4 +96,5 @@ public interface ProviderRegistry {
* matching classes can be located.
*/
public List<Class<?>> getServiceClasses(String providerId);
+
}
Propchange: geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderRegistry.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderRegistry.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/apache/yoko/osgi/ProviderRegistry.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/omg/CORBA/ORB.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/omg/CORBA/ORB.java?rev=934301&r1=934300&r2=934301&view=diff
==============================================================================
--- geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/omg/CORBA/ORB.java (original)
+++ geronimo/yoko/trunk/yoko-spec-corba/src/main/java/org/omg/CORBA/ORB.java Thu Apr 15 07:03:02 2010
@@ -16,8 +16,11 @@
*/
package org.omg.CORBA;
+import org.apache.yoko.osgi.ProviderLocator;
+
import java.security.PrivilegedAction;
import java.security.AccessController;
+import java.util.Properties;
public abstract class ORB {
@@ -170,89 +173,95 @@ public abstract class ORB {
private static final String ORBSingletonPropertyKey = "org.omg.CORBA.ORBSingleton";
public static ORB init(String[] args, java.util.Properties props) {
- String orbClassName = null;
- if (props != null)
- orbClassName = props.getProperty(ORBClassPropertyKey);
+ ORB orb = newOrb(props);
- if (orbClassName == null)
- orbClassName = getSystemProperty(ORBClassPropertyKey);
+ ORBSingleton_ = orb;
- if (orbClassName == null)
- orbClassName = "org.apache.yoko.orb.CORBA.ORB";
+ orb.set_parameters(args, props);
- ORB orb;
+ return orb;
+ }
- try {
- // get the appropriate class for the loading.
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- orb = (ORB) loader.loadClass(orbClassName).newInstance();
- } catch (Throwable ex) {
- throw (org.omg.CORBA.INITIALIZE)new org.omg.CORBA.INITIALIZE("Invalid ORB class: "
- + orbClassName).initCause(ex);
- }
+ public static ORB init(java.applet.Applet app, java.util.Properties props) {
+ ORB orb = newOrb(props);
ORBSingleton_ = orb;
- orb.set_parameters(args, props);
+ orb.set_parameters(app, props);
- return orb;
+ return ORBSingleton_;
}
- public static ORB init(java.applet.Applet app, java.util.Properties props) {
+ private static ORB newOrb(Properties props) {
String orbClassName = null;
- if (props != null)
+ if (props != null) {
orbClassName = props.getProperty(ORBClassPropertyKey);
-
- try {
- if (orbClassName == null)
- orbClassName = getSystemProperty(ORBClassPropertyKey);
- } catch (SecurityException ex) {
- // ignore
}
- if (orbClassName == null)
- orbClassName = "org.apache.yoko.orb.CORBA.ORB";
-
- ORB orb;
-
- try {
- // get the appropriate class for the loading.
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- orb = (ORB) loader.loadClass(orbClassName).newInstance();
- } catch (Throwable ex) {
- throw (org.omg.CORBA.INITIALIZE)new org.omg.CORBA.INITIALIZE("Invalid ORB class: "
- + orbClassName).initCause(ex);
+ ORB orb = null;
+ if (orbClassName == null) {
+ try {
+ orb = (ORB) ProviderLocator.getService(ORBClassPropertyKey, ORB.class, Thread.currentThread().getContextClassLoader());
+ } catch (Exception ex) {
+ throw (INITIALIZE)new INITIALIZE("Invalid ORB class from osgi: ").initCause(ex);
+ }
}
- ORBSingleton_ = orb;
+ if (orb == null) {
+ try {
+ if (orbClassName == null)
+ orbClassName = getSystemProperty(ORBClassPropertyKey);
+ } catch (SecurityException ex) {
+ // ignore
+ }
- orb.set_parameters(app, props);
+ if (orbClassName == null)
+ orbClassName = "org.apache.yoko.orb.CORBA.ORB";
+
+ try {
+ // get the appropriate class for the loading.
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ orb = (ORB) ProviderLocator.loadClass(orbClassName, ORB.class, loader).newInstance();
+ } catch (Throwable ex) {
+ throw (INITIALIZE)new INITIALIZE("Invalid ORB class: "
+ + orbClassName).initCause(ex);
+ }
+ }
return orb;
}
public static ORB init() {
if (ORBSingleton_ == null) {
- String orbClassName = getSystemProperty(ORBSingletonPropertyKey);
-
- if (orbClassName == null) {
- orbClassName = "org.apache.yoko.orb.CORBA.ORBSingleton";
- }
-
- ORB orb;
-
try {
- // get the appropriate class for the loading.
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- orb = (ORB) loader.loadClass(orbClassName).newInstance();
- } catch (Throwable ex) {
+ ORBSingleton_ = (ORB) ProviderLocator.getService(ORBSingletonPropertyKey, ORB.class, Thread.currentThread().getContextClassLoader());
+ } catch (Exception ex) {
throw (org.omg.CORBA.INITIALIZE)new org.omg.CORBA.INITIALIZE(
- "Invalid ORB singleton class: " + orbClassName).initCause(ex);
+ "Invalid ORB singleton class from osgi: ").initCause(ex);
+
}
+ if (ORBSingleton_ == null) {
+ String orbClassName = getSystemProperty(ORBSingletonPropertyKey);
+
+ if (orbClassName == null) {
+ orbClassName = "org.apache.yoko.orb.CORBA.ORBSingleton";
+ }
- ORBSingleton_ = orb;
+ try {
+ ORBSingleton_ = (ORB) ProviderLocator.loadClass(orbClassName, ORB.class, Thread.currentThread().getContextClassLoader()).newInstance();
+ } catch (ClassNotFoundException ex) {
+ throw (org.omg.CORBA.INITIALIZE)new org.omg.CORBA.INITIALIZE(
+ "Invalid ORB singleton class from osgi: ").initCause(ex);
+ } catch (InstantiationException ex) {
+ throw (org.omg.CORBA.INITIALIZE)new org.omg.CORBA.INITIALIZE(
+ "Invalid ORB singleton class from osgi: ").initCause(ex);
+ } catch (IllegalAccessException ex) {
+ throw (org.omg.CORBA.INITIALIZE)new org.omg.CORBA.INITIALIZE(
+ "Invalid ORB singleton class from osgi: ").initCause(ex);
+ }
+ }
}
return ORBSingleton_;