Search in sources :

Example 26 with Asset

use of org.sonatype.nexus.repository.storage.Asset in project nexus-repository-r by sonatype-nexus-community.

the class RProxyFacetImpl method doPutArchive.

@TransactionalStoreBlob
protected Content doPutArchive(final String path, final TempBlob archiveContent, final Content content) throws IOException {
    RFacet rFacet = facet(RFacet.class);
    StorageTx tx = UnitOfWork.currentTx();
    Map<String, String> attributes;
    try (InputStream is = archiveContent.get()) {
        attributes = extractDescriptionFromArchive(path, is);
    }
    Component component = rFacet.findOrCreateComponent(tx, path, attributes);
    Asset asset = rFacet.findOrCreateAsset(tx, component, path, attributes);
    return saveAsset(tx, asset, archiveContent, content);
}
Also used : RFacet(org.sonatype.nexus.repository.r.RFacet) StorageTx(org.sonatype.nexus.repository.storage.StorageTx) InputStream(java.io.InputStream) RFacetUtils.saveAsset(org.sonatype.nexus.repository.r.internal.util.RFacetUtils.saveAsset) RFacetUtils.findAsset(org.sonatype.nexus.repository.r.internal.util.RFacetUtils.findAsset) Asset(org.sonatype.nexus.repository.storage.Asset) Component(org.sonatype.nexus.repository.storage.Component) TransactionalStoreBlob(org.sonatype.nexus.repository.transaction.TransactionalStoreBlob)

Example 27 with Asset

use of org.sonatype.nexus.repository.storage.Asset in project nexus-repository-r by sonatype-nexus-community.

the class RBrowseNodeGeneratorTest method shouldComputeAssetAndComponentPath.

@Test
public void shouldComputeAssetAndComponentPath() {
    final String commonPath = "bin/macosx/el-capitan/contrib/3.6";
    final String lastSegment = "devtools_2.2.1.tgz";
    final String assetPath = commonPath + "/" + lastSegment;
    final String componentName = "devtools";
    final String componentVersion = "2.2.1";
    final String componentBrowsePath = commonPath + "/" + componentName + "/" + componentVersion;
    final String assetBrowsePath = componentBrowsePath + "/" + lastSegment;
    Component component = createComponent(componentName, commonPath, componentVersion);
    Asset asset = createAsset(assetPath);
    List<BrowsePaths> pathsAsset = generator.computeAssetPaths(asset, component);
    List<BrowsePaths> pathsComponent = generator.computeComponentPaths(asset, component);
    assertPaths(Arrays.asList(assetBrowsePath.split("/")), pathsAsset);
    assertPaths(Arrays.asList(componentBrowsePath.split("/")), pathsComponent, true);
}
Also used : Asset(org.sonatype.nexus.repository.storage.Asset) BrowsePaths(org.sonatype.nexus.repository.browse.BrowsePaths) Component(org.sonatype.nexus.repository.storage.Component) Test(org.junit.Test)

Example 28 with Asset

use of org.sonatype.nexus.repository.storage.Asset in project nexus-repository-r by sonatype-nexus-community.

the class RBrowseNodeGeneratorTest method shouldComputeAssetPathWithoutComponent.

@Test
public void shouldComputeAssetPathWithoutComponent() {
    final String assetPath = "bin/macosx/el-capitan/contrib/3.6/devtools_2.2.1.tgz";
    Asset asset = createAsset(assetPath);
    List<BrowsePaths> pathsAsset = generator.computeAssetPaths(asset, null);
    assertPaths(Arrays.asList(assetPath.split("/")), pathsAsset, false);
}
Also used : Asset(org.sonatype.nexus.repository.storage.Asset) BrowsePaths(org.sonatype.nexus.repository.browse.BrowsePaths) Test(org.junit.Test)

Example 29 with Asset

use of org.sonatype.nexus.repository.storage.Asset in project nexus-repository-r by sonatype-nexus-community.

the class RUploadHandler method handle.

