use of org.glassfish.hk2.classmodel.reflect.MethodModel in project Payara by payara.
the class ApplicationProcessor method visitRequestBodySchema.
@Override
public void visitRequestBodySchema(AnnotationModel requestBodySchema, AnnotatedElement element, ApiContext context) {
if (element instanceof MethodModel || element instanceof org.glassfish.hk2.classmodel.reflect.Parameter) {
final RequestBody currentRequestBody = context.getWorkingOperation().getRequestBody();
if (currentRequestBody != null) {
final String implementationClass = requestBodySchema.getValue("value", String.class);
final SchemaImpl schema = SchemaImpl.fromImplementation(implementationClass, context);
for (MediaType mediaType : currentRequestBody.getContent().getMediaTypes().values()) {
mediaType.setSchema(schema);
}
}
}
}
use of org.glassfish.hk2.classmodel.reflect.MethodModel in project Payara by payara.
the class AnnotationInfo method init.
private void init(ExtensibleType<? extends ExtensibleType> type) {
// recurse first so that re-stated annotations "override"
ExtensibleType<? extends ExtensibleType> supertype = type.getParent();
if (supertype != null) {
init(supertype);
}
for (InterfaceModel implementedInterface : type.getInterfaces()) {
if (implementedInterface != null && implementedInterface != type) {
init(implementedInterface);
}
}
// collect annotations
putAll(type.getAnnotations(), typeAnnotations);
if (type instanceof ClassModel) {
for (FieldModel field : ((ClassModel) type).getFields()) {
putAll(field.getAnnotations(), fieldAnnotations.computeIfAbsent(field.getName(), key -> new ConcurrentHashMap<>()));
}
}
for (MethodModel method : type.getMethods()) {
putAll(method.getAnnotations(), methodAnnotations.computeIfAbsent(getSignature(method), key -> new ConcurrentHashMap<>()));
for (Parameter parameter : method.getParameters()) {
putAll(parameter.getAnnotations(), methodParameterAnnotations.computeIfAbsent(getIdentifier(parameter), key -> new ConcurrentHashMap<>()));
}
}
}
use of org.glassfish.hk2.classmodel.reflect.MethodModel in project Payara by payara.
the class OpenApiWalker method processAnnotation.
@SuppressWarnings("unchecked")
public final void processAnnotation(ClassModel annotatedClass, ApiVisitor visitor) {
AnnotationInfo annotations = context.getAnnotationInfo(annotatedClass);
processAnnotation((E) annotatedClass, annotations, visitor, new OpenApiContext(context, annotatedClass));
for (final MethodModel method : annotatedClass.getMethods()) {
processAnnotation((E) method, annotations, visitor, new OpenApiContext(context, method));
}
for (final FieldModel field : annotatedClass.getFields()) {
processAnnotation((E) field, annotations, visitor, new OpenApiContext(context, field));
}
for (final MethodModel method : annotatedClass.getMethods()) {
for (org.glassfish.hk2.classmodel.reflect.Parameter parameter : method.getParameters()) {
processAnnotation((E) parameter, annotations, visitor, new OpenApiContext(context, method));
}
}
}
use of org.glassfish.hk2.classmodel.reflect.MethodModel in project Payara by payara.
the class OpenApiWalker method processAnnotation.
private void processAnnotation(E element, AnnotationInfo annotations, ApiVisitor visitor, OpenApiContext context) {
for (Class<? extends Annotation> annotationClass : getAnnotationVisitor(visitor).keySet()) {
VisitorFunction<AnnotationModel, E> annotationFunction = getAnnotationVisitor(visitor).get(annotationClass);
Class<? extends Annotation> alternative = getAnnotationAlternatives().get(annotationClass);
// Check the element
if (annotations.isAnnotationPresent(annotationClass, element)) {
if (element instanceof FieldModel && (annotationClass == HeaderParam.class || annotationClass == CookieParam.class || annotationClass == PathParam.class || annotationClass == QueryParam.class)) {
FieldModel field = (FieldModel) element;
// NB. if fields are annotated as Param all methods have it
for (MethodModel method : field.getDeclaringType().getMethods()) {
OpenApiContext methodContext = new OpenApiContext(context, method);
if (methodContext.getWorkingOperation() != null) {
annotationFunction.apply(annotations.getAnnotation(annotationClass, element), element, methodContext);
}
}
} else {
annotationFunction.apply(annotations.getAnnotation(annotationClass, element), element, context);
}
} else if (element instanceof MethodModel && annotations.isAnnotationPresent(annotationClass) && (alternative == null || !annotations.isAnnotationPresent(alternative, element))) {
// If the method isn't annotated, inherit the class annotation
if (context.getPath() != null) {
annotationFunction.apply(annotations.getAnnotation(annotationClass), element, context);
}
}
}
}
Aggregations