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 12:19:24 UTC

svn commit: r1160606 - 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/ java/org/apache/karaf/webconsole/blueprint/inter...

Author: ldywicki
Date: Tue Aug 23 10:19:23 2011
New Revision: 1160606

URL: http://svn.apache.org/viewvc?rev=1160606&view=rev
Log:
Refactor blueprint view to use datatable instead of list view. Move details page

Added:
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintDataProvider.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/details/
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/details/DetailsPage.java
      - copied, changed from r1160495, karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/DetailsPage.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/model/
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/model/MissingServiceReferenceException.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/model/ServiceReferenceModel.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/BlueprintActionsPanel.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/BlueprintDataTable.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/DefaultServiceReferencePropertyColumn.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/ServiceReferencePropertyColumn.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/details/
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/details/DetailsPage.html
      - copied, changed from r1160495, karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/DetailsPage.html
Removed:
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintProvider.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/ConsoleBlueprintContainer.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/DetailsPage.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/SerializableComponentMetadata.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/DetailsPage.html
Modified:
    karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintPage.java
    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/resources/org/apache/karaf/webconsole/blueprint/internal/BlueprintPage.html

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintDataProvider.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintDataProvider.java?rev=1160606&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintDataProvider.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintDataProvider.java Tue Aug 23 10:19:23 2011
@@ -0,0 +1,32 @@
+package org.apache.karaf.webconsole.blueprint.internal;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.karaf.webconsole.blueprint.internal.model.ServiceReferenceModel;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
+import org.apache.wicket.model.IModel;
+import org.osgi.framework.ServiceReference;
+
+public class BlueprintDataProvider extends SortableDataProvider<ServiceReference> {
+
+    private final List<ServiceReference> containers;
+
+    public BlueprintDataProvider(List<ServiceReference> containers) {
+        this.containers = containers;
+    }
+
+    public Iterator<ServiceReference> iterator(int first, int count) {
+        return new ArrayList<ServiceReference>(containers).subList(first, first+count).iterator();
+    }
+
+    public IModel<ServiceReference> model(ServiceReference object) {
+        return new ServiceReferenceModel(object);
+    }
+
+    public int size() {
+        return containers.size();
+    }
+
+}

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintPage.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintPage.java?rev=1160606&r1=1160605&r2=1160606&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintPage.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/BlueprintPage.java Tue Aug 23 10:19:23 2011
@@ -2,17 +2,11 @@ package org.apache.karaf.webconsole.blue
 
 import java.util.List;
 
+import org.apache.karaf.webconsole.blueprint.internal.view.BlueprintDataTable;
 import org.apache.karaf.webconsole.core.BasePage;
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.model.util.ListModel;
 import org.ops4j.pax.wicket.api.PaxWicketBean;
 import org.ops4j.pax.wicket.api.PaxWicketMountPoint;
 import org.osgi.framework.ServiceReference;
