Search in sources :

Example 36 with TabularDataSupport

use of javax.management.openmbean.TabularDataSupport in project karaf by apache.

the class JMXSecurityTest method testOSGiConfigAdminMBean.

private void testOSGiConfigAdminMBean(MBeanServerConnection connection, ObjectName mbean, String pidPrefix, boolean shouldSucceed, boolean isAdmin) throws Exception {
    String infix = "." + System.currentTimeMillis();
    String suffix = infix + "_" + counter.incrementAndGet();
    String pid = pidPrefix + suffix;
    CompositeType ct = new CompositeType("PROPERTY", "X", new String[] { "Key", "Value", "Type" }, new String[] { "X", "X", "X" }, new OpenType<?>[] { SimpleType.STRING, SimpleType.STRING, SimpleType.STRING });
    TabularType tt = new TabularType("PROPERTIES", "X", ct, new String[] { "Key" });
    TabularDataSupport tds = new TabularDataSupport(tt);
    Map<String, Object> data = new HashMap<>();
    data.put("Key", "foo");
    data.put("Value", "bar");
    data.put("Type", "String");
    CompositeDataSupport cds = new CompositeDataSupport(ct, data);
    tds.put(cds);
    assertJmxInvoke(shouldSucceed, connection, mbean, "update", new Object[] { pid, tds }, new String[] { String.class.getName(), TabularData.class.getName() });
    TabularData td = (TabularData) connection.invoke(mbean, "getProperties", new Object[] { pid }, new String[] { String.class.getName() });
    if (shouldSucceed) {
        assertEquals("bar", td.get(new Object[] { "foo" }).get("Value"));
    }
    String[][] configs = (String[][]) connection.invoke(mbean, "getConfigurations", new Object[] { "(service.pid=" + pid + ")" }, new String[] { String.class.getName() });
    if (shouldSucceed) {
        assertEquals(1, configs.length);
        assertEquals(pid, configs[0][0]);
    }
    assertJmxInvoke(shouldSucceed, connection, mbean, "delete", new Object[] { pid }, new String[] { String.class.getName() });
    TabularDataSupport tds2 = new TabularDataSupport(tt);
    Map<String, Object> data2 = new HashMap<>();
    data2.put("Key", "a.b.c");
    data2.put("Value", "d.e.f");
    data2.put("Type", "String");
    CompositeDataSupport cds2 = new CompositeDataSupport(ct, data2);
    tds2.put(cds2);
    String suffix2 = infix + "_" + counter.incrementAndGet();
    String pid2 = pidPrefix + suffix2;
    String location2 = "mylocation" + System.currentTimeMillis();
    assertJmxInvoke(shouldSucceed, connection, mbean, "updateForLocation", new Object[] { pid2, location2, tds2 }, new String[] { String.class.getName(), String.class.getName(), TabularData.class.getName() });
    TabularData td2 = (TabularData) connection.invoke(mbean, "getPropertiesForLocation", new Object[] { pid2, location2 }, new String[] { String.class.getName(), String.class.getName() });
    if (shouldSucceed) {
        assertEquals("d.e.f", td2.get(new Object[] { "a.b.c" }).get("Value"));
    }
    assertJmxInvoke(shouldSucceed, connection, mbean, "deleteForLocation", new Object[] { pid2, location2 }, new String[] { String.class.getName(), String.class.getName() });
    if (isAdmin) {
        String suffix3 = infix + "_" + counter.incrementAndGet();
        String pid3 = pidPrefix + suffix3;
        TabularDataSupport tds3 = new TabularDataSupport(tt);
        assertJmxInvoke(shouldSucceed, connection, mbean, "update", new Object[] { pid3, tds3 }, new String[] { String.class.getName(), TabularData.class.getName() });
        String[][] configs2 = (String[][]) connection.invoke(mbean, "getConfigurations", new Object[] { "(service.pid=" + pidPrefix + infix + "*)" }, new String[] { String.class.getName() });
        assertEquals(1, configs2.length);
        assertEquals(pid3, configs2[0][0]);
        String location3 = "my.other.location." + System.currentTimeMillis();
        assertJmxInvoke(shouldSucceed, connection, mbean, "setBundleLocation", new Object[] { pid3, location3 }, new String[] { String.class.getName(), String.class.getName() });
        String[][] configs3 = (String[][]) connection.invoke(mbean, "getConfigurations", new Object[] { "(service.pid=" + pidPrefix + infix + "*)" }, new String[] { String.class.getName() });
        assertEquals(1, configs3.length);
        assertEquals(pid3, configs3[0][0]);
        connection.invoke(mbean, "deleteConfigurations", new Object[] { "(service.pid=" + pid3 + ")" }, new String[] { String.class.getName() });
        assertEquals(0, ((String[][]) connection.invoke(mbean, "getConfigurations", new Object[] { "(service.pid=" + pidPrefix + infix + "*)" }, new String[] { String.class.getName() })).length);
    }
}
Also used : HashMap(java.util.HashMap) TabularDataSupport(javax.management.openmbean.TabularDataSupport) TabularType(javax.management.openmbean.TabularType) CompositeDataSupport(javax.management.openmbean.CompositeDataSupport) CompositeType(javax.management.openmbean.CompositeType) TabularData(javax.management.openmbean.TabularData)

