/*
   * (non-Javadoc)
   *
   * @see org.jboss.arquillian.container.sramp.SrampService#undeployArchives()
   */
  public void undeployArchives(String archiveId) throws SrampClientException, SrampAtomException {

    log.debug("Deleting expanded artifacts");

    // Delete expanded artifacts
    QueryResultSet rset =
        client
            .buildQuery("/s-ramp[expandedFromDocument[@arquillian-archive-id = ?]]")
            .parameter(archiveId)
            .query();

    for (ArtifactSummary artifactSummary : rset) {
      log.debug("Deleting: " + artifactSummary.getName());
      client.deleteArtifact(artifactSummary.getUuid(), artifactSummary.getType());
    }

    // Delete (un)deployment information
    rset =
        client
            .buildQuery("/s-ramp[describesDeployment[@arquillian-archive-id = ?]]")
            .parameter(archiveId)
            .query();
    for (ArtifactSummary artifactSummary : rset) {
      log.debug("Deleting: " + artifactSummary.getName());
      client.deleteArtifact(artifactSummary.getUuid(), artifactSummary.getType());
    }

    // Delete main archive
    // Related are deleted along with the primary
    rset = client.buildQuery("/s-ramp[@arquillian-archive-id = ?]").parameter(archiveId).query();

    ArtifactSummary archiveArtifact = rset.get(0);

    log.debug("Deleting: " + archiveArtifact.getName());

    client.deleteArtifact(archiveArtifact.getUuid(), archiveArtifact.getType());

    // Internal consistency check whether the number of artifacts before
    // deploy and after deploy match
    long artifactCounterTemp = client.query("/s-ramp").getTotalResults();

    if (artifactCounter != artifactCounterTemp) {
      log.warn("Artifact counts does not match!");
      log.warn(
          "Artifacts before deploy: "
              + artifactCounter
              + ". Artifacts after undeploy: "
              + artifactCounterTemp);
      artifactCounter = artifactCounterTemp;
    }
  }
Beispiel #2
0
 /**
  * Ensures that the required ArtifactGrouping is present in the repository.
  *
  * @throws SrampAtomException
  * @throws SrampClientException
  */
 private BaseArtifactType ensureArtifactGrouping()
     throws SrampClientException, SrampAtomException {
   String groupingName = getParamFromRepositoryUrl("artifactGrouping"); // $NON-NLS-1$
   if (groupingName == null || groupingName.trim().length() == 0) {
     logger.warn(Messages.i18n.format("NO_ARTIFACT_GROUPING_NAME")); // $NON-NLS-1$
     return null;
   }
   QueryResultSet query =
       client
           .buildQuery("/s-ramp/ext/ArtifactGrouping[@name = ?]")
           .parameter(groupingName)
           .count(2)
           .query(); //$NON-NLS-1$
   if (query.size() > 1) {
     logger.warn(
         Messages.i18n.format("MULTIPLE_ARTIFACT_GROUPSING_FOUND", groupingName)); // $NON-NLS-1$
     return null;
   } else if (query.size() == 1) {
     ArtifactSummary summary = query.get(0);
     return client.getArtifactMetaData(summary.getType(), summary.getUuid());
   } else {
     ExtendedArtifactType groupingArtifact = new ExtendedArtifactType();
     groupingArtifact.setArtifactType(BaseArtifactEnum.EXTENDED_ARTIFACT_TYPE);
     groupingArtifact.setExtendedType("ArtifactGrouping"); // $NON-NLS-1$
     groupingArtifact.setName(groupingName);
     groupingArtifact.setDescription(
         Messages.i18n.format("ARTIFACT_GROUPING_DESCRIPTION")); // $NON-NLS-1$
     return client.createArtifact(groupingArtifact);
   }
 }
