Amartus / yang2swagger

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

NPE #16

Closed damianoneill closed 5 years ago

damianoneill commented 6 years ago

Hi @bartoszm when running the binary against a subset of the OpenROADM YANG (2.2) I get an NPE.

See below

$ java -jar ~/Downloads/swagger-generator-cli-1.1.10-executable.jar -yang-dir model/required:model/Common org-openroadm-pm -output org-openroadm-pm.yaml
2018-09-20 12:51:06,427 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/pm-types?revision=2017-12-15)pm-measurement
2018-09-20 12:51:06,438 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/pm-types?revision=2017-12-15)pm-names
2018-09-20 12:51:06,443 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/common-types?revision=2017-12-15)rpc-response-status
2018-09-20 12:51:06,443 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/resource?revision=2017-12-15)resource
2018-09-20 12:51:06,444 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/resource?revision=2017-12-15)port
2018-09-20 12:51:06,445 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/resource/types?revision=2017-12-15)circuit-pack-name
2018-09-20 12:51:06,448 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.common.types.Location
2018-09-20 12:51:06,448 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.common.types.RpcStatus
2018-09-20 12:51:06,450 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.pm.Granularity
2018-09-20 12:51:06,450 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.pm.types.Validity
2018-09-20 12:51:06,450 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.pm.types.PmNamesEnum
2018-09-20 12:51:06,450 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.common.types.Direction
2018-09-20 12:51:06,450 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.pm.types.PmGranularity
2018-09-20 12:51:06,450 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.resource.types.ResourceTypeEnum
2018-09-20 12:51:06,451 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.pm.PmType
2018-09-20 12:51:06,458 [main] ERROR com.mrv.yangtools.codegen.main.Main - Error while generating Swagger
java.lang.NullPointerException: null
    at java.lang.String.compareTo(String.java:1155)
    at java.lang.String.compareTo(String.java:111)
    at java.util.Comparator.lambda$comparing$77a9974f$1(Comparator.java:469)
    at java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
    at java.util.TimSort.sort(TimSort.java:220)
    at java.util.Arrays.sort(Arrays.java:1512)
    at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:348)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
    at com.mrv.yangtools.common.SwaggerUtils.sortMap(SwaggerUtils.java:24)
    at com.mrv.yangtools.codegen.SwaggerGenerator.generate(SwaggerGenerator.java:267)
    at com.mrv.yangtools.codegen.main.Main.generate(Main.java:89)
    at com.mrv.yangtools.codegen.main.Main.main(Main.java:62)

I've included the subset of files required for you to test against.

or.tar.gz

Can you also clarify the warnings and whether these are issues? If so how they can be resolved in the OR YANG?

Thanks, Damian.

damianoneill commented 6 years ago

Hi Bartosz, was wondering if you had got a chance to review this?

Thanks.

bartoszm commented 5 years ago

Hi Damian, I am sorry for late response. I will have a look at it. Which version of the tool are you using?

damianoneill commented 5 years ago

Hi Bartosz, I am using the binary release CLI 1.1.10. If you need me to test with anything else, feel free to ask.

bartoszm commented 5 years ago

Hi Damian, Are you able to pull sources and build a project on your own. Then with generated jar you could verify that my last commit has resolved your problem. I have noticed a NPE but in different line of code and it was related to the fact that until now AnyXml properites were not supported - now I generate a string attribute in swagger to support them - we can think of something better if you want

damianoneill commented 5 years ago

Hi Bartosz, checked out the code, downloaded the odl settings and built a binary, re-ran the above command against the files I attached. Same issue as before.

$ java -jar /projects/github/yang2swagger/cli/target/swagger-generator-cli-1.1.11-SNAPSHOT-executable.jar -yang-dir model/required:model/Common org-openroadm-pm -output org-openroadm-pm.yaml
2018-10-25 14:56:40,202 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/pm-types?revision=2017-12-15)pm-measurement
2018-10-25 14:56:40,213 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/pm-types?revision=2017-12-15)pm-names
2018-10-25 14:56:40,218 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/common-types?revision=2017-12-15)rpc-response-status
2018-10-25 14:56:40,218 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/resource?revision=2017-12-15)resource
2018-10-25 14:56:40,220 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/resource?revision=2017-12-15)port
2018-10-25 14:56:40,220 [main] WARN  c.m.y.c.i.OptimizingDataObjectBuilder - no child found with name (http://org/openroadm/resource/types?revision=2017-12-15)circuit-pack-name
2018-10-25 14:56:40,224 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.common.types.Location
2018-10-25 14:56:40,224 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.common.types.RpcStatus
2018-10-25 14:56:40,226 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.pm.Granularity
2018-10-25 14:56:40,226 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.pm.types.Validity
2018-10-25 14:56:40,226 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.pm.types.PmNamesEnum
2018-10-25 14:56:40,226 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.common.types.Direction
2018-10-25 14:56:40,226 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.pm.types.PmGranularity
2018-10-25 14:56:40,226 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.resource.types.ResourceTypeEnum
2018-10-25 14:56:40,226 [main] WARN  c.m.y.c.i.p.ReplaceDefinitionsProcessor - Empty model in org.openroadm.pm.PmType
2018-10-25 14:56:40,232 [main] ERROR com.mrv.yangtools.codegen.main.Main - Error while generating Swagger
java.lang.NullPointerException: null
    at java.lang.String.compareTo(String.java:1155)
    at java.lang.String.compareTo(String.java:111)
    at java.util.Comparator.lambda$comparing$77a9974f$1(Comparator.java:469)
    at java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
    at java.util.TimSort.sort(TimSort.java:220)
    at java.util.Arrays.sort(Arrays.java:1512)
    at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:348)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
    at com.mrv.yangtools.common.SwaggerUtils.sortMap(SwaggerUtils.java:24)
    at com.mrv.yangtools.codegen.SwaggerGenerator.generate(SwaggerGenerator.java:267)
    at com.mrv.yangtools.codegen.main.Main.generate(Main.java:89)
    at com.mrv.yangtools.codegen.main.Main.main(Main.java:62)
bartoszm commented 5 years ago

OK.now I see I was using a different command attributes $ java -jar /projects/github/yang2swagger/cli/target/swagger-generator-cli-1.1.11-SNAPSHOT-executable.jar -yang-dir model/required:model/Common -output org-openroadm-pm.yaml

so basically I was not defining a module but generating for all of them - which works.

I will look into your issue and try to resolve it - but it might take some time given I was not using this mode too often

bartoszm commented 5 years ago

Fixed for your example. I will reopen in case we find problems in other case - I expect problems in modules that only introduce augmentations in case we want to generate them separately