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/12/14 23:36:55 UTC
svn commit: r1214513 - in /karaf/webconsole/trunk/osgi/src/main:
java/org/apache/karaf/webconsole/osgi/internal/event/
java/org/apache/karaf/webconsole/osgi/internal/event/model/
resources/org/apache/karaf/webconsole/osgi/internal/event/
Author: ldywicki
Date: Wed Dec 14 22:36:54 2011
New Revision: 1214513
URL: http://svn.apache.org/viewvc?rev=1214513&view=rev
Log:
Added basic page which shows list of topics which have at least one consumer attached
Signed-off-by: Lukasz Dywicki <lu...@code-house.org>
Added:
karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/model/
karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/model/EventTopicInfo.java
karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/model/EventTopicsProvider.java
Modified:
karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/EventsPage.java
karaf/webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/event/EventsPage.html
Modified: karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/EventsPage.java
URL: http://svn.apache.org/viewvc/karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/EventsPage.java?rev=1214513&r1=1214512&r2=1214513&view=diff
==============================================================================
--- karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/EventsPage.java (original)
+++ karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/EventsPage.java Wed Dec 14 22:36:54 2011
@@ -16,10 +16,28 @@
*/
package org.apache.karaf.webconsole.osgi.internal.event;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.karaf.webconsole.core.table.OrdinalColumn;
+import org.apache.karaf.webconsole.core.table.PropertyColumnExt;
import org.apache.karaf.webconsole.osgi.internal.OsgiPage;
+import org.apache.karaf.webconsole.osgi.internal.event.model.EventTopicInfo;
+import org.apache.karaf.webconsole.osgi.internal.event.model.EventTopicsProvider;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.DefaultDataTable;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.ops4j.pax.wicket.api.PaxWicketMountPoint;
@PaxWicketMountPoint(mountPoint = "/osgi/event")
public class EventsPage extends OsgiPage {
+ public EventsPage() {
+ List<IColumn<EventTopicInfo>> columns = new ArrayList<IColumn<EventTopicInfo>>();
+ columns.add(new OrdinalColumn<EventTopicInfo>());
+ columns.add(new PropertyColumnExt<EventTopicInfo>("Topic", "topic"));
+ columns.add(new PropertyColumnExt<EventTopicInfo>("Number of consumers", "consumers"));
+
+ add(new DefaultDataTable<EventTopicInfo>("topics", columns, new EventTopicsProvider(context), 100));
+ }
+
}
Added: karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/model/EventTopicInfo.java
URL: http://svn.apache.org/viewvc/karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/model/EventTopicInfo.java?rev=1214513&view=auto
==============================================================================
--- karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/model/EventTopicInfo.java (added)
+++ karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/model/EventTopicInfo.java Wed Dec 14 22:36:54 2011
@@ -0,0 +1,26 @@
+package org.apache.karaf.webconsole.osgi.internal.event.model;
+
+import java.io.Serializable;
+
+public class EventTopicInfo implements Serializable {
+
+ private String topic;
+ private int consumers;
+
+ public EventTopicInfo(String topic, int consumers) {
+ this.topic = topic;
+ this.consumers = consumers;
+ }
+
+ public String getTopic() {
+ return topic;
+ }
+
+ public int getConsumers() {
+ return consumers;
+ }
+
+ public void addConsumer() {
+ consumers++;
+ }
+}
Added: karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/model/EventTopicsProvider.java
URL: http://svn.apache.org/viewvc/karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/model/EventTopicsProvider.java?rev=1214513&view=auto
==============================================================================
--- karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/model/EventTopicsProvider.java (added)
+++ karaf/webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/event/model/EventTopicsProvider.java Wed Dec 14 22:36:54 2011
@@ -0,0 +1,63 @@
+package org.apache.karaf.webconsole.osgi.internal.event.model;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.event.EventConstants;
+import org.osgi.service.event.EventHandler;
+
+public class EventTopicsProvider extends SortableDataProvider<EventTopicInfo> {
+
+ private Map<String, EventTopicInfo> topics = new HashMap<String, EventTopicInfo>();
+
+ public EventTopicsProvider(BundleContext context) {
+ try {
+ ServiceReference[] references = context.getAllServiceReferences(EventHandler.class.getName(), null);
+ if (references == null) {
+ return;
+ }
+ for (ServiceReference reference : references) {
+ Object topics = reference.getProperty(EventConstants.EVENT_TOPIC);
+ if ("*".equals(topics)) {
+ // do not track all listeners
+ continue;
+ } else if (topics instanceof String[]) {
+ for (String topic : (String[]) topics) {
+ handleTopic(topic);
+ }
+ } else if (topics instanceof String) { // then String
+ handleTopic((String) topics);
+ }
+ }
+ } catch (InvalidSyntaxException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void handleTopic(String topic) {
+ if (!topics.containsKey(topic)) {
+ topics.put(topic, new EventTopicInfo(topic, 0)); // it will be increased in next line
+ }
+ topics.get(topic).addConsumer();
+ }
+
+ public Iterator<? extends EventTopicInfo> iterator(int first, int count) {
+ return topics.values().iterator();
+ }
+
+ public int size() {
+ return topics.size();
+ }
+
+ public IModel<EventTopicInfo> model(EventTopicInfo object) {
+ return Model.of(object);
+ }
+
+}
Modified: karaf/webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/event/EventsPage.html
URL: http://svn.apache.org/viewvc/karaf/webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/event/EventsPage.html?rev=1214513&r1=1214512&r2=1214513&view=diff
==============================================================================
--- karaf/webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/event/EventsPage.html (original)
+++ karaf/webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/event/EventsPage.html Wed Dec 14 22:36:54 2011
@@ -25,10 +25,7 @@
<wicket:extend>
<h1>Events</h1>
- <p>
- Not supported yet.
- </p>
-
+ <table wicket:id="topics" />
</wicket:extend>
</body>
</html>