Repository: karaf
Updated Branches:
  refs/heads/EXPERIMENTAL_DS [created] 76bbf3fa2


Switch bundle core to DS


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/76bbf3fa
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/76bbf3fa
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/76bbf3fa

Branch: refs/heads/EXPERIMENTAL_DS
Commit: 76bbf3fa2494a340d1d7b46f712f703fc5c84689
Parents: fe928b8
Author: Christian Schneider <[email protected]>
Authored: Thu Mar 17 16:28:12 2016 +0100
Committer: Christian Schneider <[email protected]>
Committed: Thu Mar 17 16:28:12 2016 +0100

----------------------------------------------------------------------
 .../standard/src/main/feature/feature.xml       |  1 +
 bundle/core/pom.xml                             |  5 +-
 .../karaf/bundle/command/BundlesCommand.java    |  2 -
 .../apache/karaf/bundle/command/Services.java   |  1 -
 .../bundle/core/internal/BundleServiceImpl.java | 32 ++++---
 .../bundle/core/internal/BundleWatcherImpl.java | 27 +++---
 .../bundle/core/internal/BundlesMBeanImpl.java  | 23 +++--
 .../core/internal/MavenConfigService.java       | 11 +--
 .../bundle/core/internal/osgi/Activator.java    | 94 --------------------
 .../karaf/bundle/command/ListServicesTest.java  |  5 +-
 10 files changed, 65 insertions(+), 136 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/assemblies/features/standard/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/assemblies/features/standard/src/main/feature/feature.xml 
b/assemblies/features/standard/src/main/feature/feature.xml
index 4447b72..6e075fd 100644
--- a/assemblies/features/standard/src/main/feature/feature.xml
+++ b/assemblies/features/standard/src/main/feature/feature.xml
@@ -146,6 +146,7 @@
 
     <feature name="bundle" description="Provide Bundle support" 
version="${project.version}">
         <feature>jaas-boot</feature>
+        <feature>scr</feature>
         <bundle start-level="30" 
start="true">mvn:org.apache.karaf.bundle/org.apache.karaf.bundle.core/${project.version}</bundle>
         <conditional>
             <condition>management</condition>

http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/pom.xml
----------------------------------------------------------------------
diff --git a/bundle/core/pom.xml b/bundle/core/pom.xml
index a825414..3c32963 100644
--- a/bundle/core/pom.xml
+++ b/bundle/core/pom.xml
@@ -48,11 +48,13 @@
                <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
+            <version>6.0.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
+            <artifactId>osgi.cmpn</artifactId>
+            <version>6.0.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -123,6 +125,7 @@
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
+                        <_dsannotations>*</_dsannotations>
                         <Export-Package>
                             org.apache.karaf.bundle.core;-noimport:=true
                         </Export-Package>

http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java 
b/bundle/core/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java
index 25a2125..03d8dea 100644
--- 
a/bundle/core/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java
+++ 
b/bundle/core/src/main/java/org/apache/karaf/bundle/command/BundlesCommand.java
@@ -20,13 +20,11 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.karaf.bundle.core.BundleService;
-import org.apache.karaf.bundle.core.internal.BundleSelectorImpl;
 import org.apache.karaf.shell.api.action.Action;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Option;
 import org.apache.karaf.shell.api.action.lifecycle.Reference;
 import org.apache.karaf.shell.support.MultiException;
-import org.apache.karaf.shell.support.ShellUtil;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/command/Services.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/command/Services.java 
b/bundle/core/src/main/java/org/apache/karaf/bundle/command/Services.java
index 5b2080d..b8b4a9b 100644
--- a/bundle/core/src/main/java/org/apache/karaf/bundle/command/Services.java
+++ b/bundle/core/src/main/java/org/apache/karaf/bundle/command/Services.java
@@ -18,7 +18,6 @@ package org.apache.karaf.bundle.command;
 
 import java.util.Arrays;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 
 import org.apache.karaf.shell.api.action.Command;

http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java
 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java
index 60ef59b..6fe9448 100644
--- 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java
+++ 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java
@@ -16,6 +16,9 @@
  */
 package org.apache.karaf.bundle.core.internal;
 
+import static java.lang.String.format;
+import static 
org.osgi.service.component.annotations.ReferenceCardinality.MULTIPLE;
+
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -42,11 +45,12 @@ import org.osgi.framework.wiring.BundleRevisions;
 import org.osgi.framework.wiring.BundleWire;
 import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.framework.wiring.FrameworkWiring;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static java.lang.String.format;
