Giter Club home page Giter Club logo

jaxrs-analyzer's Introduction

JAX-RS Analyzer

Generates an overview of all JAX-RS resources in a project by bytecode analysis.

Yet another such JAX-RS tool?
Yes, but this gathers the information about the JAX-RS resource classes by bytecode analysis (not just by reflection). This gains more information in several situations. You don’t need additional annotations on your JAX-RS resource methods. Using the JSR 339 standard is sufficient.

Java 8 is needed for the Analyzer.

For usage see the documentation.

Maven Plugin

The Analyzer can be added to your project via Maven plugin.

Gradle Plugin

For Gradle based projects - third-party Gradle plugin could be used.

Standalone

Instead of using the Maven plugin, the tool can also run directly from the jar file. You can download the latest version here.

Backends

The Analyzer supports Plaintext, AsciiDoc, Markdown and Swagger as output format.

Documentation / Feature list

... can be found here.

Feedback, bug reports and ideas for improvement are very welcome! Feel free to fork, comment, file an issue, etc. ;-)

jaxrs-analyzer's People

Contributors

coding-guy avatar crandall-chow-sp avatar eshepelyuk avatar fkleon avatar grimmjo avatar haakobja avatar hindsholm avatar kurtvermeersch avatar lordofthejars avatar oluwasayo avatar rmannibucau avatar rmpestano avatar rodakr avatar sdaschner avatar serialvelocity avatar simdevmon avatar vboerchers avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jaxrs-analyzer's Issues

Support generic methods

For now (version 0.8) analyzer fails on methods like

  public <T> T getSingletonService(@NotNull Class<T> clazz) {
    // Some code here
  }

With stacktrace like:

Could not analyze class for type analysis: java.lang.RuntimeException: javassist.NotFoundException: T
java.lang.RuntimeException: java.lang.RuntimeException: javassist.NotFoundException: T
    at com.sebastian_daschner.jaxrs_analyzer.model.types.Type.<init>(Type.java:66)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.utils.JavaUtils.getReturnType(JavaUtils.java:217)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.mapGetter(TypeAnalyzer.java:219)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$275(TypeAnalyzer.java:150)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:151)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:121)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.JsonMapper.addToArray(JsonMapper.java:168)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:116)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.JsonMapper.addToObject(JsonMapper.java:144)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$276(TypeAnalyzer.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:151)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:121)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.JsonMapper.addToArray(JsonMapper.java:168)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:116)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.JsonMapper.addToObject(JsonMapper.java:144)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$276(TypeAnalyzer.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:151)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:121)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.JsonMapper.addToObject(JsonMapper.java:144)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$276(TypeAnalyzer.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:151)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:121)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.JsonMapper.addToArray(JsonMapper.java:168)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:116)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.JsonMapper.addToObject(JsonMapper.java:144)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$274(TypeAnalyzer.java:148)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:148)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:121)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.JsonMapper.addToObject(JsonMapper.java:144)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$274(TypeAnalyzer.java:148)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:148)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:121)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyze(TypeAnalyzer.java:95)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.ResultInterpreter.lambda$interpretResponse$270(ResultInterpreter.java:132)
    at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
    at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.ResultInterpreter.interpretResponse(ResultInterpreter.java:130)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.ResultInterpreter.lambda$interpretResourceMethod$265(ResultInterpreter.java:109)
    at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
    at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.ResultInterpreter.interpretResourceMethod(ResultInterpreter.java:109)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.ResultInterpreter.interpretMethodResult(ResultInterpreter.java:87)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.ResultInterpreter.lambda$interpretClassResult$264(ResultInterpreter.java:69)
    at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
    at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.ResultInterpreter.interpretClassResult(ResultInterpreter.java:69)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.ResultInterpreter.interpret(ResultInterpreter.java:55)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.ProjectAnalyzer.analyze(ProjectAnalyzer.java:86)
    at com.sebastian_daschner.jaxrs_analyzer.JAXRSAnalyzer.analyze(JAXRSAnalyzer.java:69)
    at com.sebastian_daschner.jaxrs_analyzer.Main.main(Main.java:131)
Caused by: java.lang.RuntimeException: javassist.NotFoundException: T
    at com.sebastian_daschner.jaxrs_analyzer.model.types.Type.<init>(Type.java:35)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.LinkedList$LLSpliterator.forEachRemaining(LinkedList.java:1235)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    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.sebastian_daschner.jaxrs_analyzer.model.types.TypeExtractor.toTypeParameters(TypeExtractor.java:52)
    at com.sebastian_daschner.jaxrs_analyzer.model.types.Type.<init>(Type.java:64)
    ... 116 more
Caused by: javassist.NotFoundException: T
    at javassist.ClassPool.get(ClassPool.java:450)
    at com.sebastian_daschner.jaxrs_analyzer.model.types.TypeExtractor.toErasuredClass(TypeExtractor.java:39)
    at com.sebastian_daschner.jaxrs_analyzer.model.types.Type.<init>(Type.java:32)
    ... 125 more

Support Bean Validation Annotations on Parameters And BeanDefinitions

Support of JSR303 bean validation would be great.

For example In swagger.json:
Additionaly to name, required etc. support fields for each bean validation annotation:

parameters: 
  [
    {
      name: body,
      in: body,
      required: true,
      validation: {
         notNull: true,
         size: {
            min: 0,
            max: 10
         },
         max: ...,
         min: ... ,
         pattern: ....
         digits: ...
         decimalMin: ...
         decimalMax: ....
      }
    }
  ]

Same for the bean definitions section.

properties: 
  {
    fooField: 
    {
      type: string
      validation: {
         notNull: true,
         size: {
            min: 0,
            max: 10
         },
         max: ...,
         min: ... ,
         pattern: ....
         digits: ...
         decimalMin: ...
         decimalMax: ....
      }
    },
    ...
  }

Blacklist resource classes in configuration

It would be great if the analysis could be limited to specific classes only. So if you have different classes providing different APIs (but all in the same package), you are still able to generate different result files.

Output to AsciiDoc

