Skip to content

Conversation

DavidMarinCalleja
Copy link

adding jersey 2 to Java server (jaxrs). Command line example:
generate -l jaxrs --library jersey2

@wing328
Copy link
Contributor

wing328 commented Feb 27, 2016

@David-Marin-Calleja thanks for the PR but the CI tests failed. Here is part of the result:

Tests run: 345, Failures: 5, Errors: 0, Skipped: 0, Time elapsed: 6.886 sec <<< FAILURE! - in TestSuite
annotationsTest(io.swagger.codegen.java.jaxrs.AllowableValuesTest)  Time elapsed: 0.011 sec  <<< FAILURE!
java.lang.NullPointerException: null
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:113)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1906)
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:778)
    at io.swagger.codegen.java.jaxrs.AllowableValuesTest.loadClassResource(AllowableValuesTest.java:27)
    at io.swagger.codegen.java.jaxrs.AllowableValuesTest.annotationsTest(AllowableValuesTest.java:60)

annotationsTest(io.swagger.codegen.java.jaxrs.AllowableValuesTest)  Time elapsed: 0 sec  <<< FAILURE!
java.lang.NullPointerException: null
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:113)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1906)
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:778)
    at io.swagger.codegen.java.jaxrs.AllowableValuesTest.loadClassResource(AllowableValuesTest.java:27)
    at io.swagger.codegen.java.jaxrs.AllowableValuesTest.annotationsTest(AllowableValuesTest.java:60)

annotationsTest(io.swagger.codegen.java.jaxrs.AllowableValuesTest)  Time elapsed: 0 sec  <<< FAILURE!
java.lang.NullPointerException: null
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:113)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1906)
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:778)
    at io.swagger.codegen.java.jaxrs.AllowableValuesTest.loadClassResource(AllowableValuesTest.java:27)
    at io.swagger.codegen.java.jaxrs.AllowableValuesTest.annotationsTest(AllowableValuesTest.java:60)

annotationsTest(io.swagger.codegen.java.jaxrs.AllowableValuesTest)  Time elapsed: 0 sec  <<< FAILURE!
java.lang.NullPointerException: null
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:113)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1906)
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:778)
    at io.swagger.codegen.java.jaxrs.AllowableValuesTest.loadClassResource(AllowableValuesTest.java:27)
    at io.swagger.codegen.java.jaxrs.AllowableValuesTest.annotationsTest(AllowableValuesTest.java:60)

annotationsTest(io.swagger.codegen.java.jaxrs.AllowableValuesTest)  Time elapsed: 0.001 sec  <<< FAILURE!
java.lang.NullPointerException: null
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:113)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1906)
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:778)
    at io.swagger.codegen.java.jaxrs.AllowableValuesTest.loadClassResource(AllowableValuesTest.java:27)
    at io.swagger.codegen.java.jaxrs.AllowableValuesTest.annotationsTest(AllowableValuesTest.java:60)


Results :

Failed tests: 
io.swagger.codegen.java.jaxrs.AllowableValuesTest.annotationsTest(io.swagger.codegen.java.jaxrs.AllowableValuesTest)
  Run 1: AllowableValuesTest.annotationsTest:60->loadClassResource:27 » NullPointer
  Run 2: AllowableValuesTest.annotationsTest:60->loadClassResource:27 » NullPointer
  Run 3: AllowableValuesTest.annotationsTest:60->loadClassResource:27 » NullPointer
  Run 4: AllowableValuesTest.annotationsTest:60->loadClassResource:27 » NullPointer
  Run 5: AllowableValuesTest.annotationsTest:60->loadClassResource:27 » NullPointer


Tests run: 341, Failures: 1, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] swagger-codegen-project ........................... SUCCESS [3.156s]
[INFO] swagger-codegen (core library) .................... FAILURE [18.308s]
[INFO] swagger-codegen (executable) ...................... SKIPPED
[INFO] swagger-codegen (maven-plugin) .................... SKIPPED

You can run the test locally by mvn verify -Psamples

@wing328
Copy link
Contributor

wing328 commented Mar 7, 2016

I'll review this tomorrow and let you know if I've any questions. Thanks again for the contribution.

