Search in sources :

Example 1 with Param

use of com.sun.research.ws.wadl.Param in project jersey by jersey.

the class WadlBuilder method generateResource.

private Resource generateResource(final org.glassfish.jersey.server.model.Resource resource, String path, Set<org.glassfish.jersey.server.model.Resource> visitedResources) {
    try {
        if (!detailedWadl && resource.isExtended()) {
            return null;
        }
        Resource wadlResource = _wadlGenerator.createResource(resource, path);
        // prevent infinite recursion
        if (visitedResources.contains(resource)) {
            return wadlResource;
        } else {
            visitedResources = new HashSet<>(visitedResources);
            visitedResources.add(resource);
        }
        // if the resource contains subresource locator create new resource for this locator and return it instead
        // of this resource
        final ResourceMethod locator = resource.getResourceLocator();
        if (locator != null) {
            try {
                org.glassfish.jersey.server.model.Resource.Builder builder = org.glassfish.jersey.server.model.Resource.builder(locator.getInvocable().getRawResponseType());
                if (builder == null) {
                    // for example in the case the return type of the sub resource locator is Object
                    builder = org.glassfish.jersey.server.model.Resource.builder().path(resource.getPath());
                }
                org.glassfish.jersey.server.model.Resource subResource = builder.build();
                Resource wadlSubResource = generateResource(subResource, resource.getPath(), visitedResources);
                if (wadlSubResource == null) {
                    return null;
                }
                if (locator.isExtended()) {
                    wadlSubResource.getAny().add(WadlApplicationContextImpl.EXTENDED_ELEMENT);
                }
                for (Parameter param : locator.getInvocable().getParameters()) {
                    Param wadlParam = generateParam(resource, locator, param);
                    if (wadlParam != null && wadlParam.getStyle() == ParamStyle.TEMPLATE) {
                        wadlSubResource.getParam().add(wadlParam);
                    }
                }
                return wadlSubResource;
            } catch (RuntimeException e) {
                throw new ProcessingException(LocalizationMessages.ERROR_WADL_BUILDER_GENERATION_RESOURCE_LOCATOR(locator, resource), e);
            }
        }
        Map<String, Param> wadlResourceParams = new HashMap<>();
        // for each resource method
        for (org.glassfish.jersey.server.model.ResourceMethod method : resource.getResourceMethods()) {
            if (!detailedWadl && method.isExtended()) {
                continue;
            }
            com.sun.research.ws.wadl.Method wadlMethod = generateMethod(resource, wadlResourceParams, method);
            wadlResource.getMethodOrResource().add(wadlMethod);
        }
        // add method parameters that are associated with the resource PATH template
        for (Param wadlParam : wadlResourceParams.values()) {
            wadlResource.getParam().add(wadlParam);
        }
        // for each sub-resource method
        Map<String, Resource> wadlSubResources = new HashMap<>();
        Map<String, Map<String, Param>> wadlSubResourcesParams = new HashMap<>();
        for (org.glassfish.jersey.server.model.Resource childResource : resource.getChildResources()) {
            Resource childWadlResource = generateResource(childResource, childResource.getPath(), visitedResources);
            if (childWadlResource == null) {
                continue;
            }
            wadlResource.getMethodOrResource().add(childWadlResource);
        }
        return wadlResource;
    } catch (Exception e) {
        throw new ProcessingException(LocalizationMessages.ERROR_WADL_BUILDER_GENERATION_RESOURCE_PATH(resource, path), e);
    }
}
Also used : HashMap(java.util.HashMap) ResourceMethod(org.glassfish.jersey.server.model.ResourceMethod) ProcessingException(javax.ws.rs.ProcessingException) Resource(com.sun.research.ws.wadl.Resource) ProcessingException(javax.ws.rs.ProcessingException) Param(com.sun.research.ws.wadl.Param) FormParam(javax.ws.rs.FormParam) Parameter(org.glassfish.jersey.server.model.Parameter) HashMap(java.util.HashMap) Map(java.util.Map) ResourceMethod(org.glassfish.jersey.server.model.ResourceMethod)

Example 2 with Param

use of com.sun.research.ws.wadl.Param in project jersey by jersey.

the class WadlGeneratorImpl method createParam.

@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;
}
Also used : QName(javax.xml.namespace.QName) Param(com.sun.research.ws.wadl.Param)

Example 3 with Param

use of com.sun.research.ws.wadl.Param in project jersey by jersey.

the class WadlGeneratorResourceDocSupport method createResponses.