Currently the output of analysis can be a Swagger output or plain text, it will be awesome to have support for AsciiDoc as well.
If you agree I can spend some time in future.

StackOverflowError

It was working for a month but I get the following issue now.
Exception in thread "main" java.lang.StackOverflowError.

at java.util.AbstractSet.hashCode(Unknown Source)
at com.sebastian_daschner.jaxrs_analyzer.model.elements.Element.hashCode(Element.java:92)
at java.util.Objects.hashCode(Unknown Source)
at java.util.HashMap$Node.hashCode(Unknown Source)
at java.util.AbstractMap.hashCode(Unknown Source)

The problem happens when you are returning JsonObject at your method , after i returned another type the error was gone.

Minor improvements

Including:

  • Java 8 default interfaces
  • Polymorphism: call actual implementation (for invokeinterface)
  • Support for Response#status(Response.StatusType)
  • Support for MultivalueMap (ResponseBuilder#replaceAll)
  • Support for Variant (all kinds) and use it in result
  • Refactor used type names (e.g. Constants)

Consider mandatory/optional params and include in Swagger

The definition

@GET
    @Path("{resourceId}/list")
    @Produces({MediaType.APPLICATION_JSON + ";charset=UTF-8", MediaType.APPLICATION_XML + ";charset=UTF-8"})
    public void list(@PathParam("resourceId") final Long resourceId, @QueryParam("orderIds") String orderIds,
            @Context final HttpHeaders headers, @Suspended AsyncResponse response) {

results in the following JSON:

"/restricted/shops/{resourceId}/list": {
            "get": {
                "consumes": [],
                "produces": ["application/json;charset=UTF-8", "application/xml;charset=UTF-8"],
                "parameters": [{
                        "name": "resourceId",
                        "in": "path",
                        "required": true,
                        "type": "integer"
                    }, {
                        "name": "orderIds",
                        "in": "query",
                        "required": true,
                        "type": "string"
                    }, {
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {}
                    }],

here, a couple of incorrect values:

  • BODY should not be required. Not sure, how to tell this to the analyzer.
  • orderIds are optional (there's no @NotNull annotation)
  • the PRODUCES should (imho) ignore the charset.

Enhance TypeAnalyzer for JSR-310 times

Hi Sebastian,

thanks for the great initiative! When trying v0.3 on my current project I get following error:

constituent[0]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/aether-api-1.0.0.v20140518.jar
constituent[1]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/aether-connector-basic-1.0.0.v20140518.jar
constituent[2]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/aether-impl-1.0.0.v20140518.jar
constituent[3]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/aether-spi-1.0.0.v20140518.jar
constituent[4]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/aether-transport-wagon-1.0.0.v20140518.jar
constituent[5]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/aether-util-1.0.0.v20140518.jar
constituent[6]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/aopalliance-1.0.jar
constituent[7]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/cdi-api-1.0.jar
constituent[8]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/commons-cli-1.2.jar
constituent[9]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/commons-io-2.2.jar
constituent[10]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/commons-lang-2.6.jar
constituent[11]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/guava-18.0.jar
constituent[12]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/javax.inject-1.jar
constituent[13]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/jsoup-1.7.2.jar
constituent[14]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/jsr250-api-1.0.jar
constituent[15]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/maven-aether-provider-3.2.5.jar
constituent[16]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/maven-artifact-3.2.5.jar
constituent[17]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/maven-compat-3.2.5.jar
constituent[18]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/maven-core-3.2.5.jar
constituent[19]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/maven-embedder-3.2.5.jar
constituent[20]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/maven-model-3.2.5.jar
constituent[21]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/maven-model-builder-3.2.5.jar
constituent[22]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/maven-plugin-api-3.2.5.jar
constituent[23]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/maven-repository-metadata-3.2.5.jar
constituent[24]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/maven-settings-3.2.5.jar
constituent[25]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/maven-settings-builder-3.2.5.jar
constituent[26]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/org.eclipse.sisu.inject-0.3.0.M1.jar
constituent[27]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/org.eclipse.sisu.plexus-0.3.0.M1.jar
constituent[28]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/plexus-cipher-1.7.jar
constituent[29]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/plexus-component-annotations-1.5.5.jar
constituent[30]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/plexus-interpolation-1.21.jar
constituent[31]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/plexus-sec-dispatcher-1.3.jar
constituent[32]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/plexus-utils-3.0.20.jar
constituent[33]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/sisu-guice-3.2.3-no_aop.jar
constituent[34]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/slf4j-api-1.7.5.jar
constituent[35]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/slf4j-simple-1.7.5.jar
constituent[36]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/wagon-file-2.8.jar
constituent[37]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/wagon-http-2.8-shaded.jar
constituent[38]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/wagon-http-shared-2.8.jar
constituent[39]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/lib/wagon-provider-api-2.8.jar
constituent[40]: file:/Users/dfranssen/work/tools/apache-maven-3.2.5/conf/logging/
---------------------------------------------------
Exception in thread "main" java.lang.StackOverflowError
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader$3.next(URLClassLoader.java:586)
    at java.net.URLClassLoader$3.hasMoreElements(URLClassLoader.java:611)
    at org.codehaus.plexus.classworlds.strategy.AbstractStrategy.addAll(AbstractStrategy.java:62)
    at org.codehaus.plexus.classworlds.strategy.AbstractStrategy.combineResources(AbstractStrategy.java:52)
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.getResources(SelfFirstStrategy.java:82)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.getResources(ClassRealm.java:300)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadResourcesFromImport(ClassRealm.java:503)
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.getResources(SelfFirstStrategy.java:78)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.getResources(ClassRealm.java:300)
    at java.util.ServiceLoader$LazyIterator.hasNextService(ServiceLoader.java:348)
    at java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:393)
    at java.util.ServiceLoader$1.hasNext(ServiceLoader.java:474)
    at javax.json.spi.JsonProvider.provider(JsonProvider.java:89)
    at javax.json.Json.createObjectBuilder(Json.java:266)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:135)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer$$Lambda$243/113653660.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeClass(TypeAnalyzer.java:138)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.analyzeInternal(TypeAnalyzer.java:112)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.addToObject(TypeAnalyzer.java:255)
    at com.sebastian_daschner.jaxrs_analyzer.analysis.results.TypeAnalyzer.lambda$analyzeClass$210(TypeAnalyzer.java:138)

Any ideas?

Kind regards,
Dirk Franssen

Support missing deployedDomain / basePath prefix

I have an application that is not bound to a single domain, but runs on multiple environments (also locally).

SwaggerUI has the behavior that the current server address and port is used automatically, if the element host is missing in swagger.json.

Therefore it would be useful, if the element host is not generated into swagger.json, if the deployedDomain element is missing, instead of using example.com.

Swagger will automatically use for example http://localhost:8080 or http://192.168.1.2 (hostname / IP, depending on the client).

The problem left is the application name, which is not used. The examples look like this
http://localhost:8080/resources/pet/... but should be
http://localhost:8080/APPLICATION_NAME/resources/pet/...

One possible solution would be to introduce a basePath prefix, which is the application name. So instead of resources it would become application-name/resources.

Edit: moved the issue to the correct project

Inheritance Not Respected in Request Body DTO

Sample code to reproduce:

public class Base {
  private String baseStr;
}
public class Derived extends Base {
  private String derivedStr;
}
@Path
public class Endpoint {

   @POST
   public Response createDerived(Derived derived) { . . . }
}

The generated rest-resources.txt only includes derivedStr;

[0.9] Analyzer generates weird definitions with more complex types

Hi, this is a bit copy pasta, but is related to swagger-api/swagger-codegen#2856

This code:

@Data
public class Company {
    @JsonIgnore
    private Long id;
    private String name;
    private String stockCode;
    private CompanyImages images = new CompanyImages();
    private String url;

    public Company() {
    }

    public Company(CompanyEntity entity) {
      ...
    }

    class CompanyImages {
        public String ceoImage;
        public String logoImage;
        public String bannerImage;
        public CompanyImages() {
        }
    }
}

generates:

{"swagger":"2.0","info":{"version":"0.1-SNAPSHOT","title":"api"},"host":"example.com","basePath":"/","schemes":["http"],"paths":{"/companies":{"get":{"consumes":[],"produces":["application/json"],"parameters":[],"responses":{"200":{"description":"OK","headers":{},"schema":{"type":"array","items":{"$ref":"#/definitions/NestedType"}}}}}},"/companies/{code}":{"get":{"consumes":[],"produces":["application/json"],"parameters":[{"name":"code","in":"path","required":true,"type":"string"}],"responses":{"200":{"description":"OK","headers":{}}}}}},"definitions":{"NestedType":{"properties":{"id":{"type":"number"},"name":{"type":"string"},"stockCode":{"type":"string"},"images":{"$ref":"#/definitions/NestedType"},"url":{"type":"string"}}}}}

But this code:

@Data
public class Company {
    @JsonIgnore
    private Long id;
    private String name;
    private String stockCode;
    private CompanyImages images = new CompanyImages();
    private String url;

    public Company() {
    }

    public Company(CompanyEntity entity) {
      ...
    }

    class CompanyImages {
        public URI ceoImage;
        public URI logoImage;
        public URI bannerImage;
        public CompanyImages() {
        }
    }
}

generates:

{"swagger":"2.0","info":{"version":"0.1-SNAPSHOT","title":"api"},"host":"example.com","basePath":"/","schemes":["http"],"paths":{"/companies":{"get":{"consumes":[],"produces":["application/json"],"parameters":[],"responses":{"200":{"description":"OK","headers":{},"schema":{"type":"array","items":{"$ref":"#/definitions/NestedType"}}}}}},"/companies/{code}":{"get":{"consumes":[],"produces":["application/json"],"parameters":[{"name":"code","in":"path","required":true,"type":"string"}],"responses":{"200":{"description":"OK","headers":{}}}}}},"definitions":{"NestedType_2":{"properties":{}},"NestedType":{"properties":{"id":{"type":"number"},"name":{"type":"string"},"stockCode":{"type":"string"},"images":{"$ref":"#/definitions/NestedType"},"url":{"type":"string"}}}}}

Note the empty "NestedType_2" definition.

Also why does "images" property have a definition of NestedType which is meant to be Company?

Any help is appreciated, thanks for your time.

Daryl

All definitions are named definition_*

I'm using jaxrs-analyzer as a command line tool to generate the swagger.json which seems to work good, but unfortunately all my definitions are called definition_1, defintion_2 ... instead of the class names. Is this there a way to change this?

Incorrect Response Model Generation

I have a few classes like this (incl. getters/setters):

public class ReleaseFamily implements Serializable {
    private String revision;
    private Product product;
    private Map<Integer, Release> releases = new HashMap<Integer, Release>();
}
public class Product implements Serializable {
    private String productName;
    private String company;
    private Long version;
}

When running jaxrs-analyzer now, I got the following Swagger model:

        "ReleaseFamily": {
            "properties": {
                "revision": {
                    "type": "string"
                },
                "product": {
                    "$ref": "#/definitions/NestedType_2"
                },
                "releases": {
                    "$ref": "#/definitions/NestedType_2"
                }
            }
        },
        "Product": {
            "properties": {
                "productName": {
                    "type": "string"
                },
                "company": {
                    "type": "string"
                },
                "version": {
                    "type": "number"
                }
            }
        },
        "NestedType_2": {
            "properties": {
                "somethingTotallyDifferent": {
                    "type": "string"
                },
                "alsoSomethingElse": {
                    "type": "string"
                },
                "somethingElse": {
                    "type": "string"
                }
            }
        },

So both "Product" and "Map<Integer, Release>" are defined as "NestedType_2" which contains totally wrong attributes (from some entities not at all involved here).

Prevent infinite loop on method simulation & type resolution

When executing this plugin (version 0.6) on our jax-rs api, I get a java.lang.StackOverflowError.

Exception in thread "main" java.lang.StackOverflowError
at java.util.Vector.(Vector.java:148)
at java.util.Vector.(Vector.java:157)
at java.util.Stack.(Stack.java:53)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.MethodSimulator.(MethodSimulator.java:45)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.InjectableArgumentMethodSimulator.(InjectableArgumentMethodSimulator.java:33)
at com.sebastian_daschner.jaxrs_analyzer.model.methods.ProjectMethod.invoke(ProjectMethod.java:47)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.MethodSimulator.simulateInvoke(MethodSimulator.java:177)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.MethodSimulator.simulate(MethodSimulator.java:94)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.MethodSimulator$$Lambda$199/975239896.accept(Unknown Source)
at java.util.LinkedList$LLSpliterator.forEachRemaining(LinkedList.java:1235)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.MethodSimulator.simulateInternal(MethodSimulator.java:74)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.InjectableArgumentMethodSimulator.simulate(InjectableArgumentMethodSimulator.java:50)
...
at com.sebastian_daschner.jaxrs_analyzer.model.methods.ProjectMethod.invoke(ProjectMethod.java:47)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.MethodSimulator.simulateInvoke(MethodSimulator.java:177)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.MethodSimulator.simulate(MethodSimulator.java:94)

Preserve order of parameters when creating swagger spec

I'm observing the output of the spec to hold parameters ordered alphabetically. This can lead to unintentional api breaks by simply adding a new parameter.

Swagger-codegen will generate params in the order they are specified in the spec, except required: false parameters.

Appreciate that this may break existing usage of the analyzer, but hopefully this can be marked as a breaking change in the 0.10.0?

Edit: looks like problem lies here SwaggerBackend.java:141 with mapKeyComparator().

    private JsonArrayBuilder buildParameters(final ResourceMethod method) {
        final MethodParameters parameters = method.getMethodParameters();
        final JsonArrayBuilder parameterBuilder = Json.createArrayBuilder();

        parameters.getPathParams().entrySet().stream().sorted(mapKeyComparator()).forEach(e -> parameterBuilder.add(buildParameter(e, "path")));
        parameters.getHeaderParams().entrySet().stream().sorted(mapKeyComparator()).forEach(e -> parameterBuilder.add(buildParameter(e, "header")));
        parameters.getQueryParams().entrySet().stream().sorted(mapKeyComparator()).forEach(e -> parameterBuilder.add(buildParameter(e, "query")));
        parameters.getFormParams().entrySet().stream().sorted(mapKeyComparator()).forEach(e -> parameterBuilder.add(buildParameter(e, "formData")));

        if (method.getRequestBody() != null) {
            parameterBuilder.add(Json.createObjectBuilder().add("name", "body").add("in", "body").add("required", true)
                    .add("schema", schemaBuilder.build(method.getRequestBody())));
        }
        return parameterBuilder;
    }

Support tags for swagger

It would be nice if the jaxrs-analyzer would support Swagger tags. I tried the Maven plugin v0.9 and all resources are listed under the default tag.

In my opinion the API would be better readable, if the first path element after the basePath would be used as a tag.

For example like in the petstore: http://petstore.swagger.io/v2/swagger.json

Host + BasePath are: http://petstore.swagger.io/v2/
http://petstore.swagger.io/v2/store/inventory -> new tag "store"
http://petstore.swagger.io/v2/pet/findByStatus -> new tag "pet"

To provide backward compatibility this could be provided as an optional switch.

Change HOST constant to a variable in analyzer and maven plugin

In the SwaggerBackend the host is a constant:

public class SwaggerBackend implements Backend {

    private static final String SWAGGER_VERSION = "2.0";
    private static final String HOST = "example.com";

So it always ends up in the json as:

{"swagger":"2.0","info":{"version":"0.1-SNAPSHOT","title":"project"},"host":"example.com", ... }

If you use the swagger ui the "try it out!" feature will use example.com. It would be nice if you could specify the host through a maven configuration variable.

swagger.yml output

how to use this analyzer, and the output is swagger's yml, so we can open it in swagger ui

[0.9] Classpath does not extract Class-Path attribute in jar Manifest.

When developing on Windows, users may run into command length limitations due to large classpaths.

We can get around this by creating a "pathing jar" to declare classpaths to the JVM using a manifest.

jaxrs-analyzer does not use the jvm classpath, instead opting to have classpath passed in via a separate -cp parameter. They get added into the javassist classpool without any regard for Class-Path

    /**
     * Adds the location to the class pool.
     *
     * @param location The location of a jar file or a directory
     */
    private void addToClassPool(final Path location) {
        if (!location.toFile().exists())
            throw new IllegalArgumentException("The location '" + location + "' does not exist!");
        try {
            ClassPool.getDefault().insertClassPath(location.toString());
        } catch (NotFoundException e) {
            throw new IllegalArgumentException("The location '" + location + "' could not be loaded!", e);
        }

    }

An example of loading Class-Path can be found in the links below. 1 uses URLClassLoader's default behaviour of addURL (doesn't seem documented, but should adhere to the manifest) or use introspection.

Will submit a PR soonish.

Reference
Solution 1
Solution 2

Enable sorting in all backend formats

I'd like to use the jaxrs-analyzer output to create a diff on different API versions, which works quite well in most cases. Unfortunately in some cases the order of the status codes (and I think also the URLs) in the output differs (I guess due to refactorings in our code, which change their order of appereance).
It would be nice to be able to sort the output (URLs alphabetical, status codes by number) to make them comparable.

Support For Generics

It would be great if generic types in API responses are supported. A lot of API responses are usually made up of generic types.

Example:

public Response getUsers() {
   List<User> users = someList;
   return Response.ok(users).build();
}

javassist.NotFoundException: T

I am using the 0.8 version. And consistently getting the above as the root cause.

We are using lots of generics in our implementation. I can send the complete maven log if that would be helpful.

Here is a sample stack trace:

[ERROR] Could not analyze the method: javassist.CtMethod@67d1e6bb[public updateOrganization (Lcom/gotransverse/tract/api/dto/party/OrganizationDTO;Ljava/lang/String;)Ljavax/ws/rs/core/Response;]
[DEBUG] java.lang.RuntimeException: java.lang.RuntimeException: javassist.NotFoundException: T
at com.sebastian_daschner.jaxrs_analyzer.model.types.Type.(Type.java:66)
at com.sebastian_daschner.jaxrs_analyzer.model.types.Type.(Type.java:49)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.collection.LoadStoreInstructionBuilder.getType(LoadStoreInstructionBuilder.java:117)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.collection.LoadStoreInstructionBuilder.lambda$buildVariableTypes$146(LoadStoreInstructionBuilder.java:86)
at java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:110)
at java.util.stream.IntPipeline$Head.forEach(IntPipeline.java:557)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.collection.LoadStoreInstructionBuilder.buildVariableTypes(LoadStoreInstructionBuilder.java:86)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.collection.LoadStoreInstructionBuilder.(LoadStoreInstructionBuilder.java:51)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.collection.LoadStoreInstructionBuilder.buildVariableTypes(LoadStoreInstructionBuilder.java:86)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.collection.LoadStoreInstructionBuilder.(LoadStoreInstructionBuilder.java:51)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.collection.ByteCodeCollector.initializeBuilders(ByteCodeCollector.java:96)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.collection.ByteCodeCollector.buildInstructions(ByteCodeCollector.java:59)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.methods.MethodContentAnalyzer.interpretRelevantInstructions(MethodContentAnalyzer.java:58)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.methods.MethodContentAnalyzer.addProjectMethods(MethodContentAnalyzer.java:113)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.methods.MethodContentAnalyzer.findProjectMethods(MethodContentAnalyzer.java:88)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.methods.ResourceMethodContentAnalyzer.analyze(ResourceMethodContentAnalyzer.java:63)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.methods.MethodAnalyzer.analyzeMethodContent(MethodAnalyzer.java:236)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.methods.MethodAnalyzer.analyzeInternal(MethodAnalyzer.java:157)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.methods.MethodAnalyzer.analyze(MethodAnalyzer.java:78)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.classes.ClassAnalyzer.analyzeInternal(ClassAnalyzer.java:121)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.classes.ClassAnalyzer.analyze(ClassAnalyzer.java:65)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
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.sebastian_daschner.jaxrs_analyzer.analysis.ProjectAnalyzer.analyze(ProjectAnalyzer.java:84)
at com.sebastian_daschner.jaxrs_analyzer.JAXRSAnalyzer.analyze(JAXRSAnalyzer.java:69)
at com.sebastian_daschner.jaxrs_analyzer.maven.JAXRSAnalyzerMojo.execute(JAXRSAnalyzerMojo.java:151)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.RuntimeException: javassist.NotFoundException: T
at com.sebastian_daschner.jaxrs_analyzer.model.types.Type.(Type.java:35)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.LinkedList$LLSpliterator.forEachRemaining(LinkedList.java:1235)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
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.sebastian_daschner.jaxrs_analyzer.model.types.TypeExtractor.toTypeParameters(TypeExtractor.java:52)
at com.sebastian_daschner.jaxrs_analyzer.model.types.Type.(Type.java:64)
... 58 more
Caused by: javassist.NotFoundException: T
at javassist.ClassPool.get(ClassPool.java:450)
at com.sebastian_daschner.jaxrs_analyzer.model.types.TypeExtractor.toErasuredClass(TypeExtractor.java:39)
at com.sebastian_daschner.jaxrs_analyzer.model.types.Type.(Type.java:32)
... 67 more

Support for JAXB Annotations

Some DTOs expose API fields as different names from their backing bean field name. Also, things like date formats are in many cases controlled by JAXB annotations.

Example:

@XmlRootElement()
public class Person {
    @XmlElement(name = "address")
    private String primaryAddress;
}

Superclass method not found

It seems that parsing the classes directory is not working as expected.
I am running on Yosemite with Java 8
$ java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

$ java -jar /Users/jeff/.m2/repository/com/sebastian-daschner/jaxrs-analyzer/0.5/jaxrs-analyzer-0.5.jar -b asciidoc -n TRACT -v 1.28 -d my.tractbilling.com -X target/classes
Exception in thread "main" java.lang.NullPointerException
at com.sebastian_daschner.jaxrs_analyzer.analysis.ProjectAnalyzer.addDirectoryClasses(ProjectAnalyzer.java:149)
at com.sebastian_daschner.jaxrs_analyzer.analysis.ProjectAnalyzer.addDirectoryClasses(ProjectAnalyzer.java:151)
at com.sebastian_daschner.jaxrs_analyzer.analysis.ProjectAnalyzer.addDirectoryClasses(ProjectAnalyzer.java:151)
at com.sebastian_daschner.jaxrs_analyzer.analysis.ProjectAnalyzer.addProjectPath(ProjectAnalyzer.java:113)
at com.sebastian_daschner.jaxrs_analyzer.analysis.ProjectAnalyzer$$Lambda$17/1368884364.accept(Unknown Source)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at com.sebastian_daschner.jaxrs_analyzer.analysis.ProjectAnalyzer.analyze(ProjectAnalyzer.java:73)
at com.sebastian_daschner.jaxrs_analyzer.JAXRSAnalyzer.analyze(JAXRSAnalyzer.java:69)
at com.sebastian_daschner.jaxrs_analyzer.Main.main(Main.java:131)

Support multiple @Produces media types

This annotation shows up with only the first listed media type in the generated rest-resources.txt:

@produces ({MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON, MediaType.APPLICATION,XML})

Generated plaintext:
Response:
Content-Type: text/plain

Validation errors on generated Swagger JSON

I generated following swagger json from my sample project, however on loading this up on Swagger online editor, it gives following validation errors. Is this a specification mismatch issue or something?

Swagger JSON:
{
"basePath": "/",
"definitions": {
"definition#1": {
"properties": {
"cause": {
"type": "string"
},
"error": {
"type": "string"
},
"errorCode": {
"type": "string"
}
}
},
"definition#2": {
"properties": {
"cause": {
"type": "string"
},
"error": {
"type": "string"
},
"errorCode": {
"type": "string"
}
}
}
},
"host": "example.com",
"info": {
"title": "sample-service",
"version": "1.0.0-SNAPSHOT"
},
"paths": {
"/api/health": {
"get": {
"consumes": [],
"parameters": [],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "OK",
"headers": {}
}
}
}
},
"/api/v1/resourceA": {
"post": {
"consumes": [
"application/json"
],
"parameters": [
{
"in": "header",
"name": "X-Interface-Name",
"required": true,
"type": "string"
},
{
"in": "header",
"name": "X-ABC-Client-App-ID",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "string"
}
}
],
"produces": [],
"responses": {
"204": {
"description": "No Content",
"headers": {}
},
"400": {
"description": "Bad Request",
"headers": {},
"schema": {
"$ref": "definition#1"
}
},
"500": {
"description": "Internal Server Error",
"headers": {},
"schema": {
"$ref": "definition#2"
}
}
}
}
}
},
"schemas": [
"http"
],
"swagger": "2.0"
}

