You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by da...@apache.org on 2011/10/28 17:05:11 UTC

svn commit: r1190387 - in /aries/trunk/sandbox/jmx-next/jmx-core/src/main/java/org/apache/aries/jmx: codec/BundleWiringData.java framework/BundleRevisionsState.java

Author: davidb
Date: Fri Oct 28 15:05:11 2011
New Revision: 1190387

URL: http://svn.apache.org/viewvc?rev=1190387&view=rev
Log:
Add more content to the result produced by getCurrentWiring

Modified:
    aries/trunk/sandbox/jmx-next/jmx-core/src/main/java/org/apache/aries/jmx/codec/BundleWiringData.java
    aries/trunk/sandbox/jmx-next/jmx-core/src/main/java/org/apache/aries/jmx/framework/BundleRevisionsState.java

Modified: aries/trunk/sandbox/jmx-next/jmx-core/src/main/java/org/apache/aries/jmx/codec/BundleWiringData.java
URL: http://svn.apache.org/viewvc/aries/trunk/sandbox/jmx-next/jmx-core/src/main/java/org/apache/aries/jmx/codec/BundleWiringData.java?rev=1190387&r1=1190386&r2=1190387&view=diff
==============================================================================
--- aries/trunk/sandbox/jmx-next/jmx-core/src/main/java/org/apache/aries/jmx/codec/BundleWiringData.java (original)
+++ aries/trunk/sandbox/jmx-next/jmx-core/src/main/java/org/apache/aries/jmx/codec/BundleWiringData.java Fri Oct 28 15:05:11 2011
@@ -23,16 +23,25 @@ import java.util.Map;
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.CompositeDataSupport;
 import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
 
