Usage of new extensions points in blueprint module
git-svn-id: https://svn.apache.org/repos/asf/karaf/sandbox/pieber/karaf-webconsole/trunk@1160485 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintActionProvider.java b/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintActionProvider.java
new file mode 100644
index 0000000..7156207
--- /dev/null
+++ b/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintActionProvider.java
@@ -0,0 +1,21 @@
+package org.apache.karaf.webconsole.blueprint.internal.bundle;
+
+import org.apache.karaf.webconsole.blueprint.internal.DetailsPage;
+import org.apache.karaf.webconsole.osgi.bundle.IActionProvider;
+import org.apache.wicket.Component;
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.model.Model;
+import org.osgi.framework.Bundle;
+
+public class BlueprintActionProvider implements IActionProvider {
+
+ public Component create(String componentId, Bundle model) {
+ PageParameters params = new PageParameters();
+ params.put("bundleId", model.getBundleId());
+ BookmarkablePageLink link = new BookmarkablePageLink(componentId, DetailsPage.class, params);
+ link.setModel(Model.of("Blueprint"));
+ return link;
+ }
+
+}
diff --git a/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintColumnProvider.java b/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintColumnProvider.java
new file mode 100644
index 0000000..675a9f0
--- /dev/null
+++ b/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintColumnProvider.java
@@ -0,0 +1,59 @@
+package org.apache.karaf.webconsole.blueprint.internal.bundle;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+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;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+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 {
+
+ private Map<Long, BlueprintState> states = new ConcurrentHashMap<Long, BlueprintState>();
+
+ 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()));
+ } else {
+ cellItem.add(new Label(componentId));
+ }
+ }
+ };
+ }
+
+ 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;
+ }
+ }
+}
diff --git a/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java b/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java
new file mode 100644
index 0000000..2ea1ba8
--- /dev/null
+++ b/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintDecorationProvider.java
@@ -0,0 +1,50 @@
+package org.apache.karaf.webconsole.blueprint.internal.bundle;
+
+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.service.blueprint.container.BlueprintEvent;
+import org.osgi.service.blueprint.container.BlueprintListener;
+
+public class BlueprintDecorationProvider implements IDecorationProvider, BlueprintListener {
+
+ private Map<Long, BlueprintState> states = new ConcurrentHashMap<Long, BlueprintState>();
+
+ 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 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;
+ }
+}
diff --git a/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintState.java b/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintState.java
new file mode 100644
index 0000000..b41d039
--- /dev/null
+++ b/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/bundle/BlueprintState.java
@@ -0,0 +1,12 @@
+package org.apache.karaf.webconsole.blueprint.internal.bundle;
+
+public enum BlueprintState {
+ Unknown,
+ Creating,
+ Created,
+ Destroying,
+ Destroyed,
+ Failure,
+ GracePeriod,
+ Waiting
+}
\ No newline at end of file
diff --git a/blueprint/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/blueprint/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 55ef3f7..ea4eeef 100644
--- a/blueprint/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/blueprint/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -12,7 +12,20 @@
</service>
-
<bean id="provider" class="org.apache.karaf.webconsole.blueprint.internal.navigation.BlueprintNavigationProvider" />
+ <!--
+ <service interface="org.apache.karaf.webconsole.osgi.bundle.IActionProvider">
+ <bean class="org.apache.karaf.webconsole.blueprint.internal.bundle.BlueprintActionProvider" />
+ </service>
+ -->
+
+ <service auto-export="interfaces">
+ <bean class="org.apache.karaf.webconsole.blueprint.internal.bundle.BlueprintColumnProvider" />
+ </service>
+
+ <service auto-export="interfaces">
+ <bean class="org.apache.karaf.webconsole.blueprint.internal.bundle.BlueprintDecorationProvider" />
+ </service>
+
</blueprint>
diff --git a/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/bundle/blueprint.gif b/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/bundle/blueprint.gif
new file mode 100644
index 0000000..cc9cbea
--- /dev/null
+++ b/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/bundle/blueprint.gif
Binary files differ
diff --git a/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/bundle/decorator.css b/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/bundle/decorator.css
new file mode 100644
index 0000000..2c3aa0e
--- /dev/null
+++ b/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/bundle/decorator.css
@@ -0,0 +1,5 @@
+.blueprint {
+ background: url("blueprint.gif");
+ width: 16px;
+ height: 16px;
+}
\ No newline at end of file