I tried the sample. It doesn't work either - I think it must be revised.
When I try to run jetty the index page is rendered without any CSS or JS and doesn't work. The swagger.json generated doesn't describe the /store resource. I tried to copy the method placeOrder into PetResource.java, since it has my scenario with a @Beanparam and a body, but it never shows on the swagger.json. It seems swagger is only processing methods with @GET, @PUT and @POST are ignored in this sample. On Thursday, April 6, 2017 at 11:11:26 AM UTC-3, tony tam wrote: > > Can you look at this example? > > > https://github.com/swagger-api/swagger-samples/blob/3f18a37866083d3ee6c7e4e4161e26a5c976309d/java/java-jersey2/src/main/java/io/swagger/sample/resource/PetStoreResource.java#L41 > > On Apr 6, 2017, at 9:48 AM, Théo A. Monteiro <[email protected] > <javascript:>> wrote: > > Moving the annotations to the getters made no difference. I tried with > both swagger-jaxrs and swagger-jersey2-jaxrs. > > On Thursday, April 6, 2017 at 10:20:38 AM UTC-3, tony tam wrote: >> >> Try putting the annotation on the getter vs. the private field. >> >> On Apr 6, 2017, at 9:19 AM, Théo A. Monteiro <[email protected]> >> wrote: >> >> In MyParams.java in the example the properties are @HeaderParam and >> @Context. Why swagger-core is parsing as another body? >> >> On Thursday, April 6, 2017 at 10:11:32 AM UTC-3, tony tam wrote: >>> >>> You need to set your @BeanParam properties to be either @HeaderParam, >>> @PathParam or @QueryParam. Without one of these modifiers, it will be >>> treated as a body parameter. In the definition there can be only one body >>> param >>> >>> On Apr 6, 2017, at 9:06 AM, Théo A. Monteiro <[email protected]> >>> wrote: >>> >>> Hi, >>> >>> Swagger is creating two body fields when I try to use a @BeanParam and a >>> JSON body. >>> >>> >>> <https://lh3.googleusercontent.com/-q-OwrlNumTE/WOY8Nq3dE7I/AAAAAAAAfHY/BZkiVTYcaf8tp3nM-uUOhq2BIZ-GuwytgCLcB/s1600/Screenshot%2Bfrom%2B2017-04-06%2B09-58-55.png> >>> >>> <https://lh3.googleusercontent.com/-q-OwrlNumTE/WOY8Nq3dE7I/AAAAAAAAfHY/BZkiVTYcaf8tp3nM-uUOhq2BIZ-GuwytgCLcB/s1600/Screenshot%2Bfrom%2B2017-04-06%2B09-58-55.png> >>> >>> I tried to use swagger-jaxrs and swagger-jersey2-jaxrs [1][2], but both >>> result the same problem. Is there any way to circumvent this? >>> >>> [1]. >>> https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-JAX-RS-Project-Setup-1.5.X >>> [2]. https://github.com/swagger-api/swagger-core/issues/1720 >>> >>> This is a PoC that shows the problem: >>> >>> *pom.xml* >>> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi=" >>> http://www.w3.org/2001/XMLSchema-instance" >>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 >>> http://maven.apache.org/xsd/maven-4.0.0.xsd"> >>> <modelVersion>4.0.0</modelVersion> >>> <groupId>org.example</groupId> >>> <artifactId>unrested</artifactId> >>> <version>0.0.1-SNAPSHOT</version> >>> <packaging>war</packaging> >>> >>> <properties> >>> <version.jboss.bom.eap>7.0.4.GA <http://7.0.4.ga/> >>> </version.jboss.bom.eap> >>> <version.wildfly.maven.plugin>1.0.2.Final >>> </version.wildfly.maven.plugin> >>> </properties> >>> >>> <build> >>> <pluginManagement> >>> <plugins> >>> <plugin> >>> <groupId>org.wildfly.plugins</groupId> >>> <artifactId>wildfly-maven-plugin</artifactId> >>> <version>${version.wildfly.maven.plugin}</version> >>> <configuration> >>> <port>9994</port> >>> </configuration> >>> </plugin> >>> </plugins> >>> </pluginManagement> >>> <plugins> >>> <plugin> >>> <groupId>org.apache.maven.plugins</groupId> >>> <artifactId>maven-compiler-plugin</artifactId> >>> <configuration> >>> <source>1.8</source> >>> <target>1.8</target> >>> <encoding>UTF-8</encoding> >>> </configuration> >>> </plugin> >>> </plugins> >>> </build> >>> >>> <dependencyManagement> >>> <dependencies> >>> <dependency> >>> <groupId>org.jboss.bom</groupId> >>> <artifactId>jboss-eap-javaee7-with-tools</artifactId> >>> <version>${version.jboss.bom.eap}</version> >>> <scope>import</scope> >>> <type>pom</type> >>> </dependency> >>> </dependencies> >>> </dependencyManagement> >>> >>> <dependencies> >>> <dependency> >>> <groupId>org.jboss.spec.javax.ws.rs</groupId> >>> <artifactId>jboss-jaxrs-api_2.0_spec</artifactId> >>> <scope>provided</scope> >>> </dependency> >>> <dependency> >>> <groupId>org.jboss.resteasy</groupId> >>> <artifactId>resteasy-jackson2-provider</artifactId> >>> <scope>provided</scope> >>> </dependency> >>> <dependency> >>> <groupId>org.jboss.resteasy</groupId> >>> <artifactId>resteasy-jaxrs</artifactId> >>> <scope>provided</scope> >>> </dependency> >>> <dependency> >>> <groupId>io.swagger</groupId> >>> <artifactId>swagger-jaxrs</artifactId> >>> <version>1.5.13</version> >>> </dependency> >>> <dependency> >>> <groupId>javax.servlet</groupId> >>> <artifactId>javax.servlet-api</artifactId> >>> <version>3.1.0.redhat-1</version> >>> <scope>provided</scope> >>> </dependency> >>> </dependencies> >>> </project> >>> >>> *RestActivator.java* >>> package org.example.un.rest; >>> >>> import java.util.HashSet; >>> import java.util.Set; >>> >>> import javax.servlet.ServletContext; >>> import javax.servlet.ServletContextEvent; >>> import javax.servlet.ServletContextListener; >>> import javax.servlet.annotation.WebListener; >>> import javax.ws.rs.ApplicationPath; >>> import javax.ws.rs.core.Application; >>> >>> import org.reflections.Reflections; >>> >>> import io.swagger.annotations.Api; >>> import io.swagger.jaxrs.config.BeanConfig; >>> import io.swagger.models.Info; >>> import io.swagger.models.Swagger; >>> >>> @WebListener >>> @ApplicationPath("/rest") >>> public class RestActivator extends Application implements >>> ServletContextListener { >>> >>> @Override >>> public Set<Class<?>> getClasses() { >>> Set<Class<?>> classes = new HashSet<>(super.getClasses()); >>> classes.add(io.swagger.jaxrs.listing.ApiListingResource.class); >>> classes.add(io.swagger.jaxrs.listing.SwaggerSerializers.class); >>> Reflections reflections = newReflections(RestActivator.class. >>> getPackage().getName()); >>> classes.addAll(reflections.getTypesAnnotatedWith(Api.class)); >>> return classes; >>> } >>> >>> private Swagger configSwagger(ServletContextcontexto) { >>> Swagger swagger = newSwagger().info(this.getSwaggerInfos()); >>> return swagger; >>> } >>> >>> private Info getSwaggerInfos() { >>> BeanConfig config = new BeanConfig(); >>> config.setVersion("0.1"); >>> config.setResourcePackage(RestActivator.class.getPackage(). >>> getName()); >>> config.setPrettyPrint(true); >>> config.setScan(); >>> return config.getInfo(); >>> } >>> >>> @Override >>> public void contextInitialized(ServletContextEventsce) { >>> ServletContext contexto =sce.getServletContext(); >>> Swagger swagger = this.configSwagger(contexto); >>> contexto.setAttribute("swagger", swagger); >>> } >>> >>> @Override >>> public void contextDestroyed(ServletContextEvent sce){ >>> } >>> >>> } >>> >>> *Endpoint.java* >>> package org.example.un.rest.ed; >>> >>> import javax.validation.Valid; >>> import javax.ws.rs.BeanParam; >>> import javax.ws.rs.Consumes; >>> import javax.ws.rs.POST; >>> import javax.ws.rs.Path; >>> import javax.ws.rs.Produces; >>> import javax.ws.rs.core.MediaType; >>> import javax.ws.rs.core.Response; >>> >>> import org.example.un.rest.ed.params.MyParams; >>> import org.example.un.rest.json.Body; >>> >>> import io.swagger.annotations.Api; >>> >>> @Path("/ed") >>> @Api("ed") >>> @Produces({ MediaType.APPLICATION_JSON }) >>> public class Endpoint { >>> >>> @POST >>> @Consumes({ MediaType.APPLICATION_JSON,MediaType.TEXT_PLAIN }) >>> public Response post(@BeanParam MyParams params,@Valid Body body) { >>> //Do things with params.getOauthToken(), params.getUriInfo() >>> and body >>> return Response.ok().build(); >>> } >>> >>> } >>> >>> *MyParams.java* >>> package org.example.un.rest.ed.params; >>> >>> import javax.ws.rs.HeaderParam; >>> import javax.ws.rs.core.Context; >>> import javax.ws.rs.core.UriInfo; >>> >>> import io.swagger.annotations.ApiParam; >>> >>> public class MyParams { >>> >>> @HeaderParam("Authorization") >>> @ApiParam(hidden = true) //It must be true, since after >>> authorization swagger sends the token >>> private String oauthToken; >>> >>> @Context >>> private UriInfo uriInfo; >>> >>> public String getOauthToken() { >>> return oauthToken; >>> } >>> >>> public void setOauthToken(String oauthToken) { >>> this.oauthToken = oauthToken; >>> } >>> >>> public UriInfo getUriInfo() { >>> return uriInfo; >>> } >>> >>> public void setUriInfo(UriInfo uriInfo) { >>> this.uriInfo = uriInfo; >>> } >>> >>> } >>> >>> *Body.java* >>> package org.example.un.rest.json; >>> >>> import javax.validation.constraints.NotNull; >>> >>> public class Body { >>> >>> @NotNull >>> private String firstField; >>> @NotNull >>> private String secondField; >>> >>> public String getFirstField() { >>> return firstField; >>> } >>> >>> public String getSecondField() { >>> return secondField; >>> } >>> >>> } >>> >>> I am using JBOSS EAP 7 to host the application. Thanks for the attention >>> and sorry about any language mistakes, English is not my native language. >>> >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Swagger" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Swagger" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> >> >> > -- > You received this message because you are subscribed to the Google Groups > "Swagger" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] <javascript:>. > For more options, visit https://groups.google.com/d/optout. > > > -- You received this message because you are subscribed to the Google Groups "Swagger" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
