This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 4e07ea364 [SCB-2867]change implementation not depends on guice (#4272)
4e07ea364 is described below
commit 4e07ea36488a09e2cf3d49f230801bbc6c260c56
Author: liubao68 <[email protected]>
AuthorDate: Wed Mar 27 15:56:14 2024 +0800
[SCB-2867]change implementation not depends on guice (#4272)
---
.../rest/codec/param/FormProcessorCreator.java | 6 +-
.../jackson/databind/ObjectMapperUtils.java | 28 -------
.../foundation/common/ParameterizedTypeUtil.java | 96 ++++++++++++++++++++++
.../provider/pojo/schema/PojoProducerMeta.java | 8 +-
swagger/swagger-generator/generator-core/pom.xml | 4 -
.../parameter/PartListParameterTypeProcessor.java | 5 +-
.../swagger-generator/generator-springmvc/pom.xml | 4 -
.../parameter/MultipartFileListProcessor.java | 5 +-
.../producer/codec/ArgWrapperJavaType.java | 80 ------------------
.../impl/part/PartListToPartArrayConverter.java | 7 +-
.../impl/part/PartListToPartListConverter.java | 9 +-
.../invocation-springmvc/pom.xml | 4 -
.../PartListToMultipartArrayConverter.java | 7 +-
.../PartListToMultipartListConverter.java | 9 +-
14 files changed, 123 insertions(+), 149 deletions(-)
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/FormProcessorCreator.java
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/FormProcessorCreator.java
index 4efedf3f1..740f57e03 100644
---
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/FormProcessorCreator.java
+++
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/FormProcessorCreator.java
@@ -26,6 +26,7 @@ import java.util.stream.Collectors;
import org.apache.servicecomb.common.rest.RestConst;
import org.apache.servicecomb.common.rest.codec.RestClientRequest;
import org.apache.servicecomb.core.definition.OperationMeta;
+import org.apache.servicecomb.foundation.common.ParameterizedTypeUtil;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
import org.apache.servicecomb.swagger.generator.SwaggerConst;
import org.apache.servicecomb.swagger.invocation.converter.Converter;
@@ -33,7 +34,6 @@ import
org.apache.servicecomb.swagger.invocation.exception.InvocationException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.TypeFactory;
-import com.google.inject.util.Types;
import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.MediaType;
@@ -131,7 +131,7 @@ public class FormProcessorCreator implements
ParamValueProcessorCreator<RequestB
}
public static class PartProcessor extends AbstractParamProcessor {
- private static final Type partListType =
Types.newParameterizedType(List.class, Part.class);
+ private static final Type partListType =
ParameterizedTypeUtil.make(List.class, Part.class);
// key is target type
private static final Map<Type, Converter> partsToTargetConverters =
SPIServiceUtils.getSortedService(
@@ -178,7 +178,7 @@ public class FormProcessorCreator implements
ParamValueProcessorCreator<RequestB
private void initRepeatedConverter(Type genericParamType) {
if (genericParamType instanceof JavaType) {
- genericParamType = Types.newParameterizedType(((JavaType)
genericParamType).getRawClass(),
+ genericParamType = ParameterizedTypeUtil.make(((JavaType)
genericParamType).getRawClass(),
((JavaType) genericParamType).getContentType());
}
converter = partsToTargetConverters.get(genericParamType);
diff --git
a/foundations/foundation-common/src/main/java/com/fasterxml/jackson/databind/ObjectMapperUtils.java
b/foundations/foundation-common/src/main/java/com/fasterxml/jackson/databind/ObjectMapperUtils.java
deleted file mode 100644
index 5be6d73c7..000000000
---
a/foundations/foundation-common/src/main/java/com/fasterxml/jackson/databind/ObjectMapperUtils.java
+++ /dev/null
@@ -1,28 +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 com.fasterxml.jackson.databind;
-
-import com.fasterxml.jackson.core.JsonParser;
-
-public final class ObjectMapperUtils {
- private ObjectMapperUtils() {
- }
-
- public static DeserializationContext
createDeserializationContext(ObjectMapper mapper, JsonParser jp) {
- return mapper.createDeserializationContext(jp,
mapper.getDeserializationConfig());
- }
-}
diff --git
a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/ParameterizedTypeUtil.java
b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/ParameterizedTypeUtil.java
new file mode 100644
index 000000000..025c08acb
--- /dev/null
+++
b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/ParameterizedTypeUtil.java
@@ -0,0 +1,96 @@
+/*
+ * 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.foundation.common;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.Objects;
+import java.util.StringJoiner;
+
+/**
+ * Utility class for creating ParameterizedType.
+ */
+public class ParameterizedTypeUtil implements ParameterizedType {
+ private final Type[] actualTypeArguments;
+
+ private final Class<?> rawType;
+
+ private ParameterizedTypeUtil(Class<?> rawType, Type[] actualTypeArguments) {
+ this.actualTypeArguments = actualTypeArguments;
+ this.rawType = rawType;
+ }
+
+ public static ParameterizedType make(Class<?> rawType, Type...
actualTypeArguments) {
+ return new ParameterizedTypeUtil(rawType, actualTypeArguments);
+ }
+
+ @Override
+ public Type[] getActualTypeArguments() {
+ return this.actualTypeArguments;
+ }
+
+ @Override
+ public Type getRawType() {
+ return rawType;
+ }
+
+ @Override
+ public Type getOwnerType() {
+ return null;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof ParameterizedType that) {
+
+ if (this == that) {
+ return true;
+ }
+
+ Type thatRawType = that.getRawType();
+
+ return Objects.equals(rawType, thatRawType) &&
+ Arrays.equals(actualTypeArguments, that.getActualTypeArguments());
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ return Arrays.hashCode(actualTypeArguments) ^
+ Objects.hashCode(rawType);
+ }
+
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append(rawType.getName());
+
+ if (actualTypeArguments != null) {
+ StringJoiner sj = new StringJoiner(", ", "<", ">");
+ sj.setEmptyValue("");
+ for (Type t : actualTypeArguments) {
+ sj.add(t.getTypeName());
+ }
+ sb.append(sj);
+ }
+
+ return sb.toString();
+ }
+}
diff --git
a/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/schema/PojoProducerMeta.java
b/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/schema/PojoProducerMeta.java
index 7526ec23f..d63541cdf 100644
---
a/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/schema/PojoProducerMeta.java
+++
b/providers/provider-pojo/src/main/java/org/apache/servicecomb/provider/pojo/schema/PojoProducerMeta.java
@@ -17,14 +17,14 @@
package org.apache.servicecomb.provider.pojo.schema;
-import javax.inject.Inject;
-
-import com.google.common.annotations.VisibleForTesting;
import org.apache.servicecomb.core.provider.producer.ProducerMeta;
import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.google.common.annotations.VisibleForTesting;
public class PojoProducerMeta extends ProducerMeta implements InitializingBean
{
- @Inject
+ @Autowired
protected PojoProducers pojoProducers;
private String implementation;
diff --git a/swagger/swagger-generator/generator-core/pom.xml
b/swagger/swagger-generator/generator-core/pom.xml
index 2efd78464..dded4d55a 100644
--- a/swagger/swagger-generator/generator-core/pom.xml
+++ b/swagger/swagger-generator/generator-core/pom.xml
@@ -43,10 +43,6 @@
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
</dependency>
- <dependency>
- <groupId>com.google.inject</groupId>
- <artifactId>guice</artifactId>
- </dependency>
<dependency>
<groupId>org.mockito</groupId>
diff --git
a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/processor/parameter/PartListParameterTypeProcessor.java
b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/processor/parameter/PartListParameterTypeProcessor.java
index 183f45df8..8d47dfdc3 100644
---
a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/processor/parameter/PartListParameterTypeProcessor.java
+++
b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/processor/parameter/PartListParameterTypeProcessor.java
@@ -18,15 +18,16 @@ package
org.apache.servicecomb.swagger.generator.core.processor.parameter;
import java.util.List;
+import org.apache.servicecomb.foundation.common.ParameterizedTypeUtil;
+
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.TypeFactory;
-import com.google.inject.util.Types;
import jakarta.servlet.http.Part;
public class PartListParameterTypeProcessor extends
PartArrayParameterTypeProcessor {
@Override
public JavaType getProcessType() {
- return
TypeFactory.defaultInstance().constructType(Types.newParameterizedType(List.class,
Part.class));
+ return
TypeFactory.defaultInstance().constructType(ParameterizedTypeUtil.make(List.class,
Part.class));
}
}
diff --git a/swagger/swagger-generator/generator-springmvc/pom.xml
b/swagger/swagger-generator/generator-springmvc/pom.xml
index 5909d9a96..226f2618c 100644
--- a/swagger/swagger-generator/generator-springmvc/pom.xml
+++ b/swagger/swagger-generator/generator-springmvc/pom.xml
@@ -45,10 +45,6 @@
<artifactId>log4j-core</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>com.google.inject</groupId>
- <artifactId>guice</artifactId>
- </dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>foundation-test-scaffolding</artifactId>
diff --git
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/parameter/MultipartFileListProcessor.java
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/parameter/MultipartFileListProcessor.java
index 10e9f98d2..85d4648c1 100644
---
a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/parameter/MultipartFileListProcessor.java
+++
b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/parameter/MultipartFileListProcessor.java
@@ -19,16 +19,17 @@ package
org.apache.servicecomb.swagger.generator.springmvc.processor.parameter;
import java.util.List;
+import org.apache.servicecomb.foundation.common.ParameterizedTypeUtil;
import
org.apache.servicecomb.swagger.generator.core.processor.parameter.PartArrayParameterTypeProcessor;
import org.springframework.web.multipart.MultipartFile;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.TypeFactory;
-import com.google.inject.util.Types;
public class MultipartFileListProcessor extends
PartArrayParameterTypeProcessor {
@Override
public JavaType getProcessType() {
- return
TypeFactory.defaultInstance().constructType(Types.newParameterizedType(List.class,
MultipartFile.class));
+ return TypeFactory.defaultInstance().constructType(
+ ParameterizedTypeUtil.make(List.class, MultipartFile.class));
}
}
diff --git
a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/producer/codec/ArgWrapperJavaType.java
b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/producer/codec/ArgWrapperJavaType.java
deleted file mode 100644
index 26453fd47..000000000
---
a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/arguments/producer/codec/ArgWrapperJavaType.java
+++ /dev/null
@@ -1,80 +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.arguments.producer.codec;
-
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.ObjectMapperUtils;
-import com.fasterxml.jackson.databind.type.SimpleType;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-
-public class ArgWrapperJavaType extends SimpleType {
- private static final long serialVersionUID = 964882360361204479L;
-
- static class ArgInfo {
- JavaType javaType;
-
- JsonDeserializer<Object> deserializer;
-
- public ArgInfo(Type type) {
- this.javaType = TypeFactory.defaultInstance().constructType(type);
- }
- }
-
- private final Map<String, ArgInfo> argInfos = new HashMap<>();
-
- public ArgWrapperJavaType() {
- super(Object.class);
- }
-
- public void addProperty(String name, Type type) {
- argInfos.put(name, new ArgInfo(type));
- }
-
- public Map<String, Object> readValue(ObjectMapper mapper, String json)
throws IOException {
- Map<String, Object> args = new LinkedHashMap<>();
-
- JsonParser jp = mapper.getFactory().createParser(json);
- DeserializationContext deserializationContext =
ObjectMapperUtils.createDeserializationContext(mapper, jp);
-
- jp.nextToken();
- for (String fieldName = jp.nextFieldName(); fieldName != null; fieldName =
jp.nextFieldName()) {
- jp.nextToken();
- ArgInfo argInfo = argInfos.get(fieldName);
- if (argInfo == null) {
- continue;
- }
-
- if (argInfo.deserializer == null) {
- argInfo.deserializer =
deserializationContext.findRootValueDeserializer(argInfo.javaType);
- }
-
- args.put(fieldName, argInfo.deserializer.deserialize(jp,
deserializationContext));
- }
-
- return args;
- }
-}
diff --git
a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartArrayConverter.java
b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartArrayConverter.java
index afceb32e2..bbdb244f5 100644
---
a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartArrayConverter.java
+++
b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartArrayConverter.java
@@ -19,16 +19,15 @@ package
org.apache.servicecomb.swagger.invocation.converter.impl.part;
import java.lang.reflect.Type;
import java.util.List;
-import jakarta.servlet.http.Part;
-
+import org.apache.servicecomb.foundation.common.ParameterizedTypeUtil;
import org.apache.servicecomb.swagger.invocation.converter.Converter;
-import com.google.inject.util.Types;
+import jakarta.servlet.http.Part;
public class PartListToPartArrayConverter implements Converter {
@Override
public Type getSrcType() {
- return Types.newParameterizedType(List.class, Part.class);
+ return ParameterizedTypeUtil.make(List.class, Part.class);
}
@Override
diff --git
a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartListConverter.java
b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartListConverter.java
index cc2dbee4d..5c2ee3284 100644
---
a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartListConverter.java
+++
b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/converter/impl/part/PartListToPartListConverter.java
@@ -19,21 +19,20 @@ package
org.apache.servicecomb.swagger.invocation.converter.impl.part;
import java.lang.reflect.Type;
import java.util.List;
-import jakarta.servlet.http.Part;
-
+import org.apache.servicecomb.foundation.common.ParameterizedTypeUtil;
import org.apache.servicecomb.swagger.invocation.converter.Converter;
-import com.google.inject.util.Types;
+import jakarta.servlet.http.Part;
public class PartListToPartListConverter implements Converter {
@Override
public Type getSrcType() {
- return Types.newParameterizedType(List.class, Part.class);
+ return ParameterizedTypeUtil.make(List.class, Part.class);
}
@Override
public Type getTargetType() {
- return Types.newParameterizedType(List.class, Part.class);
+ return ParameterizedTypeUtil.make(List.class, Part.class);
}
@Override
diff --git a/swagger/swagger-invocation/invocation-springmvc/pom.xml
b/swagger/swagger-invocation/invocation-springmvc/pom.xml
index 511b99d04..34d89805c 100644
--- a/swagger/swagger-invocation/invocation-springmvc/pom.xml
+++ b/swagger/swagger-invocation/invocation-springmvc/pom.xml
@@ -32,10 +32,6 @@
<groupId>org.apache.servicecomb</groupId>
<artifactId>swagger-invocation-core</artifactId>
</dependency>
- <dependency>
- <groupId>com.google.inject</groupId>
- <artifactId>guice</artifactId>
- </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
diff --git
a/swagger/swagger-invocation/invocation-springmvc/src/main/java/org/apache/servicecomb/swagger/invocation/converter/PartListToMultipartArrayConverter.java
b/swagger/swagger-invocation/invocation-springmvc/src/main/java/org/apache/servicecomb/swagger/invocation/converter/PartListToMultipartArrayConverter.java
index cab3ec53c..d9b0901df 100644
---
a/swagger/swagger-invocation/invocation-springmvc/src/main/java/org/apache/servicecomb/swagger/invocation/converter/PartListToMultipartArrayConverter.java
+++
b/swagger/swagger-invocation/invocation-springmvc/src/main/java/org/apache/servicecomb/swagger/invocation/converter/PartListToMultipartArrayConverter.java
@@ -19,16 +19,15 @@ package org.apache.servicecomb.swagger.invocation.converter;
import java.lang.reflect.Type;
import java.util.List;
-import jakarta.servlet.http.Part;
-
+import org.apache.servicecomb.foundation.common.ParameterizedTypeUtil;
import org.springframework.web.multipart.MultipartFile;
-import com.google.inject.util.Types;
+import jakarta.servlet.http.Part;
public class PartListToMultipartArrayConverter implements Converter {
@Override
public Type getSrcType() {
- return Types.newParameterizedType(List.class, Part.class);
+ return ParameterizedTypeUtil.make(List.class, Part.class);
}
@Override
diff --git
a/swagger/swagger-invocation/invocation-springmvc/src/main/java/org/apache/servicecomb/swagger/invocation/converter/PartListToMultipartListConverter.java
b/swagger/swagger-invocation/invocation-springmvc/src/main/java/org/apache/servicecomb/swagger/invocation/converter/PartListToMultipartListConverter.java
index e1cba13b0..4d7d50725 100644
---
a/swagger/swagger-invocation/invocation-springmvc/src/main/java/org/apache/servicecomb/swagger/invocation/converter/PartListToMultipartListConverter.java
+++
b/swagger/swagger-invocation/invocation-springmvc/src/main/java/org/apache/servicecomb/swagger/invocation/converter/PartListToMultipartListConverter.java
@@ -20,21 +20,20 @@ import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
-import jakarta.servlet.http.Part;
-
+import org.apache.servicecomb.foundation.common.ParameterizedTypeUtil;
import org.springframework.web.multipart.MultipartFile;
-import com.google.inject.util.Types;
+import jakarta.servlet.http.Part;
public class PartListToMultipartListConverter implements Converter {
@Override
public Type getSrcType() {
- return Types.newParameterizedType(List.class, Part.class);
+ return ParameterizedTypeUtil.make(List.class, Part.class);
}
@Override
public Type getTargetType() {
- return Types.newParameterizedType(List.class, MultipartFile.class);
+ return ParameterizedTypeUtil.make(List.class, MultipartFile.class);
}
@Override