use of org.eclipse.winery.repository.common.RepositoryFileReference in project winery by eclipse.
the class IRepository method getMimeType.
/**
* Returns the mimetype belonging to the reference.
*
* @param ref the reference to the file
* @return the mimetype as string
* @throws IOException if something goes wrong
* @throws IllegalStateException if an internal error occurs, which is not an IOException
*/
default String getMimeType(RepositoryFileReference ref) throws IOException {
RepositoryFileReference mimeFileRef = ref.setFileName(ref.getFileName() + Constants.SUFFIX_MIMETYPE);
String mimeType;
if (this.exists(mimeFileRef)) {
InputStream is = this.newInputStream(mimeFileRef);
mimeType = IOUtils.toString(is, StandardCharsets.UTF_8);
is.close();
} else {
// repository has been manipulated manually,
// create mimetype information
MediaType mediaType;
try (InputStream is = this.newInputStream(ref);
BufferedInputStream bis = new BufferedInputStream(is)) {
mediaType = BackendUtils.getMimeType(bis, ref.getFileName());
}
if (mediaType != null) {
// successful execution
this.setMimeType(ref, mediaType);
mimeType = mediaType.toString();
} else {
LOGGER.debug("Could not determine mimetype");
mimeType = null;
}
}
return mimeType;
}
use of org.eclipse.winery.repository.common.RepositoryFileReference in project winery by eclipse.
the class XmlRepositoryTest method subDirectoryExpandedCorrectly.
@Test
public void subDirectoryExpandedCorrectly() throws Exception {
ArtifactTemplateId artifactTemplateId = new ArtifactTemplateId("http://www.example.org", "at", false);
ArtifactTemplateSourceDirectoryId artifactTemplateSourceDirectoryId = new ArtifactTemplateSourceDirectoryId(artifactTemplateId);
final Path subDirectories = Paths.get("dir1", "dir2", "dir3");
RepositoryFileReference ref = new RepositoryFileReference(artifactTemplateSourceDirectoryId, subDirectories, "test.txt");
final IRepository repository = this.repository;
final Path expected = Paths.get("artifacttemplates", "http%3A%2F%2Fwww.example.org", "at", "source", "dir1", "dir2", "dir3", "test.txt");
assertEquals(expected, repository.getRepositoryRoot().relativize(repository.ref2AbsolutePath(ref)));
}
use of org.eclipse.winery.repository.common.RepositoryFileReference in project winery by eclipse.
the class XmlRepositoryTest method getContainedFilesProducedCorrectPath.
@Test
public void getContainedFilesProducedCorrectPath() throws Exception {
ArtifactTemplateId artifactTemplateWithFilesAndSourcesId = new ArtifactTemplateId("http://plain.winery.opentosca.org/artifacttemplates", "ArtifactTemplateWithFilesAndSources", false);
DirectoryId fileDir = new ArtifactTemplateFilesDirectoryId(artifactTemplateWithFilesAndSourcesId);
SortedSet<RepositoryFileReference> files = repository.getContainedFiles(fileDir);
for (RepositoryFileReference ref : files) {
assertFalse(ref.getSubDirectory().isPresent() && ref.getSubDirectory().get().toString().equals(""), "File " + ref.toString() + " contains empty sub directory");
}
}
use of org.eclipse.winery.repository.common.RepositoryFileReference in project winery by eclipse.
the class XmlRepositoryTest method allFilesCorrectlyImported.
@Test
public void allFilesCorrectlyImported() throws Exception {
this.setRevisionTo("5b7f106ab79a9ba137ece9167a79753dfc64ac84");
ArtifactTemplateId artifactTemplateId = new ArtifactTemplateId("http://www.example.org", "at", false);
ArtifactTemplateSourceDirectoryId artifactTemplateSourceDirectoryId = new ArtifactTemplateSourceDirectoryId(artifactTemplateId);
final Path subDirectories = Paths.get("dir1", "dir2", "dir3");
Path workingDir = Files.createTempDirectory("winery");
final Path subDir = workingDir.resolve(subDirectories);
Files.createDirectories(subDir);
Path tempFile = subDir.resolve("test.txt");
Files.createFile(tempFile);
BackendUtils.importDirectory(workingDir, this.repository, artifactTemplateSourceDirectoryId);
RepositoryFileReference ref = new RepositoryFileReference(artifactTemplateSourceDirectoryId, subDirectories, "test.txt");
assertTrue(repository.exists(ref));
}
use of org.eclipse.winery.repository.common.RepositoryFileReference in project winery by eclipse.
the class BackendUtilsTest method synchronizeReferencesDoesNotRemoveExistentFileAndDoesNotRemoveUrls.
@Test
public void synchronizeReferencesDoesNotRemoveExistentFileAndDoesNotRemoveUrls() throws Exception {
ArtifactTemplateId artifactTemplateId = new ArtifactTemplateId("http://example.org", "test-artifact-template", false);
// alternative test implementation: Use git-based repository
// this test at hand is closer to the implementation, but easier to write
IRepository repository = mock(IRepository.class);
ArtifactTemplateFilesDirectoryId artifactTemplateFilesDirectoryId = new ArtifactTemplateFilesDirectoryId(artifactTemplateId);
SortedSet<RepositoryFileReference> containedReferences = new TreeSet<>();
RepositoryFileReference repositoryFileReference = new RepositoryFileReference(artifactTemplateId, "exists.txt");
containedReferences.add(repositoryFileReference);
when(repository.getContainedFiles(artifactTemplateFilesDirectoryId)).thenReturn(containedReferences);
TArtifactTemplate artifactTemplate = createArtifactTemplateWithReferenceToAnUrlAndExistentFile();
when(repository.getElement(artifactTemplateId)).thenReturn(artifactTemplate);
TArtifactTemplate synchronizedArtifactTemplate = BackendUtils.synchronizeReferences(repository, artifactTemplateId);
assertEquals(createArtifactTemplateWithReferenceToAnUrlAndExistentFile(), synchronizedArtifactTemplate);
}
Aggregations