Beispiel #3
0
  /** @see org.overlord.sramp.common.shell.ShellCommand#execute() */
  @Override
  public void execute() throws Exception {
    QName clientVarName = new QName("s-ramp", "client");
    QName artifactVarName = new QName("s-ramp", "artifact");
    QName feedVarName = new QName("s-ramp", "feed");

    SrampAtomApiClient client = (SrampAtomApiClient) getContext().getVariable(clientVarName);
    if (client == null) {
      print("No S-RAMP repository connection is currently open.");
      return;
    }

    BaseArtifactType artifact = null;
    String artifactIdArg = this.optionalArgument(0);
    if (artifactIdArg == null) {
      artifact = (BaseArtifactType) getContext().getVariable(artifactVarName);
      if (artifact == null) {
        print("No active S-RAMP artifact exists.  Use s-ramp:getMetaData.");
        return;
      }
    } else {
      String idType = artifactIdArg.substring(0, artifactIdArg.indexOf(':'));
      if ("feed".equals(idType)) {
        QueryResultSet rset = (QueryResultSet) getContext().getVariable(feedVarName);
        int feedIdx = Integer.parseInt(artifactIdArg.substring(artifactIdArg.indexOf(':') + 1)) - 1;
        if (feedIdx < 0 || feedIdx >= rset.size()) {
          throw new InvalidCommandArgumentException(0, "Feed index out of range.");
        }
        ArtifactSummary summary = rset.get(feedIdx);
        String artifactUUID = summary.getUuid();
        artifact = client.getArtifactMetaData(summary.getType(), artifactUUID);
      } else if ("uuid".equals(idType)) {
        throw new InvalidCommandArgumentException(
            0, "uuid: style artifact identifiers not yet implemented.");
      } else {
        throw new InvalidCommandArgumentException(0, "Invalid artifact id format.");
      }
    }

    try {
      client.deleteArtifact(artifact.getUuid(), ArtifactType.valueOf(artifact));
      print("Successfully deleted artifact '%1$s'.", artifact.getName());
    } catch (Exception e) {
      print("FAILED to delete the artifact.");
      print("\t" + e.getMessage());
    }
  }
Beispiel #4
0
  /**
   * Finds an existing artifact in the s-ramp repository that matches the GAV information.
   *
   * @param client
   * @param gavInfo
   * @return an s-ramp artifact (if found) or null (if not found)
   * @throws SrampClientException
   * @throws SrampAtomException
   * @throws JAXBException
   */
  private BaseArtifactType findExistingArtifactByGAV(
      SrampAtomApiClient client, MavenGavInfo gavInfo)
      throws SrampAtomException, SrampClientException, JAXBException {
    SrampClientQuery clientQuery = null;

    StringBuilder queryBuilder = new StringBuilder();
    queryBuilder.append("/s-ramp"); // $NON-NLS-1$
    List<String> criteria = new ArrayList<String>();
    List<Object> params = new ArrayList<Object>();

    criteria.add("@maven.groupId = ?"); // $NON-NLS-1$
    params.add(gavInfo.getGroupId());
    criteria.add("@maven.artifactId = ?"); // $NON-NLS-1$
    params.add(gavInfo.getArtifactId());
    criteria.add("@maven.version = ?"); // $NON-NLS-1$
    params.add(gavInfo.getVersion());

    if (StringUtils.isNotBlank(gavInfo.getType())) {
      criteria.add("@maven.type = ?"); // $NON-NLS-1$
      params.add(gavInfo.getType());
    }
    if (StringUtils.isNotBlank(gavInfo.getClassifier())) {
      criteria.add("@maven.classifier = ?"); // $NON-NLS-1$
      params.add(gavInfo.getClassifier());
    }
    if (StringUtils.isNotBlank(gavInfo.getSnapshotId())) {
      return null;
    } else {
      criteria.add("xp2:not(@maven.snapshot.id)"); // $NON-NLS-1$
    }

    if (criteria.size() > 0) {
      queryBuilder.append("["); // $NON-NLS-1$
      queryBuilder.append(StringUtils.join(criteria, " and ")); // $NON-NLS-1$
      queryBuilder.append("]"); // $NON-NLS-1$
    }
    clientQuery = client.buildQuery(queryBuilder.toString());
    for (Object param : params) {
      if (param instanceof String) {
        clientQuery.parameter((String) param);
      }
      if (param instanceof Calendar) {
        clientQuery.parameter((Calendar) param);
      }
    }

    QueryResultSet rset = clientQuery.count(100).query();
    if (rset.size() > 0) {
      for (ArtifactSummary summary : rset) {
        String uuid = summary.getUuid();
        ArtifactType artifactType = summary.getType();
        BaseArtifactType arty = client.getArtifactMetaData(artifactType, uuid);
        // If no classifier in the GAV info, only return the artifact that also has no classifier
        // TODO replace this with "not(@maven.classifer)" in the query, then force the result set to
        // return 2 items (expecting only 1)
        if (gavInfo.getClassifier() == null) {
          String artyClassifier =
              SrampModelUtils.getCustomProperty(arty, "maven.classifier"); // $NON-NLS-1$
          if (artyClassifier == null) {
            return arty;
          }
        } else {
          // If classifier was supplied in the GAV info, we'll get the first artifact <shrug>
          return arty;
        }
      }
    }
    return null;
  }