[jboss-osgi-commits] JBoss-OSGI SVN: r91202 - in projects/jboss-osgi/trunk/reactor/bundles/husky/harness/src/main/java/org/jboss/osgi/husky: runtime and 2 other directories.
jboss-osgi-commits at lists.jboss.org
jboss-osgi-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-osgi-commits
mailing list