@Override public Object invoke(HttpRequest request, HttpResponse httpResponse, Object resource) throws Failure, ApplicationException { if (!Provider.class.isInstance(resource)) { return super.invoke(request, httpResponse, resource); } Object[] args = injectArguments(request, httpResponse); RestfulContainerRequest req = new RestfulContainerRequest(); req.setInterfaceName(method.getResourceClass().getClazz().getName()); req.setMethodName(method.getMethod().getName()); req.setParamtersDesc(ReflectUtil.getMethodParamDesc(method.getMethod())); req.setArguments(args); req.setHttpRequest(request); req.setAttachments(RestfulUtil.decodeAttachments(request.getMutableHeaders())); try { Response resp = Provider.class.cast(resource).call(req); RestfulUtil.encodeAttachments(httpResponse.getOutputHeaders(), resp.getAttachments()); return resp.getValue(); } catch (Exception e) { if (e != null && e instanceof RuntimeException) { throw (RuntimeException) e; } throw new InternalServerErrorException("provider call process error:" + e.getMessage(), e); } }
public ResourceClassBuilder buildMethod() { ResteasyUriBuilder builder = (ResteasyUriBuilder) RuntimeDelegate.getInstance().createUriBuilder(); if (locator.resourceClass.getPath() != null) builder.path(locator.resourceClass.getPath()); if (locator.path != null) builder.path(locator.path); String pathExpression = builder.getPath(); if (pathExpression == null) pathExpression = ""; locator.fullpath = pathExpression; if (locator.resourceClass.getClazz().isAnonymousClass()) { locator.getMethod().setAccessible(true); } resourceClassBuilder.resourceLocators.add(locator); return resourceClassBuilder; }
public void registered(ResteasyProviderFactory factory) { ResourceConstructor constructor = resourceClass.getConstructor(); if (constructor == null) constructor = resourceBuilder.getConstructor(resourceClass.getClazz()); if (constructor == null) { throw new RuntimeException(Messages.MESSAGES.unableToFindPublicConstructorForClass(scannableClass.getName())); } this.constructorInjector = factory.getInjectorFactory().createConstructor(constructor, factory); this.propertyInjector = factory.getInjectorFactory().createPropertyInjector(resourceClass, factory); }
public void register(ResourceClass resourceClass) { for (ResourceMethod method : resourceClass.getResourceMethods()) { processMethod(method); } for (ResourceLocator method : resourceClass.getResourceLocators()) { processMethod(method); } }
@Override public void removeRegistrations(ResourceClass resourceClass) { for (ResourceMethod method : resourceClass.getResourceMethods()) { if (widerMatching) rootNode.removeBinding(method.getFullpath(), method.getMethod()); else root.removeBinding(resourceClass.getPath(), method.getFullpath(), method.getMethod()); } for (ResourceLocator method : resourceClass.getResourceLocators()) { if (widerMatching) rootNode.removeBinding(method.getFullpath(), method.getMethod()); else root.removeBinding(resourceClass.getPath(), method.getFullpath(), method.getMethod()); } }
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.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; locatorRes.methodsDescriptions.add(jaxrsRes); for (ResourceLocator resLocator: resClass.getResourceLocators()) { Class<?> clz = resLocator.getReturnType(); if (clz.equals(resClass.getClazz())) { break;
builder.path(base); builder.path(method.getResourceClass().getPath()); String classExpression = builder.getPath(); if (classExpression == null) {
public ResourcePropertyInjector(final ResourceClass resourceClass, final ResteasyProviderFactory factory) { this.resourceClass = resourceClass; this.factory = factory; for (FieldParameter param : resourceClass.getFields()) { ValueInjector injector = factory.getInjectorFactory().createParameterExtractor(param, factory); if (injector == null) continue; fields.add(new FieldInjector(param, injector)); } for (SetterParameter param : resourceClass.getSetters()) { ValueInjector injector = factory.getInjectorFactory().createParameterExtractor(param, factory); if (injector == null) continue; setters.add(new SetterInjector(param, injector)); } }
/** * 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(); }
@Override public void removeRegistrations(ResourceClass resourceClass) { for (ResourceMethod method : resourceClass.getResourceMethods()) { if (widerMatching) rootNode.removeBinding(method.getFullpath(), method.getMethod()); else root.removeBinding(resourceClass.getPath(), method.getFullpath(), method.getMethod()); } for (ResourceLocator method : resourceClass.getResourceLocators()) { if (widerMatching) rootNode.removeBinding(method.getFullpath(), method.getMethod()); else root.removeBinding(resourceClass.getPath(), method.getFullpath(), method.getMethod()); } }
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.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; locatorRes.methodsDescriptions.add(jaxrsRes); for (ResourceLocator resLocator: resClass.getResourceLocators()) { Class<?> clz = resLocator.getReturnType(); if (clz.equals(resClass.getClazz())) { break;
protected void register(ResourceFactory rf, String base, ResourceClass resourceClass) { for (ResourceMethod method : resourceClass.getResourceMethods()) { processMethod(rf, base, method); } for (ResourceLocator method : resourceClass.getResourceLocators()) { processMethod(rf, base, method); } }
builder.path(base); builder.path(method.getResourceClass().getPath()); String classExpression = builder.getPath(); if (classExpression == null) {
public ResourcePropertyInjector(ResourceClass resourceClass, ResteasyProviderFactory factory) { this.resourceClass = resourceClass; this.factory = factory; for (FieldParameter param : resourceClass.getFields()) { ValueInjector injector = factory.getInjectorFactory().createParameterExtractor(param, factory); if (injector == null) continue; fields.add(new FieldInjector(param, injector)); } for (SetterParameter param : resourceClass.getSetters()) { ValueInjector injector = factory.getInjectorFactory().createParameterExtractor(param, factory); if (injector == null) continue; setters.add(new SetterInjector(param, injector)); } }
/** * 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 POJOResourceFactory(final ResourceBuilder resourceBuilder, final ResourceClass resourceClass) { this.resourceBuilder = resourceBuilder; this.scannableClass = resourceClass.getClazz(); this.resourceClass = resourceClass; }
public ResourceClassBuilder buildMethod() { ResteasyUriBuilder builder = (ResteasyUriBuilder) RuntimeDelegate.getInstance().createUriBuilder(); if (method.resourceClass.getPath() != null) builder.path(method.resourceClass.getPath()); if (method.path != null) builder.path(method.path); String pathExpression = builder.getPath(); if (pathExpression == null) pathExpression = ""; method.fullpath = pathExpression; if (method.resourceClass.getClazz().isAnonymousClass()) { method.getMethod().setAccessible(true); } resourceClassBuilder.resourceMethods.add(method); return resourceClassBuilder; } }
@Override public void removeRegistrations(ResourceClass resourceClass) { for (ResourceMethod method : resourceClass.getResourceMethods()) { if (widerMatching) rootNode.removeBinding(method.getFullpath(), method.getMethod()); else root.removeBinding(resourceClass.getPath(), method.getFullpath(), method.getMethod()); } for (ResourceLocator method : resourceClass.getResourceLocators()) { if (widerMatching) rootNode.removeBinding(method.getFullpath(), method.getMethod()); else root.removeBinding(resourceClass.getPath(), method.getFullpath(), method.getMethod()); } }
public void registered(ResteasyProviderFactory factory) { ResourceConstructor constructor = resourceClass.getConstructor(); if (constructor == null) constructor = resourceBuilder.getConstructor(resourceClass.getClazz()); if (constructor == null) { throw new RuntimeException(Messages.MESSAGES.unableToFindPublicConstructorForClass(scannableClass.getName())); } this.constructorInjector = factory.getInjectorFactory().createConstructor(constructor, factory); this.propertyInjector = factory.getInjectorFactory().createPropertyInjector(resourceClass, factory); }
protected void register(ResourceFactory rf, String base, ResourceClass resourceClass) { for (ResourceMethod method : resourceClass.getResourceMethods()) { processMethod(rf, base, method); } for (ResourceLocator method : resourceClass.getResourceLocators()) { processMethod(rf, base, method); } }