Search in sources :

Example 1 with KeyAlreadyExistsException

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

the class PackagesMBeanImpl method getImports.

@Override
public TabularData getImports() {
    try {
        String[] names = new String[] { "PackageName", "Filter", "Optional", "ID", "Bundle Name", "Resolvable" };
        CompositeType bundleType = new CompositeType("PackageImports", "Imported packages", names, names, new OpenType[] { SimpleType.STRING, SimpleType.STRING, SimpleType.BOOLEAN, SimpleType.LONG, SimpleType.STRING, SimpleType.BOOLEAN });
        TabularType tableType = new TabularType("PackageImports", "Imported packages", bundleType, new String[] { "Filter", "ID" });
        TabularData table = new TabularDataSupport(tableType);
        List<PackageRequirement> imports = packageService.getImports();
        for (PackageRequirement req : imports) {
            Object[] data = new Object[] { req.getPackageName(), req.getFilter(), req.isOptional(), req.getBundle().getBundleId(), req.getBundle().getSymbolicName(), req.isResolveable() };
            CompositeData comp = new CompositeDataSupport(bundleType, names, data);
            try {
                table.put(comp);
            } catch (KeyAlreadyExistsException e) {
                throw new RuntimeException("Id: " + req.getBundle().getBundleId() + ", filter: " + req.getFilter(), e);
            }
        }
        return table;
    } catch (RuntimeException e) {
        // To avoid the exception gets swallowed by jmx
        LOGGER.error(e.getMessage(), e);
        throw e;
    } catch (OpenDataException e) {
        LOGGER.error(e.getMessage(), e);
        throw new RuntimeException(e.getMessage(), e);
    }
}
Also used : PackageRequirement(org.apache.karaf.packages.core.PackageRequirement) TabularType(javax.management.openmbean.TabularType) CompositeData(javax.management.openmbean.CompositeData) CompositeDataSupport(javax.management.openmbean.CompositeDataSupport) KeyAlreadyExistsException(javax.management.openmbean.KeyAlreadyExistsException) TabularData(javax.management.openmbean.TabularData) OpenDataException(javax.management.openmbean.OpenDataException) TabularDataSupport(javax.management.openmbean.TabularDataSupport) CompositeType(javax.management.openmbean.CompositeType)

Example 2 with KeyAlreadyExistsException

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

the class JMXSecurityMBeanImpl method canInvoke.

public TabularData canInvoke(Map<String, List<String>> bulkQuery) throws Exception {
    TabularData table = new TabularDataSupport(CAN_INVOKE_TABULAR_TYPE);
    BulkRequestContext context = BulkRequestContext.newContext(guard.getConfigAdmin());
    for (Map.Entry<String, List<String>> entry : bulkQuery.entrySet()) {
        String objectName = entry.getKey();
        List<String> methods = entry.getValue();
        if (methods.size() == 0) {
            boolean res = canInvoke(context, objectName);
            CompositeData data = new CompositeDataSupport(CAN_INVOKE_RESULT_ROW_TYPE, CAN_INVOKE_RESULT_COLUMNS, new Object[] { objectName, "", res });
            table.put(data);
        } else {
            for (String method : methods) {
                List<String> argTypes = new ArrayList<>();
                String name = parseMethodName(method, argTypes);
                boolean res;
                if (name.equals(method)) {
                    res = canInvoke(context, objectName, name);
                } else {
                    res = canInvoke(context, objectName, name, argTypes.toArray(new String[] {}));
                }
                CompositeData data = new CompositeDataSupport(CAN_INVOKE_RESULT_ROW_TYPE, CAN_INVOKE_RESULT_COLUMNS, new Object[] { objectName, method, res });
                try {
                    table.put(data);
                } catch (KeyAlreadyExistsException e) {
                    // KeyAlreadyExistsException can happen only when methods are not empty
                    LOG.warn("{} (objectName = \"{}\", method = \"{}\")", e, objectName, method);
                }
            }
        }
    }
    return table;
}
Also used : CompositeData(javax.management.openmbean.CompositeData) CompositeDataSupport(javax.management.openmbean.CompositeDataSupport) ArrayList(java.util.ArrayList) KeyAlreadyExistsException(javax.management.openmbean.KeyAlreadyExistsException) TabularData(javax.management.openmbean.TabularData) TabularDataSupport(javax.management.openmbean.TabularDataSupport) ArrayList(java.util.ArrayList) List(java.util.List) Map(java.util.Map)

Aggregations

CompositeData (javax.management.openmbean.CompositeData)2 CompositeDataSupport (javax.management.openmbean.CompositeDataSupport)2 KeyAlreadyExistsException (javax.management.openmbean.KeyAlreadyExistsException)2 TabularData (javax.management.openmbean.TabularData)2 TabularDataSupport (javax.management.openmbean.TabularDataSupport)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Map (java.util.Map)1 CompositeType (javax.management.openmbean.CompositeType)1 OpenDataException (javax.management.openmbean.OpenDataException)1 TabularType (javax.management.openmbean.TabularType)1 PackageRequirement (org.apache.karaf.packages.core.PackageRequirement)1