@Test public void resourceTest() { Resource.Builder builder = Resource.builder(LightMareBean.class); Resource resource = builder.build(); System.out.println(resource.getName()); System.out.println(resource); List<ResourceMethod> methods = resource.getAllMethods(); // ResourceMethod.Builder methodBuilder; // String name = resource.getName(); Collection<Class<?>> handlers = resource.getHandlerClasses(); System.out.println(handlers); Class<?> beanClass; Method realMethod; List<Parameter> parameters; for (ResourceMethod method : methods) { System.out.println(method); realMethod = method.getInvocable().getHandlingMethod(); realMethod.getParameterTypes(); MethodHandler handler = method.getInvocable().getHandler(); List<? extends ResourceModelComponent> components = method.getInvocable().getComponents(); parameters = method.getInvocable().getParameters(); MethodHandler methodHandler = method.getInvocable().getHandler(); System.out.println(methodHandler); for (Parameter parameter : parameters) { System.out.println(parameter); System.out.println(parameter.getRawType()); } System.out.println(components); beanClass = handler.getHandlerClass(); System.out.println(beanClass); System.out.println(realMethod); } }
@Override public AbstractContainerRequestValueFactory<?> createValueFactory(Parameter parameter) { String parameterName = parameter.getSourceName(); if (parameterName == null || parameterName.isEmpty()) { // Invalid query parameter name return null; } MultivaluedParameterExtractor e = get(parameter); if (e == null) { return null; } return new FormParamValueFactory(e, !parameter.isEncoded()); }
@Override protected AbstractContainerRequestValueFactory<?> createValueFactory(Parameter parameter) { Class<?> classType = parameter.getRawType(); if (classType == null || !classType.equals(AuthToken.class)) { return null; } return new AuthTokenValueFactory(); }
/** {@inheritDoc} */ @Override protected AbstractContainerRequestValueFactory<?> createValueFactory(Parameter parameter) { Class<?> classType = parameter.getRawType(); if (classType == null || (!classType.equals(ProductSearchCriteria.class))) { return null; } return new ProductSearchCriteriaValueFactory(); }
@Override public Param createParam( org.glassfish.jersey.server.model.Resource r, ResourceMethod m, final Parameter p) { if (p.getSource() == Parameter.Source.UNKNOWN) return null; Param wadlParam = new Param(); wadlParam.setName(p.getSourceName()); switch (p.getSource()) { case FORM: wadlParam.setStyle(ParamStyle.QUERY); break; case QUERY: wadlParam.setStyle(ParamStyle.QUERY); break; case MATRIX: wadlParam.setStyle(ParamStyle.MATRIX); break; case PATH: wadlParam.setStyle(ParamStyle.TEMPLATE); break; case HEADER: wadlParam.setStyle(ParamStyle.HEADER); break; case COOKIE: // Generates name="Cookie" path="<name>" wadlParam.setStyle(ParamStyle.HEADER); wadlParam.setName("Cookie"); wadlParam.setPath(p.getSourceName()); break; default: break; } if (p.hasDefaultValue()) wadlParam.setDefault(p.getDefaultValue()); Class<?> pClass = p.getRawType(); if (pClass.isArray()) { wadlParam.setRepeating(true); pClass = pClass.getComponentType(); } if (pClass.equals(int.class) || pClass.equals(Integer.class)) wadlParam.setType(new QName("http://www.w3.org/2001/XMLSchema", "int", "xs")); else if (pClass.equals(boolean.class) || pClass.equals(Boolean.class)) wadlParam.setType(new QName("http://www.w3.org/2001/XMLSchema", "boolean", "xs")); else if (pClass.equals(long.class) || pClass.equals(Long.class)) wadlParam.setType(new QName("http://www.w3.org/2001/XMLSchema", "long", "xs")); else if (pClass.equals(short.class) || pClass.equals(Short.class)) wadlParam.setType(new QName("http://www.w3.org/2001/XMLSchema", "short", "xs")); else if (pClass.equals(byte.class) || pClass.equals(Byte.class)) wadlParam.setType(new QName("http://www.w3.org/2001/XMLSchema", "byte", "xs")); else if (pClass.equals(float.class) || pClass.equals(Float.class)) wadlParam.setType(new QName("http://www.w3.org/2001/XMLSchema", "float", "xs")); else if (pClass.equals(double.class) || pClass.equals(Double.class)) wadlParam.setType(new QName("http://www.w3.org/2001/XMLSchema", "double", "xs")); else wadlParam.setType(new QName("http://www.w3.org/2001/XMLSchema", "string", "xs")); return wadlParam; }
/** * @param ar abstract resource * @param am abstract method * @param p parameter * @return parameter * @see * org.glassfish.jersey.server.wadl.WadlGenerator#createParam(org.glassfish.jersey.server.model.Resource, * org.glassfish.jersey.server.model.ResourceMethod, * org.glassfish.jersey.server.model.Parameter) */ public Param createParam( org.glassfish.jersey.server.model.Resource ar, org.glassfish.jersey.server.model.ResourceMethod am, Parameter p) { final Param param = wadlGeneratorDelegate.createParam(ar, am, p); // If the paramter is an entity we probably want to convert this to XML // if (p.getSource() == Parameter.Source.ENTITY) { nameCallbacks.add( new TypeCallbackPair( new GenericType(p.getType()), new NameCallbackSetter() { public void setName(QName name) { param.setType(name); } })); } return param; }
@Override public Object provide() { final ContainerRequest requestContext = getContainerRequest(); final Class<?> rawType = parameter.getRawType(); Object value; if ((Request.class.isAssignableFrom(rawType) || ContainerRequestContext.class.isAssignableFrom(rawType)) && rawType.isInstance(requestContext)) { value = requestContext; } else { value = requestContext.readEntity(rawType, parameter.getType(), parameter.getAnnotations()); if (rawType.isPrimitive() && value == null) { throw new BadRequestException( Response.status(Response.Status.BAD_REQUEST) .entity(LocalizationMessages.ERROR_PRIMITIVE_TYPE_NULL()) .build()); } } return value; }
/** * @param ar abstract resource * @param arm abstract resource method * @param mt media type * @return respresentation type * @see org.glassfish.jersey.server.wadl.WadlGenerator# createRequestRepresentation * (org.glassfish.jersey.server.model.Resource, * org.glassfish.jersey.server.model.ResourceMethod, javax.ws.rs.core.MediaType) */ public Representation createRequestRepresentation( org.glassfish.jersey.server.model.Resource ar, org.glassfish.jersey.server.model.ResourceMethod arm, MediaType mt) { final Representation rt = wadlGeneratorDelegate.createRequestRepresentation(ar, arm, mt); for (Parameter p : arm.getInvocable().getParameters()) { if (p.getSource() == Parameter.Source.ENTITY) { nameCallbacks.add( new TypeCallbackPair( new GenericType(p.getType()), new NameCallbackSetter() { @Override public void setName(QName name) { rt.setElement(name); } })); } } return rt; }