X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=config-loader%2Fconfig-loader-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fbgpcep%2Fconfig%2Floader%2Fimpl%2FConfigLoaderImpl.java;fp=config-loader%2Fconfig-loader-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fprotocol%2Fbgp%2Fconfig%2Floader%2Fimpl%2FConfigLoaderImpl.java;h=41cf7065345005fa815139ffbe325c86aa26de46;hb=fec33f202838499e11b0523efa437cfa2decee71;hp=aa579a3817e01dd52438f68d69d0c5230982d4a3;hpb=067c3fbf1a5e3f622c577d1cd32cde8a1db54594;p=bgpcep.git diff --git a/config-loader/config-loader-impl/src/main/java/org/opendaylight/protocol/bgp/config/loader/impl/ConfigLoaderImpl.java b/config-loader/config-loader-impl/src/main/java/org/opendaylight/bgpcep/config/loader/impl/ConfigLoaderImpl.java similarity index 84% rename from config-loader/config-loader-impl/src/main/java/org/opendaylight/protocol/bgp/config/loader/impl/ConfigLoaderImpl.java rename to config-loader/config-loader-impl/src/main/java/org/opendaylight/bgpcep/config/loader/impl/ConfigLoaderImpl.java index aa579a3817..41cf706534 100644 --- a/config-loader/config-loader-impl/src/main/java/org/opendaylight/protocol/bgp/config/loader/impl/ConfigLoaderImpl.java +++ b/config-loader/config-loader-impl/src/main/java/org/opendaylight/bgpcep/config/loader/impl/ConfigLoaderImpl.java @@ -6,7 +6,7 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.protocol.bgp.config.loader.impl; +package org.opendaylight.bgpcep.config.loader.impl; import static java.util.Objects.requireNonNull; @@ -15,6 +15,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URISyntaxException; +import java.nio.file.ClosedWatchServiceException; import java.nio.file.WatchEvent; import java.nio.file.WatchKey; import java.nio.file.WatchService; @@ -26,9 +27,9 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; +import org.opendaylight.bgpcep.config.loader.spi.ConfigFileProcessor; +import org.opendaylight.bgpcep.config.loader.spi.ConfigLoader; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; -import org.opendaylight.protocol.bgp.config.loader.spi.ConfigFileProcessor; -import org.opendaylight.protocol.bgp.config.loader.spi.ConfigLoader; import org.opendaylight.yangtools.concepts.AbstractRegistration; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; @@ -57,12 +58,14 @@ public final class ConfigLoaderImpl implements ConfigLoader, AutoCloseable { private boolean closed = false; public ConfigLoaderImpl(final SchemaContext schemaContext, final BindingNormalizedNodeSerializer bindingSerializer, - final String path, final WatchService watchService) { + final FileWatcher fileWatcher) { this.schemaContext = requireNonNull(schemaContext); this.bindingSerializer = requireNonNull(bindingSerializer); - this.path = requireNonNull(path); - requireNonNull(watchService); - this.watcherThread = new Thread(new ConfigLoaderImplRunnable(watchService)); + this.path = requireNonNull(fileWatcher.getPathFile()); + this.watcherThread = new Thread(new ConfigLoaderImplRunnable(requireNonNull(fileWatcher.getWatchService()))); + } + + public void init() { this.watcherThread.start(); LOG.info("Config Loader service initiated"); } @@ -85,13 +88,18 @@ public final class ConfigLoaderImpl implements ConfigLoader, AutoCloseable { final NormalizedNodeResult result = new NormalizedNodeResult(); final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result); - final InputStream resourceAsStream = new FileInputStream(new File(this.path, filename)); - final XMLInputFactory factory = XMLInputFactory.newInstance(); - final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream); - - final SchemaNode schemaNode = SchemaContextUtil.findDataSchemaNode(this.schemaContext, config.getSchemaPath()); - final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, this.schemaContext, schemaNode); - xmlParser.parse(reader); + try (InputStream resourceAsStream = new FileInputStream(new File(this.path, filename))) { + final XMLInputFactory factory = XMLInputFactory.newInstance(); + final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream); + + final SchemaNode schemaNode = SchemaContextUtil + .findDataSchemaNode(this.schemaContext, config.getSchemaPath()); + final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, this.schemaContext, schemaNode); + xmlParser.parse(reader); + resourceAsStream.close(); + reader.close(); + xmlParser.close(); + } return result.getResult(); } @@ -154,7 +162,7 @@ public final class ConfigLoaderImpl implements ConfigLoader, AutoCloseable { final WatchKey key; try { key = watchService.take(); - } catch (final InterruptedException e) { + } catch (final InterruptedException | ClosedWatchServiceException e) { if (!ConfigLoaderImpl.this.closed) { LOG.warn(INTERRUPTED, e); Thread.currentThread().interrupt();