-
+@Component
 public class BundleServiceImpl implements BundleService {
 
     private static Logger LOG = LoggerFactory.getLogger(BundleService.class);
@@ -56,19 +60,21 @@ public class BundleServiceImpl implements BundleService {
      */
     private static final String ORIGINAL_WIRES = "Original-Wires";
 
-    private final BundleContext bundleContext;
-    private final List<BundleStateService> stateServices = new 
CopyOnWriteArrayList<>();
-
-    public BundleServiceImpl(BundleContext bundleContext) {
-        this.bundleContext = bundleContext;
-    }
+    private BundleContext bundleContext;
+    
+    @Reference(cardinality = MULTIPLE, service=BundleStateService.class)
+    List<BundleStateService> stateServices;
 
-    public void registerBundleStateService(BundleStateService service) {
-        stateServices.add(service);
+    /**
+     * For tests
+     */
+    public BundleServiceImpl() {
+        this.stateServices = new CopyOnWriteArrayList<>();
     }
-
-    public void unregisterBundleStateService(BundleStateService service) {
-        stateServices.remove(service);
+    
+    public void activate(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
+        
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java
 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java
index 104dcba..cde66f1 100644
--- 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java
+++ 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleWatcherImpl.java
@@ -18,7 +18,6 @@ package org.apache.karaf.bundle.core.internal;
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
@@ -32,13 +31,16 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.apache.karaf.bundle.core.BundleInfo;
 import org.apache.karaf.bundle.core.BundleService;
 import org.apache.karaf.bundle.core.BundleWatcher;
 import org.apache.karaf.util.bundles.BundleUtils;
 import org.apache.karaf.util.maven.Parser;
 import org.osgi.framework.*;
 import org.osgi.framework.wiring.FrameworkWiring;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,24 +48,26 @@ import org.slf4j.LoggerFactory;
  * A Runnable singleton which watches at the defined location for bundle
  * updates.
  */
+@Component(service={BundleWatcher.class, BundleListener.class}, immediate = 
true)
 public class BundleWatcherImpl implements Runnable, BundleListener, 
BundleWatcher {
 
     private final Logger logger = 
LoggerFactory.getLogger(BundleWatcherImpl.class);
-
-    private BundleContext bundleContext;
-       private final BundleService bundleService;
-       private final MavenConfigService localRepoDetector;
-
     private AtomicBoolean running = new AtomicBoolean(false);
     private long interval = 1000L;
     private List<String> watchURLs = new CopyOnWriteArrayList<String>();
     private AtomicInteger counter = new AtomicInteger(0);
+    
+    private BundleContext bundleContext;
+
+    @Reference
+    BundleService bundleService;
 
-    @SuppressWarnings("deprecation")
-    public BundleWatcherImpl(BundleContext bundleContext, MavenConfigService 
mavenConfigService, BundleService bundleService) {
+    @Reference
+    MavenConfigService localRepoDetector;
+    
+    @Activate
+    public void activate(BundleContext bundleContext) {
         this.bundleContext = bundleContext;
-               this.localRepoDetector = mavenConfigService;
-        this.bundleService = bundleService;
     }
 
     /* (non-Javadoc)
@@ -240,6 +244,7 @@ public class BundleWatcherImpl implements Runnable, 
BundleListener, BundleWatche
     /**
      * Stop the execution of the thread and releases the singleton instance.
      */
+    @Deactivate
     public void stop() {
         running.set(false);
         bundleContext.removeBundleListener(this);

http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java
 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java
index 79131c1..ba41030 100644
--- 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java
+++ 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java
@@ -41,23 +41,32 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.startlevel.BundleStartLevel;
 import org.osgi.framework.wiring.FrameworkWiring;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- * BundlesMBean implementation.
- */
+@Component(
+           // TODO use name from system property
+           property={"jmx.objectname=org.apache.karaf:type=bundle,name=root"}
+)
 public class BundlesMBeanImpl extends StandardMBean implements BundlesMBean {
 
     private Logger LOG = LoggerFactory.getLogger(BundlesMBeanImpl.class);
 
     private BundleContext bundleContext;
-    private final BundleService bundleService;
 
-    public BundlesMBeanImpl(BundleContext bundleContext, BundleService 
bundleService) throws NotCompliantMBeanException {
-        super(BundlesMBean.class);
+    @Reference
+    BundleService bundleService;
+
+    @Activate
+    public void activate(BundleContext bundleContext) {
         this.bundleContext = bundleContext;
-        this.bundleService = bundleService;
+    }
+
+    public BundlesMBeanImpl() throws NotCompliantMBeanException {
+        super(BundlesMBean.class);
     }
 
     private List<Bundle> selectBundles(String id) throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java
 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java
index 9ad7b0a..edaa934 100644
--- 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java
+++ 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/MavenConfigService.java
@@ -28,17 +28,18 @@ import javax.xml.stream.XMLStreamReader;
 
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Component(service = MavenConfigService.class)
 public class MavenConfigService {
 
        private final Logger logger = 
LoggerFactory.getLogger(MavenConfigService.class);
-       private final ConfigurationAdmin configurationAdmin;
-
-       public MavenConfigService(ConfigurationAdmin configurationAdmin) {
-               this.configurationAdmin = configurationAdmin;
-       }
+       
+       @Reference
+       ConfigurationAdmin configurationAdmin;
 
     public File getLocalRepository() {
         String path = null;

http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/osgi/Activator.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/osgi/Activator.java
 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/osgi/Activator.java
deleted file mode 100644
index 7dfdde1..0000000
--- 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/osgi/Activator.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.bundle.core.internal.osgi;
-
-import org.apache.karaf.bundle.core.BundleService;
-import org.apache.karaf.bundle.core.BundleStateService;
-import org.apache.karaf.bundle.core.BundleWatcher;
-import org.apache.karaf.bundle.core.internal.BundleServiceImpl;
-import org.apache.karaf.bundle.core.internal.BundleWatcherImpl;
-import org.apache.karaf.bundle.core.internal.BundlesMBeanImpl;
-import org.apache.karaf.bundle.core.internal.MavenConfigService;
-import org.apache.karaf.util.tracker.BaseActivator;
-import org.apache.karaf.util.tracker.annotation.ProvideService;
-import org.apache.karaf.util.tracker.annotation.RequireService;
-import org.apache.karaf.util.tracker.annotation.Services;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.cm.ConfigurationAdmin;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-@Services(
-        requires = @RequireService(ConfigurationAdmin.class),
-        provides = @ProvideService(BundleService.class)
-)
-public class Activator extends BaseActivator {
-
-    private ServiceTracker<BundleStateService, BundleStateService> 
bundleStateServicesTracker;
-    private BundleWatcherImpl bundleWatcher;
-
-    @Override
-    protected void doStart() throws Exception {
-        ConfigurationAdmin configurationAdmin = 
getTrackedService(ConfigurationAdmin.class);
-        if (configurationAdmin == null) {
-            return;
-        }
-
-        final BundleServiceImpl bundleService = new 
BundleServiceImpl(bundleContext);
-        register(BundleService.class, bundleService);
-        bundleStateServicesTracker = new ServiceTracker<BundleStateService, 
BundleStateService>(
-                bundleContext, BundleStateService.class, new 
ServiceTrackerCustomizer<BundleStateService, BundleStateService>() {
-            @Override
-            public BundleStateService 
addingService(ServiceReference<BundleStateService> reference) {
-                BundleStateService service = 
bundleContext.getService(reference);
-                bundleService.registerBundleStateService(service);
-                return service;
-            }
-            @Override
-            public void modifiedService(ServiceReference<BundleStateService> 
reference, BundleStateService service) {
-            }
-            @Override
-            public void removedService(ServiceReference<BundleStateService> 
reference, BundleStateService service) {
-                bundleService.unregisterBundleStateService(service);
-                bundleContext.ungetService(reference);
-            }
-        }
-        );
-        bundleStateServicesTracker.open();
-
-        bundleWatcher = new BundleWatcherImpl(bundleContext, new 
MavenConfigService(configurationAdmin), bundleService);
-        bundleWatcher.start();
-        register(BundleWatcher.class, bundleWatcher);
-
-        BundlesMBeanImpl bundlesMBeanImpl = new 
BundlesMBeanImpl(bundleContext, bundleService);
-        registerMBean(bundlesMBeanImpl, "type=bundle");
-    }
-
-    @Override
-    protected void doStop() {
-        if (bundleStateServicesTracker != null) {
-            bundleStateServicesTracker.close();
-            bundleStateServicesTracker = null;
-        }
-        super.doStop();
-        if (bundleWatcher != null) {
-            bundleWatcher.stop();
-            bundleWatcher = null;
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/karaf/blob/76bbf3fa/bundle/core/src/test/java/org/apache/karaf/bundle/command/ListServicesTest.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/test/java/org/apache/karaf/bundle/command/ListServicesTest.java
 
b/bundle/core/src/test/java/org/apache/karaf/bundle/command/ListServicesTest.java
index c4413b9..ac8f4d3 100644
--- 
a/bundle/core/src/test/java/org/apache/karaf/bundle/command/ListServicesTest.java
+++ 
b/bundle/core/src/test/java/org/apache/karaf/bundle/command/ListServicesTest.java
@@ -27,13 +27,14 @@ public class ListServicesTest {
     private BundleContext bundleContext;
     private Services listServices;
 
-    @SuppressWarnings("unchecked")
     public ListServicesTest() {
         listServices = new Services();
         bundleContext = new TestBundleFactory().createBundleContext();
         listServices.context = null;
         listServices.setBundleContext(bundleContext);
-        listServices.setBundleService(new BundleServiceImpl(bundleContext));
+        BundleServiceImpl bundleService = new BundleServiceImpl();
+        bundleService.activate(bundleContext);
+        listServices.setBundleService(bundleService);
     }
     
     @Test

Reply via email to