You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ld...@apache.org on 2011/08/23 01:23:25 UTC

svn commit: r1160495 - in /karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main: java/org/apache/karaf/webconsole/blueprint/internal/ java/org/apache/karaf/webconsole/blueprint/internal/bundle/ resources/OSGI-INF/blueprint/

Author: ldywicki
Date: Mon Aug 22 23:23:25 2011
New Revision: 1160495

URL: http://svn.apache.org/viewvc?rev=1160495&view=rev
Log:
Clean up blueprint code - introduce IBlueprintBundleStateTracker which is responsible for providing blueprint container states

Added:
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintBundleStateTracker.java
      - copied, changed from r1160487, karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintState.java
      - copied, changed from r1160487, karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintState.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/IBlueprintBundleStateTracker.java
Removed:
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintState.java
Modified:
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintActionProvider.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintColumnProvider.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/OSGI-INF/blueprint/blueprint.xml

Copied: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintBundleStateTracker.java (from r1160487, karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java)
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintBundleStateTracker.java?p2=karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintBundleStateTracker.java&p1=karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java&r1=1160487&r2=1160495&rev=1160495&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintBundleStateTracker.java Mon Aug 22 23:23:25 2011
@@ -1,25 +1,33 @@
-package org.apache.karaf.webconsole.blueprint.internal.bundle;
+package org.apache.karaf.webconsole.blueprint.internal;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.apache.karaf.webconsole.core.panel.StaticImagePanel;
-import org.apache.karaf.webconsole.osgi.bundle.IDecorationProvider;
-import org.apache.wicket.ResourceReference;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.IModel;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleEvent;
+import org.osgi.framework.BundleListener;
 import org.osgi.service.blueprint.container.BlueprintEvent;
 import org.osgi.service.blueprint.container.BlueprintListener;
 
