Search in sources :

Example 1 with ICodeGenerator

use of org.eclipse.vorto.plugin.generator.ICodeGenerator in project vorto by eclipse.

the class GeneratorExecutionHandler method handleRequest.

@Override
public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException {
    ObjectMapper mapper = ObjectMapperFactory.getInstance();
    ApiGatewayRequest request = ApiGatewayRequest.createFromJson(input);
    Optional<ICodeGenerator> generator = generators.stream().filter(gen -> gen.getMeta().getKey().equals(request.getPathParam(PLUGINKEY))).findAny();
    if (!generator.isPresent()) {
        objectMapper.writeValue(output, createHttpReponse(404));
    }
    ModelContent modelContent = mapper.readValue(request.getInput(), ModelContent.class);
    ModelContentToEcoreConverter converter = new ModelContentToEcoreConverter();
    Model converted = converter.convert(modelContent, Optional.empty());
    InvocationContext invocationContext = InvocationContext.simpleInvocationContext(request.getQueryParams());
    InformationModel infomodel = org.eclipse.vorto.plugin.utils.Utils.toInformationModel(converted);
    try {
        IGenerationResult generatorResult = generator.get().generate(infomodel, invocationContext);
        ApiGatewayResponse validResponse = createResponse(generatorResult);
        OutputStreamWriter writer = new OutputStreamWriter(output, "UTF-8");
        writer.write(objectMapper.writeValueAsString(validResponse));
        writer.close();
    } catch (GeneratorException e) {
        ApiGatewayResponse response = createHttpReponse(500);
        objectMapper.writeValue(output, response);
    }
}
Also used : RequestStreamHandler(com.amazonaws.services.lambda.runtime.RequestStreamHandler) InformationModel(org.eclipse.vorto.core.api.model.informationmodel.InformationModel) Context(com.amazonaws.services.lambda.runtime.Context) EclipseHonoGenerator(org.eclipse.vorto.codegen.hono.EclipseHonoGenerator) ApiGatewayRequest(org.eclipse.vorto.plugin.utils.ApiGatewayRequest) ApiGatewayResponse(org.eclipse.vorto.plugin.utils.ApiGatewayResponse) Model(org.eclipse.vorto.core.api.model.model.Model) EclipseDittoGenerator(org.eclipse.vorto.codegen.ditto.EclipseDittoGenerator) HashSet(java.util.HashSet) ObjectMapperFactory(org.eclipse.vorto.plugin.generator.adapter.ObjectMapperFactory) ICodeGenerator(org.eclipse.vorto.plugin.generator.ICodeGenerator) OutputStreamWriter(java.io.OutputStreamWriter) IGenerationResult(org.eclipse.vorto.plugin.generator.IGenerationResult) OutputStream(java.io.OutputStream) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) BoschIoTSuiteGenerator(org.eclipse.vorto.codegen.bosch.BoschIoTSuiteGenerator) Set(java.util.Set) IOException(java.io.IOException) GeneratorException(org.eclipse.vorto.plugin.generator.GeneratorException) OpenAPIGenerator(org.eclipse.vorto.codegen.openapi.OpenAPIGenerator) ModelContent(org.eclipse.vorto.model.ModelContent) InvocationContext(org.eclipse.vorto.plugin.generator.InvocationContext) JSONSchemaGenerator(org.eclipse.vorto.codegen.jsonschema.JSONSchemaGenerator) ModelContentToEcoreConverter(org.eclipse.vorto.model.conversion.ModelContentToEcoreConverter) Optional(java.util.Optional) InputStream(java.io.InputStream) ModelContent(org.eclipse.vorto.model.ModelContent) InformationModel(org.eclipse.vorto.core.api.model.informationmodel.InformationModel) IGenerationResult(org.eclipse.vorto.plugin.generator.IGenerationResult) ModelContentToEcoreConverter(org.eclipse.vorto.model.conversion.ModelContentToEcoreConverter) ICodeGenerator(org.eclipse.vorto.plugin.generator.ICodeGenerator) InformationModel(org.eclipse.vorto.core.api.model.informationmodel.InformationModel) Model(org.eclipse.vorto.core.api.model.model.Model) OutputStreamWriter(java.io.OutputStreamWriter) InvocationContext(org.eclipse.vorto.plugin.generator.InvocationContext) GeneratorException(org.eclipse.vorto.plugin.generator.GeneratorException) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) ApiGatewayResponse(org.eclipse.vorto.plugin.utils.ApiGatewayResponse) ApiGatewayRequest(org.eclipse.vorto.plugin.utils.ApiGatewayRequest)

Aggregations

Context (com.amazonaws.services.lambda.runtime.Context)1 RequestStreamHandler (com.amazonaws.services.lambda.runtime.RequestStreamHandler)1 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 OutputStream (java.io.OutputStream)1 OutputStreamWriter (java.io.OutputStreamWriter)1 HashSet (java.util.HashSet)1 Optional (java.util.Optional)1 Set (java.util.Set)1 BoschIoTSuiteGenerator (org.eclipse.vorto.codegen.bosch.BoschIoTSuiteGenerator)1 EclipseDittoGenerator (org.eclipse.vorto.codegen.ditto.EclipseDittoGenerator)1 EclipseHonoGenerator (org.eclipse.vorto.codegen.hono.EclipseHonoGenerator)1 JSONSchemaGenerator (org.eclipse.vorto.codegen.jsonschema.JSONSchemaGenerator)1 OpenAPIGenerator (org.eclipse.vorto.codegen.openapi.OpenAPIGenerator)1 InformationModel (org.eclipse.vorto.core.api.model.informationmodel.InformationModel)1 Model (org.eclipse.vorto.core.api.model.model.Model)1 ModelContent (org.eclipse.vorto.model.ModelContent)1 ModelContentToEcoreConverter (org.eclipse.vorto.model.conversion.ModelContentToEcoreConverter)1 GeneratorException (org.eclipse.vorto.plugin.generator.GeneratorException)1