/** * Lookup a facet on attached repository. * * Reduce some verbosity for commonly used repository operation. * * @see Repository#facet(Class) */ @Nonnull protected <T extends Facet> T facet(final Class<T> type) throws MissingFacetException { return getRepository().facet(type); }
/** * Returns stream of all non-group repositories reachable from the given repository. */ private static Stream<Repository> members(final Repository repository) { return repository.facet(GroupFacet.class).leafMembers().stream(); }
@Override protected void execute(final Repository repository) { MavenIndexFacet mavenIndexFacet = repository.facet(MavenIndexFacet.class); try { mavenIndexFacet.unpublishIndex(); } catch (IOException e) { throw new RuntimeException(e); } }
/** * Determine whether or not the given repo could contain snapshots. */ private static boolean isSnapshotRepo(final Repository member) { return member.facet(MavenFacet.class).getVersionPolicy() != VersionPolicy.RELEASE; }
private TempBlob createTempBlob(final InputStream inputStream) { StorageFacet storageFacet = getRepository().facet(StorageFacet.class); List<HashAlgorithm> hashAlgorithms = stream(HashType.values()) .map(HashType::getHashAlgorithm) .collect(toList()); return storageFacet.createTempBlob(inputStream, hashAlgorithms); }
@Override public BrowseResult<Asset> browseComponentAssets(final Repository repository, final Component component) { checkNotNull(repository); checkNotNull(component); try (StorageTx storageTx = repository.facet(StorageFacet.class).txSupplier().get()) { storageTx.begin(); return browseComponentAssetsHelper(storageTx, repository, component); } }
private Optional<Asset> findAssociatedAsset(final String assetName, final Repository repository) { try (StorageTx tx = repository.facet(StorageFacet.class).txSupplier().get()) { tx.begin(); return ofNullable(tx.findAssetWithProperty(P_NAME, assetName)); } }
/** * Deletes given path from repository's storage/cache. */ private static boolean delete(final Repository repository, final String path) throws IOException { MavenFacet mavenFacet = repository.facet(MavenFacet.class); MavenPath mavenPath = mavenFacet.getMavenPathParser().parsePath(path); return mavenFacet.delete(mavenPath); }
private void updateMetadata(final Repository repository, final Coordinates coordinates) { if (coordinates != null) { repository.facet(MavenHostedFacet.class) .rebuildMetadata(coordinates.getGroupId(), coordinates.getArtifactId(), coordinates.getVersion(), false); } else { log.debug("Not updating metadata.xml files since coordinate could not be retrieved from path"); } }
@Override protected void execute(final Repository repository) { repository.facet(PurgeUnusedSnapshotsFacet.class) .purgeUnusedSnapshots(getConfiguration().getInteger(LAST_USED_FIELD_ID, -1)); }
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { State state = context.getAttributes().require(TokenMatcher.State.class); Repository repository = context.getRepository(); log.debug("[deleteToken] repository: {} tokens: {}", repository.getName(), state.getTokens()); return repository.facet(NpmTokenFacet.class).logout(context); } };
@Override protected boolean appliesTo(final Repository repository) { return maven2Format.equals(repository.getFormat()) && repository.optionalFacet(RemoveSnapshotsFacet.class).isPresent() && repository.facet(MavenFacet.class).getVersionPolicy() != VersionPolicy.RELEASE; }
/** * Processes this facet's associated repository as a group repository, iterating over its members. */ private void processAsGroup(final MavenGroupFacet groupFacet, final int numberOfDays) { groupFacet.members().stream() .filter(member -> hostedType.equals(member.getType()) || groupType.equals(member.getType())) .forEach(member -> member.facet(PurgeUnusedSnapshotsFacet.class).purgeUnusedSnapshots(numberOfDays)); }
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { Repository repository = context.getRepository(); Parameters parameters = context.getRequest().getParameters(); log.debug("[searchIndex] repository: {} parameters: {}", repository.getName(), parameters); return NpmResponses.ok(repository.facet(NpmSearchIndexFacet.class).searchIndex(indexSince(parameters))); } };
@Override @Guarded(by = STARTED) public Set<String> deleteAsset(final EntityId assetId, final boolean deleteBlob) { checkNotNull(assetId); UnitOfWork.begin(getRepository().facet(StorageFacet.class).txSupplier()); try { return deleteAssetTx(assetId, deleteBlob); } finally { UnitOfWork.end(); } }
@Nonnull @Override public Response handle(@Nonnull final Context context) throws Exception { State state = context.getAttributes().require(TokenMatcher.State.class); Repository repository = context.getRepository(); log.debug("[putPackage] repository: {} tokens: {}", repository.getName(), state.getTokens()); repository.facet(NpmHostedFacet.class) .putPackage(packageId(state), revision(state), context.getRequest().getPayload()); return NpmResponses.ok(); } };
@Override public Response handle(Context context) throws Exception { UnitOfWork.begin(context.getRepository().facet(StorageFacet.class).txSupplier()); try { return context.proceed(); } finally { UnitOfWork.end(); } } }
private PagedResponse<ComponentXO> getSearchResults(final CleanupPolicyPreviewXO previewXO, final Repository repository, final QueryOptions queryOptions) { CleanupPolicy cleanupPolicy = CleanupPolicyPreviewXO.toCleanupPolicy(previewXO); UnitOfWork.begin(repository.facet(StorageFacet.class).txSupplier()); try { return searchForComponents(repository, cleanupPolicy, queryOptions); } finally { UnitOfWork.end(); } }
@Override public void publishIndex() throws IOException { UnitOfWork.begin(getRepository().facet(StorageFacet.class).txSupplier()); try (DuplicateDetectionStrategy<Record> strategy = duplicateDetectionStrategyProvider.get()) { MavenIndexPublisher.publishHostedIndex(getRepository(), strategy); } finally { UnitOfWork.end(); } } }
private void invalidatePackageRoot(final AssetEvent event) { UnitOfWork.begin(getRepository().facet(StorageFacet.class).txSupplier()); try { doInvalidate(NpmPackageId.parse(event.getAsset().name())); } finally { UnitOfWork.end(); } }