X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fstmt%2Frfc6020%2FYangStatementSourceImpl.java;h=96746e8b51496a7d7c52172e3d029800e744edea;hb=30c67c4d780e897d972d60bb79d546b512516f90;hp=85b9df00b2222759781ecd9ec42a022083aaa868;hpb=1f53275ab208027b01a60c697f576ce9fca7db22;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangStatementSourceImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangStatementSourceImpl.java index 85b9df00b2..96746e8b51 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangStatementSourceImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangStatementSourceImpl.java @@ -18,13 +18,11 @@ import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.tree.ParseTreeWalker; import org.opendaylight.yangtools.antlrv4.code.gen.YangStatementLexer; import org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser; -import org.opendaylight.yangtools.yang.model.api.meta.StatementSource; import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; import org.opendaylight.yangtools.yang.parser.impl.YangStatementParserListenerImpl; import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule; import org.opendaylight.yangtools.yang.parser.spi.source.QNameToStatementDefinition; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference; import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; import org.opendaylight.yangtools.yang.parser.spi.source.StatementWriter; import org.slf4j.Logger; @@ -36,27 +34,29 @@ import org.slf4j.LoggerFactory; * in order to emit YANG statements using supplied StatementWriter * */ - public final class YangStatementSourceImpl implements StatementStreamSource { private YangStatementParserListenerImpl yangStatementModelParser; private YangStatementParser.StatementContext statementContext; private ParseTreeWalker walker; + private String sourceName; private static final Logger LOG = LoggerFactory.getLogger(YangStatementSourceImpl.class); - private static final StatementSourceReference REF = new StatementSourceReference() { - - @Override - public StatementSource getStatementSource() { - return StatementSource.DECLARATION; + public YangStatementSourceImpl(final String fileName, boolean isAbsolute) { + try { + statementContext = parseYangSource(loadFile(fileName, isAbsolute)); + walker = new ParseTreeWalker(); + yangStatementModelParser = new YangStatementParserListenerImpl(fileName); + } catch (Exception e) { + LOG.warn(e.getMessage(), e); } - }; + } - public YangStatementSourceImpl(final String fileName) { + public YangStatementSourceImpl(final InputStream inputStream) { try { - statementContext = parseYangSource(loadFile(fileName)); + statementContext = parseYangSource(inputStream); walker = new ParseTreeWalker(); - yangStatementModelParser = new YangStatementParserListenerImpl(REF); + yangStatementModelParser = new YangStatementParserListenerImpl(sourceName); } catch (Exception e) { LOG.warn(e.getMessage(), e); } @@ -80,14 +80,15 @@ public final class YangStatementSourceImpl implements StatementStreamSource { walker.walk(yangStatementModelParser, statementContext); } - private FileInputStream loadFile(final String fileName) throws URISyntaxException, FileNotFoundException { - return new FileInputStream(new File(getClass().getResource(fileName).toURI())); + private FileInputStream loadFile(final String fileName, boolean isAbsolute) throws URISyntaxException, FileNotFoundException { + return isAbsolute ? new FileInputStream(new File(fileName)) : new FileInputStream(new File(getClass().getResource(fileName).toURI())); } - private static YangStatementParser.StatementContext parseYangSource(final InputStream stream) throws IOException, YangSyntaxErrorException { + private YangStatementParser.StatementContext parseYangSource(final InputStream stream) throws IOException, YangSyntaxErrorException { final YangStatementLexer lexer = new YangStatementLexer(new ANTLRInputStream(stream)); final CommonTokenStream tokens = new CommonTokenStream(lexer); final YangStatementParser parser = new YangStatementParser(tokens); + sourceName = parser.getSourceName(); return parser.statement(); } }