You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2012/01/06 18:08:03 UTC

svn commit: r1228280 - in /karaf/trunk: features/core/src/main/java/org/apache/karaf/features/internal/ features/core/src/main/resources/OSGI-INF/blueprint/ features/core/src/test/java/org/apache/karaf/features/ main/src/main/java/org/apache/karaf/main...

Author: gnodet
Date: Fri Jan  6 17:08:02 2012
New Revision: 1228280

URL: http://svn.apache.org/viewvc?rev=1228280&view=rev
Log:
[KARAF-1142] Get rid of the code using StartLevel and PackageAdmin has they are now deprecated

Removed:
    karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/util/Import.java
    karaf/trunk/shell/dev/src/test/java/org/apache/karaf/shell/dev/util/ImportTest.java
Modified:
    karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
    karaf/trunk/features/core/src/main/resources/OSGI-INF/blueprint/gshell-features.xml
    karaf/trunk/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java
    karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java
    karaf/trunk/management/mbeans/bundles/src/main/java/org/apache/karaf/management/mbeans/bundles/internal/BundlesMBeanImpl.java
    karaf/trunk/management/mbeans/packages/src/main/java/org/apache/karaf/management/mbeans/packages/PackagesMBean.java
    karaf/trunk/management/mbeans/packages/src/main/java/org/apache/karaf/management/mbeans/packages/internal/PackagesMBeanImpl.java
    karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Headers.java
    karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/ListBundles.java
    karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Refresh.java
    karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Resolve.java
    karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/Converters.java
    karaf/trunk/shell/dev/pom.xml
    karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/AbstractBundleCommand.java
    karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/DynamicImport.java
    karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/ShowBundleTree.java
    karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/util/Node.java
    karaf/trunk/system/core/src/main/java/org/apache/karaf/system/internal/SystemServiceImpl.java
    karaf/trunk/util/src/main/java/org/apache/karaf/util/ShellUtil.java
    karaf/trunk/web/core/src/main/java/org/apache/karaf/web/internal/WebContainerServiceImpl.java
    karaf/trunk/web/core/src/main/resources/OSGI-INF/blueprint/web-core.xml

Modified: karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java (original)
+++ karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java Fri Jan  6 17:08:02 2012
@@ -76,10 +76,10 @@ import org.osgi.framework.FrameworkListe
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.Version;
+import org.osgi.framework.startlevel.BundleStartLevel;
+import org.osgi.framework.wiring.FrameworkWiring;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.service.startlevel.StartLevel;
 import org.osgi.util.tracker.ServiceTracker;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -103,8 +103,6 @@ public class FeaturesServiceImpl impleme
     private BundleContext bundleContext;
     private ConfigurationAdmin configAdmin;
     private RegionsPersistence regionsPersistence;
-    private PackageAdmin packageAdmin;
-    private StartLevel startLevel;
     private long resolverTimeout = 5000;
     private Set<URI> uris;
     private Map<URI, RepositoryImpl> repositories = new HashMap<URI, RepositoryImpl>();
@@ -145,22 +143,6 @@ public class FeaturesServiceImpl impleme
         this.regionsPersistence = regionsPersistence;
     }
 
-    public PackageAdmin getPackageAdmin() {
-        return packageAdmin;
-    }
-
-    public void setPackageAdmin(PackageAdmin packageAdmin) {
-        this.packageAdmin = packageAdmin;
-    }
-
-    public StartLevel getStartLevel() {
-        return startLevel;
-    }
-
-    public void setStartLevel(StartLevel startLevel) {
-        this.startLevel = startLevel;
-    }
-
     public long getResolverTimeout() {
         return resolverTimeout;
     }
@@ -341,7 +323,7 @@ public class FeaturesServiceImpl impleme
                     }
                     if (refresh) {
                         LOGGER.info("Refreshing bundles: {}", sb.toString());
-                        refreshPackages(bundlesToRefresh.toArray(new Bundle[bundlesToRefresh.size()]));
+                        refreshPackages(bundlesToRefresh);
                     }
                 }
             }
@@ -383,7 +365,7 @@ public class FeaturesServiceImpl impleme
 		    // do not start bundles that are persistently stopped
 		    if (state.installed.contains(b)
 		            || (b.getState() != Bundle.STARTING && b.getState() != Bundle.ACTIVE
-		                    && getStartLevel().isBundlePersistentlyStarted(b))) {
+		                    && b.adapt(BundleStartLevel.class).isPersistentlyStarted())) {
 		    	// do no start bundles when user request it
 		    	Long bundleId = b.getBundleId();
 		    	BundleInfo bundleInfo = state.bundleInfos.get(bundleId);
@@ -724,9 +706,9 @@ public class FeaturesServiceImpl impleme
             // Define the startLevel for the bundle when defined
             int ibsl = bundleInfo.getStartLevel();
             if (ibsl > 0) {
-                getStartLevel().setBundleStartLevel(b, ibsl);
+                b.adapt(BundleStartLevel.class).setStartLevel(ibsl);
             } else if (defaultStartLevel > 0) {
-                getStartLevel().setBundleStartLevel(b, defaultStartLevel);
+                b.adapt(BundleStartLevel.class).setStartLevel(defaultStartLevel);
             }
 
             state.bundles.add(b);
@@ -1034,10 +1016,11 @@ public class FeaturesServiceImpl impleme
         }
     }
 
