Package org.sonatype.nexus.proxy.walker

Examples of org.sonatype.nexus.proxy.walker.DefaultWalkerContext


  {
    final Repository repo = inhouseRelease;

    // == 1st pass: we recreate all the maven metadata for given repo to have them all in place
    {
      final DefaultWalkerContext ctx =
          new DefaultWalkerContext(repo, new ResourceStoreRequest(RepositoryItemUid.PATH_ROOT, true));
      ctx.getProcessors().add(new RecreateMavenMetadataWalkerProcessor(getLogger()));
      walker.walk(ctx);
    }

    // === 2nd pass: all MD is recreated, and they are valid, NO overwrite should happen at all!
    {
      final DefaultWalkerContext ctx =
          new DefaultWalkerContext(repo, new ResourceStoreRequest(RepositoryItemUid.PATH_ROOT, true));
      ctx.getProcessors().add(new RecreateMavenMetadataWalkerProcessor(getLogger()));
      final ValidationEventListener validationEventListener = new ValidationEventListener();
      eventBus().register(validationEventListener);
      walker.walk(ctx);
      eventBus().unregister(validationEventListener);
      assertFalse("We should not record any STORE!", validationEventListener.hasStoresRecorded());
    }

    // === 3rd pass: e manually "break" one checksum, and expect that one only to be overwritten
    {
      final String checksumPath = "/com/mycom/group1/maven-metadata.xml.sha1";
      final String checksumPathMd5 = "/com/mycom/group1/maven-metadata.xml.md5";
      // coming from http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.6.4/slf4j-api-1.6.4.pom.sha1
      final String wrongChecksum = "93c66c9afd6cf7b91bd4ecf38a60ca48fc5f2078";

      repo.storeItem(new ResourceStoreRequest(checksumPath),
          new ByteArrayInputStream(wrongChecksum.getBytes("UTF-8")), null);

      final DefaultWalkerContext ctx =
          new DefaultWalkerContext(repo, new ResourceStoreRequest(RepositoryItemUid.PATH_ROOT, true));
      ctx.getProcessors().add(new RecreateMavenMetadataWalkerProcessor(getLogger()));
      final ValidationEventListener validationEventListener = new ValidationEventListener();
      eventBus().register(validationEventListener);
      walker.walk(ctx);
      eventBus().unregister(validationEventListener);
      assertTrue("We should record one STORE!", validationEventListener.hasStoresRecorded());
View Full Code Here


        log.debug("Removing obsolete metadata files... ({}:{} cached)", repository.getId(), item.getPath());
        RepoMD repoMD = new RepoMD(((StorageFileItem) item).getInputStream());
        final Collection<String> locations = repoMD.getLocations();
        ResourceStoreRequest request = new ResourceStoreRequest("/" + Yum.PATH_OF_REPODATA);
        request.getRequestContext().put(AccessManager.REQUEST_AUTHORIZED, Boolean.TRUE);
        DefaultWalkerContext context = new DefaultWalkerContext(repository, request);
        context.getProcessors().add(new AbstractFileWalkerProcessor()
        {
          @Override
          protected void processFileItem(final WalkerContext context, final StorageFileItem item) throws Exception {
            if (!item.getPath().equals("/" + Yum.PATH_OF_REPOMD_XML)
                && !locations.contains(item.getPath().substring(1))) {
View Full Code Here

      mirrorFeature(site, feature, mirrored);
    }

    final ResourceStoreRequest root = new ResourceStoreRequest(RepositoryItemUid.PATH_ROOT);

    final DefaultWalkerContext ctx = new DefaultWalkerContext(this, root, filter);
    ctx.getContext().put("mirrored", mirrored);
    ctx.getProcessors().add(new AbstractWalkerProcessor()
    {
      @SuppressWarnings("unchecked")
      @Override
      public void processItem(final WalkerContext context, final StorageItem item)
          throws Exception
View Full Code Here

    log.debug(
        "Collecting deletable releases on repository '" + repository.getId() + "' from storage directory "
            + repository.getLocalUrl());

    DefaultWalkerContext ctxMain =
        new DefaultWalkerContext(repository, new ResourceStoreRequest("/"),
            determineFilter(repositoryTarget));

    ctxMain.getContext().put(DeleteOperation.DELETE_OPERATION_CTX_KEY, DeleteOperation.MOVE_TO_TRASH);

    ctxMain.getProcessors().add(new ReleaseRemovalWalkerProcessor(repository, request, result, repositoryTarget));

    walker.walk(ctxMain);

    if (ctxMain.getStopCause() != null) {
      result.setSuccessful(false);
    }
  }
View Full Code Here

    // create a walker to collect deletables and let it loose on collections only
    final SnapshotRemoverWalkerProcessor snapshotRemoveProcessor =
        new SnapshotRemoverWalkerProcessor(repository, request, parentOMatic);

    final DefaultWalkerContext ctxMain =
        new DefaultWalkerContext(repository,
            new ResourceStoreRequest("/"),
            new DottedStoreWalkerFilter(),
            TraversalType.BREADTH_FIRST,
            false);
    ctxMain.getContext().put(DeleteOperation.DELETE_OPERATION_CTX_KEY, getDeleteOperation(request));
    ctxMain.getProcessors().add(snapshotRemoveProcessor);
    walker.walk(ctxMain);

    if (ctxMain.getStopCause() != null) {
      result.setSuccessful(false);
    }

    // and collect results
    result.setDeletedSnapshots(snapshotRemoveProcessor.getDeletedSnapshots());
    result.setDeletedFiles(snapshotRemoveProcessor.getDeletedFiles());

    if (log.isDebugEnabled()) {
      log.debug(
          "Collected and deleted " + snapshotRemoveProcessor.getDeletedSnapshots()
              + " snapshots with alltogether " + snapshotRemoveProcessor.getDeletedFiles()
              + " files on repository " + repository.getId()
      );
    }

    // if we are processing a hosted-snapshot repository, we need to rebuild maven metadata
    // without this if below, the walk would happen against proxy repositories too, but doing nothing!
    if (repository.getRepositoryKind().isFacetAvailable(HostedRepository.class)) {
      // expire NFC since we might create new maven metadata files
      repository.expireNotFoundCaches(new ResourceStoreRequest(RepositoryItemUid.PATH_ROOT));

      RecreateMavenMetadataWalkerProcessor metadataRebuildProcessor =
          new RecreateMavenMetadataWalkerProcessor(log, getDeleteOperation(request));

      for (String path : parentOMatic.getMarkedPaths()) {
        TaskUtil.checkInterruption();

        DefaultWalkerContext ctxMd =
            new DefaultWalkerContext(repository, new ResourceStoreRequest(path),
                new DottedStoreWalkerFilter());

        ctxMd.getProcessors().add(metadataRebuildProcessor);

        try {
          walker.walk(ctxMd);
        }
        catch (WalkerException e) {
View Full Code Here

    // everything as usual, exception FSPeer implementation
    testRepo.setLocalStorage(new DefaultFSLocalRepositoryStorage(lookup(Wastebasket.class),
        lookup(LinkPersister.class), lookup(MimeSupport.class), new TestingDefaultFSPeer(minedParents)));

    // Create context and processors for the walk
    final DefaultWalkerContext context = new DefaultWalkerContext(testRepo, new ResourceStoreRequest("/"));
    context.getProcessors().add(new AbstractFileWalkerProcessor()
    {
      @Override
      protected void processFileItem(WalkerContext context, StorageFileItem fItem)
          throws Exception
      {
        visitedChildren.add(fItem.getPath());
      }

      @Override
      public void onCollectionExit(WalkerContext context, StorageCollectionItem coll)
          throws Exception
      {
        exitedCollections.add(coll.getPath());
      }

    });
    final Walker walker = lookup(Walker.class);

    // walk
    try {
      walker.walk(context);
      assertThat("Walk must fail as we planted a mine in there!", false);
    }
    catch (WalkerException e) {
      assertThat("Reason must state walk is \"aborted\"", e.getMessage().toLowerCase().contains("aborted"));
      assertThat("Reason must refer to our repo ID=" + REPO_ID,
          e.getMessage().toLowerCase().contains(REPO_ID.toLowerCase()));
      assertThat("Cause must be LocalStorageException", e.getCause() instanceof LocalStorageException);
      assertThat("Cause message must be the one we defined", e.getCause().getMessage(), equalTo(MINE_MESSAGE));
      assertThat("Context must be marked as stopped", context.isStopped());
      assertThat("Context stop-cause must be same as WalkerException's cause",
          context.getStopCause() == e.getCause());
      assertThat("Walk must stop before visiting all files", visitedChildren.size(), lessThan(filesInRepo));
      for (String minedParent : minedParents) {
        assertThat("WalkerProcessor#onCollectionExit must not be invoked with parent being mined",
            exitedCollections, not(contains(minedParent)));
      }
View Full Code Here

          }
        }
      };

      final ResourceStoreRequest request = new ResourceStoreRequest("/");
      final DefaultWalkerContext ctx = new DefaultWalkerContext(target, request, new ObrWalkerFilter());
      ctx.getProcessors().add(obrProcessor);
      walker.walk(ctx);

      writer.complete(); // the OBR is only updated once the stream is complete and closed
    }
    catch (final WalkerException e) {
View Full Code Here

TOP

Related Classes of org.sonatype.nexus.proxy.walker.DefaultWalkerContext

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.