+import org.osgi.framework.wiring.BundleCapability;
+import org.osgi.framework.wiring.BundleRequirement;
 import org.osgi.framework.wiring.BundleWire;
 import org.osgi.jmx.framework.BundleRevisionsStateMBean;
 
 public class BundleWiringData {
-
     private final long bundleId;
+    private final List<BundleCapability> capabilities;
+    private final String namespace;
+    private final List<BundleRequirement> requirements;
 
-    public BundleWiringData(long bundleId, List<BundleWire> requiredWires) {
+    public BundleWiringData(long bundleId, String namespace, List<BundleCapability> capabilities, List<BundleRequirement> requirements, List<BundleWire> requiredWires) {
         this.bundleId = bundleId;
+        this.namespace = namespace;
+        this.capabilities = capabilities;
+        this.requirements = requirements;
     }
 
     public CompositeData toCompositeData() {
@@ -41,13 +50,40 @@ public class BundleWiringData {
             items.put(BundleRevisionsStateMBean.BUNDLE_ID, bundleId);
             items.put(BundleRevisionsStateMBean.BUNDLE_REVISION_ID, null);
 
-            Map<String, Object> reqItems = new HashMap<String, Object>();
-            reqItems.put(BundleRevisionsStateMBean.ATTRIBUTES, null);
-            reqItems.put(BundleRevisionsStateMBean.DIRECTIVES, null);
-            reqItems.put(BundleRevisionsStateMBean.NAMESPACE, "org.foo.bar");
-            CompositeDataSupport requirements = new CompositeDataSupport(BundleRevisionsStateMBean.BUNDLE_REQUIREMENT_TYPE, reqItems);
 
-            items.put(BundleRevisionsStateMBean.REQUIREMENTS, new CompositeData [] {requirements});
+            CompositeData [] reqData = new CompositeData[requirements.size()];
+            for (int i=0; i < requirements.size(); i++) {
+                BundleRequirement requirement = requirements.get(i);
+                Map<String, Object> reqItems = new HashMap<String, Object>();
+
+                TabularData attributes = new TabularDataSupport(BundleRevisionsStateMBean.ATTRIBUTES_TYPE);
+                for (Map.Entry<String, Object> entry : requirement.getAttributes().entrySet()) {
+                    PropertyData<?> pd = PropertyData.newInstance(entry.getKey(), entry.getValue());
+                    attributes.put(pd.toCompositeData());
+                }
+                reqItems.put(BundleRevisionsStateMBean.ATTRIBUTES, attributes);
+
+                TabularData directives = new TabularDataSupport(BundleRevisionsStateMBean.DIRECTIVES_TYPE);
+                for (Map.Entry<String, String> entry : requirement.getDirectives().entrySet()) {
+                    CompositeData directive = new CompositeDataSupport(BundleRevisionsStateMBean.DIRECTIVE_TYPE,
+                        new String[] { BundleRevisionsStateMBean.KEY, BundleRevisionsStateMBean.VALUE },
+                        new Object[] { entry.getKey(), entry.getValue() });
+                    directives.put(directive);
+                }
+                reqItems.put(BundleRevisionsStateMBean.DIRECTIVES, directives);
+                reqItems.put(BundleRevisionsStateMBean.NAMESPACE, requirement.getNamespace());
+
+                CompositeData req = new CompositeDataSupport(BundleRevisionsStateMBean.BUNDLE_REQUIREMENT_TYPE, reqItems);
+                reqData[i] = req;
+            }
+
+//            CompositeDataSupport directive = new CompositeDataSupport(BundleRevisionsStateMBean.DIRECTIVE_TYPE, new String [] {"Key", "Value"}, new Object [] {"Foo", "Bar"});
+//            directives.put(directive);
+//            reqItems.put(BundleRevisionsStateMBean.DIRECTIVES, directives);
+//            reqItems.put(BundleRevisionsStateMBean.NAMESPACE, namespace);
+//            CompositeDataSupport requirements = new CompositeDataSupport(BundleRevisionsStateMBean.BUNDLE_REQUIREMENT_TYPE, reqItems);
+
+            items.put(BundleRevisionsStateMBean.REQUIREMENTS, reqData);
             items.put(BundleRevisionsStateMBean.CAPABILITIES, null);
             items.put(BundleRevisionsStateMBean.BUNDLE_WIRES_TYPE, null);
 

Modified: aries/trunk/sandbox/jmx-next/jmx-core/src/main/java/org/apache/aries/jmx/framework/BundleRevisionsState.java
URL: http://svn.apache.org/viewvc/aries/trunk/sandbox/jmx-next/jmx-core/src/main/java/org/apache/aries/jmx/framework/BundleRevisionsState.java?rev=1190387&r1=1190386&r2=1190387&view=diff
==============================================================================
--- aries/trunk/sandbox/jmx-next/jmx-core/src/main/java/org/apache/aries/jmx/framework/BundleRevisionsState.java (original)
+++ aries/trunk/sandbox/jmx-next/jmx-core/src/main/java/org/apache/aries/jmx/framework/BundleRevisionsState.java Fri Oct 28 15:05:11 2011
@@ -17,6 +17,7 @@
 package org.apache.aries.jmx.framework;
 
 import java.io.IOException;
+import java.util.List;
 
 import javax.management.openmbean.ArrayType;
 import javax.management.openmbean.CompositeData;
@@ -27,7 +28,11 @@ import org.apache.aries.jmx.codec.Bundle
 import org.apache.aries.jmx.util.FrameworkUtils;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.wiring.BundleCapability;
+import org.osgi.framework.wiring.BundleRequirement;
 import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.framework.wiring.BundleWire;
+import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.jmx.framework.BundleRevisionsStateMBean;
 
 public class BundleRevisionsState implements BundleRevisionsStateMBean {
@@ -62,9 +67,13 @@ public class BundleRevisionsState implem
     public CompositeData getCurrentWiring(long bundleId, String namespace) throws IOException {
         Bundle bundle = FrameworkUtils.resolveBundle(bundleContext, bundleId);
         BundleRevision currentRevision = bundle.adapt(BundleRevision.class);
+        BundleWiring wiring = currentRevision.getWiring();
+        List<BundleCapability> capabilities = wiring.getCapabilities(namespace);
+        List<BundleRequirement> requirements = wiring.getRequirements(namespace);
+        List<BundleWire> requiredWires = wiring.getRequiredWires(namespace);
 
         System.out.println("******** getCurrentWiring: " + bundle);
-        BundleWiringData data = new BundleWiringData(bundle.getBundleId());
+        BundleWiringData data = new BundleWiringData(bundle.getBundleId(), namespace, capabilities, requirements, requiredWires);
         CompositeData compositeData = data.toCompositeData();
         System.out.println("######## " + compositeData);
         return compositeData;