-    protected void refreshPackages(Bundle[] bundles) throws InterruptedException {
-        if (getPackageAdmin() != null) {
+    protected void refreshPackages(Collection<Bundle> bundles) throws InterruptedException {
+        FrameworkWiring wiring = bundleContext.getBundle().adapt(FrameworkWiring.class);
+        if (wiring != null) {
             synchronized (refreshLock) {
-                getPackageAdmin().refreshPackages(bundles);
+                wiring.refreshBundles(bundles, this);
                 refreshLock.wait(refreshTimeout);
             }
         }

Modified: karaf/trunk/features/core/src/main/resources/OSGI-INF/blueprint/gshell-features.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/features/core/src/main/resources/OSGI-INF/blueprint/gshell-features.xml?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/features/core/src/main/resources/OSGI-INF/blueprint/gshell-features.xml (original)
+++ karaf/trunk/features/core/src/main/resources/OSGI-INF/blueprint/gshell-features.xml Fri Jan  6 17:08:02 2012
@@ -36,8 +36,6 @@
         <property name="boot" value="$[featuresBoot]" />
         <property name="resolverTimeout" value="$[resolverTimeout]" />
         <property name="configAdmin" ref="configAdmin" />
-        <property name="packageAdmin" ref="packageAdmin" />
-        <property name="startLevel" ref="startLevel" />
         <property name="regionsPersistence" ref="regionsPersistence" />
         <property name="bundleContext" ref="blueprintBundleContext" />
     </bean>
@@ -50,10 +48,6 @@
 
     <reference id="configAdmin" interface="org.osgi.service.cm.ConfigurationAdmin" />
 
-    <reference id="packageAdmin" interface="org.osgi.service.packageadmin.PackageAdmin" />
-
-    <reference id="startLevel" interface="org.osgi.service.startlevel.StartLevel" />
-
     <reference id="regionsPersistence" interface="org.apache.karaf.region.persist.RegionsPersistence" />
 
     <service ref="featuresService" interface="org.apache.karaf.features.FeaturesService" />

Modified: karaf/trunk/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java (original)
+++ karaf/trunk/features/core/src/test/java/org/apache/karaf/features/FeaturesServiceTest.java Fri Jan  6 17:08:02 2012
@@ -16,14 +16,6 @@
  */
 package org.apache.karaf.features;
 
-import static org.easymock.EasyMock.aryEq;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.reset;
-import static org.easymock.EasyMock.verify;
-
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
@@ -43,16 +35,16 @@ import java.util.concurrent.CopyOnWriteA
 import java.util.jar.JarInputStream;
 
 import junit.framework.TestCase;
-
 import org.apache.karaf.features.internal.FeaturesServiceImpl;
 import org.easymock.EasyMock;
 import org.junit.Assert;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
-import org.osgi.service.log.LogService;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.xml.sax.SAXParseException;
+import org.osgi.framework.FrameworkListener;
+import org.osgi.framework.wiring.FrameworkWiring;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+import org.slf4j.LoggerFactory;
 
 import static org.easymock.EasyMock.*;
 
@@ -66,7 +58,7 @@ public class FeaturesServiceTest extends
 
     public void testInstallFeature() throws Exception {
 
-        String name = getJarUrl(Bundle.class);
+        String name = getJarUrl(BlueprintContainer.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -133,7 +125,7 @@ public class FeaturesServiceTest extends
 
     public void testUninstallFeature() throws Exception {
 
-        String name = getJarUrl(Bundle.class);
+        String name = getJarUrl(BlueprintContainer.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -151,18 +143,19 @@ public class FeaturesServiceTest extends
         
         BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
         Bundle installedBundle = EasyMock.createMock(Bundle.class);
+        Bundle framework = EasyMock.createMock(Bundle.class);
 
         expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
 
-        replay(bundleContext, installedBundle);
+        replay(bundleContext, installedBundle, framework);
 
         FeaturesServiceImpl svc = new FeaturesServiceImpl();
         svc.setBundleContext(bundleContext);
         svc.addRepository(uri);
         
-        verify(bundleContext, installedBundle);
+        verify(bundleContext, installedBundle, framework);
 
-        reset(bundleContext, installedBundle);
+        reset(bundleContext, installedBundle, framework);
 
         // Installs f1 and 0.1
         expect(bundleContext.getBundles()).andReturn(new Bundle[0]);
@@ -196,7 +189,10 @@ public class FeaturesServiceTest extends
 
         expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
 
-        replay(bundleContext, installedBundle);
+        expect(bundleContext.getBundle()).andReturn(framework).anyTimes();
+        expect(framework.adapt(FrameworkWiring.class)).andReturn(null).anyTimes();
+
+        replay(bundleContext, installedBundle, framework);
 
         try {
             svc.uninstallFeature("f1");
@@ -222,7 +218,7 @@ public class FeaturesServiceTest extends
     // Tests Add and Remove Repository
     public void testAddAndRemoveRepository() throws Exception {
 
-        String name = getJarUrl(Bundle.class);
+        String name = getJarUrl(BlueprintContainer.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -262,7 +258,7 @@ public class FeaturesServiceTest extends
     // all features in a repo
     public void testInstallUninstallAllFeatures() throws Exception {
 
-        String name = getJarUrl(Bundle.class);
+        String name = getJarUrl(BlueprintContainer.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -282,7 +278,8 @@ public class FeaturesServiceTest extends
         URI uri = tmp.toURI();
 
         BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
-        Bundle installedBundle = EasyMock.createMock(Bundle.class);        
+        Bundle installedBundle = EasyMock.createMock(Bundle.class);
+        Bundle framework = EasyMock.createMock(Bundle.class);
 
         // Installs first feature name = f1, version = 0.1
         expect(bundleContext.getBundles()).andReturn(new Bundle[0]);
@@ -337,7 +334,10 @@ public class FeaturesServiceTest extends
 
         expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
 
-        replay(bundleContext, installedBundle);
+        expect(bundleContext.getBundle()).andReturn(framework).anyTimes();
+        expect(framework.adapt(FrameworkWiring.class)).andReturn(null).anyTimes();
+
+        replay(bundleContext, installedBundle, framework);
 
         FeaturesServiceImpl svc = new FeaturesServiceImpl();
         svc.setBundleContext(bundleContext);
@@ -354,7 +354,7 @@ public class FeaturesServiceTest extends
     // Tests uninstall of features
     public void testInstallFeatureWithDependantFeatures() throws Exception {
 
-        String name = getJarUrl(Bundle.class);
+        String name = getJarUrl(BlueprintContainer.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -373,6 +373,7 @@ public class FeaturesServiceTest extends
 
         BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
         Bundle installedBundle = EasyMock.createMock(Bundle.class);
+        Bundle framework = EasyMock.createMock(Bundle.class);
 
         // Installs feature f1 with dependency on f2
         // so will install f2 first
@@ -407,7 +408,10 @@ public class FeaturesServiceTest extends
 
         expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
 
-        replay(bundleContext, installedBundle);
+        expect(bundleContext.getBundle()).andReturn(framework).anyTimes();
+        expect(framework.adapt(FrameworkWiring.class)).andReturn(null).anyTimes();
+
+        replay(bundleContext, installedBundle, framework);
 
         FeaturesServiceImpl svc = new FeaturesServiceImpl();
         svc.setBundleContext(bundleContext);
@@ -424,7 +428,7 @@ public class FeaturesServiceTest extends
     // Tests install of a Repository that includes a feature with a feature dependency
     public void testInstallFeatureWithDependantFeaturesAndVersionWithoutPreinstall() throws Exception {
 
-        String name = getJarUrl(Bundle.class);
+        String name = getJarUrl(BlueprintContainer.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -459,7 +463,7 @@ public class FeaturesServiceTest extends
     // Tests install of a Repository that includes a feature with a feature dependency
     public void testInstallFeatureWithDependantFeaturesAndNoVersionWithoutPreinstall() throws Exception {
 
-        String name = getJarUrl(Bundle.class);
+        String name = getJarUrl(BlueprintContainer.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -493,7 +497,7 @@ public class FeaturesServiceTest extends
 
     public void testInstallFeatureWithDependantFeaturesAndRangeWithoutPreinstall() throws Exception {
 
-        String name = getJarUrl(Bundle.class);
+        String name = getJarUrl(BlueprintContainer.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -527,7 +531,7 @@ public class FeaturesServiceTest extends
 
     public void testInstallFeatureWithDependantFeaturesAndRangeWithPreinstall() throws Exception {
 
-        String name = getJarUrl(Bundle.class);
+        String name = getJarUrl(BlueprintContainer.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -547,6 +551,7 @@ public class FeaturesServiceTest extends
         URI uri = tmp.toURI();
 
         BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
+        Bundle framework = EasyMock.createMock(Bundle.class);
         Bundle installedBundle = EasyMock.createMock(Bundle.class);
 
         // Installs feature f1 with dependency on f2
@@ -569,7 +574,10 @@ public class FeaturesServiceTest extends
 
         expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
 
-        replay(bundleContext, installedBundle);
+        expect(bundleContext.getBundle()).andReturn(framework).anyTimes();
+        expect(framework.adapt(FrameworkWiring.class)).andReturn(null).anyTimes();
+
+        replay(bundleContext, installedBundle, framework);
 
         FeaturesServiceImpl svc = new FeaturesServiceImpl();
         svc.setBundleContext(bundleContext);
@@ -585,7 +593,7 @@ public class FeaturesServiceTest extends
 
     public void testGetFeaturesShouldHandleDifferentVersionPatterns() throws Exception {
 
-        String name = getJarUrl(Bundle.class);
+        String name = getJarUrl(BlueprintContainer.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -626,6 +634,7 @@ public class FeaturesServiceTest extends
     private BundleContext prepareBundleContextForInstallUninstall() throws Exception {
         BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
         Bundle installedBundle = EasyMock.createMock(Bundle.class);
+        Bundle framework = EasyMock.createMock(Bundle.class);
 
         // Installs feature f1 with dependency on f2
         expect(bundleContext.getBundles()).andReturn(new Bundle[0]);
@@ -644,13 +653,16 @@ public class FeaturesServiceTest extends
 
         expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
 
-        replay(bundleContext, installedBundle);
+        expect(bundleContext.getBundle()).andReturn(framework).anyTimes();
+        expect(framework.adapt(FrameworkWiring.class)).andReturn(null).anyTimes();
+
+        replay(bundleContext, installedBundle, framework);
         return bundleContext;
     }
 
     public void testInstallBatchFeatureWithContinueOnFailureNoClean() throws Exception {
-        String bundle1 = getJarUrl(Bundle.class);
-        String bundle2 = getJarUrl(LogService.class);
+        String bundle1 = getJarUrl(BlueprintContainer.class);
+        String bundle2 = getJarUrl(LoggerFactory.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -701,8 +713,8 @@ public class FeaturesServiceTest extends
     }
 
     public void testInstallBatchFeatureWithContinueOnFailureClean() throws Exception {
-        String bundle1 = getJarUrl(Bundle.class);
-        String bundle2 = getJarUrl(LogService.class);
+        String bundle1 = getJarUrl(BlueprintContainer.class);
+        String bundle2 = getJarUrl(LoggerFactory.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -754,8 +766,8 @@ public class FeaturesServiceTest extends
     }
 
     public void testInstallBatchFeatureWithoutContinueOnFailureNoClean() throws Exception {
-        String bundle1 = getJarUrl(Bundle.class);
-        String bundle2 = getJarUrl(LogService.class);
+        String bundle1 = getJarUrl(BlueprintContainer.class);
+        String bundle2 = getJarUrl(LoggerFactory.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -811,8 +823,8 @@ public class FeaturesServiceTest extends
     }
 
     public void testInstallBatchFeatureWithoutContinueOnFailureClean() throws Exception {
-        String bundle1 = getJarUrl(Bundle.class);
-        String bundle2 = getJarUrl(LogService.class);
+        String bundle1 = getJarUrl(BlueprintContainer.class);
+        String bundle2 = getJarUrl(LoggerFactory.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -869,8 +881,8 @@ public class FeaturesServiceTest extends
     }
 
     public void testInstallFeatureWithHostToRefresh() throws Exception {
-        String bundle1 = getJarUrl(LogService.class);
-        String bundle2 = getJarUrl(Bundle.class);
+        String bundle1 = getJarUrl(BlueprintContainer.class);
+        String bundle2 = getJarUrl(LoggerFactory.class);
 
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));
@@ -891,8 +903,9 @@ public class FeaturesServiceTest extends
         }
 
         // loads the state
-        PackageAdmin packageAdmin = EasyMock.createMock(PackageAdmin.class);
         BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
+        Bundle framework = EasyMock.createMock(Bundle.class);
+        FrameworkWiring wiring = EasyMock.createMock(FrameworkWiring.class);
         Bundle installedBundle1 = EasyMock.createMock(Bundle.class);
         Bundle installedBundle2 = EasyMock.createMock(Bundle.class);
 
@@ -922,14 +935,15 @@ public class FeaturesServiceTest extends
         //
         // This is the real test to make sure the host is actually refreshed
         //
-        packageAdmin.refreshPackages(aryEq(new Bundle[] { installedBundle1 }));
+        expect(bundleContext.getBundle()).andReturn(framework).anyTimes();
+        expect(framework.adapt(FrameworkWiring.class)).andReturn(wiring).anyTimes();
+        wiring.refreshBundles(eq(Collections.singleton(installedBundle1)), (FrameworkListener) anyObject());
 
         expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
 
-        replay(packageAdmin, bundleContext, installedBundle1, installedBundle2);
+        replay(wiring, framework, bundleContext, installedBundle1, installedBundle2);
 
         FeaturesServiceImpl svc = new FeaturesServiceImpl();
-        svc.setPackageAdmin(packageAdmin);
         svc.setBundleContext(bundleContext);
         svc.addRepository(uri);
 
@@ -957,7 +971,9 @@ public class FeaturesServiceTest extends
         URI uri = tmp.toURI();
 
         BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
-
+        Bundle bundle = EasyMock.createMock(Bundle.class);
+        expect(bundleContext.getBundle()).andReturn(bundle);
+        expect(bundle.adapt(FrameworkWiring.class)).andReturn(null);
         expect(bundleContext.getDataFile(EasyMock.<String>anyObject())).andReturn(dataFile).anyTimes();
 
         FeaturesServiceImpl svc = new FeaturesServiceImpl();
@@ -974,8 +990,8 @@ public class FeaturesServiceTest extends
      * This test checks feature service behavior with old, non namespaced descriptor.
      */
     public void testLoadOldFeatureFile() throws Exception {
-        String bundle1 = getJarUrl(LogService.class);
-        String bundle2 = getJarUrl(Bundle.class);
+        String bundle1 = getJarUrl(BlueprintContainer.class);
+        String bundle2 = getJarUrl(LoggerFactory.class);
         
         File tmp = File.createTempFile("karaf", ".feature");
         PrintWriter pw = new PrintWriter(new FileWriter(tmp));

Modified: karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java (original)
+++ karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java Fri Jan  6 17:08:02 2012
@@ -67,10 +67,10 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleException;
 import org.osgi.framework.Constants;
 import org.osgi.framework.FrameworkEvent;
-import org.osgi.framework.ServiceReference;
 import org.osgi.framework.launch.Framework;
 import org.osgi.framework.launch.FrameworkFactory;
-import org.osgi.service.startlevel.StartLevel;
+import org.osgi.framework.startlevel.BundleStartLevel;
+import org.osgi.framework.startlevel.FrameworkStartLevel;
 
 /**
  * <p>
@@ -618,8 +618,7 @@ public class Main {
 
         // Retrieve the Start Level service, since it will be needed
         // to set the start level of the installed bundles.
-        StartLevel sl = (StartLevel) context.getService(
-                context.getServiceReference(org.osgi.service.startlevel.StartLevel.class.getName()));
+        FrameworkStartLevel sl = framework.adapt(FrameworkStartLevel.class);
 
         // Set the default bundle start level
         int ibsl = 60;
@@ -652,7 +651,7 @@ public class Main {
         }
     }
 
-    private List<Bundle> autoInstall(String propertyPrefix, BundleContext context, StartLevel sl, boolean convertToMavenUrls, boolean start) {
+    private List<Bundle> autoInstall(String propertyPrefix, BundleContext context, FrameworkStartLevel sl, boolean convertToMavenUrls, boolean start) {
         Map<Integer, String> autoStart = new TreeMap<Integer, String>();
         List<Bundle> bundles = new ArrayList<Bundle>();
         for (Object o : configProps.keySet()) {
@@ -684,7 +683,7 @@ public class Main {
                         try {
                             String[] parts = Utils.convertToMavenUrlsIfNeeded(location, convertToMavenUrls);
                             Bundle b = context.installBundle(parts[0], new URL(parts[1]).openStream());
-                            sl.setBundleStartLevel(b, startLevel);
+                            b.adapt(BundleStartLevel.class).setStartLevel(startLevel);
                             bundles.add(b);
                         }
                         catch (Exception ex) {
@@ -1386,10 +1385,7 @@ public class Main {
     }
 
     protected void setStartLevel(int level) throws Exception {
-        BundleContext ctx = framework.getBundleContext();
-        ServiceReference[] refs = ctx.getServiceReferences(StartLevel.class.getName(), null);
-        StartLevel sl = (StartLevel) ctx.getService(refs[0]);
-        sl.setStartLevel(level);
+        framework.adapt(FrameworkStartLevel.class).setStartLevel(level);
     }
 
 

Modified: karaf/trunk/management/mbeans/bundles/src/main/java/org/apache/karaf/management/mbeans/bundles/internal/BundlesMBeanImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/management/mbeans/bundles/src/main/java/org/apache/karaf/management/mbeans/bundles/internal/BundlesMBeanImpl.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/management/mbeans/bundles/src/main/java/org/apache/karaf/management/mbeans/bundles/internal/BundlesMBeanImpl.java (original)
+++ karaf/trunk/management/mbeans/bundles/src/main/java/org/apache/karaf/management/mbeans/bundles/internal/BundlesMBeanImpl.java Fri Jan  6 17:08:02 2012
@@ -16,19 +16,25 @@
  */
 package org.apache.karaf.management.mbeans.bundles.internal;
 
-import org.apache.karaf.management.mbeans.bundles.BundlesMBean;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.service.startlevel.StartLevel;
-
-import javax.management.NotCompliantMBeanException;
-import javax.management.StandardMBean;
-import javax.management.openmbean.*;
 import java.io.InputStream;
 import java.net.URL;
 import java.util.List;
+import javax.management.NotCompliantMBeanException;
+import javax.management.StandardMBean;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
+import javax.management.openmbean.TabularType;
+
+import org.apache.karaf.management.mbeans.bundles.BundlesMBean;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.startlevel.BundleStartLevel;
+import org.osgi.framework.wiring.FrameworkWiring;
 
 /**
  * Bundles MBean implementation.
@@ -42,12 +48,6 @@ public class BundlesMBeanImpl extends St
     }
 
     public TabularData getBundles() throws Exception {
-        ServiceReference startLevelReference = bundleContext.getServiceReference(StartLevel.class.getName());
-        StartLevel startLevel = null;
-        if (startLevelReference != null) {
-            startLevel = (StartLevel) bundleContext.getService(startLevelReference);
-        }
-
         CompositeType bundleType = new CompositeType("Bundle", "OSGi Bundle",
                 new String[]{ "ID", "Name", "Version", "Start Level", "State" },
                 new String[]{ "ID of the Bundle", "Name of the Bundle", "Version of the Bundle", "Start Level of the Bundle", "Current State of the Bundle" },
@@ -58,10 +58,7 @@ public class BundlesMBeanImpl extends St
         Bundle[] bundles = bundleContext.getBundles();
 
         for (int i = 0; i < bundles.length; i++) {
-            int bundleStartLevel = 1;
-            if (startLevel != null) {
-                bundleStartLevel = startLevel.getBundleStartLevel(bundles[i]);
-            }
+            int bundleStartLevel = getBundleStartLevel(bundles[i]).getStartLevel();
             int bundleState = bundles[i].getState();
             String bundleStateString;
             if (bundleState == Bundle.ACTIVE)
@@ -80,22 +77,10 @@ public class BundlesMBeanImpl extends St
                     new Object[]{ bundles[i].getBundleId(), bundles[i].getSymbolicName(), bundles[i].getVersion().toString(), bundleStartLevel, bundleStateString });
             table.put(data);
         }
-
-        bundleContext.ungetService(startLevelReference);
-
         return table;
     }
 
     public int getStartLevel(String bundleId) throws Exception {
-        ServiceReference startLevelReference = bundleContext.getServiceReference(StartLevel.class.getName());
-        if (startLevelReference == null) {
-            throw new IllegalStateException("StartLevel service is not available");
-        }
-        StartLevel startLevel = (StartLevel) bundleContext.getService(startLevelReference);
-        if (startLevel == null) {
-            throw new IllegalStateException("StartLevel service is not available");
-        }
-
         BundlesSelector selector = new BundlesSelector(bundleContext);
         List<Bundle> bundles = selector.selectBundles(bundleId);
 
@@ -103,60 +88,30 @@ public class BundlesMBeanImpl extends St
             throw new IllegalArgumentException("Provided bundle Id doesn't return any bundle or more than one bundle selected");
         }
 
-        int bundleStartLevel = startLevel.getBundleStartLevel(bundles.get(0));
-        bundleContext.ungetService(startLevelReference);
-        return bundleStartLevel;
+        return getBundleStartLevel(bundles.get(0)).getStartLevel();
     }
 
     public void setStartLevel(String bundleId, int bundleStartLevel) throws Exception {
-        ServiceReference startLevelReference = bundleContext.getServiceReference(StartLevel.class.getName());
-        if (startLevelReference == null) {
-            throw new IllegalStateException("StartLevel service is not available");
-        }
-        StartLevel startLevel = (StartLevel) bundleContext.getService(startLevelReference);
-        if (startLevel == null) {
-            throw new IllegalStateException("StartLevel service is not available");
-        }
-
         BundlesSelector selector = new BundlesSelector(bundleContext);
         List<Bundle> bundles = selector.selectBundles(bundleId);
 
         for (Bundle bundle : bundles) {
-            startLevel.setBundleStartLevel(bundle, bundleStartLevel);
+            getBundleStartLevel(bundle).setStartLevel(bundleStartLevel);
         }
+    }
 
-        bundleContext.ungetService(startLevelReference);
+    private BundleStartLevel getBundleStartLevel(Bundle bundle) {
+        return bundle.adapt(BundleStartLevel.class);
     }
 
     public void refresh() throws Exception {
-        ServiceReference packageAdminReference = getBundleContext().getServiceReference(PackageAdmin.class.getName());
-        if (packageAdminReference == null) {
-            throw new IllegalStateException("PackageAdmin service is not available");
-        }
-        PackageAdmin packageAdmin = (PackageAdmin) bundleContext.getService(packageAdminReference);
-        if (packageAdmin == null) {
-            throw new IllegalStateException("PackageAdmin service is not available");
-        }
-        packageAdmin.refreshPackages(null);
-        getBundleContext().ungetService(packageAdminReference);
+        getFrameworkWiring().refreshBundles(null);
     }
 
     public void refresh(String bundleId) throws Exception {
-        ServiceReference packageAdminReference = getBundleContext().getServiceReference(PackageAdmin.class.getName());
-        if (packageAdminReference == null) {
-            throw new IllegalStateException("PackageAdmin service is not available");
-        }
-        PackageAdmin packageAdmin = (PackageAdmin) bundleContext.getService(packageAdminReference);
-        if (packageAdmin == null) {
-            throw new IllegalStateException("PackageAdmin service is not available");
-        }
-
-        BundlesSelector selector = new BundlesSelector(bundleContext);
+        BundlesSelector selector = new BundlesSelector(getBundleContext());
         List<Bundle> bundles = selector.selectBundles(bundleId);
-
-        Bundle[] bundlesArray = new Bundle[bundles.size()];
-        packageAdmin.refreshPackages(bundles.toArray(bundlesArray));
-        getBundleContext().ungetService(packageAdminReference);
+        getFrameworkWiring().refreshBundles(bundles);
     }
 
     public void update(String bundleId) throws Exception {
@@ -184,35 +139,17 @@ public class BundlesMBeanImpl extends St
     }
 
     public void resolve() throws Exception {
-        ServiceReference packageAdminReference = getBundleContext().getServiceReference(PackageAdmin.class.getName());
-        if (packageAdminReference == null) {
-            throw new IllegalStateException("PackageAdmin service is not available");
-        }
-        PackageAdmin packageAdmin = (PackageAdmin) bundleContext.getService(packageAdminReference);
-        if (packageAdmin == null) {
-            throw new IllegalStateException("PackageAdmin service is not available");
-        }
-        packageAdmin.resolveBundles(null);
-        getBundleContext().ungetService(packageAdminReference);
+        getFrameworkWiring().resolveBundles(null);
     }
 
     public void resolve(String bundleId) throws Exception {
-        ServiceReference packageAdminReference = getBundleContext().getServiceReference(PackageAdmin.class.getName());
-        if (packageAdminReference == null) {
-            throw new IllegalStateException("PackageAdmin service is not available");
-        }
-        PackageAdmin packageAdmin = (PackageAdmin) bundleContext.getService(packageAdminReference);
-        if (packageAdmin == null) {
-            throw new IllegalStateException("PackageAdmin service is not available");
-        }
-
-        BundlesSelector selector = new BundlesSelector(bundleContext);
+        BundlesSelector selector = new BundlesSelector(getBundleContext());
         List<Bundle> bundles = selector.selectBundles(bundleId);
+        getFrameworkWiring().resolveBundles(bundles);
+    }
 
-        Bundle[] bundlesArray = new Bundle[bundles.size()];
-        packageAdmin.resolveBundles(bundles.toArray(bundlesArray));
-
-        getBundleContext().ungetService(packageAdminReference);
+    private FrameworkWiring getFrameworkWiring() {
+        return getBundleContext().getBundle(0).adapt(FrameworkWiring.class);
     }
 
     public void restart(String bundleId) throws Exception {

Modified: karaf/trunk/management/mbeans/packages/src/main/java/org/apache/karaf/management/mbeans/packages/PackagesMBean.java
URL: http://svn.apache.org/viewvc/karaf/trunk/management/mbeans/packages/src/main/java/org/apache/karaf/management/mbeans/packages/PackagesMBean.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/management/mbeans/packages/src/main/java/org/apache/karaf/management/mbeans/packages/PackagesMBean.java (original)
+++ karaf/trunk/management/mbeans/packages/src/main/java/org/apache/karaf/management/mbeans/packages/PackagesMBean.java Fri Jan  6 17:08:02 2012
@@ -16,12 +16,12 @@
  */
 package org.apache.karaf.management.mbeans.packages;
 
-import javax.management.openmbean.TabularData;
 import java.util.List;
 
 /**
  * Packages MBean
  */
+@Deprecated
 public interface PackagesMBean {
 
     List<String> getExportedPackages() throws Exception;

Modified: karaf/trunk/management/mbeans/packages/src/main/java/org/apache/karaf/management/mbeans/packages/internal/PackagesMBeanImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/management/mbeans/packages/src/main/java/org/apache/karaf/management/mbeans/packages/internal/PackagesMBeanImpl.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/management/mbeans/packages/src/main/java/org/apache/karaf/management/mbeans/packages/internal/PackagesMBeanImpl.java (original)
+++ karaf/trunk/management/mbeans/packages/src/main/java/org/apache/karaf/management/mbeans/packages/internal/PackagesMBeanImpl.java Fri Jan  6 17:08:02 2012
@@ -16,6 +16,11 @@
  */
 package org.apache.karaf.management.mbeans.packages.internal;
 
+import java.util.ArrayList;
+import java.util.List;
+import javax.management.NotCompliantMBeanException;
+import javax.management.StandardMBean;
+
 import org.apache.karaf.management.mbeans.packages.PackagesMBean;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -23,14 +28,10 @@ import org.osgi.framework.ServiceReferen
 import org.osgi.service.packageadmin.ExportedPackage;
 import org.osgi.service.packageadmin.PackageAdmin;
 
-import javax.management.NotCompliantMBeanException;
-import javax.management.StandardMBean;
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * Packages MBean implementation.
  */
+@Deprecated
 public class PackagesMBeanImpl extends StandardMBean implements PackagesMBean {
 
     private BundleContext bundleContext;

Modified: karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Headers.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Headers.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Headers.java (original)
+++ karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Headers.java Fri Jan  6 17:08:02 2012
@@ -17,7 +17,6 @@
 package org.apache.karaf.shell.bundles;
 
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.Dictionary;
 import java.util.Enumeration;
@@ -27,17 +26,21 @@ import java.util.List;
 import java.util.Map;
 
 import jline.Terminal;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.commands.Option;
 import org.apache.felix.utils.manifest.Attribute;
 import org.apache.felix.utils.manifest.Clause;
 import org.apache.felix.utils.manifest.Directive;
 import org.apache.felix.utils.manifest.Parser;
 import org.apache.felix.utils.version.VersionRange;
+import org.apache.felix.utils.version.VersionTable;
+import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.util.ShellUtil;
 import org.fusesource.jansi.Ansi;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.ServiceReference;
+import org.osgi.framework.Constants;
+import org.osgi.framework.wiring.BundleCapability;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.service.packageadmin.ExportedPackage;
 import org.osgi.service.packageadmin.PackageAdmin;
 
@@ -53,10 +56,7 @@ public class Headers extends BundlesComm
     @Option(name = "--indent", description = "Indentation method")
     int indent = -1;
 
-    private PackageAdmin admin;
-
     protected void doExecute(List<Bundle> bundles) throws Exception {
-        admin = getService(PackageAdmin.class);
         if (bundles == null || bundles.isEmpty()) {
             bundles = Arrays.asList(getBundleContext().getBundles());
         }
@@ -287,21 +287,31 @@ public class Headers extends BundlesComm
     }
 
 
-   private boolean checkBundle(String bundleName, String version) {
-        if (admin != null) {
-            Bundle[] bundles = admin.getBundles(bundleName, version);
-            return bundles != null && bundles.length > 0;
+    private boolean checkBundle(String bundleName, String version) {
+        VersionRange vr = VersionRange.parseVersionRange(version);
+        Bundle[] bundles = bundleContext.getBundles();
+        for (int i = 0; (bundles != null) && (i < bundles.length); i++) {
+            String sym = bundles[i].getSymbolicName();
+            if ((sym != null) && sym.equals(bundleName)) {
+                if (vr.contains(bundles[i].getVersion())) {
+                    return true;
+                }
+            }
         }
         return false;
     }
 
     private boolean checkPackage(String packageName, String version) {
         VersionRange range = VersionRange.parseVersionRange(version);
-        if (admin != null) {
-            ExportedPackage[] packages = admin.getExportedPackages(packageName);
-            if (packages != null) {
-                for (ExportedPackage export : packages) {
-                    if (range.contains(export.getVersion())) {
+        Bundle[] bundles = bundleContext.getBundles();
+        for (int i = 0; (bundles != null) && (i < bundles.length); i++) {
+            BundleWiring wiring = bundles[i].adapt(BundleWiring.class);
+            List<BundleCapability> caps = wiring != null ? wiring.getCapabilities(BundleRevision.PACKAGE_NAMESPACE) : null;
+            if (caps != null) {
+                for (BundleCapability cap : caps) {
+                    String n = getAttribute(cap, BundleRevision.PACKAGE_NAMESPACE);
+                    String v = getAttribute(cap, Constants.VERSION_ATTRIBUTE);
+                    if (packageName.equals(n) && range.contains(VersionTable.getVersion(v))) {
                         return true;
                     }
                 }
@@ -309,5 +319,10 @@ public class Headers extends BundlesComm
         }
         return false;
     }
+    
+    private String getAttribute(BundleCapability cap, String name)  {
+        Object obj = cap.getAttributes().get(name);
+        return obj != null ? obj.toString() : null;
+    }
 
 }

Modified: karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/ListBundles.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/ListBundles.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/ListBundles.java (original)
+++ karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/ListBundles.java Fri Jan  6 17:08:02 2012
@@ -25,7 +25,9 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.framework.startlevel.BundleStartLevel;
 import org.osgi.framework.startlevel.FrameworkStartLevel;
-import org.osgi.service.packageadmin.PackageAdmin;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.framework.wiring.BundleRevisions;
+import org.osgi.framework.wiring.BundleWire;
 
 @Command(scope = "bundle", name = "list", description = "Lists all installed bundles.")
 public class ListBundles extends OsgiCommandSupport {
@@ -44,14 +46,11 @@ public class ListBundles extends OsgiCom
 
     private List<BundleStateListener.Factory> bundleStateListenerFactories;
 
-    private PackageAdmin admin;
-
     public void setBundleStateListenerFactories(List<BundleStateListener.Factory> bundleStateListenerFactories) {
         this.bundleStateListenerFactories = bundleStateListenerFactories;
     }
 
     protected Object doExecute() throws Exception {
-        admin = getService(PackageAdmin.class);
         Bundle[] bundles = getBundleContext().getBundles();
         if (bundles != null) {
             // Determine threshold
@@ -145,37 +144,56 @@ public class ListBundles extends OsgiCom
 	                line += " [" + level + "] " + name;
 	                System.out.println(line);
 
-	                if (admin != null) {
-	                    Bundle[] fragments = admin.getFragments(bundles[i]);
-	                    Bundle[] hosts = admin.getHosts(bundles[i]);
-	
-	                    if (fragments != null) {
-	                        System.out.print("                                       Fragments: ");
-	                        int ii = 0;
-	                        for (Bundle fragment : fragments) {
-	                            ii++;
-	                            System.out.print(fragment.getBundleId());
-	                            if ((fragments.length > 1) && ii < (fragments.length)) {
-	                                System.out.print(",");
-	                            }
-	                        }
-	                        System.out.println();
-	                    }
-	
-	                    if (hosts != null) {
-	                        System.out.print("                                       Hosts: ");
-	                        int ii = 0;
-	                        for (Bundle host : hosts) {
-	                            ii++;
-	                            System.out.print(host.getBundleId());
-	                            if ((hosts.length > 1) && ii < (hosts.length)) {
-	                                System.out.print(",");
-	                            }
-	                        }
-	                        System.out.println();
-	                    }
-	
-	                }
+                    boolean isFragment = bundles[i].getHeaders().get(Constants.FRAGMENT_HOST) != null;
+                    if (!isFragment) {
+                        int nb = 0;
+                        for (BundleRevision revision : bundles[i].adapt(BundleRevisions.class).getRevisions()) {
+                            if (revision.getWiring() != null) {
+                                List<BundleWire> wires = revision.getWiring().getProvidedWires(null);
+                                if (wires != null) {
+                                    for (BundleWire w : wires) {
+                                        if (w.getCapability().getNamespace().equals(BundleRevision.HOST_NAMESPACE)) {
+                                            Bundle b = w.getRequirerWiring().getBundle();
+                                            if (nb == 0) {
+                                                System.out.print("                                       Fragments: ");
+                                            } else {
+                                                System.out.print(",");
+                                            }
+                                            System.out.print(b.getBundleId());
+                                            nb++;
+                                        }
+                                    }
+                                }
+                             }
+                        }
+                        if (nb > 0) {
+                            System.out.println();
+                        }
+                    } else {
+                        int nb = 0;
+                        for (BundleRevision revision : bundles[i].adapt(BundleRevisions.class).getRevisions()) {
+                            if (revision.getWiring() != null) {
+                                List<BundleWire> wires = revision.getWiring().getRequiredWires(null);
+                                if (wires != null) {
+                                    for (BundleWire w : wires) {
+                                        Bundle b = w.getProviderWiring().getBundle();
+                                        if (b != null) {
+                                            if (nb == 0) {
+                                                System.out.print("                                       Hosts: ");
+                                            } else {
+                                                System.out.println(",");
+                                            }
+                                            System.out.print(b.getBundleId());
+                                            nb++;
+                                        }                                        
+                                    }
+                                }
+                            }
+                        }
+                        if (nb > 0) {
+                            System.out.println();
+                        }
+                    }
 	            }
             }
         }

Modified: karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Refresh.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Refresh.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Refresh.java (original)
+++ karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Refresh.java Fri Jan  6 17:08:02 2012
@@ -20,33 +20,13 @@ import java.util.List;
 
 import org.apache.karaf.shell.commands.Command;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.packageadmin.PackageAdmin;
+import org.osgi.framework.wiring.FrameworkWiring;
 
 @Command(scope = "bundle", name = "refresh", description = "Refresh bundles.")
 public class Refresh extends BundlesCommandWithConfirmation {
 
     protected void doExecute(List<Bundle> bundles) throws Exception {
-        // Get package admin service.
-        ServiceReference ref = getBundleContext().getServiceReference(PackageAdmin.class.getName());
-        if (ref == null) {
-            System.out.println("PackageAdmin service is unavailable.");
-            return;
-        }
-        try {
-            PackageAdmin pa = (PackageAdmin) getBundleContext().getService(ref);
-            if (pa == null) {
-                System.out.println("PackageAdmin service is unavailable.");
-                return;
-            }
-            if (bundles == null || bundles.size() == 0) {
-                pa.refreshPackages(null);
-            } else {
-                pa.refreshPackages(bundles.toArray(new Bundle[bundles.size()]));
-            }
-        }
-        finally {
-            getBundleContext().ungetService(ref);
-        }
+        FrameworkWiring wiring = getBundleContext().getBundle(0).adapt(FrameworkWiring.class);
+        wiring.refreshBundles(bundles == null || bundles.isEmpty() ? null : bundles);
     }
 }

Modified: karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Resolve.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Resolve.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Resolve.java (original)
+++ karaf/trunk/shell/bundles/src/main/java/org/apache/karaf/shell/bundles/Resolve.java Fri Jan  6 17:08:02 2012
@@ -20,34 +20,14 @@ import java.util.List;
 
 import org.apache.karaf.shell.commands.Command;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.packageadmin.PackageAdmin;
+import org.osgi.framework.wiring.FrameworkWiring;
 
 @Command(scope = "bundle", name = "resolve", description = "Resolve bundles.")
 public class Resolve extends BundlesCommand {
 
     protected void doExecute(List<Bundle> bundles) throws Exception {
-        // Get package admin service.
-        ServiceReference ref = getBundleContext().getServiceReference(PackageAdmin.class.getName());
-        if (ref == null) {
-            System.out.println("PackageAdmin service is unavailable.");
-            return;
-        }
-        try {
-            PackageAdmin pa = (PackageAdmin) getBundleContext().getService(ref);
-            if (pa == null) {
-                System.out.println("PackageAdmin service is unavailable.");
-                return;
-            }
-            if (bundles == null) {
-                pa.resolveBundles(null);
-            } else {
-                pa.resolveBundles(bundles.toArray(new Bundle[bundles.size()]));
-            }
-        }
-        finally {
-            getBundleContext().ungetService(ref);
-        }
+        FrameworkWiring wiring = getBundleContext().getBundle(0).adapt(FrameworkWiring.class);
+        wiring.resolveBundles(bundles == null || bundles.isEmpty() ? null : bundles);
     }
 
 }

Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/Converters.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/Converters.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/Converters.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/Converters.java Fri Jan  6 17:08:02 2012
@@ -26,13 +26,13 @@ import java.lang.reflect.Proxy;
 import java.util.Arrays;
 import java.util.Formatter;
 
+import org.apache.felix.service.command.Converter;
+import org.apache.felix.service.command.Function;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
-import org.apache.felix.service.command.Converter;
-import org.apache.felix.service.command.Function;
-import org.osgi.service.startlevel.StartLevel;
+import org.osgi.framework.startlevel.FrameworkStartLevel;
 
 public class Converters implements Converter
 {
@@ -46,21 +46,7 @@ public class Converters implements Conve
     private CharSequence print(Bundle bundle)
     {
         // [ ID ] [STATE      ] [ SL ] symname
-        StartLevel sl = null;
-        ServiceReference ref = context.getServiceReference(StartLevel.class.getName());
-        if (ref != null)
-        {
-            sl = (StartLevel) context.getService(ref);
-        }
-
-        if (sl == null)
-        {
-            return String.format("%5d|%-11s|%s (%s)", bundle.getBundleId(),
-                getState(bundle), bundle.getSymbolicName(), bundle.getVersion());
-        }
-
-        int level = sl.getBundleStartLevel(bundle);
-        context.ungetService(ref);
+        int level = bundle.adapt(FrameworkStartLevel.class).getStartLevel();
 
         return String.format("%5d|%-11s|%5d|%s (%s)", bundle.getBundleId(),
             getState(bundle), level, bundle.getSymbolicName(), bundle.getVersion());

Modified: karaf/trunk/shell/dev/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/dev/pom.xml?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/shell/dev/pom.xml (original)
+++ karaf/trunk/shell/dev/pom.xml Fri Jan  6 17:08:02 2012
@@ -121,6 +121,7 @@
                             *
                         </Import-Package>
                         <Private-Package>
+                            org.apache.felix.utils.manifest,
                             org.apache.felix.utils.version,
                             org.apache.felix.utils.properties,
                             org.ops4j.pax.url.mvn,

Modified: karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/AbstractBundleCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/AbstractBundleCommand.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/AbstractBundleCommand.java (original)
+++ karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/AbstractBundleCommand.java Fri Jan  6 17:08:02 2012
@@ -17,14 +17,16 @@
 package org.apache.karaf.shell.dev;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.packageadmin.ExportedPackage;
-import org.osgi.service.packageadmin.PackageAdmin;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.framework.wiring.BundleRevisions;
+import org.osgi.framework.wiring.BundleWire;
+import org.osgi.framework.wiring.BundleWiring;
 
 /**
  * Base class for a dev: command that takes a bundle id as an argument
@@ -36,20 +38,8 @@ public abstract class AbstractBundleComm
     @Argument(index = 0, name = "id", description = "The bundle ID", required = true)
     Long id;
 
-    private PackageAdmin admin;
-
     @Override
     protected Object doExecute() throws Exception {
-        // Get package admin service.
-        ServiceReference ref = getBundleContext().getServiceReference(PackageAdmin.class.getName());
-        if (ref == null) {
-            System.out.println("PackageAdmin service is unavailable.");
-            return null;
-        }
-
-        // using the getService call ensures that the reference will be released at the end
-        admin = getService(PackageAdmin.class, ref);
-
         Bundle bundle = getBundleContext().getBundle(id);
         if (bundle == null) {
             System.err.println("Bundle ID " + id + " is invalid");
@@ -70,14 +60,16 @@ public abstract class AbstractBundleComm
         // the set of bundles from which the bundle imports packages
         Map<String, Bundle> exporters = new HashMap<String, Bundle>();
 
-        for (ExportedPackage pkg : getPackageAdmin().getExportedPackages((Bundle) null)) {
-            Bundle[] bundles = pkg.getImportingBundles();
-            if (bundles != null) {
-                for (Bundle importingBundle : bundles) {
-                    if (bundle.equals(importingBundle)
-                            && !(pkg.getExportingBundle().getBundleId() == 0)
-                            && !(pkg.getExportingBundle().equals(bundle))) {
-                        exporters.put(pkg.getName(), pkg.getExportingBundle());
+        for (BundleRevision revision : bundle.adapt(BundleRevisions.class).getRevisions()) {
+            BundleWiring wiring = revision.getWiring();
+            if (wiring != null) {
+                List<BundleWire> wires = wiring.getRequiredWires(BundleRevision.PACKAGE_NAMESPACE);
+                if (wires != null) {
+                    for (BundleWire wire : wires) {
+                        if (wire.getProviderWiring().getBundle().getBundleId() != 0) {
+                            exporters.put(wire.getCapability().getAttributes().get(BundleRevision.PACKAGE_NAMESPACE).toString(),
+                                          wire.getProviderWiring().getBundle());
+                        }
                     }
                 }
             }
@@ -85,7 +77,4 @@ public abstract class AbstractBundleComm
         return exporters;
     }
 
-    protected PackageAdmin getPackageAdmin() {
-        return admin;    
-    }
 }

Modified: karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/DynamicImport.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/DynamicImport.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/DynamicImport.java (original)
+++ karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/DynamicImport.java Fri Jan  6 17:08:02 2012
@@ -17,17 +17,20 @@
 package org.apache.karaf.shell.dev;
 
 import java.io.IOException;
-import static java.lang.String.format;
 import java.net.URL;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.Set;
 
 import org.apache.karaf.shell.commands.Command;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleException;
+import org.osgi.framework.wiring.FrameworkWiring;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static java.lang.String.format;
+
 /**
  * Command for enabling/disabling debug logging on a bundle and calculating the difference in
  * wired imports.
@@ -71,7 +74,7 @@ public class DynamicImport extends Abstr
 
         URL url = new URL(location);
         bundle.update(url.openStream());
-        getPackageAdmin().refreshPackages(new Bundle[] {bundle});
+        bundleContext.getBundle(0).adapt(FrameworkWiring.class).refreshBundles(Collections.singleton(bundle));
     }
 
     /*

Modified: karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/ShowBundleTree.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/ShowBundleTree.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/ShowBundleTree.java (original)
+++ karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/ShowBundleTree.java Fri Jan  6 17:08:02 2012
@@ -16,23 +16,33 @@
  */
 package org.apache.karaf.shell.dev;
 
-import static java.lang.String.format;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.felix.utils.manifest.Clause;
+import org.apache.felix.utils.manifest.Parser;
+import org.apache.felix.utils.version.VersionRange;
+import org.apache.felix.utils.version.VersionTable;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.dev.util.Bundles;
-import org.apache.karaf.shell.dev.util.Import;
 import org.apache.karaf.shell.dev.util.Node;
 import org.apache.karaf.shell.dev.util.Tree;
 import org.osgi.framework.Bundle;
-import org.osgi.service.packageadmin.ExportedPackage;
+import org.osgi.framework.Constants;
+import org.osgi.framework.wiring.BundleCapability;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.framework.wiring.BundleRevisions;
+import org.osgi.framework.wiring.BundleWire;
+import org.osgi.framework.wiring.BundleWiring;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static java.lang.String.format;
+
 /**
  * Command for showing the full tree of bundles that have been used to resolve
  * a given bundle.
@@ -91,13 +101,19 @@ public class ShowBundleTree extends Abst
         Map<String, Set<Bundle>> exports = new HashMap<String, Set<Bundle>>();
 
         for (Bundle bundle : bundles) {
-            ExportedPackage[] packages = getPackageAdmin().getExportedPackages(bundle);
-            if (packages != null) {
-                for (ExportedPackage p : packages) {
-                    if (exports.get(p.getName()) == null) {
-                        exports.put(p.getName(), new HashSet<Bundle>());
+            for (BundleRevision revision : bundle.adapt(BundleRevisions.class).getRevisions()) {
+                BundleWiring wiring = revision.getWiring();
+                if (wiring != null) {
+                    List<BundleWire> wires = wiring.getProvidedWires(BundleRevision.PACKAGE_NAMESPACE);
+                    if (wires != null) {
+                        for (BundleWire wire : wires) {
+                            String name = wire.getCapability().getAttributes().get(BundleRevision.PACKAGE_NAMESPACE).toString();
+                            if (exports.get(name) == null) {
+                                exports.put(name, new HashSet<Bundle>());
+                            }
+                            exports.get(name).add(bundle);
+                        }
                     }
-                    exports.get(p.getName()).add(bundle);
                 }
             }
         }
@@ -121,6 +137,7 @@ public class ShowBundleTree extends Abst
             createNode(tree);
         } else {
             createNodesForImports(tree, bundle);
+            System.out.print("\nWarning: the below tree is a rough approximation of a possible resolution");
         }
     }
 
@@ -128,28 +145,47 @@ public class ShowBundleTree extends Abst
      * Creates nodes for the imports of the bundle (instead of reporting wiring information
      */
     private void createNodesForImports(Node node, Bundle bundle) {
-        for (Import i : Import.parse(String.valueOf(bundle.getHeaders().get("Import-Package")),
-                                     String.valueOf(bundle.getHeaders().get("Export-Package")))) {
-            createNodeForImport(node, bundle, i);
+        Clause[] imports = Parser.parseHeader(bundle.getHeaders().get("Import-Package"));
+        Clause[] exports = Parser.parseHeader(bundle.getHeaders().get("Export-Package"));
+        for (Clause i : imports) {
+            boolean exported = false;
+            for (Clause e : exports) {
+                if (e.getName().equals(i.getName())) {
+                    exported = true;
+                    break;
+                }
+            }
+            if (!exported) {
+                createNodeForImport(node, bundle, i);
+            }
         }
     }
 
     /*
      * Create a child node for a given import (by finding a matching export in the currently installed bundles)
      */
-    private void createNodeForImport(Node node, Bundle bundle, Import i) {
-        ExportedPackage[] exporters = getPackageAdmin().getExportedPackages(i.getPackage());
+    private void createNodeForImport(Node node, Bundle bundle, Clause i) {
+        VersionRange range = VersionRange.parseVersionRange(i.getAttribute(Constants.VERSION_ATTRIBUTE));
         boolean foundMatch = false;
-        if (exporters != null) {
-            for (ExportedPackage ep : exporters) {
-                if (i.getVersion().contains(ep.getVersion())) {
-                    if (bundle.equals(ep.getExportingBundle())) {
-                        foundMatch = true;
-                    } else {
-                        Node child = node.addChild(ep.getExportingBundle());
-                        System.out.printf("- import %s: resolved using %s%n", i, ep.getExportingBundle());
-                        foundMatch = true;
-                        createNode(child);
+        for (Bundle b : bundleContext.getBundles()) {
+            BundleWiring wiring = b.adapt(BundleWiring.class);
+            if (wiring != null) {
+                List<BundleCapability> caps = wiring.getCapabilities(BundleRevision.PACKAGE_NAMESPACE);
+                if (caps != null) {
+                    for (BundleCapability cap : caps) {
+                        String n = getAttribute(cap, BundleRevision.PACKAGE_NAMESPACE);
+                        String v = getAttribute(cap, Constants.VERSION_ATTRIBUTE);
+                        if (i.getName().equals(n) && range.contains(VersionTable.getVersion(v))) {
+                            boolean existing = tree.flatten().contains(b);
+                            System.out.printf("- import %s: resolved using %s%n", i, b);
+                            foundMatch = true;
+                            if (!node.hasChild(b)) {
+                                Node child = node.addChild(b);
+                                if (!existing) {
+                                    createNode(child);
+                                }
+                            }
+                        }
                     }
                 }
             }
@@ -159,9 +195,14 @@ public class ShowBundleTree extends Abst
         }
     }
 
+    private String getAttribute(BundleCapability capability, String name) {
+        Object o = capability.getAttributes().get(name);
+        return o != null ? o.toString() : null;
+    }
+
     /*
-     * Creates a node in the bundle tree
-     */
+    * Creates a node in the bundle tree
+    */
     private void createNode(Node<Bundle> node) {
         Bundle bundle = node.getValue();
         Collection<Bundle> exporters = new HashSet<Bundle>();

Modified: karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/util/Node.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/util/Node.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/util/Node.java (original)
+++ karaf/trunk/shell/dev/src/main/java/org/apache/karaf/shell/dev/util/Node.java Fri Jan  6 17:08:02 2012
@@ -106,6 +106,15 @@ public class Node<T> {
             return value.equals(parent.value) || parent.hasAncestor(value);
         }
     }
+    
+    public boolean hasChild(T value) {
+        for (Node<T> child : getChildren()) {
+            if (value.equals(child.getValue())) {
+                return true;
+            }
+        }
+        return false;
+    }
 
     /*
      * Write this node to the PrintWriter.  It should be indented one step

Modified: karaf/trunk/system/core/src/main/java/org/apache/karaf/system/internal/SystemServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/system/core/src/main/java/org/apache/karaf/system/internal/SystemServiceImpl.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/system/core/src/main/java/org/apache/karaf/system/internal/SystemServiceImpl.java (original)
+++ karaf/trunk/system/core/src/main/java/org/apache/karaf/system/internal/SystemServiceImpl.java Fri Jan  6 17:08:02 2012
@@ -16,16 +16,16 @@
 */
 package org.apache.karaf.system.internal;
 
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
 import org.apache.karaf.system.SystemService;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
+import org.osgi.framework.startlevel.FrameworkStartLevel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
 /**
  * Implementation of the system service.
  */
@@ -97,37 +97,11 @@ public class SystemServiceImpl implement
     }
 
     public void setStartLevel(int startLevel) throws Exception {
-        // get start level service
-        ServiceReference ref = bundleContext.getServiceReference(org.osgi.service.startlevel.StartLevel.class.getName());
-        if (ref == null) {
-            throw new IllegalStateException("StartLevel service is unavailable");
-        }
-        try {
-            org.osgi.service.startlevel.StartLevel startLevelService = (org.osgi.service.startlevel.StartLevel) bundleContext.getService(ref);
-            if (startLevelService == null) {
-                throw new IllegalStateException("StartLevel service is unavailable");
-            }
-            startLevelService.setStartLevel(startLevel);
-        } finally {
-            bundleContext.ungetService(ref);
-        }
+        getBundleContext().getBundle(0).adapt(FrameworkStartLevel.class).setStartLevel(startLevel);
     }
 
     public int getStartLevel() throws Exception {
-        // get start level service
-        ServiceReference ref = bundleContext.getServiceReference(org.osgi.service.startlevel.StartLevel.class.getName());
-        if (ref == null) {
-            throw new IllegalStateException("StartLevel service is unavailable");
-        }
-        try {
-            org.osgi.service.startlevel.StartLevel startLevelService = (org.osgi.service.startlevel.StartLevel) bundleContext.getService(ref);
-            if (startLevelService == null) {
-                throw new IllegalStateException("StartLevel service is unavailable");
-            }
-            return startLevelService.getStartLevel();
-        } finally {
-            bundleContext.ungetService(ref);
-        }
+        return getBundleContext().getBundle(0).adapt(FrameworkStartLevel.class).getStartLevel();
     }
 
     /**

Modified: karaf/trunk/util/src/main/java/org/apache/karaf/util/ShellUtil.java
URL: http://svn.apache.org/viewvc/karaf/trunk/util/src/main/java/org/apache/karaf/util/ShellUtil.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/util/src/main/java/org/apache/karaf/util/ShellUtil.java (original)
+++ karaf/trunk/util/src/main/java/org/apache/karaf/util/ShellUtil.java Fri Jan  6 17:08:02 2012
@@ -27,8 +27,7 @@ import org.apache.felix.service.command.
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.startlevel.StartLevel;
+import org.osgi.framework.startlevel.BundleStartLevel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -135,25 +134,18 @@ public class ShellUtil {
      * @return true if the bundle has start level minor than 50
      */
     public static boolean isASystemBundle(BundleContext bundleContext, Bundle bundle) {
-        ServiceReference ref = bundleContext.getServiceReference(StartLevel.class.getName());
-        if (ref != null) {
-            StartLevel sl = (StartLevel) bundleContext.getService(ref);
-            if (sl != null) {
-                int level = sl.getBundleStartLevel(bundle);
-                int sbsl = 49;
-                final String sbslProp = bundleContext.getProperty( "karaf.systemBundlesStartLevel" );
-                if (sbslProp != null) {
-                    try {
-                       sbsl = Integer.valueOf( sbslProp );
-                    }
-                    catch( Exception ignore ) {
-                      // ignore
-                    }
-                }
-                return level <= sbsl;
+        int level = bundle.adapt(BundleStartLevel.class).getStartLevel();
+        int sbsl = 49;
+        final String sbslProp = bundleContext.getProperty( "karaf.systemBundlesStartLevel" );
+        if (sbslProp != null) {
+            try {
+               sbsl = Integer.valueOf( sbslProp );
+            }
+            catch( Exception ignore ) {
+              // ignore
             }
         }
-        return false;
+        return level <= sbsl;
     }
 
     /**

Modified: karaf/trunk/web/core/src/main/java/org/apache/karaf/web/internal/WebContainerServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/web/core/src/main/java/org/apache/karaf/web/internal/WebContainerServiceImpl.java?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/web/core/src/main/java/org/apache/karaf/web/internal/WebContainerServiceImpl.java (original)
+++ karaf/trunk/web/core/src/main/java/org/apache/karaf/web/internal/WebContainerServiceImpl.java Fri Jan  6 17:08:02 2012
@@ -23,7 +23,7 @@ import org.ops4j.pax.web.service.spi.Web
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
-import org.osgi.service.startlevel.StartLevel;
+import org.osgi.framework.startlevel.BundleStartLevel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -37,7 +37,6 @@ import java.util.Map;
 public class WebContainerServiceImpl implements WebContainerService {
     
     private BundleContext bundleContext;
-    private StartLevel startLevelService;
     private WebEventHandler webEventHandler;
     private WarManager warManager;
     
@@ -47,10 +46,6 @@ public class WebContainerServiceImpl imp
         this.bundleContext = bundleContext;
     }
     
-    public void setStartLevelService(StartLevel startLevelService) {
-        this.startLevelService = startLevelService;
-    }
-    
     public void setWebEventHandler(WebEventHandler webEventHandler) {
         this.webEventHandler = webEventHandler;
     }
@@ -88,10 +83,7 @@ public class WebContainerServiceImpl imp
                 String version = (String) bundle.getHeaders().get(Constants.BUNDLE_VERSION);
                 name = ((version != null)) ? name + " (" + version + ")" : name;
                 long bundleId = bundle.getBundleId();
-                int level = -1;
-                if (startLevelService != null) {
-                    level = startLevelService.getBundleStartLevel(bundle);
-                }
+                int level = bundle.adapt(BundleStartLevel.class).getStartLevel();
                 if (!contextPath.startsWith("/")) {
                     contextPath = "/" + contextPath;
                 }

Modified: karaf/trunk/web/core/src/main/resources/OSGI-INF/blueprint/web-core.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/web/core/src/main/resources/OSGI-INF/blueprint/web-core.xml?rev=1228280&r1=1228279&r2=1228280&view=diff
==============================================================================
--- karaf/trunk/web/core/src/main/resources/OSGI-INF/blueprint/web-core.xml (original)
+++ karaf/trunk/web/core/src/main/resources/OSGI-INF/blueprint/web-core.xml Fri Jan  6 17:08:02 2012
@@ -19,8 +19,6 @@
 -->        
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
 
-    <reference id="startLevelService" interface="org.osgi.service.startlevel.StartLevel" availability="optional" />
-
     <reference id="warManager" interface="org.ops4j.pax.web.service.spi.WarManager" />
 
     <bean id="webEventHandler" class="org.apache.karaf.web.internal.WebEventHandler" />
@@ -30,7 +28,6 @@
     
     <bean id="webContainerService" class="org.apache.karaf.web.internal.WebContainerServiceImpl">
         <property name="bundleContext" ref="blueprintBundleContext"/>
-        <property name="startLevelService" ref="startLevelService"/>
         <property name="webEventHandler" ref="webEventHandler"/>
         <property name="warManager" ref="warManager"/>
     </bean>