[jboss-cvs] JBossAS SVN: r96681 - in projects/jboss-osgi/trunk/reactor/framework/src: test/java/org/jboss/test/osgi and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Nov 22 07:30:33 EST 2009


Author: alesj
Date: 2009-11-22 07:30:32 -0500 (Sun, 22 Nov 2009)
New Revision: 96681

Added:
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/PackageAdminTestCase.java
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/support/
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/support/a/
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/support/a/PA.java
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/support/b/
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/support/b/Other.java
Modified:
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/PackageAdminImpl.java
Log:
[JBOSGI-149]; initial test for PackageAdmin impl.

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/PackageAdminImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/PackageAdminImpl.java	2009-11-22 06:59:19 UTC (rev 96680)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/PackageAdminImpl.java	2009-11-22 12:30:32 UTC (rev 96681)
@@ -28,10 +28,13 @@
 import java.util.List;
 
 import org.jboss.classloading.plugins.metadata.PackageCapability;
+import org.jboss.classloading.spi.dependency.ClassLoading;
+import org.jboss.classloading.spi.dependency.Module;
 import org.jboss.classloading.spi.metadata.CapabilitiesMetaData;
 import org.jboss.classloading.spi.metadata.Capability;
 import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.plugins.classloading.AbstractDeploymentClassLoaderPolicyModule;
 import org.jboss.logging.Logger;
 import org.jboss.osgi.framework.bundle.AbstractBundleState;
 import org.jboss.osgi.framework.bundle.OSGiBundleManager;
@@ -39,8 +42,8 @@
 import org.jboss.osgi.framework.plugins.PackageAdminServicePlugin;
 import org.jboss.osgi.framework.plugins.ResolverPlugin;
 import org.jboss.osgi.framework.plugins.internal.AbstractServicePlugin;
-import org.jboss.osgi.framework.resolver.ResolverBundle;
 import org.jboss.osgi.framework.resolver.Resolver;
+import org.jboss.osgi.framework.resolver.ResolverBundle;
 import org.jboss.osgi.spi.NotImplementedException;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -91,28 +94,17 @@
       if (clazz == null)
          throw new IllegalArgumentException("Null class");
 
-      Bundle retBundle = null;
       ClassLoader classLoader = clazz.getClassLoader();
-      for (AbstractBundleState aux : bundleManager.getBundles())
+      Module module = ClassLoading.getModuleForClassLoader(classLoader);
+      if (module instanceof AbstractDeploymentClassLoaderPolicyModule)
       {
-         if (aux instanceof OSGiBundleState)
-         {
-            OSGiBundleState bundleState = (OSGiBundleState)aux;
-            
-            // The classloader is only available if the bundle 
-            // is in state RESOLVED or higher 
-            if (aux.getState() != Bundle.INSTALLED)
-            {
-               ClassLoader bundleLoader = bundleState.getDeploymentUnit().getClassLoader();
-               if (bundleLoader == classLoader)
-               {
-                  retBundle = aux.getBundleInternal();
-                  break;
-               }
-            }
-         }
+         AbstractDeploymentClassLoaderPolicyModule deploymentModule = (AbstractDeploymentClassLoaderPolicyModule)module;
+         DeploymentUnit unit = deploymentModule.getDeploymentUnit();
+         OSGiBundleState bundleState = unit.getAttachment(OSGiBundleState.class);
+         if (bundleState != null && bundleState.getState() != Bundle.INSTALLED)
+            return bundleState.getBundleInternal();
       }
-      return retBundle;
+      return null;
    }
 
    public int getBundleType(Bundle bundle)

Added: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/PackageAdminTestCase.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/PackageAdminTestCase.java	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/PackageAdminTestCase.java	2009-11-22 12:30:32 UTC (rev 96681)
@@ -0,0 +1,90 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.osgi.compendium;
+
+import junit.framework.Test;
+
+import org.jboss.osgi.framework.service.internal.PackageAdminImpl;
+import org.jboss.test.osgi.FrameworkTest;
+import org.jboss.test.osgi.compendium.support.b.Other;
+import org.jboss.test.osgi.compendium.support.a.PA;
+import org.osgi.framework.Bundle;
+import org.osgi.service.packageadmin.PackageAdmin;
+
+/**
+ * Test PackageAdmin service.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class PackageAdminTestCase extends FrameworkTest
+{
+   public PackageAdminTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(PackageAdminTestCase.class);
+   }
+
+   protected PackageAdmin createPackageAdmin()
+   {
+      return new PackageAdminImpl(getBundleManager());
+   }
+
+   public void testGetBudleFromClass() throws Exception
+   {
+      Bundle bundle = assembleBundle("smoke-assembled", "/bundles/smoke/smoke-assembled", PA.class);
+      try
+      {
+         bundle.start();
+         Class<?> paClass = assertLoadClass(bundle, PA.class);
+
+         PackageAdmin pa = createPackageAdmin();
+
+         Bundle found = pa.getBundle(paClass);
+         assertSame(bundle, found);
+
+         Bundle notFound = pa.getBundle(getClass());
+         assertNull(notFound);
+
+         Bundle other = assembleBundle("simple", "/bundles/simple/simple-bundle1", Other.class);
+         try
+         {
+            other.start();
+            Class<?> otherClass = assertLoadClass(other, Other.class);
+
+            found = pa.getBundle(otherClass);
+            assertSame(other, found);
+         }
+         finally
+         {
+            other.uninstall();
+         }
+      }
+      finally
+      {
+         bundle.uninstall();
+      }
+   }
+}

Added: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/support/a/PA.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/support/a/PA.java	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/support/a/PA.java	2009-11-22 12:30:32 UTC (rev 96681)
@@ -0,0 +1,29 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.osgi.compendium.support.a;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class PA
+{
+}

Added: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/support/b/Other.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/support/b/Other.java	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/compendium/support/b/Other.java	2009-11-22 12:30:32 UTC (rev 96681)
@@ -0,0 +1,29 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.osgi.compendium.support.b;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class Other
+{
+}
\ No newline at end of file




More information about the jboss-cvs-commits mailing list