Validation Errors

βœ– Swagger Error
Additional properties not allowed: schemas
Details
Object
code: "OBJECT_ADDITIONAL_PROPERTIES"
message: "Additional properties not allowed: schemas"
path: Array [0]
level: 900

NPE on analyzing method

Hi,

I'm getting a lot of NullPointerException errors when analyzing our code. Running with -X I can see errors like this:

[ERROR] Could not analyze the method: javassist.CtMethod@a0629d5c[public abstract partialUpdateCompanyMembership (Ljava/lang/String;Ljava/lang/Str
ing;Lcom/fasterxml/jackson/databind/JsonNode;)Lc/a/a/a/v/v/UserCompanyRelWS;]
[DEBUG] java.lang.NullPointerException
        at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.collection.ByteCodeCollector.initializeBuilders(ByteCodeCollector.java:92)
        at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.collection.ByteCodeCollector.buildInstructions(ByteCodeCollector.java:59)

One thing of interest is that the annotations are defined on an interface so that implementations don't have to repeat them. I wonder if that could explain why the methodInfo.getCodeAttribute() returns a null?

Our build also produces some model classes into one module, and service classes into another. How can I tell jaxrs-analyzer that it should look into two directories for classes? Something like this:

api/target/classes/<model>
service/target/classes/<services>

