-
Notifications
You must be signed in to change notification settings - Fork 248
JAX RS Application
typescript-generator can automatically discover JSON classes used in JAX-RS REST service. For example from this REST resource class:
@Path("user")
public class UserResource {
@GET
public User getCurrentUser() {}
}
it can discover JSON class User
.
To use this feature pass JAX-RS application class to typescript-generator and it will get a list of resource classes from this application. Example JAX-RS application:
public class TestApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
return new LinkedHashSet<Class<?>>(Arrays.asList(
UserResource.class
));
}
}
If you are using Maven add <classesFromJaxrsApplication>
element to typescript-generator configuration for example like this:
<configuration>
<classesFromJaxrsApplication>cz.habarta.TestApplication</classesFromJaxrsApplication>
</configuration>
Application class must have no-argument constructor which should not have any side-effects like communication with database, starting new threads etc.
If your application has constructor with parameters you can add second constructor (may be
private
) or second application (possibly with inheritance).
Application class doesn't have to derive directly from javax.ws.rs.core.Application
, it can derive from some framework class like org.glassfish.jersey.server.ResourceConfig
in Jersey.
If there is a guice
version conflict between your application and typescript-generator-maven-plugin either
- remove guice initialization from no-argument constructor or
- add following dependency to the plugin.
<plugin>
<groupId>cz.habarta.typescript-generator</groupId>
<artifactId>typescript-generator-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.sonatype.sisu</groupId>
<artifactId>sisu-guice</artifactId>
<version>3.2.6</version>
</dependency>
</dependencies>
</plugin>