private void addSubResources(RestResource newResource, Resource resource) { for (Resource res : resource.getResourceList()) { String path = res.getPath(); if (path == null) { path = ""; } String name = getFirstTitle(res.getDocList(), path); RestResource newRes = null; for (RestResource child : newResource.getChildResourceList()) { if (path.equals(child.getPath())) { newRes = child; break; } } if (newRes == null) { newRes = newResource.addNewChildResource(name, path); } initResourceFromWadlResource(newRes, res); addSubResources(newRes, res); } }
private void initResourceFromWadlResource(RestResource newResource, Resource resource) { for (Param param : resource.getParamList()) { param = resolveParameter(param); if (param != null) { String nm = param.getName(); RestParamProperty prop = newResource.hasProperty(nm) ? newResource.getProperty(nm) : newResource.addProperty(nm); initParam(param, prop); } } for (Method method : resource.getMethodList()) { method = resolveMethod(method); initMethod(newResource, method); } List<?> types = resource.getType(); if (types != null && types.size() > 0) { for (Object obj : types) { ResourceTypeDocument.ResourceType type = resolveResource(obj.toString()); if (type != null) { for (Method method : type.getMethodList()) { method = resolveMethod(method); RestMethod restMethod = initMethod(newResource, method); for (Param param : type.getParamList()) { param = resolveParameter(param); if (param != null) { String nm = param.getName(); RestParamProperty prop = restMethod.hasProperty(nm) ? restMethod.getProperty(nm) : restMethod.addProperty(nm); initParam(param, prop); } } } } } } }
public void initFromWadl(String wadlUrl) { try { // XmlObject xmlObject = XmlObject.Factory.parse( new URL( wadlUrl ) ); XmlObject xmlObject = XmlUtils.createXmlObject(new URL(wadlUrl)); String content = xmlObject.xmlText(); Element element = ((Document) xmlObject.getDomNode()).getDocumentElement(); // try to allow older namespaces if (element.getLocalName().equals("application") && element.getNamespaceURI().startsWith("http://research.sun.com/wadl")) { isWADL11 = false; content = content.replaceAll( "\"" + element.getNamespaceURI() + "\"", "\"" + Constants.WADL11_NS + "\""); } else if (!element.getLocalName().equals("application") || !element.getNamespaceURI().equals(Constants.WADL11_NS)) { throw new Exception( "Document is not a WADL application with " + Constants.WADL11_NS + " namespace"); } content = PropertyExpansionRemover.removeExpansions(content); ApplicationDocument applicationDocument = ApplicationDocument.Factory.parse(content); application = applicationDocument.getApplication(); resourcesList = application.getResourcesList(); service.setName(getFirstTitle(application.getDocList(), service.getName())); String base = resourcesList.size() == 1 ? resourcesList.get(0).getBase() : ""; try { URL baseUrl = new URL(base); service.setBasePath(baseUrl.getPath()); service.addEndpoint(Tools.getEndpointFromUrl(baseUrl)); } catch (Exception e) { service.setBasePath(base); } service.setWadlUrl(wadlUrl); service.getConfig().setWadlVersion(isWADL11 ? Constants.WADL11_NS : Constants.WADL10_NS); for (Resources resources : resourcesList) { RestResource baseResource = null; if (resourcesList.size() > 1) { String path = resources.getBase(); baseResource = service.addNewResource(path, path); } for (Resource resource : resources.getResourceList()) { String name = getFirstTitle(resource.getDocList(), resource.getPath()); String path = resource.getPath(); RestResource newResource = null; if (baseResource != null && path != null) { for (RestResource res : baseResource.getChildResourceList()) { if (path.equals(res.getPath())) { newResource = res; break; } } if (newResource == null) { newResource = baseResource.addNewChildResource(name, path); } } else if (path != null) { for (RestResource res : service.getResourceList()) { if (path.equals(res.getPath())) { newResource = res; break; } } if (newResource == null) { newResource = service.addNewResource(name, path); } } else { newResource = service.addNewResource(name, ""); } initResourceFromWadlResource(newResource, resource); addSubResources(newResource, resource); } } } catch (InvalidDefinitionException ex) { ex.show(); } catch (Exception e) { UISupport.showErrorMessage(e); } }