-public class BlueprintDecorationProvider implements IDecorationProvider, BlueprintListener {
+public class BlueprintBundleStateTracker implements IBlueprintBundleStateTracker,
+    BundleListener, BlueprintListener {
 
     private Map<Long, BlueprintState> states = new ConcurrentHashMap<Long, BlueprintState>();
 
+    public BlueprintState getState(Bundle bundle) {
+        return states.get(bundle.getBundleId());
+    }
+
     public void blueprintEvent(BlueprintEvent event) {
         states.put(event.getBundle().getBundleId(), getState(event));
     }
 
+    public void bundleChanged(BundleEvent event) {
+        if (event.getType() == BundleEvent.UNINSTALLED) {
+            states.remove(event.getBundle().getBundleId());
+        }
+    }
+
     private BlueprintState getState(BlueprintEvent blueprintEvent) {
         switch (blueprintEvent.getType()) {
             case BlueprintEvent.CREATING:
@@ -40,11 +48,4 @@ public class BlueprintDecorationProvider
                 return BlueprintState.Unknown;
         }
     }
-
-    public Panel getDecoration(final String componentId, IModel<Bundle> model) {
-        if (states.containsKey(model.getObject().getBundleId())) {
-            return new StaticImagePanel(componentId, new ResourceReference(getClass(), "blueprint.gif"));
-        }
-        return null;
-    }
 }

Copied: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintState.java (from r1160487, karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintState.java)
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintState.java?p2=karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintState.java&p1=karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintState.java&r1=1160487&r2=1160495&rev=1160495&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintState.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintState.java Mon Aug 22 23:23:25 2011
@@ -1,4 +1,4 @@
-package org.apache.karaf.webconsole.blueprint.internal.bundle;
+package org.apache.karaf.webconsole.blueprint.internal;
 
 public enum BlueprintState {
     Unknown,

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/IBlueprintBundleStateTracker.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/IBlueprintBundleStateTracker.java?rev=1160495&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/IBlueprintBundleStateTracker.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/IBlueprintBundleStateTracker.java Mon Aug 22 23:23:25 2011
@@ -0,0 +1,9 @@
+package org.apache.karaf.webconsole.blueprint.internal;
+
+import org.osgi.framework.Bundle;
+
+public interface IBlueprintBundleStateTracker {
+
+    BlueprintState getState(Bundle bundle);
+
+}

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintActionProvider.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintActionProvider.java?rev=1160495&r1=1160494&r2=1160495&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintActionProvider.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintActionProvider.java Mon Aug 22 23:23:25 2011
@@ -1,6 +1,7 @@
 package org.apache.karaf.webconsole.blueprint.internal.bundle;
 
 import org.apache.karaf.webconsole.blueprint.internal.DetailsPage;
+import org.apache.karaf.webconsole.blueprint.internal.IBlueprintBundleStateTracker;
 import org.apache.karaf.webconsole.osgi.bundle.IActionProvider;
 import org.apache.wicket.Component;
 import org.apache.wicket.PageParameters;
@@ -10,6 +11,12 @@ import org.osgi.framework.Bundle;
 
 public class BlueprintActionProvider implements IActionProvider {
 
+    private IBlueprintBundleStateTracker tracker;
+
+    public BlueprintActionProvider(IBlueprintBundleStateTracker tracker) {
+        this.tracker = tracker;
+    }
+
     public Component create(String componentId, Bundle model) {
         PageParameters params = new PageParameters();
         params.put("bundleId", model.getBundleId());

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintColumnProvider.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintColumnProvider.java?rev=1160495&r1=1160494&r2=1160495&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintColumnProvider.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintColumnProvider.java Mon Aug 22 23:23:25 2011
@@ -1,8 +1,7 @@
 package org.apache.karaf.webconsole.blueprint.internal.bundle;
 
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
+import org.apache.karaf.webconsole.blueprint.internal.BlueprintState;
+import org.apache.karaf.webconsole.blueprint.internal.IBlueprintBundleStateTracker;
 import org.apache.karaf.webconsole.osgi.bundle.IColumnProvider;
 import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
@@ -12,19 +11,25 @@ import org.apache.wicket.markup.repeater
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.osgi.framework.Bundle;
-import org.osgi.service.blueprint.container.BlueprintEvent;
-import org.osgi.service.blueprint.container.BlueprintListener;
 
-public class BlueprintColumnProvider implements IColumnProvider, BlueprintListener {
+/**
+ * Provides blueprint column in bundles view.
+ */
+public class BlueprintColumnProvider implements IColumnProvider {
+
+    private IBlueprintBundleStateTracker tracker;
 
-    private Map<Long, BlueprintState> states = new ConcurrentHashMap<Long, BlueprintState>();
+    public BlueprintColumnProvider(IBlueprintBundleStateTracker tracker) {
+        this.tracker = tracker;
+    }
 
     public IColumn<Bundle> getColumn() {
         return new AbstractColumn<Bundle>(Model.of("Blueprint")) {
             public void populateItem(Item<ICellPopulator<Bundle>> cellItem, String componentId, IModel<Bundle> rowModel) {
                 Bundle bundle = rowModel.getObject();
-                if (states.containsKey(bundle.getBundleId())) {
-                    cellItem.add(new Label(componentId, states.get(bundle.getBundleId()).name()));
+                BlueprintState state = tracker.getState(bundle);
+                if (state != null) {
+                    cellItem.add(new Label(componentId, state.name()));
                 } else {
                     cellItem.add(new Label(componentId));
                 }
@@ -32,28 +37,4 @@ public class BlueprintColumnProvider imp
         };
     }
 
-    public void blueprintEvent(BlueprintEvent event) {
-        states.put(event.getBundle().getBundleId(), getState(event));
-    }
-
-    private BlueprintState getState(BlueprintEvent blueprintEvent) {
-        switch (blueprintEvent.getType()) {
-            case BlueprintEvent.CREATING:
-                return BlueprintState.Creating;
-            case BlueprintEvent.CREATED:
-                return BlueprintState.Created;
-            case BlueprintEvent.DESTROYING:
-                return BlueprintState.Destroying;
-            case BlueprintEvent.DESTROYED:
-                return BlueprintState.Destroyed;
-            case BlueprintEvent.FAILURE:
-                return BlueprintState.Failure;
-            case BlueprintEvent.GRACE_PERIOD:
-                return BlueprintState.GracePeriod;
-            case BlueprintEvent.WAITING:
-                return BlueprintState.Waiting;
-            default:
-                return BlueprintState.Unknown;
-        }
-    }
 }

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java?rev=1160495&r1=1160494&r2=1160495&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java Mon Aug 22 23:23:25 2011
@@ -1,50 +1,30 @@
 package org.apache.karaf.webconsole.blueprint.internal.bundle;
 
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
+import org.apache.karaf.webconsole.blueprint.internal.IBlueprintBundleStateTracker;
 import org.apache.karaf.webconsole.core.panel.StaticImagePanel;
 import org.apache.karaf.webconsole.osgi.bundle.IDecorationProvider;
 import org.apache.wicket.ResourceReference;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.osgi.framework.Bundle;
-import org.osgi.service.blueprint.container.BlueprintEvent;
-import org.osgi.service.blueprint.container.BlueprintListener;
 
-public class BlueprintDecorationProvider implements IDecorationProvider, BlueprintListener {
+/**
+ * Implementation of decoration provider which decorates bundles list view by
+ * adding blueprint image.
+ */
+public class BlueprintDecorationProvider implements IDecorationProvider {
 
-    private Map<Long, BlueprintState> states = new ConcurrentHashMap<Long, BlueprintState>();
+    private IBlueprintBundleStateTracker tracker;
 
-    public void blueprintEvent(BlueprintEvent event) {
-        states.put(event.getBundle().getBundleId(), getState(event));
-    }
-
-    private BlueprintState getState(BlueprintEvent blueprintEvent) {
-        switch (blueprintEvent.getType()) {
-            case BlueprintEvent.CREATING:
-                return BlueprintState.Creating;
-            case BlueprintEvent.CREATED:
-                return BlueprintState.Created;
-            case BlueprintEvent.DESTROYING:
-                return BlueprintState.Destroying;
-            case BlueprintEvent.DESTROYED:
-                return BlueprintState.Destroyed;
-            case BlueprintEvent.FAILURE:
-                return BlueprintState.Failure;
-            case BlueprintEvent.GRACE_PERIOD:
-                return BlueprintState.GracePeriod;
-            case BlueprintEvent.WAITING:
-                return BlueprintState.Waiting;
-            default:
-                return BlueprintState.Unknown;
-        }
+    public BlueprintDecorationProvider(IBlueprintBundleStateTracker tracker) {
+        this.tracker = tracker;
     }
 
     public Panel getDecoration(final String componentId, IModel<Bundle> model) {
-        if (states.containsKey(model.getObject().getBundleId())) {
+        if (tracker.getState(model.getObject()) != null) {
             return new StaticImagePanel(componentId, new ResourceReference(getClass(), "blueprint.gif"));
         }
         return null;
     }
+
 }

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/OSGI-INF/blueprint/blueprint.xml
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=1160495&r1=1160494&r2=1160495&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/OSGI-INF/blueprint/blueprint.xml (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/OSGI-INF/blueprint/blueprint.xml Mon Aug 22 23:23:25 2011
@@ -14,18 +14,26 @@
 
     <bean id="provider" class="org.apache.karaf.webconsole.blueprint.internal.navigation.BlueprintNavigationProvider" />
 
-    <!--
+    <bean id="tracker" class="org.apache.karaf.webconsole.blueprint.internal.BlueprintBundleStateTracker" />
+
     <service interface="org.apache.karaf.webconsole.osgi.bundle.IActionProvider">
-        <bean class="org.apache.karaf.webconsole.blueprint.internal.bundle.BlueprintActionProvider" />
+        <bean class="org.apache.karaf.webconsole.blueprint.internal.bundle.BlueprintActionProvider">
+            <argument ref="tracker" />
+        </bean>
     </service>
-    -->
 
     <service auto-export="interfaces">
-        <bean class="org.apache.karaf.webconsole.blueprint.internal.bundle.BlueprintColumnProvider" />
+        <bean class="org.apache.karaf.webconsole.blueprint.internal.bundle.BlueprintColumnProvider">
+            <argument ref="tracker" />
+        </bean>
     </service>
 
     <service auto-export="interfaces">
-        <bean class="org.apache.karaf.webconsole.blueprint.internal.bundle.BlueprintDecorationProvider" />
+        <bean class="org.apache.karaf.webconsole.blueprint.internal.bundle.BlueprintDecorationProvider">
+            <argument ref="tracker" />
+        </bean>
     </service>
 
+    <service ref="tracker" auto-export="interfaces" />
+
 </blueprint>