This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit 399ee0903c26c9df613401c4a20d40f8ac663937
Author: wujimin <[email protected]>
AuthorDate: Sat Dec 23 17:16:02 2017 +0800

    JAV-591 [WIP] swagger invocation core ConsumerResponseMapper switch to new 
mechanism
---
 .../response/consumer/ConsumerResponseMapper.java  |  2 --
 .../consumer/ConsumerResponseMapperFactory.java    | 31 +-----------------
 ... CseResponseConsumerResponseMapperFactory.java} | 17 ++++++----
 ...mon.java => DefaultConsumerResponseMapper.java} |  9 ++---
 ...a => DefaultConsumerResponseMapperFactory.java} | 38 ++++++++++------------
 ...response.consumer.ConsumerResponseMapperFactory | 19 +++++++++++
 ...tCseResponseConsumerResponseMapperFactory.java} | 28 +++++++++-------
 .../TestDefaultConsumerResponseMapper.java}        | 24 +++++++-------
 .../TestDefaultConsumerResponseMapperFactory.java} | 36 +++++++++++++-------
 9 files changed, 104 insertions(+), 100 deletions(-)

diff --git 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapper.java
 
b/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapper.java
index dbd3027..34b3f44 100644
--- 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapper.java
+++ 
b/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapper.java
@@ -19,7 +19,5 @@ package io.servicecomb.swagger.invocation.response.consumer;
 import io.servicecomb.swagger.invocation.Response;
 
 public interface ConsumerResponseMapper {
-  Class<?> getResponseClass();
-
   Object mapResponse(Response response);
 }
diff --git 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperFactory.java
 
b/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperFactory.java
index 007dcd5..39d6f6d 100644
--- 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperFactory.java
+++ 
b/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperFactory.java
@@ -16,36 +16,7 @@
  */
 package io.servicecomb.swagger.invocation.response.consumer;
 
-import java.lang.reflect.Type;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import org.springframework.stereotype.Component;
-
-import io.servicecomb.swagger.invocation.converter.Converter;
 import io.servicecomb.swagger.invocation.response.ResponseMapperFactory;
 
