private void setExtraProperties(WadlGenerator wg) { wg.setSingleResourceMultipleMethods(singleResourceMultipleMethods); wg.setIncrementNamespacePrefix(incrementNamespacePrefix); wg.setUseSingleSlashResource(useSingleSlashResource); wg.setIncludeDefaultWadlSchemaLocation(includeDefaultWadlSchemaLocation); wg.setIgnoreForwardSlash(ignoreForwardSlash); wg.setAddResourceAndMethodIds(addResourceAndMethodIds); wg.setLinkAnyMediaTypeToXmlSchema(linkAnyMediaTypeToXmlSchema); wg.setCheckAbsolutePathSlash(checkAbsolutePathSlash); wg.setIgnoreOverloadedMethods(ignoreOverloadedMethods); wg.setUseJaxbContextForQnames(useJaxbContextForQnames); wg.setUsePathParamsToCompareOperations(usePathParamsToCompareOperations); wg.setSupportCollections(supportCollections); wg.setSupportJaxbXmlType(supportJaxbXmlType); wg.setSupportJaxbSubstitutions(supportJaxbSubstitutions); if (applicationTitle != null) { wg.setApplicationTitle(applicationTitle); } if (namespacePrefix != null) { wg.setNamespacePrefix(namespacePrefix); } wg.setStylesheetReference(stylesheetReference); }
WadlGenerator wg = new WadlGenerator(); wg.setSchemaLocations(Collections.singletonList("classpath:/books.xsd"));
OperationResourceInfo nextOp, boolean resourceTagOpened, boolean isJson, int index) { Annotation[] anns = getMethod(ori).getAnnotations(); boolean samePathOperationFollows = singleResourceMultipleMethods && compareOperations(ori, nextOp); if (!resourceTagOpened && openResource(path)) { resourceTagOpened = true; URITemplate template = ori.getClassResourceInfo().getURITemplate(); startResourceTag(sb, ori, getPath(path)); handleDocs(anns, sb, DocTarget.RESOURCE, false, isJson); handlePathAndMatrixClassParams(sb, classParams, isJson); handlePathAndMatrixParams(sb, ori, isJson); } else if (index == 0) { handlePathAndMatrixClassParams(sb, classParams, isJson); handlePathAndMatrixParams(sb, ori, isJson); startMethodTag(sb, ori); handleDocs(anns, sb, DocTarget.METHOD, true, isJson); if (getMethod(ori).getParameterTypes().length != 0 || classParams.size() != 0) { startMethodRequestTag(sb, ori); handleDocs(anns, sb, DocTarget.REQUEST, false, isJson); boolean isForm = isFormRequest(ori); doHandleClassParams(sb, classParams, isJson, ParameterType.QUERY, ParameterType.HEADER); doHandleJaxrsBeanParamClassParams(sb, classParams, isJson, ParameterType.QUERY, ParameterType.HEADER);
StringBuilder sbMain = new StringBuilder(); if (!isJson && stylesheetReference != null && !applyStylesheetLocally) { sbMain.append("<?xml-stylesheet ").append(getStylesheetInstructionData(baseURI)).append("?>"); sbMain.append(" xmlns=\"").append(getNamespace()).append("\" xmlns:xs=\"") .append(Constants.URI_2001_SCHEMA_XSD).append("\""); useJaxbContextForQnames, jaxbWriter); checkXmlSeeAlso(resourceTypes); Set<Class<?>> allTypes = resourceTypes.getAllTypes().keySet(); SchemaWriter schemaWriter = createSchemaWriter(resourceTypes, jaxbContext, ui); ElementQNameResolver qnameResolver = schemaWriter == null ? null : createElementQNameResolver(jaxbContext); startResourceTag(sbResources, cri, cri.getURITemplate().getValue()); handleDocs(new Annotation[] {description}, sbResources, DocTarget.RESOURCE, true, isJson); } else { handleClassJavaDocs(cri, sbResources); handleResource(sbResources, allTypes, qnameResolver, clsMap, cri, visitedResources, isJson); sbResources.append("</resource>"); handleGrammars(sbMain, sbGrammars, schemaWriter, clsMap); handleApplicationDocs(sbMain); sbMain.append(sbGrammars.toString());
if (MultivaluedMap.class.isAssignableFrom(type)) { types = Collections.singletonList(MediaType.APPLICATION_FORM_URLENCODED_TYPE); } else if (isWildcard(types)) { types = Collections.singletonList(MediaType.APPLICATION_OCTET_STREAM_TYPE); Method opMethod = getMethod(ori); boolean isPrimitive = InjectionUtils.isPrimitive(type); for (MediaType mt : types) { Annotation[] anns; if (inbound) { int index = getRequestBodyParam(ori).getIndex(); anns = opMethod.getParameterAnnotations()[index]; if (!isDocAvailable(anns)) { anns = opMethod.getAnnotations(); Parameter p = inbound ? getRequestBodyParam(ori) : new Parameter(ParameterType.REQUEST_BODY, 0, "result"); doWriteParam(sb, p, type, type, p.getName() == null ? "request" : p.getName(), anns, isJson); sb.append("</representation>"); } else { if (isCollection) { theActualType = InjectionUtils.getActualType(!inbound ? opMethod.getGenericReturnType() : opMethod .getGenericParameterTypes()[getRequestBodyParam(ori).getIndex()]); } else { theActualType = ResourceUtils.getActualJaxbType(type, opMethod, inbound); && (linkAnyMediaTypeToXmlSchema || mt.getSubtype().contains("xml"))
return getExistingResource(m, ui, path); .contains(MediaType.APPLICATION_JSON_TYPE) ? MediaType.APPLICATION_JSON_TYPE : defaultMediaType; Response response = getExistingWadl(m, ui, type); if (response != null) { return response; StringBuilder sbMain = generateWADL(getBaseURI(m, ui), getResourcesList(m, resource), isJson, m, ui); return Response.ok().type(type).entity(createResponseEntity(sbMain.toString(), isJson)).build();
protected void doWriteParam(StringBuilder sb, Parameter pm, Class<?> type, Type genericType, String paramName, Annotation[] anns, boolean isJson) { ParameterType pType = pm.getType(); boolean isForm = isFormParameter(pm, type, anns); if (paramName == null && isForm) { Multipart m = AnnotationUtils.getAnnotation(anns, Multipart.class); sb.append("style=\"").append(style).append("\""); if (pm.getDefaultValue() != null) { sb.append(" default=\"").append(xmlEncodeIfNeeded(pm.getDefaultValue())) .append("\""); handleDocs(anns, sb, DocTarget.PARAM, true, isJson); setEnumOptions(sb, type); sb.append("</param>"); } else { addDocsAndCloseElement(sb, anns, "param", DocTarget.PARAM, true, isJson);
DOMResult.class))) { Document doc = (Document)r.getNode(); ElementQNameResolver theResolver = createElementQNameResolver(context); String tns = doc.getDocumentElement().getAttribute("targetNamespace"); if (isXmlRoot(cls)) { continue; hackAroundEmptyNamespaceIssue = addSchemaDocument(xmlSchemaCollection, targetNamespaces, (Document)r.getNode(), r.getSystemId(), hackAroundEmptyNamespaceIssue);
wadlGenerator = new WadlGenerator(getBus()); getConstructor(new Class[] {String.class}). newInstance(new Object[] {project.getBuild().getDirectory()}); wadlGenerator.setDocumentationProvider(documentationProvider); } catch (Exception e) { throw new MojoExecutionException(e.getMessage(), e); StringBuilder sbMain = wadlGenerator.generateWADL(getBaseURI(), classResourceInfos, useJson, null, null); getLog().debug("the wadl is =====> \n" + sbMain.toString()); generateWadl(resourceClasses, sbMain.toString());
d = copy(d); ns = tnsList.isEmpty() ? "" : tnsList.get(0); d.getDocumentElement().setAttribute("targetNamespace", ns); d = doEmptyNamespaceHack(d);
public void setLinkJsonToXmlSchema(boolean link) { setLinkAnyMediaTypeToXmlSchema(link); }
private Document doEmptyNamespaceHack(Document d) { boolean hasStuffToRemove = false; Element el = DOMUtils.getFirstElement(d.getDocumentElement()); while (el != null) { if ("import".equals(el.getLocalName()) && StringUtils.isEmpty(el.getAttribute("targetNamespace"))) { hasStuffToRemove = true; break; } el = DOMUtils.getNextElement(el); } if (hasStuffToRemove) { // create a copy of the dom so we // can modify it. d = copy(d); el = DOMUtils.getFirstElement(d.getDocumentElement()); while (el != null) { if ("import".equals(el.getLocalName()) && StringUtils.isEmpty(el.getAttribute("targetNamespace"))) { d.getDocumentElement().removeChild(el); el = DOMUtils.getFirstElement(d.getDocumentElement()); } else { el = DOMUtils.getNextElement(el); } } } return d; }
StringBuilder sbMain = new StringBuilder(); if (!isJson && stylesheetReference != null && !applyStylesheetLocally) { sbMain.append("<?xml-stylesheet ").append(getStylesheetInstructionData(baseURI)).append("?>"); sbMain.append(" xmlns=\"").append(getNamespace()).append("\" xmlns:xs=\"") .append(Constants.URI_2001_SCHEMA_XSD).append("\""); useJaxbContextForQnames, jaxbWriter); checkXmlSeeAlso(resourceTypes); Set<Class<?>> allTypes = resourceTypes.getAllTypes().keySet(); SchemaWriter schemaWriter = createSchemaWriter(resourceTypes, jaxbContext, ui); ElementQNameResolver qnameResolver = schemaWriter == null ? null : createElementQNameResolver(jaxbContext); startResourceTag(sbResources, cri, cri.getURITemplate().getValue()); handleDocs(new Annotation[] {description}, sbResources, DocTarget.RESOURCE, true, isJson); } else { handleClassJavaDocs(cri, sbResources); handleResource(sbResources, allTypes, qnameResolver, clsMap, cri, visitedResources, isJson); sbResources.append("</resource>"); handleGrammars(sbMain, sbGrammars, schemaWriter, clsMap); handleApplicationDocs(sbMain); sbMain.append(sbGrammars.toString());
if (MultivaluedMap.class.isAssignableFrom(type)) { types = Collections.singletonList(MediaType.APPLICATION_FORM_URLENCODED_TYPE); } else if (isWildcard(types)) { types = Collections.singletonList(defaultRepMediaType); Method opMethod = getMethod(ori); boolean isPrimitive = InjectionUtils.isPrimitive(type) && !ori.isAsync(); for (MediaType mt : types) { Type genericType; if (inbound) { inParamIndex = getRequestBodyParam(ori).getIndex(); anns = opMethod.getParameterAnnotations()[inParamIndex]; if (!isDocAvailable(anns)) { anns = opMethod.getAnnotations(); Parameter p = inbound ? getRequestBodyParam(ori) : new Parameter(ParameterType.REQUEST_BODY, 0, "result"); doWriteParam(ori, sb, p, type, type, p.getName() == null ? "request" : p.getName(), anns, isJson); sb.append("</representation>"); } else { && (linkAnyMediaTypeToXmlSchema || mt.getSubtype().contains("xml")) && jaxbTypes.contains(theActualType)) { generateQName(sb, qnameResolver, clsMap, theActualType, isCollection, getBodyAnnotations(ori, inbound)); addDocsAndCloseElement(ori, inParamIndex, sb, anns, "representation", docCategory, allowDefault, isJson);
context.abortWith(getExistingResource(m, ui, path)); : defaultWadlResponseMediaType; Response response = getExistingWadl(m, ui, type); if (response != null) { context.abortWith(response); boolean isJson = isJson(type); StringBuilder sbMain = generateWADL(getBaseURI(m, ui), getResourcesList(m, ui), isJson, m, ui); Response r = Response.ok().type(type).entity(createResponseEntity(m, ui, sbMain.toString(), isJson)).build(); context.abortWith(r);
boolean isForm = isFormParameter(pm, type, anns); if (paramName == null && isForm) { Multipart m = AnnotationUtils.getAnnotation(anns, Multipart.class); sb.append("style=\"").append(style).append("\""); if (pm.getDefaultValue() != null) { sb.append(" default=\"").append(xmlEncodeIfNeeded(pm.getDefaultValue())) .append("\""); handleDocs(anns, sb, DocTarget.PARAM, true, isJson); setEnumOptions(sb, type); sb.append("</param>"); } else { addDocsAndCloseElement(ori, pm.getIndex(), sb, anns, "param", DocTarget.PARAM, true, isJson);
DOMResult.class))) { Document doc = (Document)r.getNode(); ElementQNameResolver theResolver = createElementQNameResolver(context); String tns = doc.getDocumentElement().getAttribute("targetNamespace"); if (isXmlRoot(cls)) { continue; hackAroundEmptyNamespaceIssue = addSchemaDocument(xmlSchemaCollection, targetNamespaces, (Document)r.getNode(), r.getSystemId(), hackAroundEmptyNamespaceIssue);
wadlGenerator = new WadlGenerator(getBus()); getConstructor(new Class[] {String.class}). newInstance(new Object[] {project.getBuild().getDirectory()}); wadlGenerator.setDocumentationProvider(documentationProvider); } catch (Exception e) { throw new MojoExecutionException(e.getMessage(), e); StringBuilder sbMain = wadlGenerator.generateWADL(getBaseURI(), classResourceInfos, useJson, null, null); getLog().debug("the wadl is =====> \n" + sbMain.toString()); generateWadl(resourceClasses, sbMain.toString());
d = copy(d); ns = tnsList.isEmpty() ? "" : tnsList.get(0); d.getDocumentElement().setAttribute("targetNamespace", ns); d = doEmptyNamespaceHack(d);
@Deprecated public void setLinkJsonToXmlSchema(boolean link) { setLinkAnyMediaTypeToXmlSchema(link); } public void setLinkAnyMediaTypeToXmlSchema(boolean link) {