@wing328
Copy link
Contributor

wing328 commented Mar 8, 2016

I got the following when running ./bin/jaxrs-petstore-server.sh:

[main] WARN io.swagger.codegen.DefaultCodegen - Empty operationId found for path: get /pet/{petId}?testing_byte_array=true. Renamed to auto-generated operationId: petPetIdtesting_byte_arraytrueGet
[main] ERROR io.swagger.codegen.AbstractGenerator - JavaJaxRS/api.mustache (No such file or directory)
[main] ERROR io.swagger.codegen.AbstractGenerator - can't load template JavaJaxRS/api.mustache
Exception in thread "main" java.lang.RuntimeException: Could not generate api file for 'pet?testing_byte_array=true'
    at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:373)
    at io.swagger.codegen.cmd.Generate.run(Generate.java:202)
    at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:36)
Caused by: java.lang.RuntimeException: can't load template JavaJaxRS/api.mustache
    at io.swagger.codegen.AbstractGenerator.readTemplate(AbstractGenerator.java:50)
    at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:334)
    ... 2 more
swagger-codegen|master⚡ ⇒ ./bin/jaxrs-petstore-server.sh

Would you please take a look?

Can you also create ./bin/jaxrs-jersey2-petstore-server.sh using --library jersey2 and output the files under samples/server/petstore/jaxrs-jersey2?

@fehguy
Copy link
Contributor

fehguy commented Mar 8, 2016

@wing328 I'm not sure how this got in:

https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/test/resources/2_0/petstore.json#L22

But it's illegal by the Swagger Spec and may be confusing to people. Query parameters are not allowed in the path segment...

@wing328
Copy link
Contributor

wing328 commented Mar 9, 2016

@fehguy we added those (fake endpoints) internationally for unit testing.

Agree that query parameters should not be allowed in the path segment.

FYI. ./bin/jaxrs-cxf-petstore-server.sh does not show any error.

@fehguy
Copy link
Contributor

fehguy commented Mar 9, 2016

Can we just remove that and replace it with a full path instead? Because it's illegal, people will see it and think it's OK. Actually codegen (via parser) should not allow it, so if I add that check in the parser, you'll start failing the build.

@wing328
Copy link
Contributor

wing328 commented Mar 10, 2016

Understood the side effect of putting that in Petstore. If using the full path, the endpoint won't work since we need to modify the Petstore server as well.

I might have missed it but do we have the source code of Petstore server available publicly?

(btw, other Java server stub generator does not throw errors for path with URL query string)

@fehguy
Copy link
Contributor

fehguy commented Mar 10, 2016

The petstore source lives here:

https://github.com/swagger-api/swagger-samples/tree/docker/java/java-jaxrs

It doesn't matter if other generators work, it's simply illegal with the swagger definition to define the URL with a query string. They really shouldn't work.

@wing328
Copy link
Contributor

wing328 commented Mar 10, 2016

OK. We'll look into swagger-sample to add more proper test cases before removing the workaround.

@wing328
Copy link
Contributor

wing328 commented Mar 15, 2016

@David-Marin-Calleja I'd a look at the error message again and it seems like JavaJaxRS/api.mustache is missing

[main] ERROR io.swagger.codegen.AbstractGenerator - JavaJaxRS/api.mustache (No such file or directory)
[main] ERROR io.swagger.codegen.AbstractGenerator - can't load template JavaJaxRS/api.mustache

Is that accidentally removed as part of this PR?

swagger-codegen|master⚡ ⇒ ls modules/swagger-codegen/src/main/resources/JavaJaxRS/ | grep api
apiServiceFactory.mustache
swagger-codegen|master⚡ ⇒ 

@DavidMarinCalleja
Copy link
Author

@wing328 I will look into it.

@wing328 wing328 modified the milestones: v2.2.0, v2.1.6 Mar 19, 2016
@fehguy
Copy link
Contributor

fehguy commented Apr 5, 2016

This was handled in #2488.

@fehguy fehguy closed this Apr 5, 2016
@wing328 wing328 modified the milestones: v2.1.6, v2.2.0 Apr 5, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants