@Override public void close() throws IOException { if (path != null) { mavenFacet.put( mavenPath, new StreamPayload( new InputStreamSupplier() { @Nonnull @Override public InputStream get() throws IOException { return new BufferedInputStream(Files.newInputStream(path)); } }, Files.size(path), contentType ) ); Files.delete(path); path = null; } } }
return new Content(new StreamPayload( new InputStreamSupplier()
return new Content(new StreamPayload( new InputStreamSupplier()
return new Content(new StreamPayload( new InputStreamSupplier()
hashCodes.put(entry.getKey(), entry.getValue().hash()); Content content = new Content(new StreamPayload( new InputStreamSupplier()
Content plainContent = aptFacet.put( packageIndexName(entry.getKey(), ""), new StreamPayload(entry.getValue().plainSupplier(), entry.getValue().plainSize(), AptMimeTypes.TEXT)); addSignatureItem(md5Builder, MD5, plainContent, packageRelativeIndexName(entry.getKey(), "")); addSignatureItem(sha256Builder, SHA256, plainContent, packageRelativeIndexName(entry.getKey(), "")); new StreamPayload(entry.getValue().gzSupplier(), entry.getValue().bzSize(), AptMimeTypes.GZIP)); addSignatureItem(md5Builder, MD5, gzContent, packageRelativeIndexName(entry.getKey(), ".gz")); addSignatureItem(sha256Builder, SHA256, gzContent, packageRelativeIndexName(entry.getKey(), ".gz")); new StreamPayload(entry.getValue().bzSupplier(), entry.getValue().bzSize(), AptMimeTypes.BZIP)); addSignatureItem(md5Builder, MD5, bzContent, packageRelativeIndexName(entry.getKey(), ".bz2")); addSignatureItem(sha256Builder, SHA256, bzContent, packageRelativeIndexName(entry.getKey(), ".bz2"));
@TransactionalStoreBlob public Asset ingestAsset(ControlFile control, TempBlob body, long size, String contentType) throws IOException, PGPException { AptFacet aptFacet = getRepository().facet(AptFacet.class); StorageTx tx = UnitOfWork.currentTx(); Bucket bucket = tx.findBucket(getRepository()); String name = control.getField("Package").map(f -> f.value).get(); String version = control.getField("Version").map(f -> f.value).get(); String architecture = control.getField("Architecture").map(f -> f.value).get(); String assetPath = FacetHelper.buildAssetPath(name, version, architecture); Content content = aptFacet.put(assetPath, new StreamPayload(() -> body.get(), size, contentType)); Asset asset = Content.findAsset(tx, bucket, content); String indexSection = buildIndexSection(control, asset.size(), asset.getChecksums(FacetHelper.hashAlgorithms), assetPath); asset.formatAttributes().set(P_ARCHITECTURE, architecture); asset.formatAttributes().set(P_PACKAGE_NAME, name); asset.formatAttributes().set(P_PACKAGE_VERSION, version); asset.formatAttributes().set(P_INDEX_SECTION, indexSection); asset.formatAttributes().set(P_ASSET_KIND, "DEB"); tx.saveAsset(asset); List<AssetChange> changes = new ArrayList<>(); changes.add(new AssetChange(AssetAction.ADDED, asset)); for (Asset removed : selectOldPackagesToRemove(name, architecture)) { tx.deleteAsset(removed); changes.add(new AssetChange(AssetAction.REMOVED, removed)); } rebuildIndexesInTransaction(tx, changes.stream().toArray(AssetChange[]::new)); return asset; }