فهرست منبع

enabled deprecation for FeatureType and FeatureParameter:
add DeprecatableElement to sgen.ecore and apply it to FeatureType and FeatureParameter
add validation checks and validation test

Flow.Antony@googlemail.com 11 سال پیش
والد
کامیت
685f2b27b7
25فایلهای تغییر یافته به همراه1276 افزوده شده و 94 حذف شده
  1. 50 4
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java
  2. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/obj16/DeprecatableElement.gif
  3. 179 0
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/DeprecatableElementItemProvider.java
  4. 48 0
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/FeatureParameterItemProvider.java
  5. 48 0
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/FeatureTypeItemProvider.java
  6. 24 0
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/SGenItemProviderAdapterFactory.java
  7. 14 11
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/SgenEditPlugin.java
  8. 9 6
      plugins/org.yakindu.sct.model.sgen/model/emf/sgen.ecore
  9. 78 0
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/DeprecatableElement.java
  10. 1 1
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/FeatureParameter.java
  11. 1 1
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/FeatureType.java
  12. 9 0
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/SGenFactory.java
  13. 140 9
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/SGenPackage.java
  14. 13 25
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/BoolLiteralImpl.java
  15. 217 0
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/DeprecatableElementImpl.java
  16. 141 2
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/FeatureParameterImpl.java
  17. 1 1
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/FeatureParameterValueImpl.java
  18. 144 1
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/FeatureTypeImpl.java
  19. 13 25
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/IntLiteralImpl.java
  20. 12 1
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/SGenFactoryImpl.java
  21. 37 0
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/SGenPackageImpl.java
  22. 9 6
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/sgen.ecore
  23. 18 0
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/util/SGenAdapterFactory.java
  24. 23 0
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/util/SGenSwitch.java
  25. 47 1
      test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/SGenJavaValidatorTest.java

+ 50 - 4
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java

@@ -27,6 +27,7 @@ import org.yakindu.sct.generator.core.extensions.LibraryExtensions;
 import org.yakindu.sct.generator.core.extensions.LibraryExtensions.LibraryDescriptor;
 import org.yakindu.sct.generator.core.features.IDefaultFeatureValueProvider;
 import org.yakindu.sct.model.sgen.BoolLiteral;
+import org.yakindu.sct.model.sgen.DeprecatableElement;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
 import org.yakindu.sct.model.sgen.FeatureParameter;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
@@ -64,6 +65,7 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 	public static final String INCOMPATIBLE_TYPE_FLOAT_EXPECTED = "Incompatible type, Float 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 DEPRECATED = "Element is depricated";
 	// Failure codes
 	public static final String CODE_REQUIRED_FEATURE = "code_req_feature";
 
@@ -123,13 +125,14 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 			return;
 		GeneratorModel model = (GeneratorModel) EcoreUtil2
 				.getRootContainer(value);
-		
+
 		GeneratorDescriptor generatorDescriptor = GeneratorExtensions
 				.getGeneratorDescriptorForId(model.getGeneratorId());
-		
+
 		IDefaultFeatureValueProvider provider = LibraryExtensions
-				.getDefaultFeatureValueProvider(generatorDescriptor.getLibraryIDs(), value
-						.getParameter().getFeatureType().getLibrary());
+				.getDefaultFeatureValueProvider(
+						generatorDescriptor.getLibraryIDs(), value
+								.getParameter().getFeatureType().getLibrary());
 		IStatus status = provider.validateParameterValue(value);
 		createMarker(status);
 	}
@@ -220,6 +223,19 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 		}
 	}
 
+	@Check
+	public void checkDeprecatedFeatures(GeneratorEntry entry) {
+		Iterable<FeatureConfiguration> features = entry.getFeatures();
+		Iterable<FeatureType> deprecatedFeatures = filter(
+				transform(features, getFeatureType()), isDeprecated());
+		for (FeatureType feature : deprecatedFeatures) {
+			warning(String.format(DEPRECATED + " %s : %f", feature.getName(),
+					feature.getComment()),
+					SGenPackage.Literals.GENERATOR_ENTRY__ELEMENT_REF,
+					feature.getName());
+		}
+	}
+
 	@Check
 	public void checkRequiredParameters(FeatureConfiguration configuration) {
 		GeneratorModel model = (GeneratorModel) EcoreUtil2
@@ -254,6 +270,20 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 		}
 	}
 
+	@Check
+	public void checkDeprecatedParameters(GeneratorEntry entry) {
+		Iterable<FeatureParameter> deprecatedParameters = filter(
+				concat(transform(
+						transform(entry.getFeatures(), getFeatureType()),
+						getParmeter())), isDeprecated());
+		for (FeatureParameter parameter : deprecatedParameters) {
+			warning(String.format(DEPRECATED + " %s : %f", parameter.getName(),
+					parameter.getComment()),
+					SGenPackage.Literals.GENERATOR_ENTRY__ELEMENT_REF,
+					parameter.getName());
+		}
+	}
+
 	private Function<NamedElement, String> getName() {
 		return new Function<NamedElement, String>() {
 
@@ -272,6 +302,14 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 		};
 	}
 
+	private Predicate<DeprecatableElement> isDeprecated() {
+		return new Predicate<DeprecatableElement>() {
+			public boolean apply(DeprecatableElement input) {
+				return input.isDeprecated();
+			}
+		};
+	}
+
 	private Function<FeatureType, Iterable<FeatureParameter>> getParmeter() {
 		return new Function<FeatureType, Iterable<FeatureParameter>>() {
 
@@ -320,4 +358,12 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 			}
 		};
 	}
+
+	private static Function<FeatureConfiguration, FeatureType> getFeatureType() {
+		return new Function<FeatureConfiguration, FeatureType>() {
+			public FeatureType apply(FeatureConfiguration input) {
+				return input.getType();
+			}
+		};
+	}
 }

BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/obj16/DeprecatableElement.gif


+ 179 - 0
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/DeprecatableElementItemProvider.java

