Browse Source

Merge pull request #1402 from Yakindu/issue_1381

Add check & warning for sgen that does not contain any entries
Rene Beckmann 8 years ago
parent
commit
bb05c8e571

+ 12 - 3
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java

@@ -68,6 +68,7 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 	public static final String INCOMPATIBLE_TYPE_STRING_EXPECTED = "Incompatible type, String expected";
 	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 UNKNOWN_CONTENT_TYPE = "Unknown content type '";
 	public static final String DEPRECATED = "Element is depricated";
 	public static final String DEPRECATED = "Element is depricated";
+	public static final String EMPTY_SGEN = ".sgen file does not contain any entries";
 	// Failure codes
 	// Failure codes
 	public static final String CODE_REQUIRED_FEATURE = "code_req_feature";
 	public static final String CODE_REQUIRED_FEATURE = "code_req_feature";
 
 
@@ -148,6 +149,14 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 					SGenPackage.Literals.GENERATOR_MODEL__GENERATOR_ID);
 					SGenPackage.Literals.GENERATOR_MODEL__GENERATOR_ID);
 		}
 		}
 	}
 	}
+	
+	@Check
+	public void checkEntriesExist(GeneratorModel model) {
+		if(model.getEntries() == null || model.getEntries().isEmpty()) {
+			warning(EMPTY_SGEN, null);
+		}
+	}
+	
 
 
 	@Check
 	@Check
 	public void checkDuplicateGeneratorEntryFeature(final FeatureConfiguration config) {
 	public void checkDuplicateGeneratorEntryFeature(final FeatureConfiguration config) {
@@ -226,7 +235,7 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 						transform(
 						transform(
 								filter(concat(transform(transform(libraryDescriptors, getFeatureTypeLibrary()),
 								filter(concat(transform(transform(libraryDescriptors, getFeatureTypeLibrary()),
 										getFeatureTypes())), hasName(configuration.getType().getName())),
 										getFeatureTypes())), hasName(configuration.getType().getName())),
-								getParmeter())),
+								getParameter())),
 						isRequiredParamter()),
 						isRequiredParamter()),
 				getName());
 				getName());
 
 
@@ -245,7 +254,7 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 	@Check
 	@Check
 	public void checkDeprecatedParameters(GeneratorEntry entry) {
 	public void checkDeprecatedParameters(GeneratorEntry entry) {
 		Iterable<FeatureParameter> deprecatedParameters = filter(
 		Iterable<FeatureParameter> deprecatedParameters = filter(
-				concat(transform(transform(entry.getFeatures(), getFeatureType()), getParmeter())), isDeprecated());
+				concat(transform(transform(entry.getFeatures(), getFeatureType()), getParameter())), isDeprecated());
 		for (FeatureParameter parameter : deprecatedParameters) {
 		for (FeatureParameter parameter : deprecatedParameters) {
 			warning(String.format(DEPRECATED + " %s : %s", parameter.getName(), parameter.getComment()),
 			warning(String.format(DEPRECATED + " %s : %s", parameter.getName(), parameter.getComment()),
 					SGenPackage.Literals.GENERATOR_ENTRY__ELEMENT_REF, parameter.getName());
 					SGenPackage.Literals.GENERATOR_ENTRY__ELEMENT_REF, parameter.getName());
@@ -278,7 +287,7 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 		};
 		};
 	}
 	}
 
 
-	private Function<FeatureType, Iterable<FeatureParameter>> getParmeter() {
+	private Function<FeatureType, Iterable<FeatureParameter>> getParameter() {
 		return new Function<FeatureType, Iterable<FeatureParameter>>() {
 		return new Function<FeatureType, Iterable<FeatureParameter>>() {
 
 
 			public Iterable<FeatureParameter> apply(FeatureType from) {
 			public Iterable<FeatureParameter> apply(FeatureType from) {

+ 18 - 0
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.MI
 import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.MISSING_REQUIRED_PARAMETER;
 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.UNKNOWN_CONTENT_TYPE;
 import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.UNKOWN_GENERATOR;
 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;
 import java.lang.reflect.Method;
 
 
@@ -201,6 +202,23 @@ public class SGenJavaValidatorTest extends AbstractSGenTest {
 			result.assertAny(new MsgPredicate(DEPRECATED));
 			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
 	 * checks that each @Check method of {@link STextJavaValidator} has a @Test