X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fblueprint%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fblueprint%2Fext%2FOpendaylightNamespaceHandler.java;h=47b2c2b238320f711d428208728608b49ee92e7f;hp=ab9e216d036d52628fcaa10d7ef257e41616a518;hb=cab1d5845cb951fe31a3243653ed567583dc73c1;hpb=b9040c52d74cf4c16aeb16774f2c1056589fb203 diff --git a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/OpendaylightNamespaceHandler.java b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/OpendaylightNamespaceHandler.java index ab9e216d03..47b2c2b238 100644 --- a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/OpendaylightNamespaceHandler.java +++ b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/OpendaylightNamespaceHandler.java @@ -54,6 +54,7 @@ public class OpendaylightNamespaceHandler implements NamespaceHandler { static final String RPC_REGISTRY_NAME = "org.opendaylight.blueprint.RpcRegistry"; static final String NOTIFICATION_SERVICE_NAME = "org.opendaylight.blueprint.NotificationService"; static final String TYPE_ATTR = "type"; + static final String UPDATE_STRATEGY_ATTR = "update-strategy"; private static final Logger LOG = LoggerFactory.getLogger(OpendaylightNamespaceHandler.class); private static final String COMPONENT_PROCESSOR_NAME = ComponentProcessor.class.getName(); @@ -65,6 +66,7 @@ public class OpendaylightNamespaceHandler implements NamespaceHandler { private static final String ID_ATTR = "id"; private static final String RPC_SERVICE = "rpc-service"; private static final String SPECIFIC_SERVICE_REF_LIST = "specific-reference-list"; + private static final String STATIC_REFERENCE = "static-reference"; @SuppressWarnings("rawtypes") @Override @@ -99,6 +101,8 @@ public class OpendaylightNamespaceHandler implements NamespaceHandler { return parseClusteredAppConfig(element, context); } else if (nodeNameEquals(element, SPECIFIC_SERVICE_REF_LIST)) { return parseSpecificReferenceList(element, context); + } else if (nodeNameEquals(element, STATIC_REFERENCE)) { + return parseStaticReference(element, context); } throw new ComponentDefinitionException("Unsupported standalone element: " + element.getNodeName()); @@ -346,7 +350,21 @@ public class OpendaylightNamespaceHandler implements NamespaceHandler { return new DataStoreAppConfigMetadata(getId(context, element), element.getAttribute( DataStoreAppConfigMetadata.BINDING_CLASS), element.getAttribute( - DataStoreAppConfigMetadata.LIST_KEY_VALUE), defaultAppConfigElement); + DataStoreAppConfigMetadata.LIST_KEY_VALUE), element.getAttribute( + DataStoreAppConfigMetadata.DEFAULT_CONFIG_FILE_NAME), parseUpdateStrategy( + element.getAttribute(UPDATE_STRATEGY_ATTR)), defaultAppConfigElement); + } + + private UpdateStrategy parseUpdateStrategy(String updateStrategyValue) { + if (Strings.isNullOrEmpty(updateStrategyValue) || + updateStrategyValue.equalsIgnoreCase(UpdateStrategy.RELOAD.name())) { + return UpdateStrategy.RELOAD; + } else if(updateStrategyValue.equalsIgnoreCase(UpdateStrategy.NONE.name())){ + return UpdateStrategy.NONE; + } else { + LOG.warn("update-strategy {} not supported, using reload", updateStrategyValue); + return UpdateStrategy.RELOAD; + } } private Metadata parseSpecificReferenceList(Element element, ParserContext context) { @@ -358,6 +376,15 @@ public class OpendaylightNamespaceHandler implements NamespaceHandler { return metadata; } + private Metadata parseStaticReference(Element element, ParserContext context) { + ComponentFactoryMetadata metadata = new StaticReferenceMetadata(getId(context, element), + element.getAttribute(INTERFACE)); + + LOG.debug("parseStaticReference returning {}", metadata); + + return metadata; + } + private Element parseXML(String name, String xml) { DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); builderFactory.setNamespaceAware(true);