@@ -0,0 +1,179 @@
+/**
+ */
+package org.yakindu.sct.model.sgen.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.yakindu.sct.model.sgen.DeprecatableElement;
+import org.yakindu.sct.model.sgen.SGenPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.sgen.DeprecatableElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeprecatableElementItemProvider
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DeprecatableElementItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addDeprecatedPropertyDescriptor(object);
+			addCommentPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Deprecated feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDeprecatedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DeprecatableElement_deprecated_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DeprecatableElement_deprecated_feature", "_UI_DeprecatableElement_type"),
+				 SGenPackage.Literals.DEPRECATABLE_ELEMENT__DEPRECATED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Comment feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCommentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DeprecatableElement_comment_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DeprecatableElement_comment_feature", "_UI_DeprecatableElement_type"),
+				 SGenPackage.Literals.DEPRECATABLE_ELEMENT__COMMENT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns DeprecatableElement.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DeprecatableElement"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		DeprecatableElement deprecatableElement = (DeprecatableElement)object;
+		return getString("_UI_DeprecatableElement_type") + " " + deprecatableElement.isDeprecated();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(DeprecatableElement.class)) {
+			case SGenPackage.DEPRECATABLE_ELEMENT__DEPRECATED:
+			case SGenPackage.DEPRECATABLE_ELEMENT__COMMENT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return SgenEditPlugin.INSTANCE;
+	}
+
+}

+ 48 - 0
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/FeatureParameterItemProvider.java

@@ -61,12 +61,58 @@ public class FeatureParameterItemProvider
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
+			addDeprecatedPropertyDescriptor(object);
+			addCommentPropertyDescriptor(object);
 			addOptionalPropertyDescriptor(object);
 			addParameterTypePropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
 
