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/25 13:27:48 UTC
svn commit: r1161511 - in /karaf/sandbox/pieber/karaf-webconsole/trunk:
core/src/main/java/org/apache/karaf/webconsole/core/form/
core/src/main/java/org/apache/karaf/webconsole/core/table/
core/src/main/java/org/apache/karaf/webconsole/core/table/map/ ...
Author: ldywicki
Date: Thu Aug 25 11:27:47 2011
New Revision: 1161511
URL: http://svn.apache.org/viewvc?rev=1161511&view=rev
Log:
Add configuration edit posibility, first try
Added:
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/form/
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/form/LabelBorder.java
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/form/MapEditForm.java
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/OrdinalColumn.java
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/EntryModel.java
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/MapDataProvider.java
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/MapDataTable.java
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/util/
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/util/DictionaryUtils.java
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/form/
karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/form/LabelBorder.html
karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationFilterUtil.java
Removed:
karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/DictionaryDataProvider.java
karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/model/AbstractConfigurationModel.java
Modified:
karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationEditPage.java
karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationProvider.java
karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/model/ConfigurationModel.java
karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/model/ConfigurationsModel.java
karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/OSGI-INF/blueprint/osgi.xml
karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationEditPage.html
Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/form/LabelBorder.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/form/LabelBorder.java?rev=1161511&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/form/LabelBorder.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/form/LabelBorder.java Thu Aug 25 11:27:47 2011
@@ -0,0 +1,16 @@
+package org.apache.karaf.webconsole.core.form;
+
+import org.apache.wicket.markup.html.border.Border;
+import org.apache.wicket.model.IModel;
+
+public class LabelBorder extends Border {
+
+ public LabelBorder(String id, IModel<?> model) {
+ super(id, model);
+ }
+
+ public LabelBorder(String id) {
+ super(id);
+ }
+
+}
Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/form/MapEditForm.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/form/MapEditForm.java?rev=1161511&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/form/MapEditForm.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/form/MapEditForm.java Thu Aug 25 11:27:47 2011
@@ -0,0 +1,34 @@
+package org.apache.karaf.webconsole.core.form;
+
+import java.util.Map;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.repeater.RepeatingView;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+
+public abstract class MapEditForm<K, V> extends Form<Map<K, V>> {
+
+ public MapEditForm(String id, CompoundPropertyModel<Map<K, V>> model) {
+ super(id, model);
+
+ RepeatingView repeatingView = new RepeatingView("entries");
+
+ for (K key : model.getObject().keySet()) {
+ IModel<V> bind = model.bind("" + key);
+ repeatingView.add(populateItem(repeatingView.newChildId(), key, bind));
+ }
+ add(repeatingView);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected Component populateItem(String componentId, K key, IModel<V> value) {
+ LabelBorder border = new LabelBorder(componentId);
+ border.add(new Label("label", "" + key));
+ border.add(new TextField<V>("value", value, (Class<V>) value.getObject().getClass()));
+ return border;
+ }
+}
Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/OrdinalColumn.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/OrdinalColumn.java?rev=1161511&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/OrdinalColumn.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/OrdinalColumn.java Thu Aug 25 11:27:47 2011
@@ -0,0 +1,38 @@
+package org.apache.karaf.webconsole.core.table;
+
+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.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+/**
+ * Column with ordinal number.
+ */
+public class OrdinalColumn<T> extends AbstractColumn<T> {
+
+ transient int counter = 1;
+
+ public OrdinalColumn(String displayModel, String sortProperty) {
+ super(Model.of(displayModel), sortProperty);
+ }
+
+ public OrdinalColumn(String displayModel) {
+ super(Model.of(displayModel));
+ }
+
+ public OrdinalColumn() {
+ this("No.", "no");
+ }
+
+ public void populateItem(Item<ICellPopulator<T>> cellItem, String componentId, IModel<T> rowModel) {
+ cellItem.add(new Label(componentId, "" + counter++));
+ }
+
+ @Override
+ public void detach() {
+ super.detach();
+ counter = 1;
+ }
+}
Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/EntryModel.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/EntryModel.java?rev=1161511&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/EntryModel.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/EntryModel.java Thu Aug 25 11:27:47 2011
@@ -0,0 +1,27 @@
+package org.apache.karaf.webconsole.core.table.map;
+
+import java.util.Map.Entry;
+
+import org.apache.wicket.model.IModel;
+
+public class EntryModel<K, V> implements IModel<Entry<K, V>> {
+
+ private Entry<K, V> object;
+
+ public EntryModel(Entry<K, V> object) {
+ this.object = object;
+ }
+
+ public void detach() {
+ this.object = null;
+ }
+
+ public Entry<K, V> getObject() {
+ return object;
+ }
+
+ public void setObject(Entry<K, V> object) {
+ this.object = object;
+ }
+
+}
Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/MapDataProvider.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/MapDataProvider.java?rev=1161511&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/MapDataProvider.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/MapDataProvider.java Thu Aug 25 11:27:47 2011
@@ -0,0 +1,31 @@
+package org.apache.karaf.webconsole.core.table.map;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
+import org.apache.wicket.model.IModel;
+
+public class MapDataProvider<K, V> extends SortableDataProvider<Entry<K, V>> {
+
+ private final Map<K, V> map;
+
+ public MapDataProvider(Map<K, V> map) {
+ this.map = map;
+ }
+
+ public Iterator<? extends Entry<K, V>> iterator(int first, int count) {
+ return new ArrayList<Entry<K, V>>(map.entrySet()).subList(first, first + count).iterator();
+ }
+
+ public int size() {
+ return map.size();
+ }
+
+ public IModel<Entry<K, V>> model(Entry<K, V> object) {
+ return new EntryModel<K, V>(object);
+ }
+
+}
Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/MapDataTable.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/MapDataTable.java?rev=1161511&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/MapDataTable.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/table/map/MapDataTable.java Thu Aug 25 11:27:47 2011
@@ -0,0 +1,33 @@
+package org.apache.karaf.webconsole.core.table.map;
+
+import java.util.Arrays;
+import java.util.Map.Entry;
+
+import org.apache.karaf.webconsole.core.table.OrdinalColumn;
+import org.apache.karaf.webconsole.core.table.PropertyColumnExt;
+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.ISortableDataProvider;
+import org.apache.wicket.markup.repeater.data.IDataProvider;
+
+public class MapDataTable<K, V> extends DefaultDataTable<Entry<K, V>> {
+
+ public MapDataTable(String id, IColumn<Entry<K, V>>[] columns, ISortableDataProvider<Entry<K, V>> dataProvider, int rowsPerPage) {
+ super(id, Arrays.asList(columns), dataProvider, rowsPerPage);
+ }
+
+ public MapDataTable(String id, ISortableDataProvider<Entry<K, V>> dataProvider, int rowsPerPage) {
+ this(id, getDefaultColumns(dataProvider), dataProvider, rowsPerPage);
+ }
+
+ @SuppressWarnings("unchecked")
+ static <K,V> IColumn<Entry<K, V>>[] getDefaultColumns(IDataProvider<Entry<K, V>> provider) {
+ IColumn<Entry<K, V>>[] columns = new IColumn[] {
+ new OrdinalColumn<Entry<K, V>>(),
+ new PropertyColumnExt<Entry<K, V>>("Key", "key"),
+ new PropertyColumnExt<Entry<K, V>>("Value", "value")
+ };
+
+ return columns;
+ }
+}
Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/util/DictionaryUtils.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/util/DictionaryUtils.java?rev=1161511&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/util/DictionaryUtils.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/util/DictionaryUtils.java Thu Aug 25 11:27:47 2011
@@ -0,0 +1,49 @@
+package org.apache.karaf.webconsole.core.util;
+
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+/**
+ * Utility class to work with dictionaries.
+ */
+public abstract class DictionaryUtils {
+
+ private DictionaryUtils() {
+ System.out.println("How you did that?");
+ }
+
+ /**
+ * Create an map from given dictionary.
+ *
+ * @param <K> Type of the key.
+ * @param <V> Type of the value.
+ * @param dictionary Dictionary to be converted.
+ * @return Map with copy of elements from dictionary.
+ */
+ public static <K, V> Map<K, V> map(Dictionary<K, V> dictionary) {
+ HashMap<K, V> map = new HashMap<K, V>();
+
+ Enumeration<K> keys = dictionary.keys();
+ while (keys.hasMoreElements()) {
+ K key = keys.nextElement();
+ map.put(key, dictionary.get(key));
+ }
+
+ return map;
+ }
+
+ /**
+ * Create an dictionary from map.
+ *
+ * @param <K> Type of the key.
+ * @param <V> Type of the value.
+ * @param map Map to be converted.
+ * @return Dictionary with copy of elements from map.
+ */
+ public static <K, V> Dictionary<K, V> dictionary(Map<K, V> map) {
+ return new Hashtable<K, V>(map);
+ }
+}
Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/form/LabelBorder.html
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/form/LabelBorder.html?rev=1161511&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/form/LabelBorder.html (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/form/LabelBorder.html Thu Aug 25 11:27:47 2011
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Karaf wicket console</title>
+</head>
+<body>
+
+ <wicket:border>
+ <label class="form-item">
+ <span wicket:id="label">Label</span>
+ <wicket:body />
+ </label>
+ </wicket:border>
+
+</body>
+</html>
\ No newline at end of file
Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationEditPage.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationEditPage.java?rev=1161511&r1=1161510&r2=1161511&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationEditPage.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationEditPage.java Thu Aug 25 11:27:47 2011
@@ -1,28 +1,20 @@
package org.apache.karaf.webconsole.osgi.internal.configuration;
import java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.LinkedHashMap;
-import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
+import org.apache.karaf.webconsole.core.form.MapEditForm;
+import org.apache.karaf.webconsole.core.table.map.MapDataProvider;
+import org.apache.karaf.webconsole.core.table.map.MapDataTable;
+import org.apache.karaf.webconsole.core.util.DictionaryUtils;
import org.apache.karaf.webconsole.osgi.internal.OsgiPage;
import org.apache.karaf.webconsole.osgi.internal.configuration.model.ConfigurationModel;
import org.apache.wicket.PageParameters;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.Session;
import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Button;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.IFormSubmittingComponent;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.form.SubmitLink;
import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.util.ListModel;
import org.ops4j.pax.wicket.api.PaxWicketBean;
import org.ops4j.pax.wicket.api.PaxWicketMountPoint;
import org.osgi.service.cm.Configuration;
@@ -39,59 +31,32 @@ public class ConfigurationEditPage exten
pid = params.getString("pid");
add(new Label("pid", pid));
+ final Configuration configuration = new ConfigurationModel(pid, configurationAdmin).getObject();
- try {
- add(form(configurationAdmin.getConfiguration(pid)));
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- private Form form(Configuration configuration) {
- CompoundPropertyModel<Configuration> model = new CompoundPropertyModel<Configuration>(null);
- model.setChainedModel(new ConfigurationModel(pid, configurationAdmin));
+ @SuppressWarnings("unchecked")
+ Map<String, String> properties = DictionaryUtils.map(configuration.getProperties());
+ Map<String, String> system = ConfigurationFilterUtil.filter(properties);
+ CompoundPropertyModel<Map<String, String>> formModel = new CompoundPropertyModel<Map<String, String>>(properties);
- Form<Configuration> form = new Form<Configuration>("edit", model) {
+ MapEditForm<String, String> mapEditForm = new MapEditForm<String, String>("edit", formModel) {
@Override
- public void process(IFormSubmittingComponent submittingComponent) {
- System.out.println("--> " + getModelObject());
- }
- };
+ protected void onSubmit() {
+ Map<String, String> map = getModelObject();
- form.add(new TextField<String>("pid") {
- @Override
- public boolean isEnabled() {
- return false;
- }
- });
+ try {
+ configuration.update(DictionaryUtils.dictionary(map));
- Dictionary<String, Serializable> properties = configuration.getProperties();
- properties.get("service.pid");
- properties.get("service.factory");
-
- Map<String, Serializable> map = new LinkedHashMap<String, Serializable>();
- Enumeration<String> keys = properties.keys();
- while (keys.hasMoreElements()) {
- String key = keys.nextElement();
- map.put(key, properties.get(key));
- }
- List<Entry<String, Serializable>> list = new ArrayList<Entry<String, Serializable>>(map.entrySet());
-
- form.add(new ListView<Entry<String, Serializable>>("properties", new ListModel<Entry<String, Serializable>>(list)) {
- @Override
- protected void populateItem(ListItem<Entry<String, Serializable>> item) {
- item.add(new Label("key", item.getModelObject().getKey()));
- item.add(new TextField<String>("value", new Model(item.getModelObject().getValue())));
+ Session.get().info("Configuration " + pid + " updated.");
+ RequestCycle.get().setResponsePage(ConfigurationsPage.class);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
}
- @Override
- public boolean getReuseItems() {
- return true;
- }
- });
+ };
+ mapEditForm.add(new SubmitLink("submit"));
+ add(mapEditForm);
- form.add(new Button("submit"));
- return form;
+ add(new MapDataTable<String, String>("system", new MapDataProvider<String, String>(system), 5));
}
}
Added: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationFilterUtil.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationFilterUtil.java?rev=1161511&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationFilterUtil.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationFilterUtil.java Thu Aug 25 11:27:47 2011
@@ -0,0 +1,20 @@
+package org.apache.karaf.webconsole.osgi.internal.configuration;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Utility class which removes system properties from configuration dictionary.
+ */
+public abstract class ConfigurationFilterUtil {
+
+ public static <K extends Object, V> Map<String, V> filter(Map<K, V> map) {
+ Map<String, V> system = new HashMap<String, V>();
+ system.put("service.pid", map.remove("service.pid"));
+ system.put("service.factoryPid", map.remove("service.factoryPid"));
+ system.put("service.bundleLocation", map.remove("service.bundleLocation"));
+ system.put("felix.fileinstall.filename", map.remove("felix.fileinstall.filename"));
+
+ return system;
+ }
+}
Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationProvider.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationProvider.java?rev=1161511&r1=1161510&r2=1161511&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationProvider.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationProvider.java Thu Aug 25 11:27:47 2011
@@ -1,41 +1,35 @@
package org.apache.karaf.webconsole.osgi.internal.configuration;
-import java.io.IOException;
import java.util.Arrays;
import java.util.Iterator;
import org.apache.karaf.webconsole.osgi.internal.configuration.model.ConfigurationModel;
+import org.apache.karaf.webconsole.osgi.internal.configuration.model.ConfigurationNotFoundException;
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
-import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
-import org.osgi.framework.InvalidSyntaxException;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
public class ConfigurationProvider extends SortableDataProvider<Configuration> {
private Configuration[] configurations = new Configuration[0];
- private final ConfigurationAdmin configurationAdmin;
+ private ConfigurationAdmin configurationAdmin;
public ConfigurationProvider(ConfigurationAdmin configurationAdmin) {
this.configurationAdmin = configurationAdmin;
try {
this.configurations = configurationAdmin.listConfigurations(null);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InvalidSyntaxException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ } catch (Exception e) {
+ throw new ConfigurationNotFoundException(null, e);
}
}
- public Iterator<? extends Configuration> iterator(int arg0, int arg1) {
- return Arrays.asList(Arrays.copyOfRange(configurations, arg0, arg1)).iterator();
+ public Iterator<? extends Configuration> iterator(int from, int count) {
+ return Arrays.asList(Arrays.copyOfRange(configurations, from, count)).iterator();
}
- public IModel<Configuration> model(Configuration arg0) {
- return new ConfigurationModel(arg0.getPid(), configurationAdmin);
+ public IModel<Configuration> model(Configuration object) {
+ return new ConfigurationModel(object, configurationAdmin);
}
public int size() {
Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/model/ConfigurationModel.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/model/ConfigurationModel.java?rev=1161511&r1=1161510&r2=1161511&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/model/ConfigurationModel.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/model/ConfigurationModel.java Thu Aug 25 11:27:47 2011
@@ -2,18 +2,26 @@ package org.apache.karaf.webconsole.osgi
import java.io.IOException;
+import org.apache.wicket.model.LoadableDetachableModel;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
-public class ConfigurationModel extends AbstractConfigurationModel<Configuration> {
+public class ConfigurationModel extends LoadableDetachableModel<Configuration> {
private String pid;
+ private ConfigurationAdmin configurationAdmin;
public ConfigurationModel(String pid, ConfigurationAdmin configurationAdmin) {
- super(configurationAdmin);
+ this.configurationAdmin = configurationAdmin;
this.pid = pid;
}
+ public ConfigurationModel(Configuration configuration, ConfigurationAdmin configurationAdmin) {
+ super(configuration);
+ this.configurationAdmin = configurationAdmin;
+ this.pid = configuration.getPid();
+ }
+
@Override
protected Configuration load() {
try {
Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/model/ConfigurationsModel.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/model/ConfigurationsModel.java?rev=1161511&r1=1161510&r2=1161511&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/model/ConfigurationsModel.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/configuration/model/ConfigurationsModel.java Thu Aug 25 11:27:47 2011
@@ -1,12 +1,15 @@
package org.apache.karaf.webconsole.osgi.internal.configuration.model;
+import org.apache.wicket.model.LoadableDetachableModel;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
-public class ConfigurationsModel extends AbstractConfigurationModel<Configuration[]> {
+public class ConfigurationsModel extends LoadableDetachableModel<Configuration[]> {
+
+ private final ConfigurationAdmin configurationAdmin;
public ConfigurationsModel(ConfigurationAdmin configurationAdmin) {
- super(configurationAdmin);
+ this.configurationAdmin = configurationAdmin;
}
@Override
Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/OSGI-INF/blueprint/osgi.xml
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/OSGI-INF/blueprint/osgi.xml?rev=1161511&r1=1161510&r2=1161511&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/OSGI-INF/blueprint/osgi.xml (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/OSGI-INF/blueprint/osgi.xml Thu Aug 25 11:27:47 2011
@@ -33,6 +33,7 @@
<reference id="configurationAdmin" interface="org.osgi.service.cm.ConfigurationAdmin" availability="optional" />
<reference id="startLevel" interface="org.osgi.service.startlevel.StartLevel" />
+ <reference id="metaTypeService" interface="org.osgi.service.metatype.MetaTypeService" />
<reference-list id="columnProviders" interface="org.apache.karaf.webconsole.osgi.bundle.IColumnProvider" availability="optional" />
<reference-list id="actionProviders" interface="org.apache.karaf.webconsole.osgi.bundle.IActionProvider" availability="optional" />
Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationEditPage.html
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationEditPage.html?rev=1161511&r1=1161510&r2=1161511&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationEditPage.html (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/configuration/ConfigurationEditPage.html Thu Aug 25 11:27:47 2011
@@ -10,21 +10,19 @@
<h1>Edit <span wicket:id="pid">org.apache.felix.filemount</span></h1>
<form wicket:id="edit">
- <input type="text" wicket:id="pid" style="width: 100%" />
-
- <ul style="list-style-type: none;">
- <li wicket:id="properties">
- <div class="grid_9">
- <div class="grid_9">
- <span wicket:id="key" style="width: 100%">key</span>
- </div>
- <input type="text" wicket:id="value" style="width: 100%" />
- </div>
+ <ul>
+ <li wicket:id="entries">
+ <input type="text" wicket:id="value" />
</li>
</ul>
-
<input type="submit" wicket:id="submit" value="Confirm" />
</form>
+
+ <p>
+ System properties (not editable)
+ </p>
+ <table wicket:id="system" class="dataview" />
+
</wicket:extend>
</body>
</html>