use of org.eclipse.vorto.repository.api.exception.ModelNotFoundException in project vorto by eclipse.
the class ModelRepositoryController method getModelResource.
@ApiOperation(value = "Returns a model by its full qualified model ID")
@ApiResponses(value = { @ApiResponse(code = 400, message = "Wrong input"), @ApiResponse(code = 404, message = "Model not found") })
@RequestMapping(value = "/{namespace}/{name}/{version:.+}", method = RequestMethod.GET)
public ModelInfo getModelResource(@ApiParam(value = "The namespace of vorto model, e.g. com.mycompany", required = true) @PathVariable final String namespace, @ApiParam(value = "The name of vorto model, e.g. NewInfomodel", required = true) @PathVariable final String name, @ApiParam(value = "The version of vorto model, e.g. 1.0.0", required = true) @PathVariable final String version) {
Objects.requireNonNull(namespace, "namespace must not be null");
Objects.requireNonNull(name, "name must not be null");
Objects.requireNonNull(version, "version must not be null");
final ModelId modelId = new ModelId(name, namespace, version);
logger.info("getModelResource: [" + modelId.toString() + "]");
ModelInfo resource = modelRepository.getById(modelId);
if (resource == null) {
throw new ModelNotFoundException("Model does not exist", null);
}
return ModelDtoFactory.createDto(resource);
}
use of org.eclipse.vorto.repository.api.exception.ModelNotFoundException 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.repository.api.exception.ModelNotFoundException in project vorto by eclipse.
the class JcrModelRepository method getModelImage.
@Override
public byte[] getModelImage(ModelId modelId) {
try {
ModelIdHelper modelIdHelper = new ModelIdHelper(modelId);
Node folderNode = session.getNode(modelIdHelper.getFullPath());
if (folderNode.hasNode("img.png")) {
Node imageNode = folderNode.getNode("img.png");
Node fileItem = (Node) imageNode.getPrimaryItem();
InputStream is = fileItem.getProperty("jcr:data").getBinary().getStream();
return IOUtils.toByteArray(is);
}
} catch (PathNotFoundException e) {
throw new ModelNotFoundException("Problem when trying to retrieve image for model", e);
} catch (RepositoryException e) {
throw new FatalModelRepositoryException("Something severe went wrong when accessing the repository", e);
} catch (IOException e) {
throw new FatalModelRepositoryException("Something severe went wrong when trying to read image content", e);
}
return null;
}
use of org.eclipse.vorto.repository.api.exception.ModelNotFoundException in project vorto by eclipse.
the class JcrModelRepository method addModelImage.
@Override
public void addModelImage(ModelId modelId, byte[] imageContent) {
try {
ModelIdHelper modelIdHelper = new ModelIdHelper(modelId);
Node modelFolderNode = session.getNode(modelIdHelper.getFullPath());
Node contentNode = null;
if (modelFolderNode.hasNode("img.png")) {
Node imageNode = (Node) modelFolderNode.getNode("img.png");
contentNode = (Node) imageNode.getPrimaryItem();
} else {
Node imageNode = modelFolderNode.addNode("img.png", "nt:file");
contentNode = imageNode.addNode("jcr:content", "nt:resource");
}
Binary binary = session.getValueFactory().createBinary(new ByteArrayInputStream(imageContent));
contentNode.setProperty("jcr:data", binary);
session.save();
} catch (PathNotFoundException e) {
throw new ModelNotFoundException("Problem when trying to add image to model", e);
} catch (RepositoryException e) {
throw new FatalModelRepositoryException("Something severe went wrong when accessing the repository", e);
}
}
use of org.eclipse.vorto.repository.api.exception.ModelNotFoundException in project vorto by eclipse.
the class JcrModelRepository method getModelContent.
@Override
public IModelContent getModelContent(ModelId modelId, ContentType contentType) {
try {
ModelIdHelper modelIdHelper = new ModelIdHelper(modelId);
Node folderNode = session.getNode(modelIdHelper.getFullPath());
Node fileNode = (Node) folderNode.getNodes(modelId.getName() + "*").next();
Node fileItem = (Node) fileNode.getPrimaryItem();
InputStream is = fileItem.getProperty("jcr:data").getBinary().getStream();
ModelEMFResource resource = (ModelEMFResource) ModelParserFactory.getParser(fileNode.getName()).parse(is);
if (contentType == ContentType.XMI) {
return new DefaultModelContent(resource.getModel(), contentType, resource.toXMI());
} else {
return new DefaultModelContent(resource.getModel(), contentType, resource.toDSL());
}
} catch (PathNotFoundException e) {
throw new ModelNotFoundException("Could not find model with the given model id", e);
} catch (Exception e) {
throw new FatalModelRepositoryException("Something went wrong accessing the repository", e);
}
}
Aggregations