private JaxrsResourceLocatorDescription resLocatorDescription( ResourceClass resClass, String contextPath, String mapping, Collection<String> servletMappings, List<Class<?>> resolvedCls) { JaxrsResourceLocatorDescription locatorRes = new JaxrsResourceLocatorDescription(); locatorRes.resourceClass = resClass.getClazz(); resolvedCls.add(resClass.getClazz()); for (ResourceMethod resMethod : resClass.getResourceMethods()) { JaxrsResourceMethodDescription jaxrsRes = new JaxrsResourceMethodDescription(); jaxrsRes.consumeTypes = resMethod.getConsumes(); jaxrsRes.contextPath = contextPath; jaxrsRes.httpMethods = resMethod.getHttpMethods(); jaxrsRes.method = resMethod.getMethod(); jaxrsRes.produceTypes = resMethod.getProduces(); jaxrsRes.resourceClass = resClass.getClazz(); String resPath = new StringBuilder(mapping) .append("/") .append(resMethod.getFullpath()) .toString() .replace("//", "/"); jaxrsRes.resourcePath = resPath; jaxrsRes.servletMappings = servletMappings; addMethodParameters(jaxrsRes, resMethod.getMethod()); locatorRes.methodsDescriptions.add(jaxrsRes); } for (ResourceLocator resLocator : resClass.getResourceLocators()) { Class<?> clz = resLocator.getReturnType(); if (clz.equals(resClass.getClazz())) { break; } if (resolvedCls.contains(clz)) { break; } else { resolvedCls.add(clz); } ResourceClass subResClass = ResourceBuilder.locatorFromAnnotations(clz); String subMapping = new StringBuilder(mapping) .append("/") .append(resLocator.getFullpath()) .toString() .replace("//", "/"); JaxrsResourceLocatorDescription inner = resLocatorDescription(subResClass, contextPath, subMapping, servletMappings, resolvedCls); if (inner.containsMethodResources()) { locatorRes.subLocatorDescriptions.add(inner); } } return locatorRes; }
public ResourceClassBuilder buildMethod() { if (locator.resourceClass.getClazz().isAnonymousClass()) { locator.getMethod().setAccessible(true); } resourceClassBuilder.resourceLocators.add(locator); return resourceClassBuilder; }
public T path(String path) { locator.path = path; return (T) this; }
public LocatorMethodParameterBuilder param(int i) { return new LocatorMethodParameterBuilder(this, locator.getParams()[i]); }
public T returnType(GenericType type) { locator.returnType = type.getRawType(); locator.genericReturnType = type.getType(); return (T) this; }
public T genericReturnType(Type type) { locator.genericReturnType = type; return (T) this; }
public T returnType(Class<?> type) { locator.returnType = type; return (T) this; }