Finally, I get a StackOverflowError shortly after, but I'd like to first figure out the problems above as it might be a side effect.

Thanks!

Respect @DefaultValue annotation for parameters and Swagger output

@DefaultValue("") @QueryParam("priceSensitive") String priceSensitive

should yield

          {
            "name": "priceSensitive",
            "in": "query",
            "required": false,
            "type": "string"
          }

@QueryParam("priceSensitive") String priceSensitive

should yield

          {
            "name": "priceSensitive",
            "in": "query",
            "required": true,
            "type": "string"
          }

Otuput to LibreOffice

Currently the output of analysis can be a Swagger output or plain text, it will be awesome to have support for LibreOffice as well.
If you agree I can spend some time in future.

Make Analyzer usable without whole JEE 7 API (Exception on init because of JSON-P loading)

Just tried again with the 0.7-SNAPSHOT.

If this error occurs b/c of something in our API, it would be great to have an idea of what/where etc.

Here is the error. Let me know if you need anything else.

[ERROR] Failed to execute goal com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT:analyze-jaxrs (default) on project tract-api: Execution default of goal com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT:analyze-jaxrs failed: An API incompatibility was encountered while executing com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT:analyze-jaxrs: java.lang.ExceptionInInitializerError: null
[ERROR] -----------------------------------------------------
[ERROR] realm = plugin>com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/Users/jeff/.m2/repository/com/sebastian-daschner/jaxrs-analyzer-maven-plugin/0.7-SNAPSHOT/jaxrs-analyzer-maven-plugin-0.7-SNAPSHOT.jar
[ERROR] urls[1] = file:/Users/jeff/.m2/repository/javax/json/javax.json-api/1.0/javax.json-api-1.0.jar
[ERROR] urls[2] = file:/Users/jeff/.m2/repository/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA.jar
[ERROR] urls[3] = file:/Users/jeff/.m2/repository/com/sebastian-daschner/jaxrs-analyzer/0.7-SNAPSHOT/jaxrs-analyzer-0.7-SNAPSHOT.jar
[ERROR] urls[4] = file:/Users/jeff/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar
[ERROR] urls[5] = file:/Users/jeff/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar
[ERROR] urls[6] = file:/Users/jeff/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.0/org.eclipse.sisu.inject-0.3.0.jar
[ERROR] urls[7] = file:/Users/jeff/.m2/repository/org/apache/maven/maven-builder-support/3.3.3/maven-builder-support-3.3.3.jar
[ERROR] urls[8] = file:/Users/jeff/.m2/repository/com/google/guava/guava/18.0/guava-18.0.jar
[ERROR] urls[9] = file:/Users/jeff/.m2/repository/org/eclipse/aether/aether-util/1.0.2.v20150114/aether-util-1.0.2.v20150114.jar
[ERROR] urls[10] = file:/Users/jeff/.m2/repository/org/sonatype/sisu/sisu-guice/3.2.5/sisu-guice-3.2.5-no_aop.jar
[ERROR] urls[11] = file:/Users/jeff/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
[ERROR] urls[12] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.21/plexus-interpolation-1.21.jar
[ERROR] urls[13] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.20/plexus-utils-3.0.20.jar
[ERROR] urls[14] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
[ERROR] urls[15] = file:/Users/jeff/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
[ERROR] urls[16] = file:/Users/jeff/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import from realm ClassRealm[maven.api, parent: null]]
[ERROR]
[ERROR] -----------------------------------------------------: javassist.NotFoundException: javax.json.Json
[ERROR] -> [Help 1]

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT:analyze-jaxrs (default) on project tract-api: Execution default of goal com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT:analyze-jaxrs failed: An API incompatibility was encountered while executing com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT:analyze-jaxrs: java.lang.ExceptionInInitializerError: null

