首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >傲慢的客户端生成器-与Response.class的冲突

傲慢的客户端生成器-与Response.class的冲突
EN

Stack Overflow用户
提问于 2020-10-21 15:00:25
回答 2查看 1.3K关注 0票数 0

我正在用io.swagger生成器和给定的yaml文件创建rest客户端,yaml定义了一个响应元素,生成生成器创建的Response.class。问题是,在另一个生成的DefaultApi类中,导入包括这个类和一个不被使用但在两个导入之间产生冲突的javax.ws.rs.core.Response。如果我在yaml文件中重命名响应元素,问题就会消失,但实际上我不会更改这个文件。是否有方法向生成器指示使用另一个名称(别名)创建类?我训练的是不要更改de yaml文件。

pom.xml

代码语言:javascript
运行
复制
<dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-jaxrs</artifactId>
            <scope>compile</scope>
            <version>${swagger-core-version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-rs-client</artifactId>
            <version>${cxf-version}</version>
            <scope>compile</scope>
        </dependency>

..。

代码语言:javascript
运行
复制
    <plugin>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-codegen-maven-plugin</artifactId>
                <version>${swagger-codegen-maven-plugin.version}</version>
                <configuration>
                    <generateApiTests>false</generateApiTests>
                    <generateModelTests>false</generateModelTests>
                    <!-- <language>java</language> -->
                    <language>jaxrs-cxf-client</language>
                </configuration>

                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>src/main/resources/technicalViability.yaml</inputSpec>
<!--                            <supportingFilesToGenerate>ApiCallback.java,ApiClient.java,ApiException.java,ApiResponse.java,Configuration.java,Pair.java,ProgressRequestBody.java,ProgressResponseBody.java,StringUtil.java,ApiKeyAuth.java,Authentication.java,HttpBasicAuth.java,JSON.java,OAuth.java</supportingFilesToGenerate> -->
                            <configOptions>
                                <sourceFolder>src/</sourceFolder>
                            </configOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

..。

代码语言:javascript
运行
复制
<lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>io.swagger</groupId>
                                        <artifactId>swagger-codegen-maven-plugin</artifactId>
                                        <versionRange>${swagger-codegen-maven-plugin.version}</versionRange>
                                        <goals>
                                            <goal>generate</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <execute />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>

technicalViability.yml

代码语言:javascript
运行
复制
paths:
 /technicalViability:
   get:
     produces:
        - application/xml
        - application/json
     parameters:
     - name: "tlkServiceId"
       in: "query"
       description: "Servicio TLK"
       required: false
       type: "string"
     - name: "tincoServiceId"
       in: "query"
       description: "Servicio Tinco"
       required: false
       type: "string"

     responses:
       "200":
         description: "OK"
         schema:
          $ref: "#/definitions/response"
     security:
      - sso_auth: []

securityDefinitions:
  sso_auth:
    type: "oauth2"
    flow: accessCode
    authorizationUrl: "--"
    tokenUrl: "--"

definitions:
  response:
    type: "object"
    properties:
      code:
        type: "integer"
        description: "codigo de respuesta"
      message:
        type: "string"
        description: "mensaje descriptivo"
      listaFacilidades:
        type: "array"
        items:
          $ref: "#/definitions/facilidad"
  facilidad:
    type: "object"
    properties:
      wp_cod_sefp:
        type: "string"
        description: "codigo psef"
      wp_tipo_sefp:
        type: "string"
        description: "tipo de psef"

DefaultApi.class

代码语言:javascript
运行
复制
package io.swagger.api;

import io.swagger.model.Response;

import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
import javax.ws.rs.*;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.MediaType;
import org.apache.cxf.jaxrs.ext.multipart.*;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.ApiResponse;
import io.swagger.jaxrs.PATCH;

/**
 * Technical Viability
 *
 * <p>No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
 *
 */
@Path("/")
@Api(value = "/", description = "")
public interface DefaultApi  {

    @GET
    @Path("/technicalViability")
    @Produces({ "application/xml", "application/json" })
    @ApiOperation(value = "", tags={  })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = Response.class) })
    public Response technicalViabilityGet(@QueryParam("tlkServiceId")String tlkServiceId, @QueryParam("tincoServiceId")String tincoServiceId);
}

错误:导入javax.ws.rs.core.Response与另一个导入语句发生冲突

EN

回答 2

Stack Overflow用户

发布于 2020-10-21 19:39:28

对于这种情况,您应该选择一个在imports中使用,另一个选择完全限定的类名(包名+类名)来指定要放在哪里。否则,您将面临,导入xxxx.Response与另一个导入语句发生冲突。因此,例如,从导入中删除io.swagger.model.Response,然后:

代码语言:javascript
运行
复制
public  io.swagger.model.Response technicalViabilityGet(@QueryParam("tlkServiceId")String tlkServiceId, @QueryParam("tincoServiceId")String tincoServiceId);
票数 0
EN

Stack Overflow用户

发布于 2020-10-22 14:25:57

最后,我改变了生成客户端的方式,问题就解决了。

pom.xml

代码语言:javascript
运行
复制
<dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-jaxrs</artifactId>
            <scope>compile</scope>
            <version>1.5.22</version>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp</groupId>
            <artifactId>logging-interceptor</artifactId>
            <version>2.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.threeten</groupId>
            <artifactId>threetenbp</artifactId>
            <version>1.4.5</version>
        </dependency>
        <dependency>
            <groupId>io.gsonfire</groupId>
            <artifactId>gson-fire</artifactId>
            <version>1.8.4</version>
        </dependency>
...
                <groupId>io.swagger</groupId>
                <artifactId>swagger-codegen-maven-plugin</artifactId>
                <version>${swagger-codegen-maven-plugin.version}</version>
                <configuration>
                    <generateApiTests>false</generateApiTests>
                    <generateModelTests>false</generateModelTests>
                    <language>java</language>
                </configuration>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64466386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档