-import org.osgi.framework.Version;
 
 @PaxWicketMountPoint(mountPoint = "/osgi/blueprint")
 public class BlueprintPage extends BasePage {
@@ -21,6 +15,9 @@ public class BlueprintPage extends BaseP
     private List<ServiceReference> containers;
 
     public BlueprintPage() {
+        add(new BlueprintDataTable("containers", new BlueprintDataProvider(containers), 100));
+
+        /*
         add(new ListView<ServiceReference>("containers", new ListModel<ServiceReference>(containers)) {
 
             @Override
@@ -39,6 +36,7 @@ public class BlueprintPage extends BaseP
             }
             
         });
+        */
 
     }
 

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=1160606&r1=1160605&r2=1160606&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 Tue Aug 23 10:19:23 2011
@@ -1,7 +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.blueprint.internal.details.DetailsPage;
 import org.apache.karaf.webconsole.osgi.bundle.IActionProvider;
 import org.apache.wicket.Component;
 import org.apache.wicket.PageParameters;

Copied: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/details/DetailsPage.java (from r1160495, karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/DetailsPage.java)
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/details/DetailsPage.java?p2=karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/details/DetailsPage.java&p1=karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/DetailsPage.java&r1=1160495&r2=1160606&rev=1160606&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/DetailsPage.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/details/DetailsPage.java Tue Aug 23 10:19:23 2011
@@ -1,7 +1,7 @@
-package org.apache.karaf.webconsole.blueprint.internal;
+package org.apache.karaf.webconsole.blueprint.internal.details;
 
-import java.util.Collection;
-import java.util.LinkedList;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.apache.karaf.webconsole.core.BasePage;
@@ -31,40 +31,43 @@ public class DetailsPage extends BasePag
         ServiceReference reference = null;
 
         for (ServiceReference ref : references) {
-            if ("org.osgi.service.blueprint.container.BlueprintContainer".equals(ref.getProperty("objectClass"))) {
-                reference = ref;
-                break;
+            String[] classes = (String[]) ref.getProperty("objectClass");
+            for (String clazz : classes) {
+                if ("org.osgi.service.blueprint.container.BlueprintContainer".equals(clazz)) {
+                    reference = ref;
+                    break;
+                }
             }
         }
 
         if (reference == null) {
+            add(new ListView("components") {
+                @Override
+                protected void populateItem(ListItem item) {
+                    // do nothing :)
+                }
+            });
             return;
         }
 
         final BlueprintContainer container = (BlueprintContainer) context.getService(reference);
 
-        LoadableDetachableModel<List<SerializableComponentMetadata>> model = new LoadableDetachableModel<List<SerializableComponentMetadata>>() {
+        LoadableDetachableModel<List<ComponentMetadata>> model = new LoadableDetachableModel<List<ComponentMetadata>>() {
             @Override
-            protected List<SerializableComponentMetadata> load() {
-                @SuppressWarnings("unchecked")
-                Collection<ComponentMetadata> metadata = container.getMetadata(ComponentMetadata.class);
-
-                List<SerializableComponentMetadata> serializable = new LinkedList<SerializableComponentMetadata>();
-                for (ComponentMetadata componentMetadata : metadata) {
-                    serializable.add(new SerializableComponentMetadata(componentMetadata));
-                }
-
-                return serializable;
+            protected List<ComponentMetadata> load() {
+                return new ArrayList<ComponentMetadata>(container.getMetadata(ComponentMetadata.class));
             }
         };
 
-        add(new ListView<SerializableComponentMetadata>("components", model) {
+        add(new ListView<ComponentMetadata>("components", model) {
             @Override
-            protected void populateItem(ListItem<SerializableComponentMetadata> item) {
-                SerializableComponentMetadata metadata = item.getModelObject();
+            protected void populateItem(ListItem<ComponentMetadata> item) {
+                ComponentMetadata metadata = item.getModelObject();
+
+                Class<?>[] interfaces = metadata.getClass().getInterfaces();
 
                 item.add(new Label("componentId", metadata.getId()));
-                item.add(new Label("type", metadata.getTypeName()));
+                item.add(new Label("type", Arrays.toString(interfaces)));
             }
         });
 

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/model/MissingServiceReferenceException.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/model/MissingServiceReferenceException.java?rev=1160606&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/model/MissingServiceReferenceException.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/model/MissingServiceReferenceException.java Tue Aug 23 10:19:23 2011
@@ -0,0 +1,11 @@
+package org.apache.karaf.webconsole.blueprint.internal.model;
+
+import java.util.Arrays;
+
+public class MissingServiceReferenceException extends RuntimeException {
+
+    public MissingServiceReferenceException(String symbolicName, String[] classes) {
+        super("Bundle " + symbolicName + " doesn't register any service with classes " + Arrays.toString(classes));
+    }
+
+}

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/model/ServiceReferenceModel.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/model/ServiceReferenceModel.java?rev=1160606&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/model/ServiceReferenceModel.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/model/ServiceReferenceModel.java Tue Aug 23 10:19:23 2011
@@ -0,0 +1,34 @@
+package org.apache.karaf.webconsole.blueprint.internal.model;
+
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceReference;
+
+public class ServiceReferenceModel extends LoadableDetachableModel<ServiceReference> {
+
+    private final Bundle bundle;
+    private String[] classes;
+
+    public ServiceReferenceModel(ServiceReference object) {
+        this(object, object.getBundle());
+    }
+
+    public ServiceReferenceModel(ServiceReference object, Bundle bundle) {
+        this.bundle = bundle;
+        classes = (String[]) object.getProperty("objectClass");
+    }
+
+    @Override
+    protected ServiceReference load() {
+        ServiceReference[] services = bundle.getRegisteredServices();
+
+        for (ServiceReference reference : services) {
+            if (classes.equals(reference.getProperty("objectClass"))) {
+                return reference;
+            }
+        }
+
+        throw new MissingServiceReferenceException(bundle.getSymbolicName(), classes);
+    }
+
+}

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/BlueprintActionsPanel.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/BlueprintActionsPanel.java?rev=1160606&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/BlueprintActionsPanel.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/BlueprintActionsPanel.java Tue Aug 23 10:19:23 2011
@@ -0,0 +1,31 @@
+package org.apache.karaf.webconsole.blueprint.internal.view;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.karaf.webconsole.blueprint.internal.details.DetailsPage;
+import org.apache.karaf.webconsole.core.table.ActionsPanel;
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.model.IModel;
+import org.osgi.framework.ServiceReference;
+
+public class BlueprintActionsPanel extends ActionsPanel<ServiceReference> {
+
+    public BlueprintActionsPanel(String componentId, IModel<ServiceReference> model) {
+        super(componentId, model);
+    }
+
+    @Override
+    protected List<Link> getLinks(ServiceReference object, String id) {
+        PageParameters params = new PageParameters();
+        params.put("bundleId", object.getBundle().getBundleId());
+
+        Link link = new BookmarkablePageLink(id, DetailsPage.class, params);
+        link.add(new Label("label", "View components"));
+
+        return Arrays.asList(link);
+    }
+}

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/BlueprintDataTable.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/BlueprintDataTable.java?rev=1160606&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/BlueprintDataTable.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/BlueprintDataTable.java Tue Aug 23 10:19:23 2011
@@ -0,0 +1,33 @@
+package org.apache.karaf.webconsole.blueprint.internal.view;
+
+import java.util.Arrays;
+import java.util.List;
+
+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.DefaultDataTable;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.osgi.framework.ServiceReference;
+
+public class BlueprintDataTable extends DefaultDataTable<ServiceReference> {
+
+    @SuppressWarnings({"rawtypes", "unchecked"})
+    private static final List COLUMNS = Arrays.asList(
+        new DefaultServiceReferencePropertyColumn("Id", "service.id"),
+        new DefaultServiceReferencePropertyColumn("Container", "osgi.blueprint.container.symbolicname"),
+        new DefaultServiceReferencePropertyColumn("Version", "osgi.blueprint.container.version"),
+        new AbstractColumn<ServiceReference>(Model.of("Operations")) {
+            public void populateItem(Item<ICellPopulator<ServiceReference>> cellItem, String componentId, IModel<ServiceReference> rowModel) {
+                cellItem.add(new BlueprintActionsPanel(componentId, rowModel));
+            }
+        }
+    );
+
+    public BlueprintDataTable(String id, ISortableDataProvider<ServiceReference> dataProvider, int rowsPerPage) {
+        super(id, COLUMNS, dataProvider, rowsPerPage);
+    }
+
+}

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/DefaultServiceReferencePropertyColumn.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/DefaultServiceReferencePropertyColumn.java?rev=1160606&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/DefaultServiceReferencePropertyColumn.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/DefaultServiceReferencePropertyColumn.java Tue Aug 23 10:19:23 2011
@@ -0,0 +1,18 @@
+package org.apache.karaf.webconsole.blueprint.internal.view;
+
+import org.apache.wicket.markup.html.basic.Label;
+
+public class DefaultServiceReferencePropertyColumn extends ServiceReferencePropertyColumn {
+
+    public DefaultServiceReferencePropertyColumn(String displayModel, String sortProperty) {
+        super(displayModel, sortProperty);
+    }
+
+    public DefaultServiceReferencePropertyColumn(String displayModel) {
+        super(displayModel);
+    }
+
+    protected Label createComponent(String componentId, Object property) {
+        return new Label(componentId, property != null ? property.toString() : "null");
+    }
+}

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/ServiceReferencePropertyColumn.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/ServiceReferencePropertyColumn.java?rev=1160606&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/ServiceReferencePropertyColumn.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/java/org/apache/karaf/webconsole/blueprint/internal/view/ServiceReferencePropertyColumn.java Tue Aug 23 10:19:23 2011
@@ -0,0 +1,26 @@
+package org.apache.karaf.webconsole.blueprint.internal.view;
+
+import org.apache.wicket.Component;
+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.markup.repeater.Item;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.osgi.framework.ServiceReference;
+
+public abstract class ServiceReferencePropertyColumn extends AbstractColumn<ServiceReference> {
+
+    public ServiceReferencePropertyColumn(String displayModel, String sortProperty) {
+        super(Model.of(displayModel), sortProperty);
+    }
+
+    public ServiceReferencePropertyColumn(String displayModel) {
+        super(Model.of(displayModel));
+    }
+
+    public final void populateItem(Item<ICellPopulator<ServiceReference>> cellItem, String componentId, IModel<ServiceReference> rowModel) {
+        cellItem.add(createComponent(componentId, rowModel.getObject().getProperty(getSortProperty())));
+    }
+
+    protected abstract Component createComponent(String componentId, Object property);
+}

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/BlueprintPage.html
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/BlueprintPage.html?rev=1160606&r1=1160605&r2=1160606&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/BlueprintPage.html (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/BlueprintPage.html Tue Aug 23 10:19:23 2011
@@ -7,24 +7,8 @@
     <body>
        <wicket:extend>
             <h1>Blueprint containers</h1>
-            <table>
-                <tr>
-                    <th>Name</th>
-                    <th>Version</th>
-                    <th>Operations</th>
-                </tr>
-                <tr wicket:id="containers">
-                    <td>
-                        <span wicket:id="symbolicName">com.example</span>
-                    </td>
-                    <td>
-                        <span wicket:id="version">0.0.0</span>
-                    </td>
-                    <td>
-                        <a wicket:id="details">Details</a>
-                    </td>
-                </tr>
-            </table>
+
+            <table wicket:id="containers" class="dataview" />
         </wicket:extend>
     </body>
 </html>

Copied: karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/details/DetailsPage.html (from r1160495, karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/DetailsPage.html)
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/details/DetailsPage.html?p2=karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/details/DetailsPage.html&p1=karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/DetailsPage.html&r1=1160495&r2=1160606&rev=1160606&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/DetailsPage.html (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/blueprint/src/main/resources/org/apache/karaf/webconsole/blueprint/internal/details/DetailsPage.html Tue Aug 23 10:19:23 2011
@@ -22,7 +22,7 @@
                         <span wicket:id="type">org.osgi.service.blueprint.reflect.ComponentMetadata</span>
                     </td>
                     <td>
-                        <a wicket:id="details">Details</a>
+<!--                         <a wicket:id="details">Details</a> -->
                     </td>
                 </tr>
             </table>