Переглянути джерело

Added method hook to abstract xpand base generator to add xpand postprocessors like beautifiers to the outlet.

markus.muehlbrandt@itemis.de 13 роки тому
батько
коміт
b6662b8e78

+ 13 - 0
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/impl/AbstractXpandBasedCodeGenerator.java

@@ -14,6 +14,7 @@ import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.OUTL
 
 import java.io.File;
 import java.util.Collections;
+import java.util.Set;
 
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EcorePackage;
@@ -23,6 +24,7 @@ import org.eclipse.xpand2.XpandFacade;
 import org.eclipse.xpand2.output.Outlet;
 import org.eclipse.xpand2.output.Output;
 import org.eclipse.xpand2.output.OutputImpl;
+import org.eclipse.xpand2.output.PostProcessor;
 import org.eclipse.xtend.expression.Variable;
 import org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel;
 import org.yakindu.sct.model.sexec.ExecutionFlow;
@@ -92,9 +94,20 @@ public abstract class AbstractXpandBasedCodeGenerator extends
 				.toOSString() + File.separator + targetFolder.getValue();
 		Output output = new OutputImpl();
 		Outlet outlet = new Outlet(absoluteTargetFolder);
+		for (PostProcessor postProcessor : getPostProcessors()) {
+			outlet.addPostprocessor(postProcessor);
+		}
 		outlet.setOverwrite(true);
 		output.addOutlet(outlet);
 		return output;
 	}
+	
+	/**
+	 * Override this Method to add some {@link PostProcessor}s to the XPand outlet.
+	 * @return An empty {@link Set} for {@link PostProcessor}s
+	 */
+	protected Set<PostProcessor> getPostProcessors() {
+		return Collections.emptySet();
+	}
 
 }

+ 11 - 0
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/JavaSCTGenerator.java

@@ -13,7 +13,9 @@ package org.yakindu.sct.generator.java;
 import static org.yakindu.sct.generator.core.features.ICoreFeatureConstants.OUTLET_FEATURE_TARGET_FOLDER;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
@@ -26,6 +28,8 @@ import org.eclipse.jdt.core.IClasspathEntry;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.xpand2.output.JavaBeautifier;
+import org.eclipse.xpand2.output.PostProcessor;
 import org.yakindu.sct.generator.core.ISCTGenerator;
 import org.yakindu.sct.generator.core.impl.AbstractXpandBasedCodeGenerator;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
@@ -84,5 +88,12 @@ public class JavaSCTGenerator extends AbstractXpandBasedCodeGenerator {
 		entries.add(JavaCore.newSourceEntry(sourceFolderPath));
 		return entries.toArray(new IClasspathEntry[] {});
 	}
+	
+	@Override
+	protected Set<PostProcessor> getPostProcessors() {
+		Set<PostProcessor> set = new HashSet<PostProcessor>();
+		set.add(new JavaBeautifier());
+		return set;
+	}
 
 }