realm = plugin>com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/Users/jeff/.m2/repository/com/sebastian-daschner/jaxrs-analyzer-maven-plugin/0.7-SNAPSHOT/jaxrs-analyzer-maven-plugin-0.7-SNAPSHOT.jar
urls[1] = file:/Users/jeff/.m2/repository/javax/json/javax.json-api/1.0/javax.json-api-1.0.jar
urls[2] = file:/Users/jeff/.m2/repository/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA.jar
urls[3] = file:/Users/jeff/.m2/repository/com/sebastian-daschner/jaxrs-analyzer/0.7-SNAPSHOT/jaxrs-analyzer-0.7-SNAPSHOT.jar
urls[4] = file:/Users/jeff/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar
urls[5] = file:/Users/jeff/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar
urls[6] = file:/Users/jeff/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.0/org.eclipse.sisu.inject-0.3.0.jar
urls[7] = file:/Users/jeff/.m2/repository/org/apache/maven/maven-builder-support/3.3.3/maven-builder-support-3.3.3.jar
urls[8] = file:/Users/jeff/.m2/repository/com/google/guava/guava/18.0/guava-18.0.jar
urls[9] = file:/Users/jeff/.m2/repository/org/eclipse/aether/aether-util/1.0.2.v20150114/aether-util-1.0.2.v20150114.jar
urls[10] = file:/Users/jeff/.m2/repository/org/sonatype/sisu/sisu-guice/3.2.5/sisu-guice-3.2.5-no_aop.jar
urls[11] = file:/Users/jeff/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
urls[12] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.21/plexus-interpolation-1.21.jar
urls[13] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.20/plexus-utils-3.0.20.jar
urls[14] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
urls[15] = file:/Users/jeff/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
urls[16] = file:/Users/jeff/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
Number of foreign imports: 1
import: Entry[import from realm ClassRealm[maven.api, parent: null]]


