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/incubator-servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 6dc11dd [SCB-979] add reminder log on the selection of
SwaggerGeneratorContext
6dc11dd is described below
commit 6dc11dd1000d11dae2f2b082ecc87fc12a13e3e5
Author: yaohaishi <[email protected]>
AuthorDate: Tue Oct 30 17:27:27 2018 +0800
[SCB-979] add reminder log on the selection of SwaggerGeneratorContext
---
.../core/CompositeSwaggerGeneratorContext.java | 23 ++++++++++++++++------
.../pojo/PojoSwaggerGeneratorContext.java | 16 +++++++++++++++
2 files changed, 33 insertions(+), 6 deletions(-)
diff --git
a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/CompositeSwaggerGeneratorContext.java
b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/CompositeSwaggerGeneratorContext.java
index ef39793..70adc13 100644
---
a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/CompositeSwaggerGeneratorContext.java
+++
b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/core/CompositeSwaggerGeneratorContext.java
@@ -18,16 +18,25 @@
package org.apache.servicecomb.swagger.generator.core;
import java.util.List;
+import java.util.Map;
+import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.context.EmbeddedValueResolverAware;
import org.springframework.stereotype.Component;
import org.springframework.util.StringValueResolver;
@Component
public class CompositeSwaggerGeneratorContext implements
EmbeddedValueResolverAware {
+
+ private static final Logger LOGGER =
LoggerFactory.getLogger(CompositeSwaggerGeneratorContext.class);
+
private List<SwaggerGeneratorContext> contextList;
+ private Map<Class<?>, SwaggerGeneratorContext>
producerClassSwaggerContextCacheMap = new ConcurrentHashMapEx<>();
+
public CompositeSwaggerGeneratorContext() {
contextList =
SPIServiceUtils.getSortedService(SwaggerGeneratorContext.class);
}
@@ -46,12 +55,14 @@ public class CompositeSwaggerGeneratorContext implements
EmbeddedValueResolverAw
}
public SwaggerGeneratorContext selectContext(Class<?> cls) {
- for (SwaggerGeneratorContext context : contextList) {
- if (context.canProcess(cls)) {
- return context;
+ return producerClassSwaggerContextCacheMap.computeIfAbsent(cls,
producerClass -> {
+ for (SwaggerGeneratorContext context : contextList) {
+ if (context.canProcess(cls)) {
+ LOGGER.info("select [{}] for [{}] to generate schema.",
context.getClass().getName(), cls.getName());
+ return context;
+ }
}
- }
-
- throw new Error("impossible, must be bug.");
+ throw new Error("impossible, must be bug.");
+ });
}
}
diff --git
a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/pojo/PojoSwaggerGeneratorContext.java
b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/pojo/PojoSwaggerGeneratorContext.java
index 816ad6c..eb8ecc8 100644
---
a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/pojo/PojoSwaggerGeneratorContext.java
+++
b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/generator/pojo/PojoSwaggerGeneratorContext.java
@@ -16,6 +16,7 @@
*/
package org.apache.servicecomb.swagger.generator.pojo;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -31,11 +32,16 @@ import
org.apache.servicecomb.swagger.generator.core.utils.ParamUtils;
import
org.apache.servicecomb.swagger.generator.pojo.converter.parameter.PendingBodyParameterConverter;
import
org.apache.servicecomb.swagger.generator.pojo.extend.parameter.PendingBodyParameter;
import
org.apache.servicecomb.swagger.generator.pojo.processor.parameter.PojoDefaultParameterProcessor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import io.swagger.models.parameters.BodyParameter;
import io.swagger.models.parameters.Parameter;
public class PojoSwaggerGeneratorContext extends
AbstractSwaggerGeneratorContext {
+
+ private static final Logger LOGGER =
LoggerFactory.getLogger(PojoSwaggerGeneratorContext.class);
+
static {
ConverterMgr.addConverter(PendingBodyParameter.class, new
PendingBodyParameterConverter());
}
@@ -47,6 +53,16 @@ public class PojoSwaggerGeneratorContext extends
AbstractSwaggerGeneratorContext
@Override
public boolean canProcess(Class<?> cls) {
+ for (Annotation annotation : cls.getAnnotations()) {
+ // we check the annotations by class name to avoid importing extra
dependencies in this module
+ if
("javax.ws.rs.Path".equals(annotation.annotationType().getCanonicalName())
+ || "org.springframework.web.bind.annotation.RequestMapping"
+ .equals(annotation.annotationType().getCanonicalName())) {
+ LOGGER.info(
+ "There is @RequestMapping or @Path annotation on the REST
interface class, but POJO swagger context is chosen. "
+ + "If this is unexpected, maybe you should check your
dependency jar files.");
+ }
+ }
return true;
}