use of org.eclipse.vorto.server.commons.reader.IModelWorkspace in project vorto by eclipse.
the class ModelRepositoryController method getModelContentByModelAndMappingId.
@ApiOperation(value = "Returns the model content including target platform specific attributes for the given model- and mapping modelID")
@ApiResponses(value = { @ApiResponse(code = 400, message = "Wrong input"), @ApiResponse(code = 404, message = "Model not found") })
@RequestMapping(value = "/content/{modelId:.+}/mapping/{mappingId:.+}", method = RequestMethod.GET)
public AbstractModel getModelContentByModelAndMappingId(@ApiParam(value = "The model ID (prettyFormat)", required = true) @PathVariable final String modelId, @ApiParam(value = "The mapping Model ID (prettyFormat)", required = true) @PathVariable final String mappingId) {
ModelInfo vortoModelInfo = modelRepository.getById(ModelId.fromPrettyFormat(modelId));
ModelInfo mappingModelInfo = modelRepository.getById(ModelId.fromPrettyFormat(mappingId));
if (vortoModelInfo == null) {
throw new ModelNotFoundException("Could not find vorto model with ID: " + modelId);
} else if (mappingModelInfo == null) {
throw new ModelNotFoundException("Could not find mapping with ID: " + mappingId);
}
byte[] mappingContentZip = createZipWithAllDependencies(mappingModelInfo.getId(), ContentType.DSL);
IModelWorkspace workspace = IModelWorkspace.newReader().addZip(new ZipInputStream(new ByteArrayInputStream(mappingContentZip))).read();
MappingModel mappingModel = (MappingModel) workspace.get().stream().filter(p -> p instanceof MappingModel).findFirst().get();
byte[] modelContent = createZipWithAllDependencies(vortoModelInfo.getId(), ContentType.DSL);
workspace = IModelWorkspace.newReader().addZip(new ZipInputStream(new ByteArrayInputStream(modelContent))).read();
return ModelDtoFactory.createResource(workspace.get().stream().filter(p -> p.getName().equals(vortoModelInfo.getId().getName())).findFirst().get(), Optional.of(mappingModel));
}
use of org.eclipse.vorto.server.commons.reader.IModelWorkspace in project vorto by eclipse.
the class VortoService method getModel.
public Optional<InformationModel> getModel(String namespace, String name, String version) {
Optional<byte[]> modelResources = downloadUrl(urlForModel(namespace, name, version));
if (!modelResources.isPresent()) {
return Optional.empty();
}
IModelWorkspace workspace = IModelWorkspace.newReader().addZip(new ZipInputStream(new ByteArrayInputStream(modelResources.get()))).read();
return toInformationModel(workspace.get().stream().filter(p -> p.getName().equals(name)).findFirst().get());
}
use of org.eclipse.vorto.server.commons.reader.IModelWorkspace in project vorto by eclipse.
the class GeneratorMojo method execute.
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("Executing Generator of class '" + getGeneratorClass());
try {
final IModelWorkspace workspace = IModelWorkspace.newReader().addZip(new ZipInputStream(new ByteArrayInputStream(loadInformationModels()))).read();
List<MappingModel> mappingModels = workspace.get().stream().filter(p -> p instanceof MappingModel).map(MappingModel.class::cast).collect(Collectors.toList());
for (Model model : workspace.get().stream().filter(p -> p instanceof InformationModel).collect(Collectors.toList())) {
InformationModel infomodel = (InformationModel) model;
IVortoCodeGenerator codeGenerator = (IVortoCodeGenerator) Class.forName(generatorClass).newInstance();
IGenerationResult result = codeGenerator.generate(infomodel, new InvocationContext(mappingModels, null, new HashMap<String, String>()), null);
if (result.getMediatype().equalsIgnoreCase("application/zip")) {
final ZipContentExtractCodeGeneratorTask task = new ZipContentExtractCodeGeneratorTask(result.getContent());
task.generate(null, InvocationContext.simpleInvocationContext(), new IGeneratedWriter() {
public void write(Generated generated) {
if (generated.getFileName() == null) {
File generatedDirectory = new File(outputPath, stripPath(generated.getFolderPath()));
generatedDirectory.mkdirs();
} else {
if (generated.getFileName().equals("pom.xml")) {
return;
}
File generatedDirectory = new File(outputPath, stripPath(generated.getFolderPath()));
File generatedFile = new File(generatedDirectory, generated.getFileName());
try {
FileUtils.writeByteArrayToFile(generatedFile, generated.getContent(), false);
} catch (IOException e) {
e.printStackTrace();
}
}
}
private String stripPath(String folderPath) {
final String mavenSourcePath = "src/main/java/";
if (folderPath.indexOf(mavenSourcePath) > -1) {
return folderPath.substring(folderPath.indexOf(mavenSourcePath) + mavenSourcePath.length());
}
return folderPath;
}
});
} else {
File generatedFile = new File(outputPath, result.getFileName());
FileUtils.writeByteArrayToFile(generatedFile, result.getContent(), false);
}
}
} catch (InstantiationException e) {
throw new MojoExecutionException("Could not instantiate vorto code generator from given generatorClass", e);
} catch (IllegalAccessException e) {
throw new MojoExecutionException("Error during resolving code generator", e);
} catch (ClassNotFoundException e) {
throw new MojoExecutionException("Could not instantiate vorto code generator from given generatorClass", e);
} catch (Exception e) {
throw new MojoExecutionException("Problem during code generator invocation", e);
}
}
use of org.eclipse.vorto.server.commons.reader.IModelWorkspace in project vorto by eclipse.
the class ModelReaderTest method testMappingFromZipFile.
@Test
public void testMappingFromZipFile() {
IModelWorkspace workspace = IModelWorkspace.newReader().addZip(new ZipInputStream(getClass().getClassLoader().getResourceAsStream("mappings.zip"))).read();
Model model = workspace.get().stream().filter(p -> p instanceof MappingModel).findAny().get();
assertNotNull(model);
assertTrue(model instanceof MappingModel);
assertEquals("Accelerometer_Mapping", model.getName());
}
use of org.eclipse.vorto.server.commons.reader.IModelWorkspace in project vorto by eclipse.
the class ModelReaderTest method testReadMultipleZipFiles.
@Test
public void testReadMultipleZipFiles() {
IModelWorkspace workspace = IModelWorkspace.newReader().addZip(new ZipInputStream(getClass().getClassLoader().getResourceAsStream("mappings.zip"))).addZip(new ZipInputStream(getClass().getClassLoader().getResourceAsStream("models.zip"))).read();
assertEquals(10, workspace.get().size());
}
Aggregations