-@Component
-public class ConsumerResponseMapperFactory extends 
ResponseMapperFactory<ConsumerResponseMapper> {
-  @Inject
-  public void setMapperList(List<ConsumerResponseMapper> mapperList) {
-    for (ConsumerResponseMapper mapper : mapperList) {
-      if (mapper.getResponseClass() == null) {
-        throw new Error("response class must not be null");
-      }
-
-      mappers.put(mapper.getResponseClass(), mapper);
-    }
-  }
-
-  @Override
-  protected Type choose(Type src, Type target) {
-    return target;
-  }
-
-  @Override
-  protected ConsumerResponseMapper doCreateResponseMapper(Converter converter) 
{
-    return new ConsumerResponseMapperCommon(converter);
-  }
+public interface ConsumerResponseMapperFactory extends 
ResponseMapperFactory<ConsumerResponseMapper> {
 }
diff --git 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseCseSame.java
 
b/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/CseResponseConsumerResponseMapperFactory.java
similarity index 62%
rename from 
swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseCseSame.java
rename to 
swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/CseResponseConsumerResponseMapperFactory.java
index cc078f3..697b118 100644
--- 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseCseSame.java
+++ 
b/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/CseResponseConsumerResponseMapperFactory.java
@@ -16,19 +16,22 @@
  */
 package io.servicecomb.swagger.invocation.response.consumer;
 
-import org.springframework.stereotype.Component;
+import java.lang.reflect.Type;
 
 import io.servicecomb.swagger.invocation.Response;
+import io.servicecomb.swagger.invocation.response.ResponseMapperFactorys;
+
+public class CseResponseConsumerResponseMapperFactory implements 
ConsumerResponseMapperFactory {
+  private static final ConsumerResponseMapper SAME = response -> response;
 
-@Component
-public class ConsumerResponseCseSame implements ConsumerResponseMapper {
   @Override
-  public Class<?> getResponseClass() {
-    return Response.class;
+  public boolean isMatch(Type swaggerType, Type consumerType) {
+    return Response.class.equals(consumerType);
   }
 
   @Override
-  public Object mapResponse(Response response) {
-    return response;
+  public ConsumerResponseMapper 
createResponseMapper(ResponseMapperFactorys<ConsumerResponseMapper> factorys,
+      Type swaggerType, Type consumerType) {
+    return SAME;
   }
 }
diff --git 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
 
b/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/DefaultConsumerResponseMapper.java
similarity index 84%
copy from 
swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
copy to 
swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/DefaultConsumerResponseMapper.java
index ec1241f..0e7b866 100644
--- 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
+++ 
b/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/DefaultConsumerResponseMapper.java
@@ -19,19 +19,14 @@ package io.servicecomb.swagger.invocation.response.consumer;
 import io.servicecomb.swagger.invocation.Response;
 import io.servicecomb.swagger.invocation.converter.Converter;
 
-public class ConsumerResponseMapperCommon implements ConsumerResponseMapper {
+public class DefaultConsumerResponseMapper implements ConsumerResponseMapper {
   private Converter converter;
 
-  public ConsumerResponseMapperCommon(Converter converter) {
+  public DefaultConsumerResponseMapper(Converter converter) {
     this.converter = converter;
   }
 
   @Override
-  public Class<?> getResponseClass() {
-    return null;
-  }
-
-  @Override
   public Object mapResponse(Response response) {
     return converter.convert(response.getResult());
   }
diff --git 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperFactory.java
 
b/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/DefaultConsumerResponseMapperFactory.java
similarity index 58%
copy from 
swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperFactory.java
copy to 
swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/DefaultConsumerResponseMapperFactory.java
index 007dcd5..5845f47 100644
--- 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperFactory.java
+++ 
b/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/DefaultConsumerResponseMapperFactory.java
@@ -17,35 +17,33 @@
 package io.servicecomb.swagger.invocation.response.consumer;
 
 import java.lang.reflect.Type;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import org.springframework.stereotype.Component;
 
 import io.servicecomb.swagger.invocation.converter.Converter;
-import io.servicecomb.swagger.invocation.response.ResponseMapperFactory;
+import io.servicecomb.swagger.invocation.converter.ConverterMgr;
+import io.servicecomb.swagger.invocation.response.ResponseMapperFactorys;
+
+public class DefaultConsumerResponseMapperFactory implements 
ConsumerResponseMapperFactory {
+  private ConverterMgr converterMgr;
 
-@Component
-public class ConsumerResponseMapperFactory extends 
ResponseMapperFactory<ConsumerResponseMapper> {
-  @Inject
-  public void setMapperList(List<ConsumerResponseMapper> mapperList) {
-    for (ConsumerResponseMapper mapper : mapperList) {
-      if (mapper.getResponseClass() == null) {
-        throw new Error("response class must not be null");
-      }
+  @Override
+  public void setConverterMgr(ConverterMgr converterMgr) {
+    this.converterMgr = converterMgr;
+  }
 
-      mappers.put(mapper.getResponseClass(), mapper);
-    }
+  @Override
+  public int getOrder() {
+    return Integer.MAX_VALUE;
   }
 
   @Override
-  protected Type choose(Type src, Type target) {
-    return target;
+  public boolean isMatch(Type swaggerType, Type consumerType) {
+    return true;
   }
 
   @Override
-  protected ConsumerResponseMapper doCreateResponseMapper(Converter converter) 
{
-    return new ConsumerResponseMapperCommon(converter);
+  public ConsumerResponseMapper 
createResponseMapper(ResponseMapperFactorys<ConsumerResponseMapper> factorys,
+      Type swaggerType, Type consumerType) {
+    Converter converter = converterMgr.findConverter(swaggerType, 
consumerType);
+    return new DefaultConsumerResponseMapper(converter);
   }
 }
diff --git 
a/swagger/swagger-invocation/invocation-core/src/main/resources/META-INF/services/io.servicecomb.swagger.invocation.response.consumer.ConsumerResponseMapperFactory
 
b/swagger/swagger-invocation/invocation-core/src/main/resources/META-INF/services/io.servicecomb.swagger.invocation.response.consumer.ConsumerResponseMapperFactory
new file mode 100644
index 0000000..8fa2e27
--- /dev/null
+++ 
b/swagger/swagger-invocation/invocation-core/src/main/resources/META-INF/services/io.servicecomb.swagger.invocation.response.consumer.ConsumerResponseMapperFactory
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+
+io.servicecomb.swagger.invocation.response.consumer.CseResponseConsumerResponseMapperFactory
+io.servicecomb.swagger.invocation.response.consumer.DefaultConsumerResponseMapperFactory
\ No newline at end of file
diff --git 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
 
b/swagger/swagger-invocation/invocation-core/src/test/java/io/servicecomb/swagger/invocation/response/consumer/TestCseResponseConsumerResponseMapperFactory.java
similarity index 57%
copy from 
swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
copy to 
swagger/swagger-invocation/invocation-core/src/test/java/io/servicecomb/swagger/invocation/response/consumer/TestCseResponseConsumerResponseMapperFactory.java
index ec1241f..bd89f39 100644
--- 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
+++ 
b/swagger/swagger-invocation/invocation-core/src/test/java/io/servicecomb/swagger/invocation/response/consumer/TestCseResponseConsumerResponseMapperFactory.java
@@ -16,23 +16,29 @@
  */
 package io.servicecomb.swagger.invocation.response.consumer;
 
+import org.junit.Assert;
+import org.junit.Test;
+
 import io.servicecomb.swagger.invocation.Response;
-import io.servicecomb.swagger.invocation.converter.Converter;
 
-public class ConsumerResponseMapperCommon implements ConsumerResponseMapper {
-  private Converter converter;
+public class TestCseResponseConsumerResponseMapperFactory {
+  CseResponseConsumerResponseMapperFactory factory = new 
CseResponseConsumerResponseMapperFactory();
 
-  public ConsumerResponseMapperCommon(Converter converter) {
-    this.converter = converter;
+  @Test
+  public void isMatch_true() {
+    Assert.assertTrue(factory.isMatch(String.class, Response.class));
   }
 
-  @Override
-  public Class<?> getResponseClass() {
-    return null;
+  @Test
+  public void isMatch_false() {
+    Assert.assertFalse(factory.isMatch(String.class, String.class));
   }
 
-  @Override
-  public Object mapResponse(Response response) {
-    return converter.convert(response.getResult());
+  @Test
+  public void createResponseMapper() {
+    ConsumerResponseMapper mapper = factory.createResponseMapper(null, null, 
Response.class);
+    Response response = Response.ok(null);
+
+    Assert.assertSame(response, mapper.mapResponse(response));
   }
 }
diff --git 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
 
b/swagger/swagger-invocation/invocation-core/src/test/java/io/servicecomb/swagger/invocation/response/consumer/TestDefaultConsumerResponseMapper.java
similarity index 66%
copy from 
swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
copy to 
swagger/swagger-invocation/invocation-core/src/test/java/io/servicecomb/swagger/invocation/response/consumer/TestDefaultConsumerResponseMapper.java
index ec1241f..0a61620 100644
--- 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
+++ 
b/swagger/swagger-invocation/invocation-core/src/test/java/io/servicecomb/swagger/invocation/response/consumer/TestDefaultConsumerResponseMapper.java
@@ -16,23 +16,23 @@
  */
 package io.servicecomb.swagger.invocation.response.consumer;
 
+import org.junit.Assert;
+import org.junit.Test;
+
 import io.servicecomb.swagger.invocation.Response;
 import io.servicecomb.swagger.invocation.converter.Converter;
+import io.servicecomb.swagger.invocation.converter.ConverterMgr;
 
-public class ConsumerResponseMapperCommon implements ConsumerResponseMapper {
-  private Converter converter;
+public class TestDefaultConsumerResponseMapper {
+  ConverterMgr mgr = new ConverterMgr();
 
-  public ConsumerResponseMapperCommon(Converter converter) {
-    this.converter = converter;
-  }
+  Converter converter = mgr.findConverter(Integer.class, String.class);
 
-  @Override
-  public Class<?> getResponseClass() {
-    return null;
-  }
+  DefaultConsumerResponseMapper mapper = new 
DefaultConsumerResponseMapper(converter);
 
-  @Override
-  public Object mapResponse(Response response) {
-    return converter.convert(response.getResult());
+  @Test
+  public void mapResponse() {
+    Object result = mapper.mapResponse(Response.ok(1));
+    Assert.assertEquals("1", result);
   }
 }
diff --git 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
 
b/swagger/swagger-invocation/invocation-core/src/test/java/io/servicecomb/swagger/invocation/response/consumer/TestDefaultConsumerResponseMapperFactory.java
similarity index 52%
rename from 
swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
rename to 
swagger/swagger-invocation/invocation-core/src/test/java/io/servicecomb/swagger/invocation/response/consumer/TestDefaultConsumerResponseMapperFactory.java
index ec1241f..7359c76 100644
--- 
a/swagger/swagger-invocation/invocation-core/src/main/java/io/servicecomb/swagger/invocation/response/consumer/ConsumerResponseMapperCommon.java
+++ 
b/swagger/swagger-invocation/invocation-core/src/test/java/io/servicecomb/swagger/invocation/response/consumer/TestDefaultConsumerResponseMapperFactory.java
@@ -16,23 +16,37 @@
  */
 package io.servicecomb.swagger.invocation.response.consumer;
 
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
 import io.servicecomb.swagger.invocation.Response;
-import io.servicecomb.swagger.invocation.converter.Converter;
+import io.servicecomb.swagger.invocation.converter.ConverterMgr;
+
+public class TestDefaultConsumerResponseMapperFactory {
+  static ConverterMgr mgr = new ConverterMgr();
 
-public class ConsumerResponseMapperCommon implements ConsumerResponseMapper {
-  private Converter converter;
+  static DefaultConsumerResponseMapperFactory factory = new 
DefaultConsumerResponseMapperFactory();
+
+  @BeforeClass
+  public static void setup() {
+    factory.setConverterMgr(mgr);
+  }
 
-  public ConsumerResponseMapperCommon(Converter converter) {
-    this.converter = converter;
+  @Test
+  public void getOrder() {
+    Assert.assertEquals(Integer.MAX_VALUE, factory.getOrder());
   }
 
-  @Override
-  public Class<?> getResponseClass() {
-    return null;
+  @Test
+  public void isMatch() {
+    Assert.assertTrue(factory.isMatch(null, null));
   }
 
-  @Override
-  public Object mapResponse(Response response) {
-    return converter.convert(response.getResult());
+  @Test
+  public void createResponseMapper() {
+    ConsumerResponseMapper mapper = factory.createResponseMapper(null, 
Integer.class, String.class);
+    Object result = mapper.mapResponse(Response.ok(1));
+    Assert.assertEquals("1", result);
   }
 }

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to