Cleanup file streaming utilities (#559)

* Cleanup file streaming.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Added missing comments.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Fix typo.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Split utility class.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Dependency cleanup.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Add missing dependency,

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Remove repository api dependency from rest core.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Fix build and sonar issues.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Remove custom ConstraintViolationException

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* RequestMapping should be public.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Fix errors.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Removed dead code.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Not null

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Fix nullpointer.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Code cleanup.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>
This commit is contained in:
Kai Zimmermann
2017-07-19 12:43:07 +02:00
committed by GitHub
parent 66feae2756
commit 09b24fa97d
59 changed files with 911 additions and 908 deletions

View File

@@ -10,13 +10,14 @@ package org.eclipse.hawkbit.artifact.repository;
import java.io.InputStream;
import org.eclipse.hawkbit.artifact.repository.model.DbArtifact;
import org.eclipse.hawkbit.artifact.repository.model.AbstractDbArtifact;
import org.eclipse.hawkbit.artifact.repository.model.DbArtifactHash;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSFile;
/**
* A wrapper object for the {@link DbArtifact} object which returns the
* A wrapper object for the {@link AbstractDbArtifact} object which returns the
* {@link InputStream} directly from {@link GridFSDBFile#getInputStream()} which
* retrieves when calling {@link #getFileInputStream()} always a new
* {@link InputStream} and not the same.
@@ -24,7 +25,7 @@ import com.mongodb.gridfs.GridFSFile;
*
*
*/
public class GridFsArtifact extends DbArtifact {
public class GridFsArtifact extends AbstractDbArtifact {
private final GridFSFile dbFile;
@@ -32,6 +33,8 @@ public class GridFsArtifact extends DbArtifact {
* @param dbFile
*/
public GridFsArtifact(final GridFSFile dbFile) {
super(dbFile.getId().toString(), new DbArtifactHash(dbFile.getFilename(), dbFile.getMD5()), dbFile.getLength(),
dbFile.getContentType());
this.dbFile = dbFile;
}

View File

@@ -22,7 +22,7 @@ import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.stream.Collectors;
import org.eclipse.hawkbit.artifact.repository.model.DbArtifact;
import org.eclipse.hawkbit.artifact.repository.model.AbstractDbArtifact;
import org.eclipse.hawkbit.artifact.repository.model.DbArtifactHash;
import org.eclipse.hawkbit.tenancy.TenantAware;
import org.slf4j.Logger;
@@ -89,7 +89,7 @@ public class MongoDBArtifactStore implements ArtifactRepository {
* @return The DbArtifact object or {@code null} if no file exists.
*/
@Override
public DbArtifact getArtifactBySha1(final String tenant, final String sha1Hash) {
public AbstractDbArtifact getArtifactBySha1(final String tenant, final String sha1Hash) {
GridFSDBFile found = gridFs.findOne(new Query()
.addCriteria(Criteria.where(FILENAME).is(sha1Hash).and(TENANT_QUERY).is(sanitizeTenant(tenant))));
@@ -104,13 +104,13 @@ public class MongoDBArtifactStore implements ArtifactRepository {
}
@Override
public DbArtifact store(final String tenant, final InputStream content, final String filename,
public AbstractDbArtifact store(final String tenant, final InputStream content, final String filename,
final String contentType) {
return store(tenant, content, filename, contentType, null);
}
@Override
public DbArtifact store(final String tenant, final InputStream content, final String filename,
public AbstractDbArtifact store(final String tenant, final InputStream content, final String filename,
final String contentType, final DbArtifactHash hash) {
File tempFile = null;
try {
@@ -155,8 +155,8 @@ public class MongoDBArtifactStore implements ArtifactRepository {
}
private DbArtifact store(final String t, final InputStream content, final String contentType, final OutputStream os,
final File tempFile, final DbArtifactHash hash) {
private AbstractDbArtifact store(final String t, final InputStream content, final String contentType,
final OutputStream os, final File tempFile, final DbArtifactHash hash) {
final GridFsArtifact storedArtifact;
final String tenant = sanitizeTenant(t);
try {
@@ -216,15 +216,16 @@ public class MongoDBArtifactStore implements ArtifactRepository {
}
/**
* Maps a list of {@link GridFSDBFile} to paged list of {@link DbArtifact}s.
* Maps a list of {@link GridFSDBFile} to a list of
* {@link AbstractDbArtifact}s.
*
* @param tenant
* the tenant
* @param dbFiles
* the list of mongoDB gridFs files.
* @return a paged list of artifacts mapped from the given dbFiles
* @return list of artifacts mapped from the given dbFiles
*/
private static List<DbArtifact> map(final List<GridFSDBFile> dbFiles) {
private static List<AbstractDbArtifact> map(final List<GridFSDBFile> dbFiles) {
return dbFiles.stream().map(MongoDBArtifactStore::map).collect(Collectors.toList());
}
@@ -233,14 +234,14 @@ public class MongoDBArtifactStore implements ArtifactRepository {
*
* @param ids
* the ids of the files to lookup.
* @return list of artfiacts
* @return list of artifacts
*/
public List<DbArtifact> getArtifactsByIds(final List<String> ids) {
public List<AbstractDbArtifact> getArtifactsByIds(final List<String> ids) {
return map(gridFs.find(new Query().addCriteria(Criteria.where(ID).in(ids))));
}
/**
* Maps a single {@link GridFSFile} to {@link DbArtifact}.
* Maps a single {@link GridFSFile} to {@link AbstractDbArtifact}.
*
* @param tenant
* the tenant
@@ -252,12 +253,8 @@ public class MongoDBArtifactStore implements ArtifactRepository {
if (fsFile == null) {
return null;
}
final GridFsArtifact artifact = new GridFsArtifact(fsFile);
artifact.setArtifactId(fsFile.getId().toString());
artifact.setSize(fsFile.getLength());
artifact.setContentType(fsFile.getContentType());
artifact.setHashes(new DbArtifactHash(fsFile.getFilename(), fsFile.getMD5()));
return artifact;
return new GridFsArtifact(fsFile);
}
@Override