[jboss-cvs] JBossAS SVN: r91202 - in projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky: runtime and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jul 14 07:34:30 EDT 2009


Author: thomas.diesler at jboss.com
Date: 2009-07-14 07:34:29 -0400 (Tue, 14 Jul 2009)
New Revision: 91202

Modified:
   projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/AbstractConnector.java
   projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/AbstractPackageListener.java
   projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/LocalInvocation.java
   projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/Connector.java
   projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/PackageListener.java
   projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/junit/JUnitPackageListener.java
   projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/osgi/HuskyExtender.java
   projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/osgi/OSGiJUnitPackageListener.java
Log:
Unregister test packages

Modified: projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/AbstractConnector.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/AbstractConnector.java	2009-07-14 10:54:29 UTC (rev 91201)
+++ projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/AbstractConnector.java	2009-07-14 11:34:29 UTC (rev 91202)
@@ -24,6 +24,7 @@
 // $Id$
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.jboss.osgi.husky.Request;
@@ -46,6 +47,11 @@
       listeners.add(listener);
    }
 
+   public List<PackageListener> getPackageListeners()
+   {
+      return Collections.unmodifiableList(listeners);
+   }
+
    public void removePackageListener(PackageListener listener)
    {
       listeners.remove(listener);

Modified: projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/AbstractPackageListener.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/AbstractPackageListener.java	2009-07-14 10:54:29 UTC (rev 91201)
+++ projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/AbstractPackageListener.java	2009-07-14 11:34:29 UTC (rev 91202)
@@ -23,7 +23,8 @@
 
 // $Id$
 
-import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 
 import org.jboss.osgi.husky.Context;
 import org.jboss.osgi.husky.Request;
@@ -39,17 +40,22 @@
  */
 public abstract class AbstractPackageListener implements PackageListener
 {
-   private String[] testPackages;
+   private List<String> testPackages;
    
-   public AbstractPackageListener(String[] testPackages)
+   public AbstractPackageListener(List<String> packages)
    {
-      if (testPackages == null)
-         throw new IllegalArgumentException("Invalid test package: " + testPackages);
+      if (packages == null)
+         throw new IllegalArgumentException("Invalid test package: " + packages);
       
-      this.testPackages = testPackages;
+      this.testPackages = packages;
       
    }
    
+   public List<String> getPackageNames()
+   {
+      return Collections.unmodifiableList(testPackages);
+   }
+
    public boolean match(Request req)
    {
       String testClass = req.getClassName();
@@ -75,6 +81,6 @@
    
    public String toString()
    {
-      return Arrays.asList(testPackages).toString();
+      return testPackages.toString();
    }
 }

Modified: projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/LocalInvocation.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/LocalInvocation.java	2009-07-14 10:54:29 UTC (rev 91201)
+++ projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/internal/LocalInvocation.java	2009-07-14 11:34:29 UTC (rev 91202)
@@ -23,6 +23,8 @@
 
 // $Id$
 
+import java.util.Arrays;
+
 import org.jboss.osgi.husky.Context;
 import org.jboss.osgi.husky.Request;
 import org.jboss.osgi.husky.Response;
@@ -53,7 +55,7 @@
    {
       public MatchAllJUnitPackageListener()
       {
-         super(new String[] { "org.jboss.test" });
+         super(Arrays.asList(new String[] { "org.jboss.test" }));
       }
 
       public Context getContext()

Modified: projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/Connector.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/Connector.java	2009-07-14 10:54:29 UTC (rev 91201)
+++ projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/Connector.java	2009-07-14 11:34:29 UTC (rev 91202)
@@ -21,6 +21,9 @@
  */
 package org.jboss.osgi.husky.runtime;
 
+
+import java.util.List;
+
 import org.jboss.osgi.husky.Request;
 import org.jboss.osgi.husky.Response;
 
@@ -49,6 +52,11 @@
    Response process(Request req) throws ClassNotFoundException;
    
    /**
+    * Get the set of registered {@link PackageListener}s for this connector
+    */
+   List<PackageListener> getPackageListeners();
+   
+   /**
     * Add a {@link PackageListener} to this connector
     */
    void addPackageListener(PackageListener listener);

Modified: projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/PackageListener.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/PackageListener.java	2009-07-14 10:54:29 UTC (rev 91201)
+++ projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/PackageListener.java	2009-07-14 11:34:29 UTC (rev 91202)
@@ -21,6 +21,8 @@
  */
 package org.jboss.osgi.husky.runtime;
 
+import java.util.List;
+
 import org.jboss.osgi.husky.Request;
 import org.jboss.osgi.husky.Response;
 
@@ -39,6 +41,11 @@
 public interface PackageListener
 {
    /**
+    * Return the list of packages that this listener can handle.
+    */
+   List<String> getPackageNames();
+   
+   /**
     * Return true if the given {@link Request} is from a package 
     * that this listener can handle.
     */

Modified: projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/junit/JUnitPackageListener.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/junit/JUnitPackageListener.java	2009-07-14 10:54:29 UTC (rev 91201)
+++ projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/junit/JUnitPackageListener.java	2009-07-14 11:34:29 UTC (rev 91202)
@@ -23,6 +23,8 @@
 
 // $Id$
 
+import java.util.List;
+
 import org.jboss.osgi.husky.Context;
 import org.jboss.osgi.husky.internal.AbstractPackageListener;
 import org.jboss.osgi.husky.internal.BasicContext;
@@ -37,9 +39,9 @@
  */
 public class JUnitPackageListener extends AbstractPackageListener
 {
-   public JUnitPackageListener(String[] testPackages)
+   public JUnitPackageListener(List<String> packages)
    {
-      super(testPackages);
+      super(packages);
    }
 
    @Override

Modified: projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/osgi/HuskyExtender.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/osgi/HuskyExtender.java	2009-07-14 10:54:29 UTC (rev 91201)
+++ projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/osgi/HuskyExtender.java	2009-07-14 11:34:29 UTC (rev 91202)
@@ -23,8 +23,13 @@
 
 // $Id$
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 import org.jboss.osgi.husky.internal.LogServiceTracker;
 import org.jboss.osgi.husky.runtime.Connector;
+import org.jboss.osgi.husky.runtime.PackageListener;
 import org.jboss.osgi.husky.runtime.junit.JUnitPackageListener;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -61,17 +66,20 @@
       if (event.getType() == BundleEvent.STARTED)
       {
          Bundle bundle = event.getBundle();
-         String testPackage = (String)bundle.getHeaders().get(HEADER_TEST_PACKAGE);
-         if (testPackage != null)
-         {
-            log.log(LogService.LOG_INFO, "Test-Package [" + testPackage + "] in bundle: " + bundle);
-            String[] packages = testPackage.split("[,\\s]");
+         List<String> packages = getTestPackages(bundle);
+         if (packages != null)
             registerPackageListener(bundle, packages);
-         }
       }
+      else if (event.getType() == BundleEvent.STOPPED)
+      {
+         Bundle bundle = event.getBundle();
+         List<String> packages = getTestPackages(bundle);
+         if (packages != null)
+            unregisterPackageListener(bundle, packages);
+      }
    }
 
-   private void registerPackageListener(Bundle bundle, String[] testPackages)
+   private void registerPackageListener(Bundle bundle, List<String> packages)
    {
       ServiceReference[] srefs = null;
       try
@@ -82,12 +90,51 @@
       {
          // cannot get here
       }
-      
+
+      if (srefs != null)
+         log.log(LogService.LOG_INFO, "Register test packages " + packages);
+         
       for (ServiceReference sref : srefs)
       {
          Connector connector = (Connector)context.getService(sref);
-         JUnitPackageListener listener = new OSGiJUnitPackageListener(bundle, testPackages);
+         JUnitPackageListener listener = new OSGiJUnitPackageListener(bundle, packages);
          connector.addPackageListener(listener);
       }
    }
+
+   private void unregisterPackageListener(Bundle bundle, List<String> packages)
+   {
+      ServiceReference[] srefs = null;
+      try
+      {
+         srefs = context.getServiceReferences(Connector.class.getName(), null);
+      }
+      catch (InvalidSyntaxException ex)
+      {
+         // cannot get here
+      }
+      
+      if (srefs != null)
+         log.log(LogService.LOG_INFO, "Unregister test packages " + packages);
+         
+      for (ServiceReference sref : srefs)
+      {
+         Connector connector = (Connector)context.getService(sref);
+         for (PackageListener listener : new ArrayList<PackageListener>(connector.getPackageListeners()))
+         {
+            List<String> auxNames = listener.getPackageNames();
+            if (auxNames.equals(packages))
+               connector.removePackageListener(listener);
+         }
+      }
+   }
+
+   private List<String> getTestPackages(Bundle bundle)
+   {
+      String testPackage = (String)bundle.getHeaders().get(HEADER_TEST_PACKAGE);
+      if (testPackage != null)
+         return Arrays.asList(testPackage.split("[,\\s]"));
+      
+      return null;
+   }
 }
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/osgi/OSGiJUnitPackageListener.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/osgi/OSGiJUnitPackageListener.java	2009-07-14 10:54:29 UTC (rev 91201)
+++ projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky/runtime/osgi/OSGiJUnitPackageListener.java	2009-07-14 11:34:29 UTC (rev 91202)
@@ -23,6 +23,8 @@
 
 // $Id$
 
+import java.util.List;
+
 import org.jboss.osgi.husky.Context;
 import org.jboss.osgi.husky.internal.BasicContext;
 import org.jboss.osgi.husky.runtime.Runner;
@@ -41,9 +43,9 @@
 {
    private Bundle bundle;
    
-   public OSGiJUnitPackageListener(Bundle bundle, String[] testPackages)
+   public OSGiJUnitPackageListener(Bundle bundle, List<String> packages)
    {
-      super(testPackages);
+      super(packages);
       this.bundle = bundle;
    }
 




More information about the jboss-cvs-commits mailing list