+	/**
+	 * This adds a property descriptor for the Deprecated feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDeprecatedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DeprecatableElement_deprecated_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DeprecatableElement_deprecated_feature", "_UI_DeprecatableElement_type"),
+				 SGenPackage.Literals.DEPRECATABLE_ELEMENT__DEPRECATED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Comment feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCommentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DeprecatableElement_comment_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DeprecatableElement_comment_feature", "_UI_DeprecatableElement_type"),
+				 SGenPackage.Literals.DEPRECATABLE_ELEMENT__COMMENT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Optional feature.
 	 * <!-- begin-user-doc -->
@@ -148,6 +194,8 @@ public class FeatureParameterItemProvider
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(FeatureParameter.class)) {
+			case SGenPackage.FEATURE_PARAMETER__DEPRECATED:
+			case SGenPackage.FEATURE_PARAMETER__COMMENT:
 			case SGenPackage.FEATURE_PARAMETER__OPTIONAL:
 			case SGenPackage.FEATURE_PARAMETER__PARAMETER_TYPE:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));

+ 48 - 0
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/FeatureTypeItemProvider.java

@@ -63,12 +63,58 @@ public class FeatureTypeItemProvider
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
+			addDeprecatedPropertyDescriptor(object);
+			addCommentPropertyDescriptor(object);
 			addLibraryPropertyDescriptor(object);
 			addOptionalPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
 
+	/**
+	 * This adds a property descriptor for the Deprecated feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDeprecatedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DeprecatableElement_deprecated_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DeprecatableElement_deprecated_feature", "_UI_DeprecatableElement_type"),
+				 SGenPackage.Literals.DEPRECATABLE_ELEMENT__DEPRECATED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Comment feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCommentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_DeprecatableElement_comment_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_DeprecatableElement_comment_feature", "_UI_DeprecatableElement_type"),
+				 SGenPackage.Literals.DEPRECATABLE_ELEMENT__COMMENT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Library feature.
 	 * <!-- begin-user-doc -->
@@ -180,6 +226,8 @@ public class FeatureTypeItemProvider
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(FeatureType.class)) {
+			case SGenPackage.FEATURE_TYPE__DEPRECATED:
+			case SGenPackage.FEATURE_TYPE__COMMENT:
 			case SGenPackage.FEATURE_TYPE__OPTIONAL:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;

+ 24 - 0
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/SGenItemProviderAdapterFactory.java

@@ -349,6 +349,29 @@ public class SGenItemProviderAdapterFactory extends SGenAdapterFactory implement
 		return stringLiteralItemProvider;
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgen.DeprecatableElement} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DeprecatableElementItemProvider deprecatableElementItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.sct.model.sgen.DeprecatableElement}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createDeprecatableElementAdapter() {
+		if (deprecatableElementItemProvider == null) {
+			deprecatableElementItemProvider = new DeprecatableElementItemProvider(this);
+		}
+
+		return deprecatableElementItemProvider;
+	}
+
 	/**
 	 * This returns the root adapter factory that contains this factory.
 	 * <!-- begin-user-doc -->
@@ -460,6 +483,7 @@ public class SGenItemProviderAdapterFactory extends SGenAdapterFactory implement
 		if (intLiteralItemProvider != null) intLiteralItemProvider.dispose();
 		if (realLiteralItemProvider != null) realLiteralItemProvider.dispose();
 		if (stringLiteralItemProvider != null) stringLiteralItemProvider.dispose();
+		if (deprecatableElementItemProvider != null) deprecatableElementItemProvider.dispose();
 	}
 
 }

+ 14 - 11
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/SgenEditPlugin.java

@@ -11,9 +11,9 @@ import org.eclipse.emf.common.util.ResourceLocator;
 import org.yakindu.base.base.provider.BaseEditPlugin;
 
 /**
- * This is the central singleton for the Sgen edit plugin. <!-- begin-user-doc
+ * This is the central singleton for the Sgen edit plugin.
+ * <!-- begin-user-doc
  * --> <!-- end-user-doc -->
- * 
  * @generated
  */
 public final class SgenEditPlugin extends EMFPlugin {
@@ -34,18 +34,21 @@ public final class SgenEditPlugin extends EMFPlugin {
 	private static Implementation plugin;
 
 	/**
-	 * Create the instance. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 * Create the instance.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
 	public SgenEditPlugin() {
-		super(new ResourceLocator[] { BaseEditPlugin.INSTANCE, });
+		super
+		  (new ResourceLocator [] {
+		     BaseEditPlugin.INSTANCE,
+		   });
 	}
 
 	/**
-	 * Returns the singleton instance of the Eclipse plugin. <!-- begin-user-doc
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc
 	 * --> <!-- end-user-doc -->
-	 * 
 	 * @return the singleton instance.
 	 * @generated
 	 */
@@ -55,9 +58,9 @@ public final class SgenEditPlugin extends EMFPlugin {
 	}
 
 	/**
-	 * Returns the singleton instance of the Eclipse plugin. <!-- begin-user-doc
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc
 	 * --> <!-- end-user-doc -->
-	 * 
 	 * @return the singleton instance.
 	 * @generated
 	 */
@@ -73,8 +76,8 @@ public final class SgenEditPlugin extends EMFPlugin {
 	 */
 	public static class Implementation extends EclipsePlugin {
 		/**
-		 * Creates an instance. <!-- begin-user-doc --> <!-- end-user-doc -->
-		 * 
+		 * Creates an instance.
+		 * <!-- begin-user-doc --> <!-- end-user-doc -->
 		 * @generated
 		 */
 		public Implementation() {

+ 9 - 6
plugins/org.yakindu.sct.model.sgen/model/emf/sgen.ecore

@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<ecore:EPackage xmi:version="2.0"
-    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="sgen"
-    nsURI="http://www.yakindu.org/sct/statechart/SGen" nsPrefix="sgen">
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="sgen" nsURI="http://www.yakindu.org/sct/statechart/SGen" nsPrefix="sgen">
   <eClassifiers xsi:type="ecore:EClass" name="GeneratorModel">
     <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
         eType="#//GeneratorEntry" containment="true"/>
@@ -12,7 +10,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="configurations" upperBound="-1"
         eType="#//FeatureConfiguration" containment="true"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FeatureType" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="FeatureType" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement #//DeprecatableElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
         eType="#//FeatureParameter" containment="true" eOpposite="#//FeatureParameter/featureType"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="library" lowerBound="1"
@@ -21,7 +19,7 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         defaultValueLiteral="false"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FeatureParameter" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="FeatureParameter" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement #//DeprecatableElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="featureType" eType="#//FeatureType"
         eOpposite="#//FeatureType/parameters"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
@@ -84,4 +82,9 @@
   <eClassifiers xsi:type="ecore:EClass" name="StringLiteral" eSuperTypes="#//Literal">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DeprecatableElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="deprecated" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="comment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
 </ecore:EPackage>

+ 78 - 0
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/DeprecatableElement.java

@@ -0,0 +1,78 @@
+/**
+ */
+package org.yakindu.sct.model.sgen;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Deprecatable Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sgen.DeprecatableElement#isDeprecated <em>Deprecated</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgen.DeprecatableElement#getComment <em>Comment</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.sgen.SGenPackage#getDeprecatableElement()
+ * @model
+ * @generated
+ */
+public interface DeprecatableElement extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Deprecated</b></em>' attribute.
+	 * The default value is <code>"false"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Deprecated</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Deprecated</em>' attribute.
+	 * @see #setDeprecated(boolean)
+	 * @see org.yakindu.sct.model.sgen.SGenPackage#getDeprecatableElement_Deprecated()
+	 * @model default="false" required="true"
+	 * @generated
+	 */
+	boolean isDeprecated();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.model.sgen.DeprecatableElement#isDeprecated <em>Deprecated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Deprecated</em>' attribute.
+	 * @see #isDeprecated()
+	 * @generated
+	 */
+	void setDeprecated(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Comment</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Comment</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Comment</em>' attribute.
+	 * @see #setComment(String)
+	 * @see org.yakindu.sct.model.sgen.SGenPackage#getDeprecatableElement_Comment()
+	 * @model
+	 * @generated
+	 */
+	String getComment();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.model.sgen.DeprecatableElement#getComment <em>Comment</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Comment</em>' attribute.
+	 * @see #getComment()
+	 * @generated
+	 */
+	void setComment(String value);
+
+} // DeprecatableElement

+ 1 - 1
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/FeatureParameter.java

@@ -26,7 +26,7 @@ import org.yakindu.base.base.NamedElement;
  * @model
  * @generated
  */
-public interface FeatureParameter extends NamedElement {
+public interface FeatureParameter extends NamedElement, DeprecatableElement {
 	/**
 	 * Returns the value of the '<em><b>Feature Type</b></em>' container reference.
 	 * It is bidirectional and its opposite is '{@link org.yakindu.sct.model.sgen.FeatureType#getParameters <em>Parameters</em>}'.

+ 1 - 1
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/FeatureType.java

@@ -27,7 +27,7 @@ import org.yakindu.base.base.NamedElement;
  * @model
  * @generated
  */
-public interface FeatureType extends NamedElement {
+public interface FeatureType extends NamedElement, DeprecatableElement {
 	/**
 	 * Returns the value of the '<em><b>Parameters</b></em>' containment reference list.
 	 * The list contents are of type {@link org.yakindu.sct.model.sgen.FeatureParameter}.

+ 9 - 0
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/SGenFactory.java

@@ -133,6 +133,15 @@ public interface SGenFactory extends EFactory {
 	 */
 	StringLiteral createStringLiteral();
 
+	/**
+	 * Returns a new object of class '<em>Deprecatable Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Deprecatable Element</em>'.
+	 * @generated
+	 */
+	DeprecatableElement createDeprecatableElement();
+
 	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->

+ 140 - 9
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/SGenPackage.java

@@ -145,6 +145,24 @@ public interface SGenPackage extends EPackage {
 	 */
 	int FEATURE_TYPE__NAME = BasePackage.NAMED_ELEMENT__NAME;
 
+	/**
+	 * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FEATURE_TYPE__DEPRECATED = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Comment</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FEATURE_TYPE__COMMENT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 1;
+
 	/**
 	 * The feature id for the '<em><b>Parameters</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -152,7 +170,7 @@ public interface SGenPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE_TYPE__PARAMETERS = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 0;
+	int FEATURE_TYPE__PARAMETERS = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Library</b></em>' reference.
@@ -161,7 +179,7 @@ public interface SGenPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE_TYPE__LIBRARY = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 1;
+	int FEATURE_TYPE__LIBRARY = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Optional</b></em>' attribute.
@@ -170,7 +188,7 @@ public interface SGenPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE_TYPE__OPTIONAL = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 2;
+	int FEATURE_TYPE__OPTIONAL = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 4;
 
 	/**
 	 * The number of structural features of the '<em>Feature Type</em>' class.
@@ -179,7 +197,7 @@ public interface SGenPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE_TYPE_FEATURE_COUNT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 3;
+	int FEATURE_TYPE_FEATURE_COUNT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 5;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.FeatureParameterImpl <em>Feature Parameter</em>}' class.
@@ -200,6 +218,24 @@ public interface SGenPackage extends EPackage {
 	 */
 	int FEATURE_PARAMETER__NAME = BasePackage.NAMED_ELEMENT__NAME;
 
+	/**
+	 * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FEATURE_PARAMETER__DEPRECATED = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Comment</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FEATURE_PARAMETER__COMMENT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 1;
+
 	/**
 	 * The feature id for the '<em><b>Feature Type</b></em>' container reference.
 	 * <!-- begin-user-doc -->
@@ -207,7 +243,7 @@ public interface SGenPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE_PARAMETER__FEATURE_TYPE = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 0;
+	int FEATURE_PARAMETER__FEATURE_TYPE = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Optional</b></em>' attribute.
@@ -216,7 +252,7 @@ public interface SGenPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE_PARAMETER__OPTIONAL = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 1;
+	int FEATURE_PARAMETER__OPTIONAL = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Parameter Type</b></em>' attribute.
@@ -225,7 +261,7 @@ public interface SGenPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE_PARAMETER__PARAMETER_TYPE = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 2;
+	int FEATURE_PARAMETER__PARAMETER_TYPE = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 4;
 
 	/**
 	 * The number of structural features of the '<em>Feature Parameter</em>' class.
@@ -234,7 +270,7 @@ public interface SGenPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE_PARAMETER_FEATURE_COUNT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 3;
+	int FEATURE_PARAMETER_FEATURE_COUNT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 5;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.FeatureConfigurationImpl <em>Feature Configuration</em>}' class.
@@ -534,6 +570,43 @@ public interface SGenPackage extends EPackage {
 	 */
 	int STRING_LITERAL_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 1;
 
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl <em>Deprecatable Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl
+	 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getDeprecatableElement()
+	 * @generated
+	 */
+	int DEPRECATABLE_ELEMENT = 13;
+
+	/**
+	 * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPRECATABLE_ELEMENT__DEPRECATED = 0;
+
+	/**
+	 * The feature id for the '<em><b>Comment</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPRECATABLE_ELEMENT__COMMENT = 1;
+
+	/**
+	 * The number of structural features of the '<em>Deprecatable Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPRECATABLE_ELEMENT_FEATURE_COUNT = 2;
+
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.ParameterTypes <em>Parameter Types</em>}' enum.
 	 * <!-- begin-user-doc -->
@@ -542,7 +615,7 @@ public interface SGenPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getParameterTypes()
 	 * @generated
 	 */
-	int PARAMETER_TYPES = 13;
+	int PARAMETER_TYPES = 14;
 
 
 	/**
@@ -928,6 +1001,38 @@ public interface SGenPackage extends EPackage {
 	 */
 	EAttribute getStringLiteral_Value();
 
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgen.DeprecatableElement <em>Deprecatable Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Deprecatable Element</em>'.
+	 * @see org.yakindu.sct.model.sgen.DeprecatableElement
+	 * @generated
+	 */
+	EClass getDeprecatableElement();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.sct.model.sgen.DeprecatableElement#isDeprecated <em>Deprecated</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Deprecated</em>'.
+	 * @see org.yakindu.sct.model.sgen.DeprecatableElement#isDeprecated()
+	 * @see #getDeprecatableElement()
+	 * @generated
+	 */
+	EAttribute getDeprecatableElement_Deprecated();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.sct.model.sgen.DeprecatableElement#getComment <em>Comment</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Comment</em>'.
+	 * @see org.yakindu.sct.model.sgen.DeprecatableElement#getComment()
+	 * @see #getDeprecatableElement()
+	 * @generated
+	 */
+	EAttribute getDeprecatableElement_Comment();
+
 	/**
 	 * Returns the meta object for enum '{@link org.yakindu.sct.model.sgen.ParameterTypes <em>Parameter Types</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1274,6 +1379,32 @@ public interface SGenPackage extends EPackage {
 		 */
 		EAttribute STRING_LITERAL__VALUE = eINSTANCE.getStringLiteral_Value();
 
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl <em>Deprecatable Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl
+		 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getDeprecatableElement()
+		 * @generated
+		 */
+		EClass DEPRECATABLE_ELEMENT = eINSTANCE.getDeprecatableElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Deprecated</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DEPRECATABLE_ELEMENT__DEPRECATED = eINSTANCE.getDeprecatableElement_Deprecated();
+
+		/**
+		 * The meta object literal for the '<em><b>Comment</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DEPRECATABLE_ELEMENT__COMMENT = eINSTANCE.getDeprecatableElement_Comment();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.ParameterTypes <em>Parameter Types</em>}' enum.
 		 * <!-- begin-user-doc -->

+ 13 - 25
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/BoolLiteralImpl.java

@@ -21,18 +21,16 @@ import org.yakindu.sct.model.sgen.SGenPackage;
  * <p>
  * The following features are implemented:
  * <ul>
- * <li>{@link org.yakindu.sct.model.sgen.impl.BoolLiteralImpl#isValue <em>Value
- * </em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgen.impl.BoolLiteralImpl#isValue <em>Value</em>}</li>
  * </ul>
  * </p>
- * 
+ *
  * @generated
  */
 public class BoolLiteralImpl extends LiteralImpl implements BoolLiteral {
 	/**
 	 * The default value of the '{@link #isValue() <em>Value</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @see #isValue()
 	 * @generated
 	 * @ordered
@@ -42,7 +40,6 @@ public class BoolLiteralImpl extends LiteralImpl implements BoolLiteral {
 	/**
 	 * The cached value of the '{@link #isValue() <em>Value</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @see #isValue()
 	 * @generated
 	 * @ordered
@@ -51,7 +48,6 @@ public class BoolLiteralImpl extends LiteralImpl implements BoolLiteral {
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	protected BoolLiteralImpl() {
@@ -60,7 +56,6 @@ public class BoolLiteralImpl extends LiteralImpl implements BoolLiteral {
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
@@ -70,7 +65,6 @@ public class BoolLiteralImpl extends LiteralImpl implements BoolLiteral {
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public boolean isValue() {
@@ -79,71 +73,65 @@ public class BoolLiteralImpl extends LiteralImpl implements BoolLiteral {
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public void setValue(boolean newValue) {
 		boolean oldValue = value;
 		value = newValue;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET,
-					SGenPackage.BOOL_LITERAL__VALUE, oldValue, value));
+			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.BOOL_LITERAL__VALUE, oldValue, value));
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-		case SGenPackage.BOOL_LITERAL__VALUE:
-			return isValue();
+			case SGenPackage.BOOL_LITERAL__VALUE:
+				return isValue();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-		case SGenPackage.BOOL_LITERAL__VALUE:
-			setValue((Boolean) newValue);
-			return;
+			case SGenPackage.BOOL_LITERAL__VALUE:
+				setValue((Boolean)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-		case SGenPackage.BOOL_LITERAL__VALUE:
-			setValue(VALUE_EDEFAULT);
-			return;
+			case SGenPackage.BOOL_LITERAL__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
 		}
 		super.eUnset(featureID);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-		case SGenPackage.BOOL_LITERAL__VALUE:
-			return value != VALUE_EDEFAULT;
+			case SGenPackage.BOOL_LITERAL__VALUE:
+				return value != VALUE_EDEFAULT;
 		}
 		return super.eIsSet(featureID);
 	}

+ 217 - 0
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/DeprecatableElementImpl.java

@@ -0,0 +1,217 @@
+/**
+ */
+package org.yakindu.sct.model.sgen.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.yakindu.sct.model.sgen.DeprecatableElement;
+import org.yakindu.sct.model.sgen.SGenPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Deprecatable Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl#isDeprecated <em>Deprecated</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl#getComment <em>Comment</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DeprecatableElementImpl extends EObjectImpl implements DeprecatableElement {
+	/**
+	 * The default value of the '{@link #isDeprecated() <em>Deprecated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDeprecated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DEPRECATED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDeprecated() <em>Deprecated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDeprecated()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean deprecated = DEPRECATED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getComment() <em>Comment</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComment()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String COMMENT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComment()
+	 * @generated
+	 * @ordered
+	 */
+	protected String comment = COMMENT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DeprecatableElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SGenPackage.Literals.DEPRECATABLE_ELEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDeprecated() {
+		return deprecated;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDeprecated(boolean newDeprecated) {
+		boolean oldDeprecated = deprecated;
+		deprecated = newDeprecated;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.DEPRECATABLE_ELEMENT__DEPRECATED, oldDeprecated, deprecated));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getComment() {
+		return comment;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setComment(String newComment) {
+		String oldComment = comment;
+		comment = newComment;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.DEPRECATABLE_ELEMENT__COMMENT, oldComment, comment));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SGenPackage.DEPRECATABLE_ELEMENT__DEPRECATED:
+				return isDeprecated();
+			case SGenPackage.DEPRECATABLE_ELEMENT__COMMENT:
+				return getComment();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SGenPackage.DEPRECATABLE_ELEMENT__DEPRECATED:
+				setDeprecated((Boolean)newValue);
+				return;
+			case SGenPackage.DEPRECATABLE_ELEMENT__COMMENT:
+				setComment((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SGenPackage.DEPRECATABLE_ELEMENT__DEPRECATED:
+				setDeprecated(DEPRECATED_EDEFAULT);
+				return;
+			case SGenPackage.DEPRECATABLE_ELEMENT__COMMENT:
+				setComment(COMMENT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SGenPackage.DEPRECATABLE_ELEMENT__DEPRECATED:
+				return deprecated != DEPRECATED_EDEFAULT;
+			case SGenPackage.DEPRECATABLE_ELEMENT__COMMENT:
+				return COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (deprecated: ");
+		result.append(deprecated);
+		result.append(", comment: ");
+		result.append(comment);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DeprecatableElementImpl

+ 141 - 2
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/FeatureParameterImpl.java

@@ -13,6 +13,7 @@ import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.yakindu.base.base.impl.NamedElementImpl;
+import org.yakindu.sct.model.sgen.DeprecatableElement;
 import org.yakindu.sct.model.sgen.FeatureParameter;
 import org.yakindu.sct.model.sgen.FeatureType;
 import org.yakindu.sct.model.sgen.ParameterTypes;
@@ -25,6 +26,8 @@ import org.yakindu.sct.model.sgen.SGenPackage;
  * <p>
  * The following features are implemented:
  * <ul>
+ *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureParameterImpl#isDeprecated <em>Deprecated</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureParameterImpl#getComment <em>Comment</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureParameterImpl#getFeatureType <em>Feature Type</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureParameterImpl#isOptional <em>Optional</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureParameterImpl#getParameterType <em>Parameter Type</em>}</li>
@@ -34,6 +37,42 @@ import org.yakindu.sct.model.sgen.SGenPackage;
  * @generated
  */
 public class FeatureParameterImpl extends NamedElementImpl implements FeatureParameter {
+	/**
+	 * The default value of the '{@link #isDeprecated() <em>Deprecated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDeprecated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DEPRECATED_EDEFAULT = false;
+	/**
+	 * The cached value of the '{@link #isDeprecated() <em>Deprecated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDeprecated()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean deprecated = DEPRECATED_EDEFAULT;
+	/**
+	 * The default value of the '{@link #getComment() <em>Comment</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComment()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String COMMENT_EDEFAULT = null;
+	/**
+	 * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComment()
+	 * @generated
+	 * @ordered
+	 */
+	protected String comment = COMMENT_EDEFAULT;
 	/**
 	 * The default value of the '{@link #isOptional() <em>Optional</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -90,6 +129,48 @@ public class FeatureParameterImpl extends NamedElementImpl implements FeaturePar
 		return SGenPackage.Literals.FEATURE_PARAMETER;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDeprecated() {
+		return deprecated;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDeprecated(boolean newDeprecated) {
+		boolean oldDeprecated = deprecated;
+		deprecated = newDeprecated;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.FEATURE_PARAMETER__DEPRECATED, oldDeprecated, deprecated));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getComment() {
+		return comment;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setComment(String newComment) {
+		String oldComment = comment;
+		comment = newComment;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.FEATURE_PARAMETER__COMMENT, oldComment, comment));
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -97,7 +178,7 @@ public class FeatureParameterImpl extends NamedElementImpl implements FeaturePar
 	 */
 	public FeatureType getFeatureType() {
 		if (eContainerFeatureID() != SGenPackage.FEATURE_PARAMETER__FEATURE_TYPE) return null;
-		return (FeatureType)eContainer();
+		return (FeatureType)eInternalContainer();
 	}
 
 	/**
@@ -225,6 +306,10 @@ public class FeatureParameterImpl extends NamedElementImpl implements FeaturePar
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case SGenPackage.FEATURE_PARAMETER__DEPRECATED:
+				return isDeprecated();
+			case SGenPackage.FEATURE_PARAMETER__COMMENT:
+				return getComment();
 			case SGenPackage.FEATURE_PARAMETER__FEATURE_TYPE:
 				return getFeatureType();
 			case SGenPackage.FEATURE_PARAMETER__OPTIONAL:
@@ -243,6 +328,12 @@ public class FeatureParameterImpl extends NamedElementImpl implements FeaturePar
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case SGenPackage.FEATURE_PARAMETER__DEPRECATED:
+				setDeprecated((Boolean)newValue);
+				return;
+			case SGenPackage.FEATURE_PARAMETER__COMMENT:
+				setComment((String)newValue);
+				return;
 			case SGenPackage.FEATURE_PARAMETER__FEATURE_TYPE:
 				setFeatureType((FeatureType)newValue);
 				return;
@@ -264,6 +355,12 @@ public class FeatureParameterImpl extends NamedElementImpl implements FeaturePar
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case SGenPackage.FEATURE_PARAMETER__DEPRECATED:
+				setDeprecated(DEPRECATED_EDEFAULT);
+				return;
+			case SGenPackage.FEATURE_PARAMETER__COMMENT:
+				setComment(COMMENT_EDEFAULT);
+				return;
 			case SGenPackage.FEATURE_PARAMETER__FEATURE_TYPE:
 				setFeatureType((FeatureType)null);
 				return;
@@ -285,6 +382,10 @@ public class FeatureParameterImpl extends NamedElementImpl implements FeaturePar
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case SGenPackage.FEATURE_PARAMETER__DEPRECATED:
+				return deprecated != DEPRECATED_EDEFAULT;
+			case SGenPackage.FEATURE_PARAMETER__COMMENT:
+				return COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment);
 			case SGenPackage.FEATURE_PARAMETER__FEATURE_TYPE:
 				return getFeatureType() != null;
 			case SGenPackage.FEATURE_PARAMETER__OPTIONAL:
@@ -295,6 +396,40 @@ public class FeatureParameterImpl extends NamedElementImpl implements FeaturePar
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == DeprecatableElement.class) {
+			switch (derivedFeatureID) {
+				case SGenPackage.FEATURE_PARAMETER__DEPRECATED: return SGenPackage.DEPRECATABLE_ELEMENT__DEPRECATED;
+				case SGenPackage.FEATURE_PARAMETER__COMMENT: return SGenPackage.DEPRECATABLE_ELEMENT__COMMENT;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == DeprecatableElement.class) {
+			switch (baseFeatureID) {
+				case SGenPackage.DEPRECATABLE_ELEMENT__DEPRECATED: return SGenPackage.FEATURE_PARAMETER__DEPRECATED;
+				case SGenPackage.DEPRECATABLE_ELEMENT__COMMENT: return SGenPackage.FEATURE_PARAMETER__COMMENT;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -305,7 +440,11 @@ public class FeatureParameterImpl extends NamedElementImpl implements FeaturePar
 		if (eIsProxy()) return super.toString();
 
 		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (optional: ");
+		result.append(" (deprecated: ");
+		result.append(deprecated);
+		result.append(", comment: ");
+		result.append(comment);
+		result.append(", optional: ");
 		result.append(optional);
 		result.append(", parameterType: ");
 		result.append(parameterType);

+ 1 - 1
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/FeatureParameterValueImpl.java

@@ -114,7 +114,7 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 	 */
 	public FeatureConfiguration getFeatureConfiguration() {
 		if (eContainerFeatureID() != SGenPackage.FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION) return null;
-		return (FeatureConfiguration)eContainer();
+		return (FeatureConfiguration)eInternalContainer();
 	}
 
 	/**

+ 144 - 1
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/FeatureTypeImpl.java

@@ -17,6 +17,7 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 import org.yakindu.base.base.impl.NamedElementImpl;
+import org.yakindu.sct.model.sgen.DeprecatableElement;
 import org.yakindu.sct.model.sgen.FeatureParameter;
 import org.yakindu.sct.model.sgen.FeatureType;
 import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
@@ -29,6 +30,8 @@ import org.yakindu.sct.model.sgen.SGenPackage;
  * <p>
  * The following features are implemented:
  * <ul>
+ *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureTypeImpl#isDeprecated <em>Deprecated</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureTypeImpl#getComment <em>Comment</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureTypeImpl#getParameters <em>Parameters</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureTypeImpl#getLibrary <em>Library</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgen.impl.FeatureTypeImpl#isOptional <em>Optional</em>}</li>
@@ -38,6 +41,46 @@ import org.yakindu.sct.model.sgen.SGenPackage;
  * @generated
  */
 public class FeatureTypeImpl extends NamedElementImpl implements FeatureType {
+	/**
+	 * The default value of the '{@link #isDeprecated() <em>Deprecated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDeprecated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DEPRECATED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDeprecated() <em>Deprecated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDeprecated()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean deprecated = DEPRECATED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getComment() <em>Comment</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComment()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String COMMENT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getComment() <em>Comment</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComment()
+	 * @generated
+	 * @ordered
+	 */
+	protected String comment = COMMENT_EDEFAULT;
+
 	/**
 	 * The cached value of the '{@link #getParameters() <em>Parameters</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -86,6 +129,48 @@ public class FeatureTypeImpl extends NamedElementImpl implements FeatureType {
 		return SGenPackage.Literals.FEATURE_TYPE;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDeprecated() {
+		return deprecated;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDeprecated(boolean newDeprecated) {
+		boolean oldDeprecated = deprecated;
+		deprecated = newDeprecated;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.FEATURE_TYPE__DEPRECATED, oldDeprecated, deprecated));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getComment() {
+		return comment;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setComment(String newComment) {
+		String oldComment = comment;
+		comment = newComment;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.FEATURE_TYPE__COMMENT, oldComment, comment));
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -175,6 +260,10 @@ public class FeatureTypeImpl extends NamedElementImpl implements FeatureType {
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case SGenPackage.FEATURE_TYPE__DEPRECATED:
+				return isDeprecated();
+			case SGenPackage.FEATURE_TYPE__COMMENT:
+				return getComment();
 			case SGenPackage.FEATURE_TYPE__PARAMETERS:
 				return getParameters();
 			case SGenPackage.FEATURE_TYPE__LIBRARY:
@@ -195,6 +284,12 @@ public class FeatureTypeImpl extends NamedElementImpl implements FeatureType {
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case SGenPackage.FEATURE_TYPE__DEPRECATED:
+				setDeprecated((Boolean)newValue);
+				return;
+			case SGenPackage.FEATURE_TYPE__COMMENT:
+				setComment((String)newValue);
+				return;
 			case SGenPackage.FEATURE_TYPE__PARAMETERS:
 				getParameters().clear();
 				getParameters().addAll((Collection<? extends FeatureParameter>)newValue);
@@ -214,6 +309,12 @@ public class FeatureTypeImpl extends NamedElementImpl implements FeatureType {
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case SGenPackage.FEATURE_TYPE__DEPRECATED:
+				setDeprecated(DEPRECATED_EDEFAULT);
+				return;
+			case SGenPackage.FEATURE_TYPE__COMMENT:
+				setComment(COMMENT_EDEFAULT);
+				return;
 			case SGenPackage.FEATURE_TYPE__PARAMETERS:
 				getParameters().clear();
 				return;
@@ -232,6 +333,10 @@ public class FeatureTypeImpl extends NamedElementImpl implements FeatureType {
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case SGenPackage.FEATURE_TYPE__DEPRECATED:
+				return deprecated != DEPRECATED_EDEFAULT;
+			case SGenPackage.FEATURE_TYPE__COMMENT:
+				return COMMENT_EDEFAULT == null ? comment != null : !COMMENT_EDEFAULT.equals(comment);
 			case SGenPackage.FEATURE_TYPE__PARAMETERS:
 				return parameters != null && !parameters.isEmpty();
 			case SGenPackage.FEATURE_TYPE__LIBRARY:
@@ -242,6 +347,40 @@ public class FeatureTypeImpl extends NamedElementImpl implements FeatureType {
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == DeprecatableElement.class) {
+			switch (derivedFeatureID) {
+				case SGenPackage.FEATURE_TYPE__DEPRECATED: return SGenPackage.DEPRECATABLE_ELEMENT__DEPRECATED;
+				case SGenPackage.FEATURE_TYPE__COMMENT: return SGenPackage.DEPRECATABLE_ELEMENT__COMMENT;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == DeprecatableElement.class) {
+			switch (baseFeatureID) {
+				case SGenPackage.DEPRECATABLE_ELEMENT__DEPRECATED: return SGenPackage.FEATURE_TYPE__DEPRECATED;
+				case SGenPackage.DEPRECATABLE_ELEMENT__COMMENT: return SGenPackage.FEATURE_TYPE__COMMENT;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -252,7 +391,11 @@ public class FeatureTypeImpl extends NamedElementImpl implements FeatureType {
 		if (eIsProxy()) return super.toString();
 
 		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (optional: ");
+		result.append(" (deprecated: ");
+		result.append(deprecated);
+		result.append(", comment: ");
+		result.append(comment);
+		result.append(", optional: ");
 		result.append(optional);
 		result.append(')');
 		return result.toString();

+ 13 - 25
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/IntLiteralImpl.java

@@ -21,18 +21,16 @@ import org.yakindu.sct.model.sgen.SGenPackage;
  * <p>
  * The following features are implemented:
  * <ul>
- * <li>{@link org.yakindu.sct.model.sgen.impl.IntLiteralImpl#getValue <em>Value
- * </em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgen.impl.IntLiteralImpl#getValue <em>Value</em>}</li>
  * </ul>
  * </p>
- * 
+ *
  * @generated
  */
 public class IntLiteralImpl extends LiteralImpl implements IntLiteral {
 	/**
 	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @see #getValue()
 	 * @generated
 	 * @ordered
@@ -42,7 +40,6 @@ public class IntLiteralImpl extends LiteralImpl implements IntLiteral {
 	/**
 	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @see #getValue()
 	 * @generated
 	 * @ordered
@@ -51,7 +48,6 @@ public class IntLiteralImpl extends LiteralImpl implements IntLiteral {
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	protected IntLiteralImpl() {
@@ -60,7 +56,6 @@ public class IntLiteralImpl extends LiteralImpl implements IntLiteral {
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
@@ -70,7 +65,6 @@ public class IntLiteralImpl extends LiteralImpl implements IntLiteral {
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public int getValue() {
@@ -79,71 +73,65 @@ public class IntLiteralImpl extends LiteralImpl implements IntLiteral {
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	public void setValue(int newValue) {
 		int oldValue = value;
 		value = newValue;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET,
-					SGenPackage.INT_LITERAL__VALUE, oldValue, value));
+			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.INT_LITERAL__VALUE, oldValue, value));
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-		case SGenPackage.INT_LITERAL__VALUE:
-			return getValue();
+			case SGenPackage.INT_LITERAL__VALUE:
+				return getValue();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-		case SGenPackage.INT_LITERAL__VALUE:
-			setValue((Integer) newValue);
-			return;
+			case SGenPackage.INT_LITERAL__VALUE:
+				setValue((Integer)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-		case SGenPackage.INT_LITERAL__VALUE:
-			setValue(VALUE_EDEFAULT);
-			return;
+			case SGenPackage.INT_LITERAL__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
 		}
 		super.eUnset(featureID);
 	}
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-		case SGenPackage.INT_LITERAL__VALUE:
-			return value != VALUE_EDEFAULT;
+			case SGenPackage.INT_LITERAL__VALUE:
+				return value != VALUE_EDEFAULT;
 		}
 		return super.eIsSet(featureID);
 	}

+ 12 - 1
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/SGenFactoryImpl.java

@@ -40,7 +40,7 @@ public class SGenFactoryImpl extends EFactoryImpl implements SGenFactory {
 	 */
 	public static SGenFactory init() {
 		try {
-			SGenFactory theSGenFactory = (SGenFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.yakindu.org/sct/statechart/SGen"); 
+			SGenFactory theSGenFactory = (SGenFactory)EPackage.Registry.INSTANCE.getEFactory(SGenPackage.eNS_URI);
 			if (theSGenFactory != null) {
 				return theSGenFactory;
 			}
@@ -81,6 +81,7 @@ public class SGenFactoryImpl extends EFactoryImpl implements SGenFactory {
 			case SGenPackage.INT_LITERAL: return createIntLiteral();
 			case SGenPackage.REAL_LITERAL: return createRealLiteral();
 			case SGenPackage.STRING_LITERAL: return createStringLiteral();
+			case SGenPackage.DEPRECATABLE_ELEMENT: return createDeprecatableElement();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -236,6 +237,16 @@ public class SGenFactoryImpl extends EFactoryImpl implements SGenFactory {
 		return stringLiteral;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DeprecatableElement createDeprecatableElement() {
+		DeprecatableElementImpl deprecatableElement = new DeprecatableElementImpl();
+		return deprecatableElement;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 37 - 0
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/SGenPackageImpl.java

@@ -130,6 +130,13 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 */
 	private EClass stringLiteralEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass deprecatableElementEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -562,6 +569,36 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
         return (EAttribute)getStringLiteral().getEStructuralFeatures().get(0);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDeprecatableElement() {
+		if (deprecatableElementEClass == null) {
+			deprecatableElementEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(14);
+		}
+		return deprecatableElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDeprecatableElement_Deprecated() {
+        return (EAttribute)getDeprecatableElement().getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDeprecatableElement_Comment() {
+        return (EAttribute)getDeprecatableElement().getEStructuralFeatures().get(1);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 9 - 6
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/sgen.ecore

@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<ecore:EPackage xmi:version="2.0"
-    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="sgen"
-    nsURI="http://www.yakindu.org/sct/statechart/SGen" nsPrefix="sgen">
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="sgen" nsURI="http://www.yakindu.org/sct/statechart/SGen" nsPrefix="sgen">
   <eClassifiers xsi:type="ecore:EClass" name="GeneratorModel">
     <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
         eType="#//GeneratorEntry" containment="true"/>
@@ -12,7 +10,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="configurations" upperBound="-1"
         eType="#//FeatureConfiguration" containment="true"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FeatureType" eSuperTypes="http://www.yakindu.org/base/base/2.0.0#//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="FeatureType" eSuperTypes="http://www.yakindu.org/base/base/2.0.0#//NamedElement #//DeprecatableElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
         eType="#//FeatureParameter" containment="true" eOpposite="#//FeatureParameter/featureType"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="library" lowerBound="1"
@@ -21,7 +19,7 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         defaultValueLiteral="false"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FeatureParameter" eSuperTypes="http://www.yakindu.org/base/base/2.0.0#//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="FeatureParameter" eSuperTypes="http://www.yakindu.org/base/base/2.0.0#//NamedElement #//DeprecatableElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="featureType" eType="#//FeatureType"
         eOpposite="#//FeatureType/parameters"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
@@ -84,4 +82,9 @@
   <eClassifiers xsi:type="ecore:EClass" name="StringLiteral" eSuperTypes="#//Literal">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DeprecatableElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="deprecated" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="comment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
 </ecore:EPackage>

+ 18 - 0
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/util/SGenAdapterFactory.java

@@ -131,6 +131,10 @@ public class SGenAdapterFactory extends AdapterFactoryImpl {
 				return createStringLiteralAdapter();
 			}
 			@Override
+			public Adapter caseDeprecatableElement(DeprecatableElement object) {
+				return createDeprecatableElementAdapter();
+			}
+			@Override
 			public Adapter caseNamedElement(NamedElement object) {
 				return createNamedElementAdapter();
 			}
@@ -336,6 +340,20 @@ public class SGenAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgen.DeprecatableElement <em>Deprecatable Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.sct.model.sgen.DeprecatableElement
+	 * @generated
+	 */
+	public Adapter createDeprecatableElementAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for an object of class '{@link org.yakindu.base.base.NamedElement <em>Named Element</em>}'.
 	 * <!-- begin-user-doc -->

+ 23 - 0
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/util/SGenSwitch.java

@@ -94,6 +94,7 @@ public class SGenSwitch<T> extends Switch<T> {
 				FeatureType featureType = (FeatureType)theEObject;
 				T result = caseFeatureType(featureType);
 				if (result == null) result = caseNamedElement(featureType);
+				if (result == null) result = caseDeprecatableElement(featureType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -101,6 +102,7 @@ public class SGenSwitch<T> extends Switch<T> {
 				FeatureParameter featureParameter = (FeatureParameter)theEObject;
 				T result = caseFeatureParameter(featureParameter);
 				if (result == null) result = caseNamedElement(featureParameter);
+				if (result == null) result = caseDeprecatableElement(featureParameter);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -162,6 +164,12 @@ public class SGenSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SGenPackage.DEPRECATABLE_ELEMENT: {
+				DeprecatableElement deprecatableElement = (DeprecatableElement)theEObject;
+				T result = caseDeprecatableElement(deprecatableElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -361,6 +369,21 @@ public class SGenSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Deprecatable Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Deprecatable Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDeprecatableElement(DeprecatableElement object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'.
 	 * <!-- begin-user-doc -->

+ 47 - 1
test-plugins/org.yakindu.sct.generator.genmodel.test/src/org/yakindu/sct/generator/genmodel/test/SGenJavaValidatorTest.java

@@ -11,6 +11,14 @@
 package org.yakindu.sct.generator.genmodel.test;
 
 import static org.junit.Assert.fail;
+import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.DEPRECATED;
+import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.DUPLICATE_FEATURE;
+import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.DUPLICATE_PARAMETER;
+import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.INCOMPATIBLE_TYPE_STRING_EXPECTED;
+import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.MISSING_REQUIRED_FEATURE;
+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 java.lang.reflect.Method;
 
@@ -29,8 +37,8 @@ import org.yakindu.sct.generator.genmodel.test.util.AbstractSGenTest;
 import org.yakindu.sct.generator.genmodel.test.util.SGenInjectorProvider;
 import org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
+import org.yakindu.sct.model.sgen.GeneratorEntry;
 import org.yakindu.sct.model.sgen.GeneratorModel;
-import static org.yakindu.sct.generator.genmodel.validation.SGenJavaValidator.*;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
@@ -156,6 +164,44 @@ public class SGenJavaValidatorTest extends AbstractSGenTest {
 		result.assertAny(new MsgPredicate(MISSING_REQUIRED_PARAMETER));
 	}
 
+	/**
+	 * @see SGenJavaValidator#checkDeprecatedFeatures(GeneratorEntry)
+	 */
+	@Test
+	public void checkDeprecatedFeatures() {
+		EObject model = parseExpression(
+				"GeneratorModel for yakindu::java { statechart Example { feature Outlet {targetFolder = \"src-gen\"  targetProject = \"TestProject\" }}}",
+				GeneratorModel.class.getSimpleName());
+		if (!(model instanceof GeneratorModel)) {
+			fail("Model is of the wrong type");
+		} else {
+			GeneratorModel genModel = (GeneratorModel) model;
+			genModel.getEntries().get(0).getFeatures().get(0).getType()
+					.setDeprecated(true);
+			AssertableDiagnostics result = tester.validate(genModel);
+			result.assertAny(new MsgPredicate(DEPRECATED));
+		}
+	}
+
+	/**
+	 * @see SGenJavaValidator#checkDeprecatedParameters(GeneratorEntry)
+	 */
+	@Test
+	public void checkDeprecatedParameters() {
+		EObject model = parseExpression(
+				"GeneratorModel for yakindu::java { statechart Example { feature Outlet {targetFolder = \"src-gen\"  targetProject = \"TestProject\" }}}",
+				GeneratorModel.class.getSimpleName());
+		if (!(model instanceof GeneratorModel)) {
+			fail("Model is of the wrong type");
+		} else {
+			GeneratorModel genModel = (GeneratorModel) model;
+			genModel.getEntries().get(0).getFeatures().get(0).getType()
+					.getParameters().get(0).setDeprecated(true);
+			AssertableDiagnostics result = tester.validate(genModel);
+			result.assertAny(new MsgPredicate(DEPRECATED));
+		}
+	}
+
 	/**
 	 * checks that each @Check method of {@link STextJavaValidator} has a @Test
 	 * method in this class with the same name