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);
}
}
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;
}
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;
}
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;
}
Aggregations