You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2019/07/04 09:38:14 UTC
[servicecomb-java-chassis] 04/07: [SCB-1212[WIP][WEAK] producer
response mapper switch to new mechanism
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch weak-contract-type
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit f944fbf53d39f5e285bfa8760b12d4cda6cfeff6
Author: wujimin <wu...@huawei.com>
AuthorDate: Wed Jul 3 21:53:07 2019 +0800
[SCB-1212[WIP][WEAK] producer response mapper switch to new mechanism
---
...letableFutureProducerResponseMapperFactory.java | 6 +-
.../CseResponseProducerResponseMapperFactory.java | 4 +-
.../producer/DefaultProducerResponseMapper.java | 10 +-
.../DefaultProducerResponseMapperFactory.java | 16 +--
.../OptionalProducerResponseMapperFactory.java | 6 +-
...letableFutureProducerResponseMapperFactory.java | 76 --------------
...stCseResponseProducerResponseMapperFactory.java | 45 ---------
.../TestDefaultProducerResponseMapper.java | 40 --------
.../TestDefaultProducerResponseMapperFactory.java | 55 ----------
.../TestProducerResponseMapperFactorys.java | 111 +++++++++++++++++++++
10 files changed, 123 insertions(+), 246 deletions(-)
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/CompletableFutureProducerResponseMapperFactory.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/CompletableFutureProducerResponseMapperFactory.java
index 2191608..5476719 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/CompletableFutureProducerResponseMapperFactory.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/CompletableFutureProducerResponseMapperFactory.java
@@ -24,7 +24,7 @@ import org.apache.servicecomb.swagger.invocation.response.ResponseMapperFactorys
public class CompletableFutureProducerResponseMapperFactory implements ProducerResponseMapperFactory {
@Override
- public boolean isMatch(Type swaggerType, Type producerType) {
+ public boolean isMatch(Type producerType) {
if (!ParameterizedType.class.isAssignableFrom(producerType.getClass())) {
return false;
}
@@ -34,8 +34,8 @@ public class CompletableFutureProducerResponseMapperFactory implements ProducerR
@Override
public ProducerResponseMapper createResponseMapper(ResponseMapperFactorys<ProducerResponseMapper> factorys,
- Type swaggerType, Type producerType) {
+ Type producerType) {
Type realProducerType = ((ParameterizedType) producerType).getActualTypeArguments()[0];
- return factorys.createResponseMapper(swaggerType, realProducerType);
+ return factorys.createResponseMapper(realProducerType);
}
}
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/CseResponseProducerResponseMapperFactory.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/CseResponseProducerResponseMapperFactory.java
index b736522..4434872 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/CseResponseProducerResponseMapperFactory.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/CseResponseProducerResponseMapperFactory.java
@@ -25,13 +25,13 @@ public class CseResponseProducerResponseMapperFactory implements ProducerRespons
private static final ProducerResponseMapper SAME = (status, response) -> (Response) response;
@Override
- public boolean isMatch(Type swaggerType, Type producerType) {
+ public boolean isMatch(Type producerType) {
return producerType.equals(Response.class);
}
@Override
public ProducerResponseMapper createResponseMapper(ResponseMapperFactorys<ProducerResponseMapper> factorys,
- Type swaggerType, Type producerType) {
+ Type producerType) {
return SAME;
}
}
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/DefaultProducerResponseMapper.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/DefaultProducerResponseMapper.java
index 2d35e7c..aa4f2ce 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/DefaultProducerResponseMapper.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/DefaultProducerResponseMapper.java
@@ -19,18 +19,10 @@ package org.apache.servicecomb.swagger.invocation.response.producer;
import javax.ws.rs.core.Response.StatusType;
import org.apache.servicecomb.swagger.invocation.Response;
-import org.apache.servicecomb.swagger.invocation.converter.Converter;
public class DefaultProducerResponseMapper implements ProducerResponseMapper {
- private Converter converter;
-
- public DefaultProducerResponseMapper(Converter converter) {
- this.converter = converter;
- }
-
@Override
public Response mapResponse(StatusType status, Object response) {
- Object swaggerResult = converter.convert(response);
- return Response.create(status, swaggerResult);
+ return Response.create(status, response);
}
}
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/DefaultProducerResponseMapperFactory.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/DefaultProducerResponseMapperFactory.java
index 5e28204..dbf1df3 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/DefaultProducerResponseMapperFactory.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/DefaultProducerResponseMapperFactory.java
@@ -18,32 +18,22 @@ package org.apache.servicecomb.swagger.invocation.response.producer;
import java.lang.reflect.Type;
-import org.apache.servicecomb.swagger.invocation.converter.Converter;
-import org.apache.servicecomb.swagger.invocation.converter.ConverterMgr;
import org.apache.servicecomb.swagger.invocation.response.ResponseMapperFactorys;
public class DefaultProducerResponseMapperFactory implements ProducerResponseMapperFactory {
- private ConverterMgr converterMgr;
-
- @Override
- public void setConverterMgr(ConverterMgr converterMgr) {
- this.converterMgr = converterMgr;
- }
-
@Override
public int getOrder() {
return Integer.MAX_VALUE;
}
@Override
- public boolean isMatch(Type swaggerType, Type producerType) {
+ public boolean isMatch(Type producerType) {
return true;
}
@Override
public ProducerResponseMapper createResponseMapper(ResponseMapperFactorys<ProducerResponseMapper> factorys,
- Type swaggerType, Type producerType) {
- Converter converter = converterMgr.findConverter(producerType, swaggerType);
- return new DefaultProducerResponseMapper(converter);
+ Type producerType) {
+ return new DefaultProducerResponseMapper();
}
}
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/OptionalProducerResponseMapperFactory.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/OptionalProducerResponseMapperFactory.java
index 4e0fcd6..b7b45a1 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/OptionalProducerResponseMapperFactory.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/response/producer/OptionalProducerResponseMapperFactory.java
@@ -24,7 +24,7 @@ import org.apache.servicecomb.swagger.invocation.response.ResponseMapperFactorys
public class OptionalProducerResponseMapperFactory implements ProducerResponseMapperFactory {
@Override
- public boolean isMatch(Type swaggerType, Type producerType) {
+ public boolean isMatch(Type producerType) {
if (!ParameterizedType.class.isAssignableFrom(producerType.getClass())) {
return false;
}
@@ -34,9 +34,9 @@ public class OptionalProducerResponseMapperFactory implements ProducerResponseMa
@Override
public ProducerResponseMapper createResponseMapper(ResponseMapperFactorys<ProducerResponseMapper> factorys,
- Type swaggerType, Type producerType) {
+ Type producerType) {
Type realProducerType = ((ParameterizedType) producerType).getActualTypeArguments()[0];
- ProducerResponseMapper realMapper = factorys.createResponseMapper(swaggerType, realProducerType);
+ ProducerResponseMapper realMapper = factorys.createResponseMapper(realProducerType);
return new OptionalProducerResponseMapper(realMapper);
}
}
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestCompletableFutureProducerResponseMapperFactory.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestCompletableFutureProducerResponseMapperFactory.java
deleted file mode 100644
index a1c8c47..0000000
--- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestCompletableFutureProducerResponseMapperFactory.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.swagger.invocation.response.producer;
-
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-
-import javax.ws.rs.core.Response.Status;
-
-import org.apache.servicecomb.foundation.common.utils.ReflectUtils;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.apache.servicecomb.swagger.invocation.converter.ConverterMgr;
-import org.apache.servicecomb.swagger.invocation.response.ResponseMapperFactorys;
-import org.hamcrest.Matchers;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class TestCompletableFutureProducerResponseMapperFactory {
- CompletableFutureProducerResponseMapperFactory factory = new CompletableFutureProducerResponseMapperFactory();
-
- ConverterMgr converterMgr = new ConverterMgr();
-
- ResponseMapperFactorys<ProducerResponseMapper> factorys =
- new ResponseMapperFactorys<>(ProducerResponseMapperFactory.class, converterMgr);
-
- public CompletableFuture<String[]> producer() {
- return null;
- }
-
- public List<String> swagger() {
- return null;
- }
-
- @Test
- public void isMatch_true() {
- Method method = ReflectUtils.findMethod(this.getClass(), "producer");
- Assert.assertTrue(factory.isMatch(null, method.getGenericReturnType()));
- }
-
- @Test
- public void isMatch_Parameterized_false() {
- Method method = ReflectUtils.findMethod(this.getClass(), "swagger");
- Assert.assertFalse(factory.isMatch(null, method.getGenericReturnType()));
- }
-
- @Test
- public void isMatch_false() {
- Assert.assertFalse(factory.isMatch(null, String.class));
- }
-
- @Test
- public void completableFuture() {
- Method producerMethod = ReflectUtils.findMethod(this.getClass(), "producer");
- Method swaggerMethod = ReflectUtils.findMethod(this.getClass(), "swagger");
- ProducerResponseMapper mapper = factory
- .createResponseMapper(factorys, swaggerMethod.getGenericReturnType(), producerMethod.getGenericReturnType());
-
- Response response = mapper.mapResponse(Status.OK, new String[] {"a", "b"});
- Assert.assertThat(response.getResult(), Matchers.contains("a", "b"));
- }
-}
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestCseResponseProducerResponseMapperFactory.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestCseResponseProducerResponseMapperFactory.java
deleted file mode 100644
index 22f2ddc..0000000
--- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestCseResponseProducerResponseMapperFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.swagger.invocation.response.producer;
-
-import javax.ws.rs.core.Response.Status;
-
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class TestCseResponseProducerResponseMapperFactory {
- CseResponseProducerResponseMapperFactory factory = new CseResponseProducerResponseMapperFactory();
-
- @Test
- public void isMatch_true() {
- Assert.assertTrue(factory.isMatch(String.class, Response.class));
- }
-
- @Test
- public void isMatch_false() {
- Assert.assertFalse(factory.isMatch(String.class, String.class));
- }
-
- @Test
- public void createResponseMapper() {
- ProducerResponseMapper mapper = factory.createResponseMapper(null, null, Response.class);
- Response response = Response.ok(null);
-
- Assert.assertSame(response, mapper.mapResponse(Status.OK, response));
- }
-}
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestDefaultProducerResponseMapper.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestDefaultProducerResponseMapper.java
deleted file mode 100644
index c9e980b..0000000
--- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestDefaultProducerResponseMapper.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.swagger.invocation.response.producer;
-
-import javax.ws.rs.core.Response.Status;
-
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.apache.servicecomb.swagger.invocation.converter.Converter;
-import org.apache.servicecomb.swagger.invocation.converter.ConverterMgr;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class TestDefaultProducerResponseMapper {
- ConverterMgr mgr = new ConverterMgr();
-
- Converter converter = mgr.findConverter(Integer.class, String.class);
-
- DefaultProducerResponseMapper mapper = new DefaultProducerResponseMapper(converter);
-
- @Test
- public void mapResponse() {
- Response result = mapper.mapResponse(Status.OK, 1);
- Assert.assertSame(Status.OK, result.getStatus());
- Assert.assertEquals("1", result.getResult());
- }
-}
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestDefaultProducerResponseMapperFactory.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestDefaultProducerResponseMapperFactory.java
deleted file mode 100644
index 42aaac9..0000000
--- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestDefaultProducerResponseMapperFactory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.swagger.invocation.response.producer;
-
-import javax.ws.rs.core.Response.Status;
-
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.apache.servicecomb.swagger.invocation.converter.ConverterMgr;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-public class TestDefaultProducerResponseMapperFactory {
- static ConverterMgr mgr = new ConverterMgr();
-
- static DefaultProducerResponseMapperFactory factory = new DefaultProducerResponseMapperFactory();
-
- @BeforeClass
- public static void setup() {
- factory.setConverterMgr(mgr);
- }
-
- @Test
- public void getOrder() {
- Assert.assertEquals(Integer.MAX_VALUE, factory.getOrder());
- }
-
- @Test
- public void isMatch() {
- Assert.assertTrue(factory.isMatch(null, null));
- }
-
- @Test
- public void createResponseMapper() {
- ProducerResponseMapper mapper = factory.createResponseMapper(null, String.class, Integer.class);
- Response result = mapper.mapResponse(Status.OK, 1);
-
- Assert.assertSame(Status.OK, result.getStatus());
- Assert.assertEquals("1", result.getResult());
- }
-}
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestProducerResponseMapperFactorys.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestProducerResponseMapperFactorys.java
new file mode 100644
index 0000000..d06a541
--- /dev/null
+++ b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/swagger/invocation/response/producer/TestProducerResponseMapperFactorys.java
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.swagger.invocation.response.producer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.servicecomb.swagger.engine.SwaggerEnvironment;
+import org.apache.servicecomb.swagger.engine.SwaggerProducer;
+import org.apache.servicecomb.swagger.engine.SwaggerProducerOperation;
+import org.apache.servicecomb.swagger.generator.SwaggerGenerator;
+import org.apache.servicecomb.swagger.invocation.Response;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import io.swagger.annotations.ApiResponse;
+import io.swagger.models.Swagger;
+
+public class TestProducerResponseMapperFactorys {
+ static class ResponseForTest {
+ public String normal() {
+ return "normal";
+ }
+
+ public CompletableFuture<String> async() {
+ return CompletableFuture.completedFuture("async");
+ }
+
+ @ApiResponse(code = 200, message = "", response = String.class)
+ public Response scbResponse() {
+ return Response.ok("scb");
+ }
+
+ @ApiResponse(code = 200, message = "", response = String.class)
+ public javax.ws.rs.core.Response jaxrsResponse() {
+ return javax.ws.rs.core.Response.ok("jaxrs").build();
+ }
+
+ public Optional<String> optional() {
+ return Optional.of("optional");
+ }
+ }
+
+ static SwaggerEnvironment environment = new SwaggerEnvironment();
+
+ static SwaggerProducer swaggerProducer;
+
+ static ResponseForTest instance = new ResponseForTest();
+
+ static String result = "abc";
+
+ static Response response = Response.ok(result);
+
+ @BeforeClass
+ public static void setup() {
+ Swagger swagger = SwaggerGenerator.generate(ResponseForTest.class);
+ swaggerProducer = environment.createProducer(instance, swagger);
+ }
+
+ @Test
+ public void should_mapper_to_normal_string() {
+ SwaggerProducerOperation operation = swaggerProducer.findOperation("normal");
+ assertThat(operation.getResponseMapper()).isInstanceOf(DefaultProducerResponseMapper.class);
+ assertThat((String) operation.getResponseMapper().mapResponse(Status.OK, instance.normal()).getResult())
+ .isEqualTo("normal");
+ }
+
+ @Test
+ public void should_mapper_to_completableFuture_element_string() throws ExecutionException, InterruptedException {
+ SwaggerProducerOperation operation = swaggerProducer.findOperation("async");
+ assertThat(operation.getResponseMapper()).isInstanceOf(DefaultProducerResponseMapper.class);
+ assertThat((String) operation.getResponseMapper().mapResponse(Status.OK, instance.async().get()).getResult())
+ .isEqualTo("async");
+ }
+
+ @Test
+ public void should_mapper_to_scbResponse_string() {
+ SwaggerProducerOperation operation = swaggerProducer.findOperation("scbResponse");
+ assertThat(operation.getResponseMapper().getClass().getName())
+ .startsWith(CseResponseProducerResponseMapperFactory.class.getName());
+ assertThat((String) operation.getResponseMapper().mapResponse(Status.OK, instance.scbResponse()).getResult())
+ .isEqualTo("scb");
+ }
+
+ @Test
+ public void should_mapper_to_optional_string() {
+ SwaggerProducerOperation operation = swaggerProducer.findOperation("optional");
+ assertThat(operation.getResponseMapper()).isInstanceOf(OptionalProducerResponseMapper.class);
+ assertThat((String) operation.getResponseMapper().mapResponse(Status.OK, instance.optional()).getResult())
+ .isEqualTo("optional");
+ }
+}