at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default of goal com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT:analyze-jaxrs failed: An API incompatibility was encountered while executing com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT:analyze-jaxrs: java.lang.ExceptionInInitializerError: null

realm = plugin>com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/Users/jeff/.m2/repository/com/sebastian-daschner/jaxrs-analyzer-maven-plugin/0.7-SNAPSHOT/jaxrs-analyzer-maven-plugin-0.7-SNAPSHOT.jar
urls[1] = file:/Users/jeff/.m2/repository/javax/json/javax.json-api/1.0/javax.json-api-1.0.jar
urls[2] = file:/Users/jeff/.m2/repository/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA.jar
urls[3] = file:/Users/jeff/.m2/repository/com/sebastian-daschner/jaxrs-analyzer/0.7-SNAPSHOT/jaxrs-analyzer-0.7-SNAPSHOT.jar
urls[4] = file:/Users/jeff/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar
urls[5] = file:/Users/jeff/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar
urls[6] = file:/Users/jeff/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.0/org.eclipse.sisu.inject-0.3.0.jar
urls[7] = file:/Users/jeff/.m2/repository/org/apache/maven/maven-builder-support/3.3.3/maven-builder-support-3.3.3.jar
urls[8] = file:/Users/jeff/.m2/repository/com/google/guava/guava/18.0/guava-18.0.jar
urls[9] = file:/Users/jeff/.m2/repository/org/eclipse/aether/aether-util/1.0.2.v20150114/aether-util-1.0.2.v20150114.jar
urls[10] = file:/Users/jeff/.m2/repository/org/sonatype/sisu/sisu-guice/3.2.5/sisu-guice-3.2.5-no_aop.jar
urls[11] = file:/Users/jeff/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
urls[12] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.21/plexus-interpolation-1.21.jar
urls[13] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.20/plexus-utils-3.0.20.jar
urls[14] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
urls[15] = file:/Users/jeff/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
urls[16] = file:/Users/jeff/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
Number of foreign imports: 1
import: Entry[import from realm ClassRealm[maven.api, parent: null]]


