Beispiel #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);
    }
  }
Beispiel #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);
              }
            }
          }
        }
      }
    }
  }
  public RestMethod makeRestMethod() throws SoapUIException {
    RestMethodConfig methodConfig = RestMethodConfig.Factory.newInstance();
    methodConfig.setName("Get");
    methodConfig.setMethod("GET");
    final RestResource restResource = makeRestResource();
    RestMethod restMethod =
        new RestMethod(restResource, methodConfig) {
          @Override
          public RestRequestInterface.HttpMethod getMethod() {
            return RestRequestInterface.HttpMethod.GET;
          }

          @Override
          public RestResource getOperation() {
            return restResource;
          }
        };
    restResource.getConfig().setMethodArray(new RestMethodConfig[] {restMethod.getConfig()});
    return restMethod;
  }
Beispiel #4
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);
    }
  }
Beispiel #5
0
  private RestMethod initMethod(RestResource newResource, Method method) {
    // build name
    String name = getFirstTitle(method.getDocList(), method.getName());
    String id = method.getId();
    if (StringUtils.hasContent(id) && !id.trim().equals(name.trim())) {
      name += " - " + method.getId();
    }

    // ensure unique name
    if (newResource.getRestMethodByName(name) != null) {
      int cnt = 0;
      String orgName = name;

      while (newResource.getRestMethodByName(name) != null) {
        cnt++;
        name = orgName + "-" + cnt;
      }
    }

    // add to resource
    RestMethod restMethod = newResource.addNewMethod(name);
    restMethod.setMethod(RestRequestInterface.HttpMethod.valueOf(method.getName()));

    if (method.getRequest() != null) {
      for (Param param : method.getRequest().getParamList()) {
        param = resolveParameter(param);
        if (param != null) {
          RestParamProperty p = restMethod.addProperty(param.getName());
          initParam(param, p);
        }
      }

      for (Representation representation : method.getRequest().getRepresentationList()) {
        representation = resolveRepresentation(representation);
        addRepresentationFromConfig(
            restMethod, representation, RestRepresentation.Type.REQUEST, null);
      }
    }

    for (Response response : method.getResponseList()) {
      for (Representation representation : response.getRepresentationList()) {
        addRepresentation(response, restMethod, representation);
      }
      if (!isWADL11) {
        NodeList children = response.getDomNode().getChildNodes();
        for (int i = 0; i < children.getLength(); i++) {
          Node n = children.item(i);
          if ("fault".equals(n.getNodeName())) {
            String content = XmlUtils.serialize(n, false);
            try {
              Map<Object, Object> map = new HashMap<Object, Object>();
              XmlCursor cursor = response.newCursor();
              cursor.getAllNamespaces(map);
              cursor.dispose();
              XmlOptions options = new XmlOptions();
              options.setLoadAdditionalNamespaces(map);
              // XmlObject obj = XmlObject.Factory.parse(
              // content.replaceFirst( "<(([a-z]+:)?)fault ",
              // "<$1representation " ), options );
              XmlObject obj =
                  XmlUtils.createXmlObject(
                      content.replaceFirst("<(([a-z]+:)?)fault ", "<$1representation "), options);
              RepresentationDocument representation =
                  (RepresentationDocument) obj.changeType(RepresentationDocument.type);
              addRepresentation(response, restMethod, representation.getRepresentation());
            } catch (XmlException e) {
            }
          }
        }
      }
    }

    restMethod.addNewRequest("Request 1");
    return restMethod;
  }