io.swagger.v3.jaxrs2.ext.AbstractOpenAPIExtension Maven / Gradle / Ivy
package io.swagger.v3.jaxrs2.ext;
import com.fasterxml.jackson.annotation.JsonView;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.TypeFactory;
import io.swagger.v3.jaxrs2.ResolvedParameter;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.Operation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public abstract class AbstractOpenAPIExtension implements OpenAPIExtension {
@Override
public String extractOperationMethod(Method method, Iterator chain) {
if (chain.hasNext()) {
return chain.next().extractOperationMethod(method, chain);
} else {
return null;
}
}
@Override
public ResolvedParameter extractParameters(List annotations, Type type, Set typesToSkip,
Components components, javax.ws.rs.Consumes classConsumes,
javax.ws.rs.Consumes methodConsumes, boolean includeRequestBody, JsonView jsonViewAnnotation, Iterator chain) {
if (chain.hasNext()) {
return chain.next().extractParameters(annotations, type, typesToSkip, components, classConsumes, methodConsumes, includeRequestBody, jsonViewAnnotation, chain);
} else {
return new ResolvedParameter();
}
}
@Override
public void decorateOperation(Operation operation, Method method, Iterator chain) {
if (chain.hasNext()) {
chain.next().decorateOperation(operation, method, chain);
}
}
protected boolean shouldIgnoreClass(Class> cls) {
return false;
}
protected boolean shouldIgnoreType(Type type, Set typesToSkip) {
if (typesToSkip.contains(type)) {
return true;
}
if (shouldIgnoreClass(constructType(type).getRawClass())) {
typesToSkip.add(type);
return true;
}
return false;
}
protected JavaType constructType(Type type) {
return TypeFactory.defaultInstance().constructType(type);
}
}