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
 
<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]> 
> 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 <theoalve...@ <>gmail.com 
>> <http://gmail.com/>> 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 <theoalve...@ <>gmail.com 
>>> <http://gmail.com/>> 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
>>>  
>>> <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 
>>> <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 
>>> <http://maven.apache.org/POM/4.0.0>"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
>>>  <http://www.w3.org/2001/XMLSchema-instance>"
>>>     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
>>> <http://maven.apache.org/POM/4.0.0>http://maven.apache.org/xsd/maven-4.0.0.xsd
>>>  <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 
>>> <http://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 
>>> implementsServletContextListener {
>>>     
>>>     @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 
>>> <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 
>> <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] 
> <mailto:[email protected]>.
> For more options, visit https://groups.google.com/d/optout 
> <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.

Reply via email to