X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fblueprint%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fblueprint%2Fext%2FDataStoreAppConfigMetadata.java;h=0d6585bda2f026ae25b921951bcac8ec22be333e;hb=12e42f62ff55faf841cc4f18759b5e08a26f104f;hp=f1024d7e4b7342e3f9f12139df9e332bdc78dd7a;hpb=d8be13e36b4a5fca3155e7ab3e840ba9ab5a75b1;p=controller.git diff --git a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigMetadata.java b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigMetadata.java index f1024d7e4b..0d6585bda2 100644 --- a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigMetadata.java +++ b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigMetadata.java @@ -8,15 +8,20 @@ package org.opendaylight.controller.blueprint.ext; import com.google.common.base.Optional; -import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; import java.util.Collection; import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.stream.XMLStreamException; import org.apache.aries.blueprint.services.ExtendedBlueprintContainer; import org.opendaylight.controller.blueprint.ext.DataStoreAppConfigDefaultXMLReader.ConfigURLProvider; import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; @@ -27,20 +32,18 @@ import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.sal.core.api.model.SchemaService; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; +import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlUtils; -import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.DomToNormalizedNodeParserFactory; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.osgi.service.blueprint.container.ComponentDefinitionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Element; +import org.xml.sax.SAXException; /** * Factory metadata corresponding to the "clustered-app-config" element that obtains an application's @@ -156,9 +159,8 @@ public class DataStoreAppConfigMetadata extends AbstractDependentComponentFactor } private void readInitialAppConfig(final DataBroker dataBroker) { - @SuppressWarnings("resource") // it's closed in the callback final ReadOnlyTransaction readOnlyTx = dataBroker.newReadOnlyTransaction(); - CheckedFuture, ReadFailedException> future = readOnlyTx.read( + ListenableFuture> future = readOnlyTx.read( LogicalDatastoreType.CONFIGURATION, bindingContext.appConfigPath); Futures.addCallback(future, new FutureCallback>() { @Override @@ -182,7 +184,7 @@ public class DataStoreAppConfigMetadata extends AbstractDependentComponentFactor readInitialAppConfig(dataBroker); } } - }); + }, MoreExecutors.directExecutor()); } private void onAppConfigChanged(final Collection> changes) { @@ -240,7 +242,6 @@ public class DataStoreAppConfigMetadata extends AbstractDependentComponentFactor private DataObject createDefaultInstance() { try { - @SuppressWarnings("resource") ConfigURLProvider inputStreamProvider = appConfigFileName -> { File appConfigFile = new File(DEFAULT_APP_CONFIG_FILE_PATH, appConfigFileName); LOG.debug("{}: parsePossibleDefaultAppConfigXMLFile looking for file {}", logName(), @@ -255,8 +256,8 @@ public class DataStoreAppConfigMetadata extends AbstractDependentComponentFactor return Optional.of(appConfigFile.toURI().toURL()); }; - DataStoreAppConfigDefaultXMLReader reader = new DataStoreAppConfigDefaultXMLReader(logName(), - defaultAppConfigFileName, getOSGiService(SchemaService.class), bindingSerializer, bindingContext, + DataStoreAppConfigDefaultXMLReader reader = new DataStoreAppConfigDefaultXMLReader<>(logName(), + defaultAppConfigFileName, getOSGiService(DOMSchemaService.class), bindingSerializer, bindingContext, inputStreamProvider); return reader.createDefaultInstance((schemaContext, dataSchema) -> { // Fallback if file cannot be read, try XML from Config @@ -269,7 +270,8 @@ public class DataStoreAppConfigMetadata extends AbstractDependentComponentFactor } }); - } catch (final ConfigXMLReaderException e) { + } catch (final ConfigXMLReaderException | IOException | SAXException | XMLStreamException + | ParserConfigurationException | URISyntaxException e) { if (e.getCause() == null) { setFailureMessage(e.getMessage()); } else { @@ -281,21 +283,18 @@ public class DataStoreAppConfigMetadata extends AbstractDependentComponentFactor @Nullable private NormalizedNode parsePossibleDefaultAppConfigElement(final SchemaContext schemaContext, - final DataSchemaNode dataSchema) { + final DataSchemaNode dataSchema) throws URISyntaxException, IOException, ParserConfigurationException, + SAXException, XMLStreamException { if (defaultAppConfigElement == null) { return null; } LOG.debug("{}: parsePossibleDefaultAppConfigElement for {}", logName(), bindingContext.bindingQName); - DomToNormalizedNodeParserFactory parserFactory = DomToNormalizedNodeParserFactory.getInstance( - XmlUtils.DEFAULT_XML_CODEC_PROVIDER, schemaContext); - - LOG.debug("{}: Got app config schema: {}", logName(), dataSchema); NormalizedNode dataNode = bindingContext.parseDataElement(defaultAppConfigElement, dataSchema, - parserFactory); + schemaContext); LOG.debug("{}: Parsed data node: {}", logName(), dataNode);