return applyProcessors(builder.buildClass());
/** * Picks a constructor from an annotated resource class based on spec rules. * * @param annotatedResourceClass annotated resource class * @return {@link ResourceConstructor} */ public ResourceConstructor getConstructor(Class<?> annotatedResourceClass) { Constructor constructor = PickConstructor.pickPerRequestConstructor(annotatedResourceClass); if (constructor == null) { throw new RuntimeException(Messages.MESSAGES.couldNotFindConstructor(annotatedResourceClass.getName())); } ResourceConstructorBuilder builder = buildRootResource(annotatedResourceClass).constructor(constructor); if (constructor.getParameterTypes() != null) { for (int i = 0; i < constructor.getParameterTypes().length; i++) builder.param(i).fromAnnotations(); } ResourceClass resourceClass = applyProcessors(builder.buildConstructor().buildClass()); return resourceClass.getConstructor(); }
FieldParameterBuilder builder = resourceClassBuilder.field(field).fromAnnotations(); if (builder.field.paramType == Parameter.ParamType.MESSAGE_BODY && !field.isAnnotationPresent(Body.class)) continue;
continue; visitedHashes.add(hash); SetterParameterBuilder builder = resourceClassBuilder.setter(method).fromAnnotations(); if (builder.setter.paramType == Parameter.ParamType.MESSAGE_BODY && !method.isAnnotationPresent(Body.class)) continue;
SetterParameterBuilder builder = resourceClassBuilder.setter(method).fromAnnotations(); if (builder.setter.paramType == Parameter.ParamType.MESSAGE_BODY && !method.isAnnotationPresent(Body.class)) continue; if (builder.setter.paramType == Parameter.ParamType.UNKNOWN) continue;
FieldParameterBuilder builder = resourceClassBuilder.field(field).fromAnnotations(); if (builder.field.paramType == Parameter.ParamType.MESSAGE_BODY && !field.isAnnotationPresent(Body.class)) continue;
protected static void processDeclaredFields(ResourceClassBuilder resourceClassBuilder, final Class<?> root) { Field[] fieldList = new Field[0]; try { if (System.getSecurityManager() == null) { fieldList = root.getDeclaredFields(); } else { fieldList = AccessController.doPrivileged(new PrivilegedExceptionAction<Field[]>() { @Override public Field[] run() throws Exception { return root.getDeclaredFields(); } }); } } catch (PrivilegedActionException pae) { } for (Field field : fieldList) { FieldParameterBuilder builder = resourceClassBuilder.field(field).fromAnnotations(); if (builder.field.paramType == Parameter.ParamType.MESSAGE_BODY && !field.isAnnotationPresent(Body.class)) continue; if (builder.field.paramType == Parameter.ParamType.UNKNOWN) continue; builder.buildField(); } } protected static void processDeclaredSetters(ResourceClassBuilder resourceClassBuilder, final Class<?> root, Set<Long> visitedHashes)
return applyProcessors(builder.buildClass());
private static ResourceClass fromAnnotations(boolean isLocator, Class<?> clazz) { // stupid hack for Weld as it loses generic type information, but retains annotations. if (!clazz.isInterface() && clazz.getSuperclass() != null && !clazz.getSuperclass().equals(Object.class) && clazz.isSynthetic()) { clazz = clazz.getSuperclass(); } ResourceClassBuilder builder = null; if (isLocator) builder = locator(clazz); else { Path path = clazz.getAnnotation(Path.class); if (path == null) builder = rootResource(clazz, null); else builder = rootResource(clazz, path.value()); } for (Method method : clazz.getMethods()) { if(!method.isSynthetic() && !method.getDeclaringClass().equals(Object.class)) processMethod(isLocator, builder, clazz, method); } if (!clazz.isInterface()) { processFields(builder, clazz); } processSetters(builder, clazz); return builder.buildClass(); }
/** * Picks a constructor from an annotated resource class based on spec rules. * * @param annotatedResourceClass annotated resource class * @return {@link ResourceConstructor} */ public ResourceConstructor getConstructor(Class<?> annotatedResourceClass) { Constructor constructor = PickConstructor.pickPerRequestConstructor(annotatedResourceClass); if (constructor == null) { throw new RuntimeException(Messages.MESSAGES.couldNotFindConstructor(annotatedResourceClass.getName())); } ResourceConstructorBuilder builder = buildRootResource(annotatedResourceClass).constructor(constructor); if (constructor.getParameterTypes() != null) { for (int i = 0; i < constructor.getParameterTypes().length; i++) builder.param(i).fromAnnotations(); } ResourceClass resourceClass = applyProcessors(builder.buildConstructor().buildClass()); return resourceClass.getConstructor(); }
/** * Picks a constructor from an annotated resource class based on spec rules * * @param annotatedResourceClass * @return */ public static ResourceConstructor constructor(Class<?> annotatedResourceClass) { Constructor constructor = PickConstructor.pickPerRequestConstructor(annotatedResourceClass); if (constructor == null) { throw new RuntimeException(Messages.MESSAGES.couldNotFindConstructor(annotatedResourceClass.getName())); } ResourceConstructorBuilder builder = rootResource(annotatedResourceClass).constructor(constructor); if (constructor.getParameterTypes() != null) { for (int i = 0; i < constructor.getParameterTypes().length; i++) builder.param(i).fromAnnotations(); } return builder.buildConstructor().buildClass().getConstructor(); }
public static ResourceClassBuilder rootResource(Class<?> root, String path) { return new ResourceClassBuilder(root, path); }
public static ResourceClassBuilder rootResource(Class<?> root) { return new ResourceClassBuilder(root, "/"); }
protected ResourceClassBuilder buildRootResource(Class<?> root, String path) { return new ResourceClassBuilder(root, path); }
public ResourceClassBuilder buildRootResource(Class<?> root) { return new ResourceClassBuilder(root, "/"); }
public static ResourceClassBuilder locator(Class<?> root) { return new ResourceClassBuilder(root, null); }
protected ResourceClassBuilder buildLocator(Class<?> root) { return new ResourceClassBuilder(root, null); }
continue; visitedHashes.add(hash); SetterParameterBuilder builder = resourceClassBuilder.setter(method).fromAnnotations(); if (builder.setter.paramType == Parameter.ParamType.MESSAGE_BODY && !method.isAnnotationPresent(Body.class)) continue;