public SubscriptionCollectionResource(
      List<Subscription> subscriptions,
      Class<Subscription> entityClass,
      String baseResourceUri,
      String collectionPath,
      UriInfo uriInfo,
      Map<String, List<String>> queryParams,
      RestApiVersion apiVersion) {

    super(
        subscriptions,
        entityClass,
        baseResourceUri,
        collectionPath,
        uriInfo,
        queryParams,
        apiVersion);

    List<String> expand = queryParams.get(ResourcePath.EXPAND_QP_KEY);
    if (ResourcePath.expand(entityClass, expand)) {
      /*
       * We pass null for apiVersion since the version used in the
       * original request does not necessarily apply here.
       */
      apiVersion = null;
      this.items =
          SubscriptionResource.subscriptionResourceListPageFromSubscriptions(
              subscriptions, uriInfo, queryParams, apiVersion);
    }
  }
 @Override
 public void delete(RequestContext requestContext) throws RegistryException {
   if (!CommonUtil.isUpdateLockAvailable()) {
     return;
   }
   CommonUtil.acquireUpdateLock();
   try {
     Registry registry = requestContext.getRegistry();
     ResourcePath resourcePath = requestContext.getResourcePath();
     if (resourcePath == null) {
       throw new RegistryException("The resource path is not available.");
     }
     Resource resource = registry.get(resourcePath.getPath());
   } finally {
     CommonUtil.releaseUpdateLock();
   }
 }
Beispiel #3
0
 @Override
 protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
   requestEnvironment.respond(ResourcePath.parseResourcePath(req.getRequestURI()), req, resp);
 }
 /**
  * Sets the {@literal resourcePath} from the URI path (encoded value).
  *
  * <p>This method does not set or recreate the {@literal uri}, this is the responsibility of the
  * method caller.
  *
  * @param rawPath The raw (URI-encoded) path.
  */
 private void setResourcePath(String rawPath) {
   this.resourcePath = ResourcePath.valueOf(rawPath);
 }
  public String importWADLToRegistry(
      RequestContext requestContext, String commonLocation, boolean skipValidation)
      throws RegistryException {

    ResourcePath resourcePath = requestContext.getResourcePath();
    String wadlName = RegistryUtils.getResourceName(resourcePath.getPath());
    String version =
        requestContext.getResource().getProperty(RegistryConstants.VERSION_PARAMETER_NAME);

    if (version == null) {
      version = CommonConstants.WADL_VERSION_DEFAULT_VALUE;
      requestContext.getResource().setProperty(RegistryConstants.VERSION_PARAMETER_NAME, version);
    }

    String uri = requestContext.getSourceURL();
    if (!skipValidation) {
      validateWADL(uri);
    }

    Registry registry = requestContext.getRegistry();
    Resource resource = registry.newResource();
    if (resource.getUUID() == null) {
      resource.setUUID(UUID.randomUUID().toString());
    }
    resource.setMediaType(wadlMediaType);
    resource.setProperties(requestContext.getResource().getProperties());

    ByteArrayOutputStream outputStream;
    OMElement wadlElement;
    try {
      InputStream inputStream = new URL(uri).openStream();

      outputStream = new ByteArrayOutputStream();
      int nextChar;
      while ((nextChar = inputStream.read()) != -1) {
        outputStream.write(nextChar);
      }
      outputStream.flush();
      wadlElement = AXIOMUtil.stringToOM(new String(outputStream.toByteArray()));
      // to validate XML
      wadlElement.toString();
    } catch (Exception e) {
      // This exception is unexpected because the WADL already validated
      throw new RegistryException(
          "Unexpected error occured " + "while reading the WADL at" + uri, e);
    }

    String wadlNamespace = wadlElement.getNamespace().getNamespaceURI();
    String namespaceSegment =
        CommonUtil.derivePathFragmentFromNamespace(wadlNamespace).replace("//", "/");

    OMElement grammarsElement =
        wadlElement.getFirstChildWithName(new QName(wadlNamespace, "grammars"));
    String wadlBaseUri = uri.substring(0, uri.lastIndexOf("/") + 1);
    if (grammarsElement != null) {
      grammarsElement.detach();
      wadlElement.addChild(resolveImports(grammarsElement, wadlBaseUri, version));
    }

    String actualPath;
    if (commonLocation != null) {
      actualPath = commonLocation + namespaceSegment + version + "/" + wadlName;
    } else {
      actualPath =
          RegistryConstants.GOVERNANCE_REGISTRY_BASE_PATH
              + commonWADLLocation
              + namespaceSegment
              + version
              + "/"
              + wadlName;
    }
    if (resource.getProperty(CommonConstants.SOURCE_PROPERTY) == null) {
      resource.setProperty(CommonConstants.SOURCE_PROPERTY, CommonConstants.SOURCE_AUTO);
    }

    resource.setContent(wadlElement.toString());
    requestContext.setResourcePath(new ResourcePath(actualPath));
    registry.put(actualPath, resource);
    addImportAssociations(actualPath);
    if (createService) {
      OMElement serviceElement =
          RESTServiceUtils.createRestServiceArtifact(
              wadlElement,
              wadlName,
              version,
              RegistryUtils.getRelativePath(requestContext.getRegistryContext(), actualPath));
      String servicePath = RESTServiceUtils.addServiceToRegistry(requestContext, serviceElement);
      addDependency(servicePath, actualPath);
      String endpointPath = createEndpointElement(requestContext, wadlElement, version);
      if (endpointPath != null) {
        addDependency(servicePath, endpointPath);
      }
    }

    return actualPath;
  }