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();
- }
- }
}