예제 #1
0
  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);
    }
  }
예제 #2
0
  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);
              }
            }
          }
        }
      }
    }
  }
예제 #3
0
  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);
    }
  }