@Override
public UploadResponse handle(final Repository repository, final ComponentUpload upload) throws IOException {
    final AssetUpload assetUpload = upload.getAssetUploads().get(0);
    final PartPayload payload = assetUpload.getPayload();
    final Map<String, String> fields = assetUpload.getFields();
    final String uploadPath = removeInitialSlashFromPath(fields.get(PATH_ID));
    final String assetPath = buildPath(uploadPath, payload.getName());
    ensurePermitted(repository.getName(), RFormat.NAME, assetPath, Collections.emptyMap());
    validateArchiveUploadPath(assetPath);
    try {
        UnitOfWork.begin(repository.facet(StorageFacet.class).txSupplier());
        Asset asset = repository.facet(RHostedFacet.class).upload(assetPath, payload);
        return new UploadResponse(asset);
    } finally {
        UnitOfWork.end();
    }
}
Also used : UploadResponse(org.sonatype.nexus.repository.upload.UploadResponse) RHostedFacet(org.sonatype.nexus.repository.r.RHostedFacet) Asset(org.sonatype.nexus.repository.storage.Asset) PartPayload(org.sonatype.nexus.repository.view.PartPayload) AssetUpload(org.sonatype.nexus.repository.upload.AssetUpload)

Example 30 with Asset

use of org.sonatype.nexus.repository.storage.Asset in project nexus-repository-r by sonatype-nexus-community.

the class RHostedIT method testDeletingRemainingAssetAlsoDeletesComponent.

@Test
public void testDeletingRemainingAssetAlsoDeletesComponent() {
    final Asset asset = findAsset(repository, AGRICOLAE_121_TARGZ.fullPath);
    assertNotNull(asset);
    assertNotNull(asset.componentId());
    final Component component = findComponentById(repository, asset.componentId());
    assertNotNull(component);
    assertThat(findAssetsByComponent(repository, component).size(), is(1));
    componentAssetTestHelper.removeAsset(repository, AGRICOLAE_121_TARGZ.fullPath);
    assertThat(componentAssetTestHelper.assetExists(repository, AGRICOLAE_121_TARGZ.fullPath), is(false));
    assertThat(componentAssetTestHelper.componentExists(repository, AGRICOLAE_121_TARGZ.packageName, AGRICOLAE_121_TARGZ.packageVersion), is(false));
}
Also used : Asset(org.sonatype.nexus.repository.storage.Asset) Component(org.sonatype.nexus.repository.storage.Component) Test(org.junit.Test)

Aggregations

Asset (org.sonatype.nexus.repository.storage.Asset)35 StorageTx (org.sonatype.nexus.repository.storage.StorageTx)17 Component (org.sonatype.nexus.repository.storage.Component)13 Test (org.junit.Test)10 RFacetUtils.findAsset (org.sonatype.nexus.repository.r.internal.util.RFacetUtils.findAsset)10 RFacetUtils.saveAsset (org.sonatype.nexus.repository.r.internal.util.RFacetUtils.saveAsset)8 TransactionalStoreBlob (org.sonatype.nexus.repository.transaction.TransactionalStoreBlob)8 RFacetUtils.findAsset (org.sonatype.nexus.repository.r.internal.RFacetUtils.findAsset)7 RFacetUtils.saveAsset (org.sonatype.nexus.repository.r.internal.RFacetUtils.saveAsset)7 InputStream (java.io.InputStream)6 RFacet (org.sonatype.nexus.repository.r.RFacet)6 TransactionalTouchBlob (org.sonatype.nexus.repository.transaction.TransactionalTouchBlob)6 Bucket (org.sonatype.nexus.repository.storage.Bucket)5 TransactionalTouchMetadata (org.sonatype.nexus.repository.transaction.TransactionalTouchMetadata)4 BrowsePaths (org.sonatype.nexus.repository.browse.BrowsePaths)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 IOException (java.io.IOException)2 Map (java.util.Map)2 NestedAttributesMap (org.sonatype.nexus.common.collect.NestedAttributesMap)2 RHostedFacet (org.sonatype.nexus.repository.r.RHostedFacet)2