Fix upload artifact (#852)

* fixed repository to check for file existence before trying to get the artifact
* added additional existence checks before retrieving the artifact from repository

Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com>
This commit is contained in:
Bondar Bogdan
2019-06-13 16:59:21 +02:00
committed by Jeroen Laverman
parent 34fc7a7012
commit 568848bb27
2 changed files with 14 additions and 10 deletions

View File

@@ -108,20 +108,20 @@ public class JpaArtifactManagement implements ArtifactManagement {
assertMaxArtifactSizeQuota(filename, moduleId, artifactUpload.getFilesize()); assertMaxArtifactSizeQuota(filename, moduleId, artifactUpload.getFilesize());
assertMaxArtifactStorageQuota(filename, artifactUpload.getFilesize()); assertMaxArtifactStorageQuota(filename, artifactUpload.getFilesize());
return getOrCreateArtifact(artifactUpload) return getOrCreateArtifact(artifactUpload)
.map(artifact -> storeArtifactMetadata(softwareModule, filename, artifact, existing)) .map(artifact -> storeArtifactMetadata(softwareModule, filename, artifact, existing)).orElse(null);
.orElse(null);
} }
private Optional<AbstractDbArtifact> getOrCreateArtifact(final ArtifactUpload artifactUpload) { private Optional<AbstractDbArtifact> getOrCreateArtifact(final ArtifactUpload artifactUpload) {
final String providedSha1Sum = artifactUpload.getProvidedSha1Sum(); final String providedSha1Sum = artifactUpload.getProvidedSha1Sum();
AbstractDbArtifact artifact = null;
if (!StringUtils.isEmpty(providedSha1Sum)) { if (!StringUtils.isEmpty(providedSha1Sum)
artifact = artifactRepository.getArtifactBySha1(tenantAware.getCurrentTenant(), providedSha1Sum); && artifactRepository.existsByTenantAndSha1(tenantAware.getCurrentTenant(), providedSha1Sum)) {
return Optional
.ofNullable(artifactRepository.getArtifactBySha1(tenantAware.getCurrentTenant(), providedSha1Sum));
} }
artifact = (artifact == null) ? storeArtifact(artifactUpload) : artifact;
return Optional.ofNullable(artifact); return Optional.of(storeArtifact(artifactUpload));
} }
private AbstractDbArtifact storeArtifact(final ArtifactUpload artifactUpload) { private AbstractDbArtifact storeArtifact(final ArtifactUpload artifactUpload) {
@@ -244,7 +244,9 @@ public class JpaArtifactManagement implements ArtifactManagement {
@Override @Override
public Optional<AbstractDbArtifact> loadArtifactBinary(final String sha1Hash) { public Optional<AbstractDbArtifact> loadArtifactBinary(final String sha1Hash) {
return Optional.ofNullable(artifactRepository.getArtifactBySha1(tenantAware.getCurrentTenant(), sha1Hash)); return Optional.ofNullable(artifactRepository.existsByTenantAndSha1(tenantAware.getCurrentTenant(), sha1Hash)
? artifactRepository.getArtifactBySha1(tenantAware.getCurrentTenant(), sha1Hash)
: null);
} }
private Artifact storeArtifactMetadata(final SoftwareModule softwareModule, final String providedFilename, private Artifact storeArtifactMetadata(final SoftwareModule softwareModule, final String providedFilename,

View File

@@ -64,7 +64,9 @@ public class MgmtDownloadResource implements MgmtDownloadRestApi {
AbstractDbArtifact artifact = null; AbstractDbArtifact artifact = null;
if (DownloadType.BY_SHA1 == artifactCache.getDownloadType()) { if (DownloadType.BY_SHA1 == artifactCache.getDownloadType()) {
artifact = artifactRepository.getArtifactBySha1(tenant, artifactCache.getId()); artifact = artifactRepository.existsByTenantAndSha1(tenant, artifactCache.getId())
? artifactRepository.getArtifactBySha1(tenant, artifactCache.getId())
: null;
} else { } else {
LOGGER.warn("Download Type {} not supported", artifactCache.getDownloadType()); LOGGER.warn("Download Type {} not supported", artifactCache.getDownloadType());
} }