From 2cfc8bef725da35f50cf1b8308591e0649576a4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Beckmann?= Date: Tue, 30 May 2017 10:29:53 +0200 Subject: [PATCH 1/2] Add check & warning for sgen that does not contain any entries --- .../genmodel/validation/SGenJavaValidator.java | 16 +++++++++++++--- .../genmodel/test/SGenJavaValidatorTest.java | 18 ++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java b/plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java index 757ba1d49b..0a93e93a02 100644 --- a/plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java +++ b/plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java @@ -16,6 +16,7 @@ import java.util.List; +import org.antlr.grammar.v3.ANTLRv3Parser.finallyClause_return; import org.eclipse.core.runtime.IStatus; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.xtext.EcoreUtil2; @@ -68,6 +69,7 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator { public static final String INCOMPATIBLE_TYPE_STRING_EXPECTED = "Incompatible type, String expected"; public static final String UNKNOWN_CONTENT_TYPE = "Unknown content type '"; public static final String DEPRECATED = "Element is depricated"; + public static final String EMPTY_SGEN = ".sgen file does not contain any entries"; // Failure codes public static final String CODE_REQUIRED_FEATURE = "code_req_feature"; @@ -148,6 +150,14 @@ public void checkGeneratorExists(GeneratorModel model) { SGenPackage.Literals.GENERATOR_MODEL__GENERATOR_ID); } } + + @Check + public void checkEntriesExist(GeneratorModel model) { + if(model.getEntries() == null || model.getEntries().isEmpty()) { + warning(EMPTY_SGEN, null); + } + } + @Check public void checkDuplicateGeneratorEntryFeature(final FeatureConfiguration config) { @@ -226,7 +236,7 @@ public void checkRequiredParameters(FeatureConfiguration configuration) { transform( filter(concat(transform(transform(libraryDescriptors, getFeatureTypeLibrary()), getFeatureTypes())), hasName(configuration.getType().getName())), - getParmeter())), + getParameter())), isRequiredParamter()), getName()); @@ -245,7 +255,7 @@ public void checkRequiredParameters(FeatureConfiguration configuration) { @Check public void checkDeprecatedParameters(GeneratorEntry entry) { Iterable deprecatedParameters = filter( - concat(transform(transform(entry.getFeatures(), getFeatureType()), getParmeter())), isDeprecated()); + concat(transform(transform(entry.getFeatures(), getFeatureType()), getParameter())), isDeprecated()); for (FeatureParameter parameter : deprecatedParameters) { warning(String.format(DEPRECATED + " %s : %s", parameter.getName(), parameter.getComment()), SGenPackage.Literals.GENERATOR_ENTRY__ELEMENT_REF, parameter.getName()); @@ -278,7 +288,7 @@ public boolean apply(DeprecatableElement input) { }; } - private Function> getParmeter() { + private Function> getParameter() { return new Function>() { public Iterable apply(FeatureType from) { diff --git a/test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/SGenJavaValidatorTest.java b/test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/SGenJavaValidatorTest.java index 2cc6d4deae..6e87e4ff33 100644 --- a/test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/SGenJavaValidatorTest.java +++ b/test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/SGenJavaValidatorTest.java @@ -19,6 +19,7 @@ import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.MISSING_REQUIRED_PARAMETER; import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.UNKNOWN_CONTENT_TYPE; import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.UNKOWN_GENERATOR; +import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.EMPTY_SGEN; import java.lang.reflect.Method; @@ -201,6 +202,23 @@ public void checkDeprecatedParameters() { result.assertAny(new MsgPredicate(DEPRECATED)); } } + + /** + * @see SGenJavaValidator#checkDeprecatedParameters(GeneratorEntry) + */ + @Test + public void checkEntriesExist() { + EObject model = parseExpression( + "GeneratorModel for yakindu::java {}", + GeneratorModel.class.getSimpleName()); + if (!(model instanceof GeneratorModel)) { + fail("Model is of the wrong type"); + } else { + GeneratorModel genModel = (GeneratorModel) model; + AssertableDiagnostics result = tester.validate(genModel); + result.assertAny(new MsgPredicate(EMPTY_SGEN)); + } + } /** * checks that each @Check method of {@link STextJavaValidator} has a @Test From e079a692e7fa370e37c3ab73c5a68edb5dd20ab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Beckmann?= Date: Tue, 30 May 2017 10:47:55 +0200 Subject: [PATCH 2/2] Remove unused & unresolvable import --- .../sct/generator/genmodel/validation/SGenJavaValidator.java | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java b/plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java index 0a93e93a02..3fc28519a6 100644 --- a/plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java +++ b/plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java @@ -16,7 +16,6 @@ import java.util.List; -import org.antlr.grammar.v3.ANTLRv3Parser.finallyClause_return; import org.eclipse.core.runtime.IStatus; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.xtext.EcoreUtil2;