Example 37 with TabularDataSupport

use of javax.management.openmbean.TabularDataSupport in project karaf by apache.

the class BundleTests method listViaMBean.

@Test
public void listViaMBean() throws Exception {
    MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
    ObjectName name = new ObjectName("org.apache.karaf:type=bundle,name=root");
    TabularDataSupport value = (TabularDataSupport) mbeanServer.getAttribute(name, "Bundles");
    assertTrue(value.size() > 0);
}
Also used : TabularDataSupport(javax.management.openmbean.TabularDataSupport) MBeanServer(javax.management.MBeanServer) ObjectName(javax.management.ObjectName) Test(org.junit.Test)

Example 38 with TabularDataSupport

use of javax.management.openmbean.TabularDataSupport in project karaf by apache.

the class ServicesMBeanImpl method getServices.

public TabularData getServices(long bundleId, boolean inUse) throws MBeanException {
    try {
        CompositeType serviceType = new CompositeType("Service", "OSGi Service", new String[] { "Interfaces", "Properties" }, new String[] { "Interfaces class name of the service", "Properties of the service" }, new OpenType[] { new ArrayType(1, SimpleType.STRING), new ArrayType(1, SimpleType.STRING) });
        TabularType tableType = new TabularType("Services", "Table of OSGi Services", serviceType, new String[] { "Interfaces", "Properties" });
        TabularData table = new TabularDataSupport(tableType);
        Bundle[] bundles;
        if (bundleId >= 0) {
            bundles = new Bundle[] { bundleContext.getBundle(bundleId) };
        } else {
            bundles = bundleContext.getBundles();
        }
        for (Bundle bundle : bundles) {
            try {
                ServiceReference[] serviceReferences;
                if (inUse) {
                    serviceReferences = bundle.getServicesInUse();
                } else {
                    serviceReferences = bundle.getRegisteredServices();
                }
                if (serviceReferences != null) {
                    for (ServiceReference reference : serviceReferences) {
                        String[] interfaces = (String[]) reference.getProperty("objectClass");
                        List<String> properties = new ArrayList<>();
                        for (String key : reference.getPropertyKeys()) {
                            properties.add(key + " = " + reference.getProperty(key));
                        }
                        CompositeData data = new CompositeDataSupport(serviceType, new String[] { "Interfaces", "Properties" }, new Object[] { interfaces, properties.toArray(new String[0]) });
                        table.put(data);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return table;
    } catch (Exception e) {
        throw new MBeanException(null, e.toString());
    }
}
Also used : Bundle(org.osgi.framework.Bundle) TabularType(javax.management.openmbean.TabularType) CompositeData(javax.management.openmbean.CompositeData) CompositeDataSupport(javax.management.openmbean.CompositeDataSupport) ArrayList(java.util.ArrayList) NotCompliantMBeanException(javax.management.NotCompliantMBeanException) MBeanException(javax.management.MBeanException) TabularData(javax.management.openmbean.TabularData) ServiceReference(org.osgi.framework.ServiceReference) ArrayType(javax.management.openmbean.ArrayType) TabularDataSupport(javax.management.openmbean.TabularDataSupport) NotCompliantMBeanException(javax.management.NotCompliantMBeanException) MBeanException(javax.management.MBeanException) CompositeType(javax.management.openmbean.CompositeType)

Example 39 with TabularDataSupport

use of javax.management.openmbean.TabularDataSupport in project karaf by apache.

the class JmxFeature method getConfigElementTable.

static TabularData getConfigElementTable(Properties props) throws OpenDataException {
    TabularDataSupport table = new TabularDataSupport(FEATURE_CONFIG_ELEMENT_TABLE);
    for (Object key : props.keySet()) {
        String[] itemNames = FeaturesServiceMBean.FEATURE_CONFIG_ELEMENT;
        Object[] itemValues = { key, props.getProperty((String) key) };
        CompositeData element = new CompositeDataSupport(FEATURE_CONFIG_ELEMENT, itemNames, itemValues);
        table.put(element);
    }
    return table;
}
Also used : TabularDataSupport(javax.management.openmbean.TabularDataSupport) CompositeData(javax.management.openmbean.CompositeData) CompositeDataSupport(javax.management.openmbean.CompositeDataSupport)

Example 40 with TabularDataSupport

use of javax.management.openmbean.TabularDataSupport in project karaf by apache.

the class JmxRepository method getFeatureIdentifierTable.

static TabularData getFeatureIdentifierTable(List<Feature> features) throws OpenDataException {
    TabularDataSupport table = new TabularDataSupport(JmxFeature.FEATURE_IDENTIFIER_TABLE);
    for (Feature feature : features) {
        String[] itemNames = new String[] { FeaturesServiceMBean.FEATURE_NAME, FeaturesServiceMBean.FEATURE_VERSION };
        Object[] itemValues = new Object[] { feature.getName(), feature.getVersion() };
        CompositeData ident = new CompositeDataSupport(JmxFeature.FEATURE_IDENTIFIER, itemNames, itemValues);
        table.put(ident);
    }
    return table;
}
Also used : TabularDataSupport(javax.management.openmbean.TabularDataSupport) CompositeData(javax.management.openmbean.CompositeData) CompositeDataSupport(javax.management.openmbean.CompositeDataSupport) Feature(org.apache.karaf.features.Feature)

Aggregations

TabularDataSupport (javax.management.openmbean.TabularDataSupport)103 TabularData (javax.management.openmbean.TabularData)67 CompositeDataSupport (javax.management.openmbean.CompositeDataSupport)60 CompositeData (javax.management.openmbean.CompositeData)51 CompositeType (javax.management.openmbean.CompositeType)50 TabularType (javax.management.openmbean.TabularType)36 Map (java.util.Map)27 OpenDataException (javax.management.openmbean.OpenDataException)24 HashMap (java.util.HashMap)11 Bundle (org.osgi.framework.Bundle)10 IOException (java.io.IOException)7 ObjectName (javax.management.ObjectName)7 OpenType (javax.management.openmbean.OpenType)7 EndpointUtilizationStatistics (org.apache.camel.spi.EndpointUtilizationStatistics)7 Test (org.junit.Test)6 ConcurrentMap (java.util.concurrent.ConcurrentMap)5 MBeanException (javax.management.MBeanException)5 NotCompliantMBeanException (javax.management.NotCompliantMBeanException)5 ArrayList (java.util.ArrayList)4 Dictionary (java.util.Dictionary)4