[jboss-cvs] JBossAS SVN: r96314 - in projects/jboss-osgi/trunk: reactor/framework/src/main/java/org/jboss/osgi/framework/bundle and 6 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 12 14:39:18 EST 2009


Author: thomas.diesler at jboss.com
Date: 2009-11-12 14:39:18 -0500 (Thu, 12 Nov 2009)
New Revision: 96314

Added:
   projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/manifest-negative.mf
   projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/manifest.mf
Removed:
   projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/MANIFEST.MF
Modified:
   projects/jboss-osgi/trunk/reactor/deployment/.classpath
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/AbstractBundleState.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/internal/FrameworkEventsPluginImpl.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/WebXMLVerifierInterceptor.java
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/FrameworkTestDelegate.java
   projects/jboss-osgi/trunk/testsuite/example/scripts/antrun-test-jars.xml
   projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/webapp/WebAppNegativeTestCase.java
Log:
Simplify plugin key handling

Modified: projects/jboss-osgi/trunk/reactor/deployment/.classpath
===================================================================
--- projects/jboss-osgi/trunk/reactor/deployment/.classpath	2009-11-12 19:36:12 UTC (rev 96313)
+++ projects/jboss-osgi/trunk/reactor/deployment/.classpath	2009-11-12 19:39:18 UTC (rev 96314)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
-	<classpathentry kind="src" path="src/test/java"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/AbstractBundleState.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/AbstractBundleState.java	2009-11-12 19:36:12 UTC (rev 96313)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/AbstractBundleState.java	2009-11-12 19:39:18 UTC (rev 96314)
@@ -686,7 +686,7 @@
       }
       
       // Invoke the bundle lifecycle interceptors