at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:183)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 20 more

Caused by: org.apache.maven.plugin.PluginContainerException: An API incompatibility was encountered while executing com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT:analyze-jaxrs: java.lang.ExceptionInInitializerError: null

realm = plugin>com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.7-SNAPSHOT
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/Users/jeff/.m2/repository/com/sebastian-daschner/jaxrs-analyzer-maven-plugin/0.7-SNAPSHOT/jaxrs-analyzer-maven-plugin-0.7-SNAPSHOT.jar
urls[1] = file:/Users/jeff/.m2/repository/javax/json/javax.json-api/1.0/javax.json-api-1.0.jar
urls[2] = file:/Users/jeff/.m2/repository/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA.jar
urls[3] = file:/Users/jeff/.m2/repository/com/sebastian-daschner/jaxrs-analyzer/0.7-SNAPSHOT/jaxrs-analyzer-0.7-SNAPSHOT.jar
urls[4] = file:/Users/jeff/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar
urls[5] = file:/Users/jeff/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar
urls[6] = file:/Users/jeff/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.0/org.eclipse.sisu.inject-0.3.0.jar
urls[7] = file:/Users/jeff/.m2/repository/org/apache/maven/maven-builder-support/3.3.3/maven-builder-support-3.3.3.jar
urls[8] = file:/Users/jeff/.m2/repository/com/google/guava/guava/18.0/guava-18.0.jar
urls[9] = file:/Users/jeff/.m2/repository/org/eclipse/aether/aether-util/1.0.2.v20150114/aether-util-1.0.2.v20150114.jar
urls[10] = file:/Users/jeff/.m2/repository/org/sonatype/sisu/sisu-guice/3.2.5/sisu-guice-3.2.5-no_aop.jar
urls[11] = file:/Users/jeff/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
urls[12] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.21/plexus-interpolation-1.21.jar
urls[13] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.20/plexus-utils-3.0.20.jar
urls[14] = file:/Users/jeff/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
urls[15] = file:/Users/jeff/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
urls[16] = file:/Users/jeff/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
Number of foreign imports: 1
import: Entry[import from realm ClassRealm[maven.api, parent: null]]


at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:181)
... 21 more

