You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2010/06/14 20:16:30 UTC

svn commit: r954576 - in /geronimo/server/trunk: framework/modules/geronimo-blueprint/src/main/java/org/apache/geronimo/blueprint/WaitForBlueprintGBean.java plugins/corba/j2ee-corba-yoko/src/main/plan/plan.xml

Author: gawor
Date: Mon Jun 14 18:16:29 2010
New Revision: 954576

URL: http://svn.apache.org/viewvc?rev=954576&view=rev
Log:
GERONIMO-5334: Fix for ClassNotFoundException during server startup

Modified:
    geronimo/server/trunk/framework/modules/geronimo-blueprint/src/main/java/org/apache/geronimo/blueprint/WaitForBlueprintGBean.java
    geronimo/server/trunk/plugins/corba/j2ee-corba-yoko/src/main/plan/plan.xml

Modified: geronimo/server/trunk/framework/modules/geronimo-blueprint/src/main/java/org/apache/geronimo/blueprint/WaitForBlueprintGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-blueprint/src/main/java/org/apache/geronimo/blueprint/WaitForBlueprintGBean.java?rev=954576&r1=954575&r2=954576&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-blueprint/src/main/java/org/apache/geronimo/blueprint/WaitForBlueprintGBean.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-blueprint/src/main/java/org/apache/geronimo/blueprint/WaitForBlueprintGBean.java Mon Jun 14 18:16:29 2010
@@ -17,37 +17,42 @@
  * under the License.
  */
 
-
 package org.apache.geronimo.blueprint;
 
 import java.util.Hashtable;
 import java.util.concurrent.CountDownLatch;
 
 import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
 import org.apache.geronimo.gbean.annotation.ParamSpecial;
 import org.apache.geronimo.gbean.annotation.Priority;
 import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.blueprint.container.BlueprintEvent;
 import org.osgi.service.blueprint.container.BlueprintListener;
+import org.osgi.service.packageadmin.ExportedPackage;
+import org.osgi.service.packageadmin.PackageAdmin;
 
 /**
- * Blueprint starts beans asynchornously whereas geronimo starts configurations in a single thread.
+ * Blueprint starts beans asynchronously whereas Geronimo starts configurations in a single thread.
  * This bean waits for the blueprint activity to complete before returning.
  *
  * @version $Rev$ $Date$
  */
-
 @GBean
 @Priority(priority = 2)
 public class WaitForBlueprintGBean {
+    
     private volatile BlueprintEvent event;
     private CountDownLatch latch = new CountDownLatch(1);
 
-    public WaitForBlueprintGBean(@ParamSpecial(type= SpecialAttributeType.bundleContext)BundleContext bundleContext) throws Exception {
-        final Bundle bundle = bundleContext.getBundle();
+    public WaitForBlueprintGBean(@ParamSpecial(type = SpecialAttributeType.bundleContext) BundleContext bundleContext,
+                                 @ParamAttribute(name = "packageName") String packageName,
+                                 @ParamAttribute(name = "symbolicName") String symbolicName) throws Exception {        
+        final Bundle bundle = getBundle(bundleContext, symbolicName, packageName);
         BlueprintListener listener = new BlueprintListener() {
 
             @Override
@@ -68,4 +73,30 @@ public class WaitForBlueprintGBean {
         }
     }
 
+    private Bundle getBundle(BundleContext bundleContext, String symbolicName, String packageName) throws Exception {       
+        ServiceReference reference = bundleContext.getServiceReference(PackageAdmin.class.getName());
+        PackageAdmin packageAdmin = (PackageAdmin) bundleContext.getService(reference);
+        try {
+            if (symbolicName != null) {
+                Bundle[] bundles = packageAdmin.getBundles(symbolicName, null);
+                if (bundles == null) {
+                    throw new Exception("Unable to find bundle based on symbolic name. There is no bundle with " + symbolicName + " symbolic name");
+                } else if (bundles.length > 1) {
+                    throw new Exception("Found multiple bundles with the same symbolic name: " + symbolicName);                    
+                } else {
+                    return bundles[0];
+                }
+            } else if (packageName != null) {
+                ExportedPackage exportedPackage = packageAdmin.getExportedPackage(packageName);
+                if (exportedPackage == null) {
+                    throw new Exception("Unable to find bundle based on package name. There is no bundle that exports " + packageName + " package");
+                }
+                return exportedPackage.getExportingBundle();
+            } else {
+                return bundleContext.getBundle();
+            }
+        } finally {
+            bundleContext.ungetService(reference);
+        }
+    }
 }

Modified: geronimo/server/trunk/plugins/corba/j2ee-corba-yoko/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/corba/j2ee-corba-yoko/src/main/plan/plan.xml?rev=954576&r1=954575&r2=954576&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/corba/j2ee-corba-yoko/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/corba/j2ee-corba-yoko/src/main/plan/plan.xml Mon Jun 14 18:16:29 2010
@@ -20,6 +20,10 @@
 
 <module xmlns="http://geronimo.apache.org/xml/ns/deployment-${geronimoSchemaVersion}">
 
+    <gbean name="WaitForBlueprint" class="org.apache.geronimo.blueprint.WaitForBlueprintGBean">
+        <attribute name="symbolicName">org.apache.yoko.core</attribute>
+    </gbean>
+
     <!-- CORBA -->
     <gbean name="DynamicORBStubClassLoader" class="org.apache.geronimo.corba.util.DynamicStubClassLoaderGBean">
         <dependency>