X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fapi%2Fjmx%2FObjectNameUtil.java;h=c23a0cbf69850f364113a93579e79d9dc952ae5c;hb=refs%2Fchanges%2F99%2F11999%2F1;hp=3baa1039e0bd1c868c28b6d8d5f7ea35c8da3dc7;hpb=7c8a9930f530bfff1da40a4165f7699b23584e17;p=controller.git diff --git a/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/jmx/ObjectNameUtil.java b/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/jmx/ObjectNameUtil.java index 3baa1039e0..c23a0cbf69 100644 --- a/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/jmx/ObjectNameUtil.java +++ b/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/jmx/ObjectNameUtil.java @@ -11,6 +11,7 @@ import org.opendaylight.controller.config.api.ModuleIdentifier; import org.opendaylight.controller.config.api.jmx.constants.ConfigRegistryConstants; import javax.annotation.concurrent.ThreadSafe; +import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import java.util.Arrays; import java.util.HashMap; @@ -28,13 +29,14 @@ import java.util.Set; */ @ThreadSafe public class ObjectNameUtil { + private ObjectNameUtil() { + } public static final String ON_DOMAIN = ConfigRegistryConstants.ON_DOMAIN; public static final String MODULE_FACTORY_NAME_KEY = "moduleFactoryName"; public static final String SERVICE_QNAME_KEY = "serviceQName"; public static final String INSTANCE_NAME_KEY = "instanceName"; public static final String TYPE_KEY = ConfigRegistryConstants.TYPE_KEY; - public static final String TYPE_CONFIG_REGISTRY = ConfigRegistryConstants.TYPE_CONFIG_REGISTRY; public static final String TYPE_CONFIG_TRANSACTION = "ConfigTransaction"; public static final String TYPE_MODULE = "Module"; public static final String TYPE_SERVICE_REFERENCE = "ServiceReference"; @@ -42,12 +44,13 @@ public class ObjectNameUtil { public static final String TRANSACTION_NAME_KEY = "TransactionName"; public static final String REF_NAME_KEY = "RefName"; private static final String REPLACED_QUOTATION_MARK = "\\?"; + public static final String ON_WILDCARD = "*"; public static ObjectName createON(String on) { try { return new ObjectName(on); - } catch (Exception e) { - throw new RuntimeException(e); + } catch (MalformedObjectNameException e) { + throw new IllegalArgumentException(e); } } @@ -63,8 +66,8 @@ public class ObjectNameUtil { Hashtable table = new Hashtable<>(attribs); try { return new ObjectName(domain, table); - } catch (Exception e) { - throw new RuntimeException(e); + } catch (MalformedObjectNameException e) { + throw new IllegalArgumentException(e); } } @@ -116,8 +119,7 @@ public class ObjectNameUtil { public static String getServiceQName(ObjectName objectName) { checkType(objectName, TYPE_SERVICE_REFERENCE); String quoted = objectName.getKeyProperty(SERVICE_QNAME_KEY); - String result = unquoteAndUnescape(objectName, quoted); - return result; + return unquoteAndUnescape(objectName, quoted); } // ObjectName supports quotation and ignores tokens like =, but fails to ignore ? sign. @@ -270,7 +272,7 @@ public class ObjectNameUtil { } public static Map getAdditionalProperties(ObjectName on) { - Hashtable keyPropertyList = on.getKeyPropertyList(); + Map keyPropertyList = on.getKeyPropertyList(); Map result = new HashMap<>(); for (Entry entry : keyPropertyList.entrySet()) { result.put(entry.getKey(), entry.getValue()); @@ -292,8 +294,8 @@ public class ObjectNameUtil { } } - public static void checkTypeOneOf(ObjectName objectName, String ... types) { - for(String type: types) { + public static void checkTypeOneOf(ObjectName objectName, String... types) { + for (String type : types) { if (type.equals(objectName.getKeyProperty(TYPE_KEY))) { return; } @@ -304,37 +306,43 @@ public class ObjectNameUtil { public static ObjectName createModulePattern(String moduleName, String instanceName) { - if (moduleName == null) - moduleName = "*"; - if (instanceName == null) - instanceName = "*"; + String finalModuleName = moduleName == null ? ON_WILDCARD : moduleName; + String finalInstanceName = instanceName == null ? ON_WILDCARD : instanceName; + // do not return object names containing transaction name ObjectName namePattern = ObjectNameUtil .createON(ObjectNameUtil.ON_DOMAIN + ":" + ObjectNameUtil.TYPE_KEY + "=" + ObjectNameUtil.TYPE_MODULE + "," + ObjectNameUtil.MODULE_FACTORY_NAME_KEY + "=" - + moduleName + "," + "" - + ObjectNameUtil.INSTANCE_NAME_KEY + "=" + instanceName); + + finalModuleName + "," + "" + + ObjectNameUtil.INSTANCE_NAME_KEY + "=" + finalInstanceName); return namePattern; } public static ObjectName createModulePattern(String ifcName, String instanceName, String transactionName) { + String finalIfcName = ifcName == null ? ON_WILDCARD : ifcName; + String finalInstanceName = instanceName == null ? ON_WILDCARD : instanceName; + String finalTransactionName = transactionName == null ? ON_WILDCARD : transactionName; + return ObjectNameUtil.createON(ObjectNameUtil.ON_DOMAIN + ":type=Module," + ObjectNameUtil.MODULE_FACTORY_NAME_KEY - + "=" + ifcName + "," + ObjectNameUtil.INSTANCE_NAME_KEY + "=" - + instanceName + "," + ObjectNameUtil.TRANSACTION_NAME_KEY - + "=" + transactionName); + + "=" + finalIfcName + "," + ObjectNameUtil.INSTANCE_NAME_KEY + "=" + + finalInstanceName + "," + ObjectNameUtil.TRANSACTION_NAME_KEY + + "=" + finalTransactionName); } public static ObjectName createRuntimeBeanPattern(String moduleName, String instanceName) { + String finalModuleName = moduleName == null ? ON_WILDCARD : moduleName; + String finalInstanceName = instanceName == null ? ON_WILDCARD : instanceName; + return ObjectNameUtil.createON(ObjectNameUtil.ON_DOMAIN + ":" + ObjectNameUtil.TYPE_KEY + "=" + ObjectNameUtil.TYPE_RUNTIME_BEAN + "," - + ObjectNameUtil.MODULE_FACTORY_NAME_KEY + "=" + moduleName - + "," + ObjectNameUtil.INSTANCE_NAME_KEY + "=" + instanceName + + ObjectNameUtil.MODULE_FACTORY_NAME_KEY + "=" + finalModuleName + + "," + ObjectNameUtil.INSTANCE_NAME_KEY + "=" + finalInstanceName + ",*"); } @@ -343,13 +351,15 @@ public class ObjectNameUtil { String expectedType) { checkType(objectName, expectedType); String factoryName = getFactoryName(objectName); - if (factoryName == null) + if (factoryName == null) { throw new IllegalArgumentException( "ObjectName does not contain module name"); + } String instanceName = getInstanceName(objectName); - if (instanceName == null) + if (instanceName == null) { throw new IllegalArgumentException( "ObjectName does not contain instance name"); + } return new ModuleIdentifier(factoryName, instanceName); }