Caused by: java.lang.ExceptionInInitializerError
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.KnownResponseResultMethod.(KnownResponseResultMethod.java:52)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.MethodPool.(MethodPool.java:58)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.MethodPool.(MethodPool.java:44)
at com.sebastian_daschner.jaxrs_analyzer.analysis.bytecode.simulation.MethodSimulator.(MethodSimulator.java:43)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.methods.ResourceMethodContentAnalyzer.(ResourceMethodContentAnalyzer.java:47)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.methods.MethodAnalyzer.(MethodAnalyzer.java:57)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.classes.ClassAnalyzer.analyzeInternal(ClassAnalyzer.java:117)
at com.sebastian_daschner.jaxrs_analyzer.analysis.project.classes.ClassAnalyzer.analyze(ClassAnalyzer.java:65)
at com.sebastian_daschner.jaxrs_analyzer.analysis.ProjectAnalyzer$$Lambda$20/1078814676.apply(Unknown Source)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
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.sebastian_daschner.jaxrs_analyzer.analysis.ProjectAnalyzer.analyze(ProjectAnalyzer.java:84)
at com.sebastian_daschner.jaxrs_analyzer.JAXRSAnalyzer.analyze(JAXRSAnalyzer.java:69)
at com.sebastian_daschner.jaxrs_analyzer.maven.JAXRSAnalyzerMojo.execute(JAXRSAnalyzerMojo.java:118)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
... 21 more
Caused by: java.lang.RuntimeException: javassist.NotFoundException: javax.json.Json
at com.sebastian_daschner.jaxrs_analyzer.model.types.Type.(Type.java:35)
at com.sebastian_daschner.jaxrs_analyzer.model.types.Types.(Types.java:69)
... 41 more
Caused by: javassist.NotFoundException: javax.json.Json
at javassist.ClassPool.get(ClassPool.java:452)
at com.sebastian_daschner.jaxrs_analyzer.model.types.TypeExtractor.toErasuredClass(TypeExtractor.java:39)
at com.sebastian_daschner.jaxrs_analyzer.model.types.Type.(Type.java:32)
... 42 more
[ERROR]
[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/PluginContainerException

Error runnign jaxrs-analyzer

Hi I am trying to use JAX-RS Analyzer to this project:

https://github.com/lordofthejars/starwars

when I run:

java -jar /Users/lord/git/starwars/build/jaxrs-analyzer.jar -b asciidoc -o /Users/lord/git/starwars/build/starwarsendpoints.adoc /Users/lord/git/starwars/build/classes/main

I get next message:

Could not analyze class field org.starwars.AverageFormatter

Any idea why this is happening?

Consider enum parameters as String values in backends

Seems like java enum type parameters are not converted into valid swagger.json format:

@QueryParam("level") EnumLogLevel

where EnumLogLevel is:

public enum EnumLogLevel {
        FATAL,
        ERROR,
        WARN,
        INFO,
        DEBUG,
        TRACE,
        ALL
    }

results in:

{
            "name": "level",
            "in": "query",
            "required": true,
            "type": "object"
}

Tested with swagger editor (http://editor.swagger.io/#/) -> error output:

...
type:  "Swagger Error"
description:  "Not a valid parameter definition"

Swagger json generated by maven plugin: 0.9

Text docdumentation

With the approach to use bytecode analysis, are there any plans on the roadmap to support markdown or javadoc or annotations for adding descriptive content to the docs?

Consider inheritance in type analysis

The fields of a super-class are not listed in the model representation both in Response and in Request parameters.

For ex. I have

  public Response createUser( Guest guest, @Context UriInfo uriInfo )
  {
      ...
     return Response.ok(nGuest).build();
  }

where Guest extends the class User.

In the json representation of the Response and Parameter request only the specific attributes of Guest are listed but not the attributes defined in User (like firstName, lastName, ...).

example

Support For Multiple Classpath Entries

Many web projects contain dependencies which themselves contain JAX-RS endpoints. Would be great if this analyzer can (in addition to reading sources from multiple paths) unpack archives and scan for classes to analyze.

Support for Javadoc Comments

Generated API has no line of text describing what each operation does. A good case for javadoc! However due to the fact that this analyzer gathers data from bytecode, it does not have the Javadoc available. A possibility might be for the analyzer to gather some data from the source, invoke a build process and gather the remaining information from bytecode. Another option albeit less attractive would be to have a special annotation carry the comment into bytecode.

Could not analyze the method: javassist.CtMethod

I do have an EJB (@stateless) in conjunction with a @path annotation to handle the restful requests. A short snippet of the interface:

import javax.ws.rs.core.*;
import javax.ws.rs.*;

@Stateless
@Path("/")
public class SomeService {
    @GET
    @Path("/main")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getMain() {
// some stuff
        return Response.ok(resultJson).build();
    }
}

It's an maven-multi-module project, but I've added the plugin-configuration (exactly as described in the documentation) into the module that contains that class.

The only output I could see:

[INFO] analyzing JAX-RS resources, using Plain text backend
[INFO] Could not analyze the method: javassist.CtMethod@b7a636e[public getMain ()Ljavax/ws/rs/core/Response;]

no further output or error or anything at all. Is there any chance to provide more info to resolve this issue?

Support For JavaBean getter/setter

The following class exposes the firstname field through the getFirstname() method as "givenName"

@XmlRootElement()
public class User {
   private String firstname;
   private String lastname;

   @XmlElement(name = "givenName")
   public String getFirstname() {
      return firstname;
   }
}

Maven log shows the following error: "Could not analyze the method: javassist.CtMethod."

Testing fix for #30 (which now does not fail the build), but the file generated is not correct and the maven log file shows the above error (among others).

Here is the maven configuration.

[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal: com.sebastian-daschner:jaxrs-analyzer-maven-plugin:0.9-SNAPSHOT:analyze-jaxrs ()
[DEBUG] Style: Regular
[DEBUG] Configuration:

${jaxrs-analyzer.backend}
${project.build.directory}
${jaxrs-analyzer.deployedDomain}
${project.build.outputDirectory}
${project}
${project.remotePluginRepositories}
${repositorySystemSession}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.