Search in sources :

Example 1 with IGeneratedWriter

use of org.eclipse.vorto.codegen.api.IGeneratedWriter 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);
    }
}
Also used : ZipOutputStream(java.util.zip.ZipOutputStream) InformationModel(org.eclipse.vorto.core.api.model.informationmodel.InformationModel) Generated(org.eclipse.vorto.codegen.api.Generated) ZipContentExtractCodeGeneratorTask(org.eclipse.vorto.codegen.api.ZipContentExtractCodeGeneratorTask) ZipInputStream(java.util.zip.ZipInputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) MappingModel(org.eclipse.vorto.core.api.model.mapping.MappingModel) HashMap(java.util.HashMap) Parameter(org.apache.maven.plugins.annotations.Parameter) Model(org.eclipse.vorto.core.api.model.model.Model) Mojo(org.apache.maven.plugins.annotations.Mojo) ByteArrayInputStream(java.io.ByteArrayInputStream) MavenProject(org.apache.maven.project.MavenProject) LifecyclePhase(org.apache.maven.plugins.annotations.LifecyclePhase) Path(java.nio.file.Path) ZipEntry(java.util.zip.ZipEntry) InvocationContext(org.eclipse.vorto.codegen.api.InvocationContext) IGeneratedWriter(org.eclipse.vorto.codegen.api.IGeneratedWriter) Files(java.nio.file.Files) Predicate(java.util.function.Predicate) IOException(java.io.IOException) FileUtils(org.apache.commons.io.FileUtils) FileInputStream(java.io.FileInputStream) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) Collectors(java.util.stream.Collectors) File(java.io.File) IGenerationResult(org.eclipse.vorto.codegen.api.IGenerationResult) IModelWorkspace(org.eclipse.vorto.server.commons.reader.IModelWorkspace) MojoFailureException(org.apache.maven.plugin.MojoFailureException) Consumer(java.util.function.Consumer) IOUtils(org.apache.commons.io.IOUtils) List(java.util.List) ModelType(org.eclipse.vorto.core.api.model.model.ModelType) Paths(java.nio.file.Paths) IVortoCodeGenerator(org.eclipse.vorto.codegen.api.IVortoCodeGenerator) AbstractMojo(org.apache.maven.plugin.AbstractMojo) IVortoCodeGenerator(org.eclipse.vorto.codegen.api.IVortoCodeGenerator) Generated(org.eclipse.vorto.codegen.api.Generated) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) HashMap(java.util.HashMap) InformationModel(org.eclipse.vorto.core.api.model.informationmodel.InformationModel) IOException(java.io.IOException) IGenerationResult(org.eclipse.vorto.codegen.api.IGenerationResult) IModelWorkspace(org.eclipse.vorto.server.commons.reader.IModelWorkspace) IGeneratedWriter(org.eclipse.vorto.codegen.api.IGeneratedWriter) IOException(java.io.IOException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) MojoFailureException(org.apache.maven.plugin.MojoFailureException) ZipInputStream(java.util.zip.ZipInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) ZipContentExtractCodeGeneratorTask(org.eclipse.vorto.codegen.api.ZipContentExtractCodeGeneratorTask) InformationModel(org.eclipse.vorto.core.api.model.informationmodel.InformationModel) MappingModel(org.eclipse.vorto.core.api.model.mapping.MappingModel) Model(org.eclipse.vorto.core.api.model.model.Model) InvocationContext(org.eclipse.vorto.codegen.api.InvocationContext) File(java.io.File) MappingModel(org.eclipse.vorto.core.api.model.mapping.MappingModel)

Aggregations

ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 File (java.io.File)1 FileInputStream (java.io.FileInputStream)1 IOException (java.io.IOException)1 Files (java.nio.file.Files)1 Path (java.nio.file.Path)1 Paths (java.nio.file.Paths)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Consumer (java.util.function.Consumer)1 Predicate (java.util.function.Predicate)1 Collectors (java.util.stream.Collectors)1 ZipEntry (java.util.zip.ZipEntry)1 ZipInputStream (java.util.zip.ZipInputStream)1 ZipOutputStream (java.util.zip.ZipOutputStream)1 FileUtils (org.apache.commons.io.FileUtils)1 IOUtils (org.apache.commons.io.IOUtils)1 AbstractMojo (org.apache.maven.plugin.AbstractMojo)1 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)1