/**
     * @param r Jersey resource component.
     * @param m resource method.
     * @return the enhanced {@link com.sun.research.ws.wadl.Response}.
     * @see org.glassfish.jersey.server.wadl.WadlGenerator#createResponses(org.glassfish.jersey.server.model.Resource,
     * org.glassfish.jersey.server.model.ResourceMethod)
     */
public List<Response> createResponses(final org.glassfish.jersey.server.model.Resource r, final org.glassfish.jersey.server.model.ResourceMethod m) {
    final ResponseDocType responseDoc = resourceDoc.getResponse(m.getInvocable().getDefinitionMethod().getDeclaringClass(), m.getInvocable().getDefinitionMethod());
    List<Response> responses = new ArrayList<Response>();
    if (responseDoc != null && responseDoc.hasRepresentations()) {
        for (final RepresentationDocType representationDoc : responseDoc.getRepresentations()) {
            final Response response = new Response();
            final Representation wadlRepresentation = new Representation();
            wadlRepresentation.setElement(representationDoc.getElement());
            wadlRepresentation.setMediaType(representationDoc.getMediaType());
            addDocForExample(wadlRepresentation.getDoc(), representationDoc.getExample());
            addDoc(wadlRepresentation.getDoc(), representationDoc.getDoc());
            response.getStatus().add(representationDoc.getStatus());
            response.getRepresentation().add(wadlRepresentation);
            responses.add(response);
        }
        if (!responseDoc.getWadlParams().isEmpty()) {
            for (final WadlParamType wadlParamType : responseDoc.getWadlParams()) {
                final Param param = new Param();
                param.setName(wadlParamType.getName());
                param.setStyle(ParamStyle.fromValue(wadlParamType.getStyle()));
                param.setType(wadlParamType.getType());
                addDoc(param.getDoc(), wadlParamType.getDoc());
                for (final Response response : responses) {
                    response.getParam().add(param);
                }
            }
        }
        if (!isEmpty(responseDoc.getReturnDoc())) {
            for (final Response response : responses) {
                addDoc(response.getDoc(), responseDoc.getReturnDoc());
            }
        }
    } else {
        responses = delegate.createResponses(r, m);
    }
    return responses;
}
Also used : Response(com.sun.research.ws.wadl.Response) WadlParamType(org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.WadlParamType) ResponseDocType(org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.ResponseDocType) ArrayList(java.util.ArrayList) Param(com.sun.research.ws.wadl.Param) Representation(com.sun.research.ws.wadl.Representation) RepresentationDocType(org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.RepresentationDocType)

Example 4 with Param

use of com.sun.research.ws.wadl.Param in project jersey by jersey.

the class WadlGeneratorResourceDocSupport method createParam.

/**
     * @param r Jersey resource component.
     * @param m resource method.
     * @param p method parameter.
     * @return the enhanced {@link Param}.
     * @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(final org.glassfish.jersey.server.model.Resource r, final org.glassfish.jersey.server.model.ResourceMethod m, final Parameter p) {
    final Param result = delegate.createParam(r, m, p);
    if (result != null) {
        final ParamDocType paramDoc = resourceDoc.getParamDoc(m.getInvocable().getDefinitionMethod().getDeclaringClass(), m.getInvocable().getDefinitionMethod(), p);
        if (paramDoc != null && !isEmpty(paramDoc.getCommentText())) {
            final Doc doc = new Doc();
            doc.getContent().add(paramDoc.getCommentText());
            result.getDoc().add(doc);
        }
    }
    return result;
}
Also used : Param(com.sun.research.ws.wadl.Param) Doc(com.sun.research.ws.wadl.Doc) ParamDocType(org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.ParamDocType)

Aggregations

Param (com.sun.research.ws.wadl.Param)4 Doc (com.sun.research.ws.wadl.Doc)1 Representation (com.sun.research.ws.wadl.Representation)1 Resource (com.sun.research.ws.wadl.Resource)1 Response (com.sun.research.ws.wadl.Response)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 FormParam (javax.ws.rs.FormParam)1 ProcessingException (javax.ws.rs.ProcessingException)1 QName (javax.xml.namespace.QName)1 Parameter (org.glassfish.jersey.server.model.Parameter)1 ResourceMethod (org.glassfish.jersey.server.model.ResourceMethod)1 ParamDocType (org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.ParamDocType)1 RepresentationDocType (org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.RepresentationDocType)1 ResponseDocType (org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.ResponseDocType)1 WadlParamType (org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model.WadlParamType)1