Amartus / yang2swagger

Yang to swagger generator
Eclipse Public License 1.0
32 stars 21 forks source link

Project compilation and start-up issue #43

Closed mkukulski closed 2 years ago

mkukulski commented 4 years ago

Hi, I found this project and I try to run it but it is not as easy as it sound from README. Fist of all project did not compile because of error

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /c/repos/yang2swagger/swagger-generator/src/main/java/com/mrv/yangtools/codegen/impl/path/odl/ODLPathHandler.java:[32,39] reference to Module is ambiguous
  both interface org.opendaylight.yangtools.yang.model.api.Module in org.opendaylight.yangtools.yang.model.api and class java.lang.Module in java.lang match
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] yangtools 1.1.14-SNAPSHOT .......................... SUCCESS [02:07 min]
[INFO] common ............................................. SUCCESS [01:27 min]
[INFO] swagger-generator .................................. FAILURE [ 55.730 s]
[INFO] swagger-generator-cli .............................. SKIPPED
[INFO] swagger-maven-plugin ............................... SKIPPED
[INFO] examples ........................................... SKIPPED
[INFO] swagger-codegen-jaxrs .............................. SKIPPED
[INFO] maven-plugin-example ............................... SKIPPED
[INFO] build-standalone 1.1.14-SNAPSHOT ................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:31 min
[INFO] Finished at: 2020-05-21T13:15:48Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project swagger-generator: Compilation failure
[ERROR] /c/repos/yang2swagger/swagger-generator/src/main/java/com/mrv/yangtools/codegen/impl/path/odl/ODLPathHandler.java:[32,39] reference to Module is ambiguous
[ERROR]   both interface org.opendaylight.yangtools.yang.model.api.Module in org.opendaylight.yangtools.yang.model.api and class java.lang.Module in java.lang match
[ERROR]
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :swagger-generator

This I fixed by adding import of mentioned class in mentioned file. After successful build I was trying to run cli tool as shown in README java -jar ~/.m2/repository/com/mrv/yangtools/swagger-generator-cli/1.0-SNAPSHOT/swagger-generator-cli-1.0-SNAPSHOT-executable.jar Error: Unable to access jarfile /home/kukulski/.m2/repository/com/mrv/yangtools/swagger-generator-cli/1.0-SNAPSHOT/swagger-generator-cli-1.0-SNAPSHOT-executable.jar This was easy actual version in mentioned folder is 1.1.14 - maybe it is worth to correct README But even with correct file I still don't get output like in README I was expecting help message but I get fallowing

java -jar /home/kukulski/.m2/repository/com/mrv/yangtools/swagger-generator-cli/1.1.14-SNAPSHOT/swagger-generator-cli-1.1.14-SNAPSHOT-executable.jar
2020-05-21 14:02:45,663 [main] INFO  c.mrv.yangtools.common.ContextHelper - adding
2020-05-21 14:02:45,884 [main] INFO  c.mrv.yangtools.common.SchemaBuilder - Inspecting all defined yangs [src/main/resources/ietf-inet-types.yang, src/main/resources/ietf-yang-types.yang, src/main/resources/Tapi.yang, src/main/resources/TapiConnectivity.yang, src/main/resources/TapiTopology.yang, target/classes/ietf-inet-types.yang, target/classes/ietf-yang-types.yang, target/classes/Tapi.yang, target/classes/TapiConnectivity.yang, target/classes/TapiTopology.yang]
2020-05-21 14:02:46,511 [main] ERROR com.mrv.yangtools.codegen.main.Main - Error while generating Swagger
org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException: Some of SOURCE_LINKAGE modifiers for statements were not resolved.
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.propagateException(BuildGlobalContext.java:255)
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:307)
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatements(BuildGlobalContext.java:298)
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.executePhases(BuildGlobalContext.java:217)
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.buildEffective(BuildGlobalContext.java:229)
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor$BuildAction.buildEffective(CrossSourceStatementReactor.java:280)
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor$BuildAction.buildEffective(CrossSourceStatementReactor.java:313)
        at com.mrv.yangtools.common.SchemaBuilder.build(SchemaBuilder.java:86)
        at com.mrv.yangtools.common.ContextHelper.getCtx(ContextHelper.java:80)
        at com.mrv.yangtools.common.ContextHelper.getFromDir(ContextHelper.java:48)
        at com.mrv.yangtools.codegen.main.Main.buildSchemaContext(Main.java:156)
        at com.mrv.yangtools.codegen.main.Main.generate(Main.java:109)
        at com.mrv.yangtools.codegen.main.Main.main(Main.java:90)
Caused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Module namespace collision: urn:ietf:params:xml:ns:yang:ietf-inet-typesUsageTreeBuilder. At null:1:0 [at null:1:0]
        at org.opendaylight.yangtools.yang.parser.stmt.rfc6020.ModuleStatementSupport.onLinkageDeclared(ModuleStatementSupport.java:153)
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext.onDeclarationFinished(StatementDefinitionContext.java:72)
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.endDeclared(StatementContextBase.java:528)
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextWriter.endStatement(StatementContextWriter.java:39)
        at org.opendaylight.yangtools.yang.parser.impl.YangStatementParserListenerImpl.exitStatement(YangStatementParserListenerImpl.java:112)
        at org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser$StatementContext.exitRule(YangStatementParser.java:119)
        at org.antlr.v4.runtime.tree.ParseTreeWalker.exitRule(ParseTreeWalker.java:47)
        at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:30)
        at org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl.writeLinkage(YangStatementSourceImpl.java:85)
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.loadStatements(SourceSpecificContext.java:367)
        at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:305)
        ... 11 common frames omitted 

This ale small issues but may result in impression that project is not working.

bartoszm commented 4 years ago

Hi @mkukulski the java.lang.Module was introduced in Java 9 whereas this project expect to be run/compiled using JDK/JVM 1.8. Are you sure you are using the right version?

The second issue is that your YANG modules space has some issues - to resolve and interpret YANG I use opendaylight related parser and these messages comes from it. I admit that documentation could be more clear about it.

bartoszm commented 2 years ago

I have added full package name for Module to make it easier for more recent java version - committed to master branch