-      if (getBundleManager().isActive() && getBundleId() != 0)
+      if (getBundleManager().isFrameworkActive() && getBundleId() != 0)
       {
          LifecycleInterceptorServicePlugin plugin = getBundleManager().getPlugin(LifecycleInterceptorServicePlugin.class);
          plugin.handleStateChange(state, getBundleInternal());
@@ -696,7 +696,7 @@
       log.debug(this + " change state=" + ConstantsHelper.bundleState(state));
 
       // Fire the bundle event
-      if (getBundleManager().isActive())
+      if (getBundleManager().isFrameworkActive())
       {
          FrameworkEventsPlugin plugin = getBundleManager().getPlugin(FrameworkEventsPlugin.class);
          plugin.fireBundleEvent(this, bundleEventType);

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java	2009-11-12 19:36:12 UTC (rev 96313)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java	2009-11-12 19:39:18 UTC (rev 96314)
@@ -337,17 +337,12 @@
     */
    public void addPlugin(Plugin plugin)
    {
-      Class<?> clazz = plugin.getClass();
-      if (addPlugin(plugin, clazz) == false)
-      {
-         // If the plugin could not be added by Interface, use the clazz directly
-         log.debug("Add plugin: " + clazz.getName());
-         plugins.put(clazz, plugin);
-      }
+      Class<?> key = getPluginKey(plugin);
+      log.debug("Add plugin: " + key.getName());
+      plugins.put(key, plugin);
 
       // In case a service plugin gets added after the framework is started
-      boolean isFrameworkActive = systemBundle.getState() == Bundle.ACTIVE;
-      if (isFrameworkActive == true && plugin instanceof ServicePlugin)
+      if (isFrameworkActive() == true && plugin instanceof ServicePlugin)
       {
          ServicePlugin servicePlugin = (ServicePlugin)plugin;
          servicePlugin.startService();
@@ -355,11 +350,23 @@
    }
 
    /**
-    * Add a plugin by scanning the interfaces for the given clazz.
-    * The plugin is added with the key of the first interface that extends Plugin.
+    * Get the key for a given plugin
     */
-   private boolean addPlugin(Plugin plugin, Class<?> clazz)
+   private Class<?> getPluginKey(Plugin plugin)
    {
+      Class<?> clazz = plugin.getClass();
+      Class<?> key = getPluginKey(plugin, clazz);
+
+      // If the plugin could not be added by Interface, use the clazz directly
+      return (key != null ? key : clazz);
+   }
+
+   /**
+    * Get the plugin key by scanning the interfaces for the given clazz.
+    * @return The first interface that extends Plugin.
+    */
+   private Class<?> getPluginKey(Plugin plugin, Class<?> clazz)
+   {
       // Scan the interfaces on the class
       for (Class<?> interf : clazz.getInterfaces())
       {
@@ -368,18 +375,16 @@
 
          if (Plugin.class.isAssignableFrom(interf))
          {
-            log.debug("Add plugin: " + interf.getName());
-            plugins.put(interf, plugin);
-            return true;
+            return interf;
          }
       }
 
       // Interface not found, try the plugin's superclass 
       Class<?> superclass = clazz.getSuperclass();
       if (Plugin.class.isAssignableFrom(superclass))
-         return addPlugin(plugin, superclass);
+         return getPluginKey(plugin, superclass);
 
-      return false;
+      return null;
    }
 
    /**
@@ -389,27 +394,20 @@
     */
    public void removePlugin(Plugin plugin)
    {
-      Class<? extends Plugin> clazz = plugin.getClass();
-      for (Class<?> interf : clazz.getInterfaces())
-      {
-         if (Plugin.class.isAssignableFrom(interf))
-         {
-            log.debug("Remove plugin: " + clazz.getName());
-            plugins.remove(interf);
-         }
-      }
+      Class<?> key = getPluginKey(plugin);
+      log.debug("Remove plugin: " + key.getName());
+      plugins.remove(key);
    }
 
    /**
     * Are we active
-    * 
     * @return true when the system is active
     */
-   public boolean isActive()
+   public boolean isFrameworkActive()
    {
-      // We are active if the system bundle is at least in the starting/stopping state
+      // We are active if the system bundle is ACTIVE
       AbstractBundleState bundleState = getSystemBundle();
-      return bundleState.getState() >= Bundle.STARTING;
+      return bundleState.getState() == Bundle.ACTIVE;
    }
 
    /**

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/internal/FrameworkEventsPluginImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/internal/FrameworkEventsPluginImpl.java	2009-11-12 19:36:12 UTC (rev 96313)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/internal/FrameworkEventsPluginImpl.java	2009-11-12 19:39:18 UTC (rev 96314)
@@ -272,7 +272,7 @@
          return;
 
       // Are we active?
-      if (getBundleManager().isActive() == false)
+      if (getBundleManager().isFrameworkActive() == false)
          return;
 
       Runnable runnable = new Runnable()
@@ -336,7 +336,7 @@
          return;
 
       // Are we active?
-      if (getBundleManager().isActive() == false)
+      if (getBundleManager().isFrameworkActive() == false)
          return;
 
       Runnable runnable = new Runnable()
@@ -354,7 +354,7 @@
                return;
 
             // Are we active?
-            if (getBundleManager().isActive() == false)
+            if (getBundleManager().isFrameworkActive() == false)
                return;
 
             // Call the listeners
@@ -402,7 +402,7 @@
          return;
 
       // Are we active?
-      if (getBundleManager().isActive() == false)
+      if (getBundleManager().isFrameworkActive() == false)
          return;
 
       Runnable runnable = new Runnable()

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/WebXMLVerifierInterceptor.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/WebXMLVerifierInterceptor.java	2009-11-12 19:36:12 UTC (rev 96313)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/WebXMLVerifierInterceptor.java	2009-11-12 19:39:18 UTC (rev 96314)
@@ -62,7 +62,9 @@
                {
                   VirtualFile root = context.getRoot();
                   VirtualFile webXML = root.getChild("/WEB-INF/web.xml");
-                  if (root.getName().endsWith(".war") && webXML == null)
+                  String contextPath = (String)context.getBundle().getHeaders().get("Web-ContextPath");
+                  boolean isWebApp = contextPath != null || root.getName().endsWith(".war");
+                  if (isWebApp == true && webXML == null)
                      throw new LifecycleInterceptorException("Cannot obtain web.xml from: " + root.toURL());
                }
                catch (RuntimeException rte)

Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/FrameworkTestDelegate.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/FrameworkTestDelegate.java	2009-11-12 19:36:12 UTC (rev 96313)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/FrameworkTestDelegate.java	2009-11-12 19:39:18 UTC (rev 96314)
@@ -145,7 +145,7 @@
          bundleManager = getBean("OSGiBundleManager", ControllerState.INSTALLED, OSGiBundleManager.class);
          try
          {
-            if (bundleManager.isActive() == false)
+            if (bundleManager.isFrameworkActive() == false)
                bundleManager.startFramework();
          }
          catch (BundleException ex)

Modified: projects/jboss-osgi/trunk/testsuite/example/scripts/antrun-test-jars.xml
===================================================================
--- projects/jboss-osgi/trunk/testsuite/example/scripts/antrun-test-jars.xml	2009-11-12 19:36:12 UTC (rev 96313)
+++ projects/jboss-osgi/trunk/testsuite/example/scripts/antrun-test-jars.xml	2009-11-12 19:39:18 UTC (rev 96314)
@@ -70,7 +70,7 @@
     
     <!-- webapp -->
     <war destfile="${tests.output.dir}/test-libs/example-webapp.war"
-      manifest="${tests.resources.dir}/webapp/MANIFEST.MF"
+      manifest="${tests.resources.dir}/webapp/manifest.mf"
       webxml="${tests.resources.dir}/webapp/web.xml">
       <classes dir="${tests.classes.dir}">
         <include name="**/example/webapp/bundle/*.class"/>
@@ -80,7 +80,7 @@
       </fileset>
     </war> 
     <jar destfile="${tests.output.dir}/test-libs/example-webapp-negative.war"
-      manifest="${tests.resources.dir}/webapp/MANIFEST.MF">
+      manifest="${tests.resources.dir}/webapp/manifest-negative.mf">
       <zipfileset dir="${tests.classes.dir}" prefix="WEB-INF/classes">
         <include name="**/example/webapp/bundle/*.class"/>
       </zipfileset>

Modified: projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/webapp/WebAppNegativeTestCase.java
===================================================================
--- projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/webapp/WebAppNegativeTestCase.java	2009-11-12 19:36:12 UTC (rev 96313)
+++ projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/webapp/WebAppNegativeTestCase.java	2009-11-12 19:39:18 UTC (rev 96314)
@@ -34,6 +34,7 @@
 import org.jboss.osgi.webapp.WebAppCapability;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleException;
@@ -44,6 +45,7 @@
  * @author thomas.diesler at jboss.com
  * @since 26-Oct-2009
  */
+ at Ignore("[JBOSGI-204] Failure in Bundle.start() uninstalls the bundle in AS")
 public class WebAppNegativeTestCase extends AbstractWebAppTestCase
 {
    private static OSGiRuntime runtime;

Deleted: projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/MANIFEST.MF
===================================================================
--- projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/MANIFEST.MF	2009-11-12 19:36:12 UTC (rev 96313)
+++ projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/MANIFEST.MF	2009-11-12 19:39:18 UTC (rev 96314)
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-Name: example-webapp
-Bundle-ManifestVersion: 2
-Bundle-SymbolicName: example-webapp
-Bundle-ClassPath: .,WEB-INF/classes
-Import-Package: javax.servlet,javax.servlet.http,org.osgi.service.http,org.ops4j.pax.web.service
\ No newline at end of file

Added: projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/manifest-negative.mf
===================================================================
--- projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/manifest-negative.mf	                        (rev 0)
+++ projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/manifest-negative.mf	2009-11-12 19:39:18 UTC (rev 96314)
@@ -0,0 +1,5 @@
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: example-webapp-negative
+Bundle-ClassPath: .,WEB-INF/classes
+Web-ContextPath: example-webapp
+Import-Package: javax.servlet,javax.servlet.http,org.osgi.service.http,org.ops4j.pax.web.service
\ No newline at end of file

Copied: projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/manifest.mf (from rev 96307, projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/MANIFEST.MF)
===================================================================
--- projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/manifest.mf	                        (rev 0)
+++ projects/jboss-osgi/trunk/testsuite/example/src/test/resources/webapp/manifest.mf	2009-11-12 19:39:18 UTC (rev 96314)
@@ -0,0 +1,5 @@
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: example-webapp
+Bundle-ClassPath: .,WEB-INF/classes
+Web-ContextPath: example-webapp
+Import-Package: javax.servlet,javax.servlet.http,org.osgi.service.http,org.ops4j.pax.web.service
\ No newline at end of file




More information about the jboss-cvs-commits mailing list