* 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;
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;
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;
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");
}
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();
}
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();