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 13:02:45 UTC

svn commit: r1160621 - in /karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal: ./ feature/ model/ repository/

Author: ldywicki
Date: Tue Aug 23 11:02:45 2011
New Revision: 1160621

URL: http://svn.apache.org/viewvc?rev=1160621&view=rev
Log:
Remove serialization requirement for Features/Repositories page, now they use LoadableDetachableModel. Feature Instalation/Uninstallation state is changed just after operation

Added:
    karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/FeatureModel.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/FeaturesProvider.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/MissingFeatureException.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/RepositoriesProvider.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/model/
    karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/model/RepositoryModel.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/model/RepositoryNotFoundException.java
Removed:
    karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/feature/ExtendedFeature.java
Modified:
    karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/feature/FeaturesActionsPanel.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/feature/FeaturesPage.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/repository/RepositoriesPage.java

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/FeatureModel.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/FeatureModel.java?rev=1160621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/FeatureModel.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/FeatureModel.java Tue Aug 23 11:02:45 2011
@@ -0,0 +1,38 @@
+package org.apache.karaf.webconsole.karaf.internal;
+
+import org.apache.karaf.features.Feature;
+import org.apache.karaf.features.FeaturesService;
+import org.apache.wicket.model.LoadableDetachableModel;
+
+public class FeatureModel extends LoadableDetachableModel<Feature> {
+
+    private FeaturesService service;
+    private String version;
+    private String name;
+
+    public FeatureModel(FeaturesService service, Feature object) {
+        this.service = service;
+        this.name = object.getName();
+        this.version = object.getVersion();
+    }
+
+    @Override
+    protected Feature load() {
+        Feature[] features = new Feature[0];
+
+        try {
+            features = service.listFeatures();
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+
+        for (Feature feature : features) {
+            if (name.equals(feature.getName()) && version.equals(feature.getVersion())) {
+                return feature;
+            }
+        }
+
+        throw new MissingFeatureException(name, version);
+    }
+}

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/FeaturesProvider.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/FeaturesProvider.java?rev=1160621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/FeaturesProvider.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/FeaturesProvider.java Tue Aug 23 11:02:45 2011
@@ -0,0 +1,67 @@
+package org.apache.karaf.webconsole.karaf.internal;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.karaf.features.Feature;
+import org.apache.karaf.features.FeaturesService;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
+import org.apache.wicket.model.IModel;
+
+public class FeaturesProvider extends SortableDataProvider<Feature> {
+
+    private final FeaturesService service;
+
+    public FeaturesProvider(FeaturesService service) {
+        this.service = service;
+
+        setSort("name", true);
+    }
+
+    public Iterator<Feature> iterator(int first, int count) {
+        List<Feature> data = new ArrayList<Feature>();
+        try {
+            data = Arrays.asList(service.listFeatures());
+        } catch (Exception e) {
+            return data.iterator();
+        }
+
+        Collections.sort(data, new Comparator<Feature>() {
+
+            public int compare(Feature o1, Feature o2) {
+                int dir = getSort().isAscending() ? 1 : -1;
+
+                if ("name".equals(getSort().getProperty())) {
+                    return dir * (o1.getName().compareTo(o2.getName()));
+//                } else if ("repository".equals(getSort().getProperty())) {
+//                    return dir * (o1.getRepository().compareTo(o2.getRepository()));
+//                } else if ("state".equals(getSort().getProperty())) {
+//                    return dir * (o1.getState().compareTo(o2.getState()));
+//                } else {
+//                    return dir * (o1.getName().compareTo(o2.getName()));
+                }
+                return 0;
+            }
+        });
+        return data.subList(first, Math.min(first + count, data.size()))
+            .iterator();
+    }
+
+    public int size() {
+        try {
+            return service.listFeatures().length;
+        } catch (Exception e) {
+            return 0;
+        }
+    }
+
+    public IModel<Feature> model(Feature object) {
+        return new FeatureModel(service, object);
+    }
+
+}
+

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/MissingFeatureException.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/MissingFeatureException.java?rev=1160621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/MissingFeatureException.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/MissingFeatureException.java Tue Aug 23 11:02:45 2011
@@ -0,0 +1,9 @@
+package org.apache.karaf.webconsole.karaf.internal;
+
+public class MissingFeatureException extends RuntimeException {
+
+    public MissingFeatureException(String name, String version) {
+        super("Feature " + name + " with version " + version + " is no longer available");
+    }
+
+}

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/RepositoriesProvider.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/RepositoriesProvider.java?rev=1160621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/RepositoriesProvider.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/RepositoriesProvider.java Tue Aug 23 11:02:45 2011
@@ -0,0 +1,33 @@
+package org.apache.karaf.webconsole.karaf.internal;
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+import org.apache.karaf.features.FeaturesService;
+import org.apache.karaf.features.Repository;
+import org.apache.karaf.webconsole.karaf.internal.model.RepositoryModel;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
+import org.apache.wicket.model.IModel;
+
+public class RepositoriesProvider extends SortableDataProvider<Repository> {
+
+    private final FeaturesService service;
+
+    public RepositoriesProvider(FeaturesService service) {
+        this.service = service;
+
+    }
+
+    public Iterator<Repository> iterator(int first, int count) {
+        return Arrays.asList(service.listRepositories())
+                .subList(first, first + count).iterator();
+    }
+
+    public int size() {
+        return service.listRepositories().length;
+    }
+
+    public IModel<Repository> model(Repository object) {
+        return new RepositoryModel(service, object);
+    }
+}
\ No newline at end of file

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/feature/FeaturesActionsPanel.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/feature/FeaturesActionsPanel.java?rev=1160621&r1=1160620&r2=1160621&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/feature/FeaturesActionsPanel.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/feature/FeaturesActionsPanel.java Tue Aug 23 11:02:45 2011
@@ -3,44 +3,36 @@ package org.apache.karaf.webconsole.kara
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.karaf.features.Feature;
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.webconsole.core.table.ActionsPanel;
-import org.apache.wicket.ResourceReference;
 import org.apache.wicket.behavior.SimpleAttributeModifier;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.model.IModel;
 import org.ops4j.pax.wicket.api.PaxWicketBean;
 
-
-public class FeaturesActionsPanel extends ActionsPanel<ExtendedFeature> {
+public class FeaturesActionsPanel extends ActionsPanel<Feature> {
 
     @PaxWicketBean(name = "featuresService")
     private FeaturesService featuresService;
-    private ExtendedFeature extendedFeature;
-
-    private static ResourceReference INSTALL_IMG = new ResourceReference(FeaturesActionsPanel.class,"images/feature_install.png");
-    private static ResourceReference UNINSTALL_IMG = new ResourceReference(FeaturesActionsPanel.class,"images/feature_uninstall.png");
 
-    public FeaturesActionsPanel(String componentId, IModel<ExtendedFeature> model) {
+    public FeaturesActionsPanel(String componentId, IModel<Feature> model) {
         super(componentId, model);
     }
 
     @Override
-    protected List<Link> getLinks(ExtendedFeature object, String id) {
+    protected List<Link> getLinks(final Feature object, String id) {
         Link link = new Link(id) {
 
             @Override
             public void onClick() {
 
                 try {
-                    switch (extendedFeature.getState()) {
-                        case INSTALLED:
-                            featuresService.uninstallFeature(extendedFeature.getName());
-                            break;
-                        case UNINSTALLED:
-                            featuresService.installFeature(extendedFeature.getName());
-                            break;
+                    if (isInstalled(object)) {
+                        featuresService.uninstallFeature(object.getName());
+                    } else {
+                        featuresService.installFeature(object.getName());
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
@@ -48,28 +40,15 @@ public class FeaturesActionsPanel extend
             }
         };
 
-        link.add(new SimpleAttributeModifier("class", object.getState().name().toLowerCase()));
+        link.add(new SimpleAttributeModifier("class", isInstalled(object) ? "installed" : "uninstalled"));
         link.add(new Label("label"));
 
         // add image to the link
         return Arrays.asList(link);
     }
 
-    protected ResourceReference getImage(final ExtendedFeature.State action) {
-        final ResourceReference image;
-        switch (action) {
-            case INSTALLED :
-                image = UNINSTALL_IMG;
-                break;
-            case UNINSTALLED :
-                image = INSTALL_IMG;
-                break;
-            default:
-                image = INSTALL_IMG;
-                break;
-        }
-
-        return image;
+    protected boolean isInstalled(Feature feature) {
+        return featuresService.isInstalled(feature);
     }
 
     /*

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/feature/FeaturesPage.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/feature/FeaturesPage.java?rev=1160621&r1=1160620&r2=1160621&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/feature/FeaturesPage.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/feature/FeaturesPage.java Tue Aug 23 11:02:45 2011
@@ -1,23 +1,22 @@
 package org.apache.karaf.webconsole.karaf.internal.feature;
 
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.karaf.features.Feature;
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.features.Repository;
 import org.apache.karaf.webconsole.core.BasePage;
+import org.apache.karaf.webconsole.karaf.internal.FeaturesProvider;
 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.IColumn;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.markup.html.CSSPackageResource;
-import org.apache.wicket.markup.html.form.Form;
+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;
@@ -35,25 +34,14 @@ public class FeaturesPage extends BasePa
     @PaxWicketBean(name = "featuresService")
     private FeaturesService featuresService;
 
+    private Map<String, String> feature2repo = new HashMap<String, String>();
+
     public FeaturesPage() throws Exception {
         add(CSSPackageResource.getHeaderContribution(FeaturesPage.class, "features.css"));
 
-        // Create a form for external Submit link
-        Form<?> form = new Form("form");
-
-        Repository[] repositories = featuresService.listRepositories();
-        Feature[] features;
-        List<ExtendedFeature> model = new ArrayList<ExtendedFeature>();
-
-        for (Repository r : repositories) {
-            features = r.getFeatures();
-            for (Feature f : features) {
-                ExtendedFeature.State state =
-                        featuresService.isInstalled(f) ? ExtendedFeature.State.INSTALLED : ExtendedFeature.State.UNINSTALLED;
-                ExtendedFeature extendedFeature = new ExtendedFeature(state, r.getName(), f);
-
-                // add extended feature to Wicket model
-                model.add(extendedFeature);
+        for (Repository repository : featuresService.listRepositories()) {
+            for (Feature feature : repository.getFeatures()) {
+                feature2repo.put(feature.getId(), repository.getName());
             }
         }
 
@@ -64,61 +52,27 @@ public class FeaturesPage extends BasePa
         IModel repository = Model.of("repository");
         IModel description = Model.of("description");
 
-        List<IColumn<ExtendedFeature>> columns = new ArrayList<IColumn<ExtendedFeature>>();
-        columns.add(new PropertyColumn<ExtendedFeature>(new StringResourceModel("table.version", this, version), "version", "version"));
-        columns.add(new PropertyColumn<ExtendedFeature>(new StringResourceModel("table.name", this, state), "name", "name"));
-        columns.add(new PropertyColumn<ExtendedFeature>(new StringResourceModel("table.repository", this, repository), "repository", "repository"));
-        columns.add(new PropertyColumn<ExtendedFeature>(new StringResourceModel("table.description", this, description), "description", "description"));
-        columns.add(new PropertyColumn<ExtendedFeature>(new StringResourceModel("table.state", this, state), "state", "state"));
-        columns.add(new AbstractColumn<ExtendedFeature>(new ResourceModel("table.actions")) {
-            public void populateItem(Item<ICellPopulator<ExtendedFeature>> cellItem, String componentId, IModel<ExtendedFeature> model) {
+        List<IColumn<Feature>> columns = new ArrayList<IColumn<Feature>>();
+        columns.add(new PropertyColumn<Feature>(new StringResourceModel("table.version", this, version), "version", "version"));
+        columns.add(new PropertyColumn<Feature>(new StringResourceModel("table.name", this, state), "name", "name"));
+        columns.add(new AbstractColumn<Feature>(new StringResourceModel("table.repository", this, repository), "repository") {
+            public void populateItem(Item<ICellPopulator<Feature>> cellItem, String componentId, IModel<Feature> rowModel) {
+                cellItem.add(new Label(componentId, feature2repo.get(rowModel.getObject().getId())));
+            }
+        });
+        columns.add(new PropertyColumn<Feature>(new StringResourceModel("table.description", this, description), "description", "description"));
+        columns.add(new AbstractColumn<Feature>(new StringResourceModel("table.state", this, state), "state") {
+            public void populateItem(Item<ICellPopulator<Feature>> cellItem, String componentId, IModel<Feature> rowModel) {
+                cellItem.add(new Label(componentId, featuresService.isInstalled(rowModel.getObject()) ? "Installed" : "Uninstalled"));
+            }
+        });
+        columns.add(new AbstractColumn<Feature>(new ResourceModel("table.actions")) {
+            public void populateItem(Item<ICellPopulator<Feature>> cellItem, String componentId, IModel<Feature> model) {
                cellItem.add(new FeaturesActionsPanel(componentId, model));
             }
         });
 
-        add(new DefaultDataTable<ExtendedFeature>("features", columns, new FeaturesProvider(model), 20));
-
-    }
-
-
-    static class FeaturesProvider extends SortableDataProvider<ExtendedFeature> {
-
-        List<ExtendedFeature> model;
-
-        public FeaturesProvider(List model) {
-            this.model = model;
-            setSort("name", true);
-        }
-
-        public Iterator<? extends ExtendedFeature> iterator(int first, int count) {
-            List<ExtendedFeature> data = new ArrayList<ExtendedFeature>(model);
-            Collections.sort(data, new Comparator<ExtendedFeature>() {
-
-                public int compare(ExtendedFeature o1, ExtendedFeature o2) {
-                    int dir = getSort().isAscending() ? 1 : -1;
-
-                    if ("name".equals(getSort().getProperty())) {
-                        return dir * (o1.getName().compareTo(o2.getName()));
-                    } else if ("repository".equals(getSort().getProperty())) {
-                        return dir * (o1.getRepository().compareTo(o2.getRepository()));
-                    } else if ("state".equals(getSort().getProperty())) {
-                        return dir * (o1.getState().compareTo(o2.getState()));
-                    } else {
-                        return dir * (o1.getName().compareTo(o2.getName()));
-                    }
-                }
-            });
-            return data.subList(first, Math.min(first + count, data.size()))
-                    .iterator();
-        }
-
-        public int size() {
-            return model.size();
-        }
-
-        public IModel<ExtendedFeature> model(ExtendedFeature object) {
-            return Model.of(object);
-        }
+        add(new DefaultDataTable<Feature>("features", columns, new FeaturesProvider(featuresService), 20));
 
     }
 

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/model/RepositoryModel.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/model/RepositoryModel.java?rev=1160621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/model/RepositoryModel.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/model/RepositoryModel.java Tue Aug 23 11:02:45 2011
@@ -0,0 +1,31 @@
+package org.apache.karaf.webconsole.karaf.internal.model;
+
+import java.net.URI;
+
+import org.apache.karaf.features.FeaturesService;
+import org.apache.karaf.features.Repository;
+import org.apache.wicket.model.LoadableDetachableModel;
+
+public class RepositoryModel extends LoadableDetachableModel<Repository> {
+
+    private final FeaturesService service;
+    private URI uri;
+
+    public RepositoryModel(FeaturesService service, Repository object) {
+        this.service = service;
+        this.uri = object.getURI();
+    }
+
+    @Override
+    protected Repository load() {
+        Repository[] repositories = service.listRepositories();
+        for (Repository repo : repositories) {
+            if (uri.equals(repo.getURI())) {
+                return repo;
+            }
+        }
+
+        throw new RepositoryNotFoundException(uri);
+    }
+
+}

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/model/RepositoryNotFoundException.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/model/RepositoryNotFoundException.java?rev=1160621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/model/RepositoryNotFoundException.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/model/RepositoryNotFoundException.java Tue Aug 23 11:02:45 2011
@@ -0,0 +1,11 @@
+package org.apache.karaf.webconsole.karaf.internal.model;
+
+import java.net.URI;
+
+public class RepositoryNotFoundException extends RuntimeException {
+
+    public RepositoryNotFoundException(URI uri) {
+        super(uri.toString());
+    }
+
+}

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/repository/RepositoriesPage.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/repository/RepositoriesPage.java?rev=1160621&r1=1160620&r2=1160621&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/repository/RepositoriesPage.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/karaf/src/main/java/org/apache/karaf/webconsole/karaf/internal/repository/RepositoriesPage.java Tue Aug 23 11:02:45 2011
@@ -1,105 +1,31 @@
 package org.apache.karaf.webconsole.karaf.internal.repository;
 
-import org.apache.karaf.features.Feature;
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.features.Repository;
 import org.apache.karaf.webconsole.core.BasePage;
+import org.apache.karaf.webconsole.karaf.internal.RepositoriesProvider;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.DefaultDataTable;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
-import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.ops4j.pax.wicket.api.PaxWicketBean;
 import org.ops4j.pax.wicket.api.PaxWicketMountPoint;
 
-import java.io.Serializable;
-import java.net.URI;
-import java.util.*;
-
 @PaxWicketMountPoint(mountPoint = "/karaf/repositories")
 public class RepositoriesPage extends BasePage {
 
-	@PaxWicketBean(name = "featuresService")
-	private FeaturesService featuresService;
-
-	public RepositoriesPage() {
-		List<ExtendedRepository> repos = new LinkedList<ExtendedRepository>();
-		for (Repository repo : featuresService.listRepositories()) {
-			repos.add(new ExtendedRepository(repo));
-		}
-
-		IColumn[] columns = new IColumn[] {
-			new PropertyColumn<Repository>(Model.of("name"), "name", "name"),
-			new PropertyColumn<Repository>(Model.of("URI"), "URI", "URI"),
-			new PropertyColumn<Repository>(Model.of("valid"), "valid", "valid"),
-		};
-
-        add(new DefaultDataTable<ExtendedRepository>("repositories", columns, new RepositoriesProvider(repos), 20));
-	}
-
-    static class RepositoriesProvider extends SortableDataProvider<ExtendedRepository> {
-
-       List<ExtendedRepository> model;
-
-       public RepositoriesProvider(List model) {
-           this.model = model;
-           setSort("name", true);
-       }
-
-		public Iterator<? extends ExtendedRepository> iterator(int first, int count) {
-			List<ExtendedRepository> data = new ArrayList<ExtendedRepository>(model);
-			Collections.sort(data, new Comparator<ExtendedRepository>() {
-
-                public int compare(ExtendedRepository o1, ExtendedRepository o2) {
-                    int dir = getSort().isAscending() ? 1 : -1;
-
-                    if ("name".equals(getSort().getProperty())) {
-                        return dir * (o1.getName().compareTo(o2.getName()));
-                    } else {
-                        return dir * (o1.getName().compareTo(o2.getName()));
-                    }
-                }
-            });
-			return data.subList(first, Math.min(first + count, data.size()))
-					.iterator();
-		}
-
-		public int size() {
-			return model.size();
-		}
-
-        public IModel<ExtendedRepository> model(ExtendedRepository object) {
-            return Model.of(object);
-        }
-    }
-
-	class ExtendedRepository implements Repository, Serializable {
-
-		private final Repository repository;
+    @PaxWicketBean(name = "featuresService")
+    private FeaturesService featuresService;
 
-		public ExtendedRepository(Repository r) {
-			this.repository = r;
-		}
+    public RepositoriesPage() {
+        IColumn[] columns = new IColumn[] {
+            new PropertyColumn<Repository>(Model.of("name"), "name", "name"),
+            new PropertyColumn<Repository>(Model.of("URI"), "URI", "URI"),
+            new PropertyColumn<Repository>(Model.of("valid"), "valid", "valid")
+        };
 
-		public String getName() {
-			return repository.getName();
-		}
-
-		public URI getURI() {
-			return repository.getURI();
-		}
-
-		public URI[] getRepositories() throws Exception {
-			return repository.getRepositories();
-		}
+        add(new DefaultDataTable<Repository>("repositories", columns, new RepositoriesProvider(featuresService), 20));
+    }
 
-		public Feature[] getFeatures() throws Exception {
-			return repository.getFeatures();
-		}
 
-		public boolean isValid() {
-			return repository.isValid();
-		}
-    }
 }