catch up with development

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b9f0a46
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,37 @@
+**/bin/
+**/target/
+**._trace
+**git.properties
+**/target/
+**/.metadata/
+
+**/emf-gen/**/.gitignore
+**/src-gen/**/.gitignore
+**/git.properties
+**/*.java._trace
+**/*.log
+**/*.log.properties
+
+**/bin/
+**/build/
+*.class
+*.ctrl
+**/Debug/
+.DS_Store
+*.ear
+*.war
+
+**/*.actionbin
+**/*.blipbin
+**/*.chartbin
+**/*.cubebin
+**/*.datatypebin
+**/*.dtobin
+**/*.entitybin
+**/*.servicebin
+**/*.tablebin
+**/*.uibin
+**/*.uisemanticbin
+**/*.xtendbin
+**/*.xtextbin
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.gitignore b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/feature.xml b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/feature.xml
index 4e1d5a5..2cfa74e 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/feature.xml
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory.feature/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.ide.core.ui.softwarefactory.feature"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.ide.core.ui.softwarefactory">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/.classpath b/org.eclipse.osbp.ide.core.ui.softwarefactory/.classpath
new file mode 100644
index 0000000..cf36b56
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/.gitignore b/org.eclipse.osbp.ide.core.ui.softwarefactory/.gitignore
new file mode 100644
index 0000000..09e3bc9
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/target/
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..6e80039
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/META-INF/MANIFEST.MF b/org.eclipse.osbp.ide.core.ui.softwarefactory/META-INF/MANIFEST.MF
index 942b4e3..2fdad6c 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/META-INF/MANIFEST.MF
@@ -14,11 +14,11 @@
  org.eclipse.core.resources,
  org.eclipse.emf.ecore;bundle-version="2.10.0",
  org.eclipse.jdt.core,
- org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.common.types.ui;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.common.types.ui;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.builder;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.ui;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.builder.ui.access;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.builder.ui.access;bundle-version="[0.9.0,0.10.0)",
@@ -29,7 +29,7 @@
  org.eclipse.osbp.xtext.authorizationdsl;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.action;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.datainterchange
+ org.eclipse.osbp.xtext.datainterchange;bundle-version="[0.9.0,0.10.0)"
 Import-Package: javax.validation,
  org.osgi.framework;version="1.8.0"
 Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/build.properties b/org.eclipse.osbp.ide.core.ui.softwarefactory/build.properties
index 502727e..074eb31 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/build.properties
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/build.properties
@@ -11,13 +11,3 @@
                epl-v10.html,\
                icons/,\
                build.properties
-src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
-               LICENSE.txt,\
-               epl-v10.html,\
-               icons/,\
-               plugin.xml,\
-               META-INF/,\
-               .settings/,\
-               .project,\
-               .classpath,\
-               build.properties
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/builder/OSBP2Builder.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/builder/OSBP2Builder.java
index 566d306..1b20dde 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/builder/OSBP2Builder.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/builder/OSBP2Builder.java
@@ -21,7 +21,6 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.CopyOnWriteArraySet;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IFolder;
@@ -33,20 +32,22 @@
 import org.eclipse.core.resources.IStorage;
 import org.eclipse.core.resources.IncrementalProjectBuilder;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.ProgressMonitorWrapper;
 import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.common.util.WrappedException;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.Diagnostician;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.osbp.dsl.semantic.common.types.LType;
 import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
 import org.eclipse.osbp.dsl.semantic.entity.LEntity;
 import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
 import org.eclipse.osbp.dsl.semantic.entity.LEntityModel;
@@ -58,7 +59,6 @@
 import org.eclipse.osbp.xtext.action.ActionModel;
 import org.eclipse.osbp.xtext.action.ActionPackage;
 import org.eclipse.osbp.xtext.action.ActionToolbar;
-import org.eclipse.osbp.xtext.action.DatainterchangeActionEnum;
 import org.eclipse.osbp.xtext.addons.EObjectHelper;
 import org.eclipse.osbp.xtext.authorizationdsl.AuthorizationModel;
 import org.eclipse.osbp.xtext.authorizationdsl.Role;
@@ -66,17 +66,15 @@
 import org.eclipse.osbp.xtext.datainterchange.DataInterchangeModel;
 import org.eclipse.osbp.xtext.datainterchange.DataInterchangePackage;
 import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAttribute;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLFactory;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartModel;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
-import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
-import org.eclipse.xtext.builder.builderState.IBuilderState;
 import org.eclipse.xtext.resource.IReferenceDescription;
-import org.eclipse.xtext.resource.IResourceDescription;
-import org.eclipse.xtext.resource.IResourceDescription.Delta;
 import org.eclipse.xtext.resource.SaveOptions;
 import org.eclipse.xtext.resource.XtextResourceSet;
 import org.eclipse.xtext.ui.editor.findrefs.IReferenceFinder;
@@ -85,6 +83,7 @@
 import org.eclipse.xtext.util.IAcceptor;
 import org.eclipse.xtext.util.Pair;
 import org.eclipse.xtext.util.concurrent.IUnitOfWork;
+import org.eclipse.xtext.validation.FeatureBasedDiagnostic;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -101,8 +100,7 @@
 
 	public static final String BUILDER_ID = Constants.BUILDER_ID;
 
-	private static final Logger LOGGER = LoggerFactory
-			.getLogger(OSBP2Builder.class);
+	private static final Logger LOGGER = LoggerFactory.getLogger(OSBP2Builder.class);
 
 	public final static String MODELS_BASE_SRC_DIRECTORY = "models";
 	public final static String SOURCE_BASE_SRC_DIRECTORY = "src";
@@ -120,6 +118,13 @@
 	public final static String PERSPECTIVE_MODEL_EXTENSION = "perspective";
 	public final static String MENU_MODEL_EXTENSION = "menu";
 
+	Set<String> doNotTouchExtensions = new HashSet<>();
+	{
+		doNotTouchExtensions.add(ENTITY_MODEL_EXTENSION);
+		doNotTouchExtensions.add(DTO_MODEL_EXTENSION);
+		doNotTouchExtensions.add(SERVICE_MODEL_EXTENSION);
+	}
+
 	@Inject
 	private XtextResourceSetProvider rsProvider;
 
@@ -136,8 +141,7 @@
 	private boolean firstBuild = true;
 
 	@Override
-	protected IProject[] build(int kind, Map<String, String> args,
-			IProgressMonitor monitor) throws CoreException {
+	protected IProject[] build(int kind, Map<String, String> args, IProgressMonitor monitor) throws CoreException {
 		LOGGER.info("build started for " + getProject());
 		long startTime = System.currentTimeMillis();
 		SubMonitor progress = null;
@@ -151,15 +155,11 @@
 				isModelExtending = true;
 				for (String extension : modelInstanceDecriptionMap.keySet()) {
 					if (extension.equals(fileExtension)
-							&& modelInstanceDecriptionMap.get(extension)
-									.getProject().equals(getProject())
-							&& modelInstanceDecriptionMap.get(extension)
-									.isDone()
-							&& !modelInstanceDecriptionMap.get(extension)
-									.isBuilt()) {
+							&& modelInstanceDecriptionMap.get(extension).getProject().equals(getProject())
+							&& modelInstanceDecriptionMap.get(extension).isDone()
+							&& !modelInstanceDecriptionMap.get(extension).isBuilt()) {
 						LOGGER.debug("rebuild for " + extension);
-						modelInstanceDecriptionMap.get(extension)
-								.setBuilt(true);
+						modelInstanceDecriptionMap.get(extension).setBuilt(true);
 						needRebuild();
 						extensionsRebuilt.add(extension);
 						modelExtenderBuilder.getPending().remove(fileExtension);
@@ -170,15 +170,15 @@
 
 		if (!isModelExtending) { // this disturbs the model extender workflow
 			try {
-				final String taskName = "Building" + getProject().getName()
-						+ ": "; //$NON-NLS-1$
-				progress = SubMonitor.convert(new ProgressMonitorWrapper(
-						monitor) { // NOSONAR - lambda
-							@Override
-							public void subTask(String name) { // NOSONAR
-								super.subTask(taskName + name);
-							}
-						}, 8);
+				final String taskName = "Building" + getProject().getName() + ": "; //$NON-NLS-2$
+				progress = SubMonitor.convert(new ProgressMonitorWrapper(monitor) { // NOSONAR
+																					// -
+																					// lambda
+					@Override
+					public void subTask(String name) { // NOSONAR
+						super.subTask(taskName + name);
+					}
+				}, 8);
 				if (kind == FULL_BUILD || firstBuild) {
 					firstBuild = false;
 					fullBuild(progress.newChild(1));
@@ -203,15 +203,14 @@
 				if (progress != null) {
 					progress.done();
 				}
-				LOGGER.info("Build " + getProject().getName() + " in "
-						+ (System.currentTimeMillis() - startTime) + " ms");
+				LOGGER.info(
+						"Build " + getProject().getName() + " in " + (System.currentTimeMillis() - startTime) + " ms");
 			}
 		}
 		if (extensionsRebuilt.size() > 0) {
 			for (String extension : extensionsRebuilt) {
 				LOGGER.debug("extending finished for " + extension);
-				modelExtenderBuilder
-						.notifyListeners(new ModelExtendedEvent(extension));
+				modelExtenderBuilder.notifyListeners(new ModelExtendedEvent(extension));
 			}
 		}
 		return getProject().getReferencedProjects();
@@ -260,10 +259,8 @@
 	 *            given monitor. Accepts null, indicating that no progress
 	 *            should be reported and that the operation cannot be cancelled.
 	 */
-	protected void incrementalBuild(IResourceDelta delta,
-			final IProgressMonitor monitor) throws CoreException {
-		final SubMonitor progress = SubMonitor.convert(monitor,
-				"Updating references", 4);
+	protected void incrementalBuild(IResourceDelta delta, final IProgressMonitor monitor) throws CoreException {
+		final SubMonitor progress = SubMonitor.convert(monitor, "Updating references", 4);
 		progress.subTask("Updating references");
 		if (progress.isCanceled())
 			throw new OperationCanceledException();
@@ -305,8 +302,7 @@
 	 *            given monitor. Accepts null, indicating that no progress
 	 *            should be reported and that the operation cannot be cancelled.
 	 */
-	protected void fullBuild(final IProgressMonitor monitor)
-			throws CoreException {
+	protected void fullBuild(final IProgressMonitor monitor) throws CoreException {
 
 		IProject project = getProject();
 		if (!project.getDescription().hasNature(Constants.NATURE_ID)) {
@@ -347,32 +343,39 @@
 
 		EObject model = loadSemanticModel(modifiedFile);
 		if (model == null) {
-			LOGGER.error("Skipping build since SemanticModel could not be loaded from "
-					+ modifiedFile.getName());
+			LOGGER.error("Skipping build since SemanticModel could not be loaded from " + modifiedFile.getName());
 			return;
 		}
 
+		if (model instanceof LEntityModel) {
+			LEntityModel entityModel = (LEntityModel) model;
+			Set<URI> lTypes = new HashSet<>();
+			for (LTypedPackage entityPkg : entityModel.getPackages()) {
+				for (LType lType : entityPkg.getTypes()) {
+					lTypes.add(EcoreUtil.getURI(lType));
+				}
+			}
+			touchReferencingModel(modifiedFile.getName(), lTypes, model.eResource().getResourceSet());
+		}
+
 		if (model instanceof AuthorizationModel) {
 			AuthorizationModel authorizationModel = (AuthorizationModel) model;
 			Set<URI> roles = new HashSet<>();
 			for (Role role : authorizationModel.getPckg().getRoles()) {
 				roles.add(EcoreUtil.getURI(role));
 			}
-			touchReferencingModel(modifiedFile.getName(), roles, model
-					.eResource().getResourceSet());
+			touchReferencingModel(modifiedFile.getName(), roles, model.eResource().getResourceSet());
 		}
 
 		if (model instanceof DatamartModel) {
 			DatamartModel datamartModel = (DatamartModel) model;
 			Set<URI> datamarts = new HashSet<>();
 			for (DatamartPackage datamartPkg : datamartModel.getPackages()) {
-				for (DatamartDefinition datamart : datamartPkg
-						.getDefinitions()) {
+				for (DatamartDefinition datamart : datamartPkg.getDefinitions()) {
 					datamarts.add(EcoreUtil.getURI(datamart));
 				}
 			}
-			touchReferencingModel(modifiedFile.getName(), datamarts, model
-					.eResource().getResourceSet());
+			touchReferencingModel(modifiedFile.getName(), datamarts, model.eResource().getResourceSet());
 		}
 		if (model instanceof ActionModel) {
 			ActionModel actionModel = (ActionModel) model;
@@ -382,8 +385,7 @@
 					actionToolbars.add(EcoreUtil.getURI(actionToolbar)); // NOSONAR
 				}
 			}
-			touchReferencingModel(modifiedFile.getName(), actionToolbars, model
-					.eResource().getResourceSet());
+			touchReferencingModel(modifiedFile.getName(), actionToolbars, model.eResource().getResourceSet());
 		}
 		if (model instanceof DataInterchangeModel) {
 			DataInterchangeModel dataInterchangeModel = (DataInterchangeModel) model;
@@ -393,38 +395,48 @@
 					dataInterchanges.add(EcoreUtil.getURI(dataInterchange)); // NOSONAR
 				}
 			}
-			touchReferencingModel(modifiedFile.getName(), dataInterchanges, model
-					.eResource().getResourceSet());
+			touchReferencingModel(modifiedFile.getName(), dataInterchanges, model.eResource().getResourceSet());
 		}
 	}
 
+	protected boolean shouldTouch(IReferenceDescription t) {
+		URI sourceResourceURI = t.getSourceEObjectUri().trimFragment();
+		URI targetResourceURI = t.getTargetEObjectUri().trimFragment();
+		if (sourceResourceURI.equals(targetResourceURI)) {
+			// reference points to an EObject in same resource
+			return false;
+		}
+
+		// if defined in set to not touch
+		return !doNotTouchExtensions.contains(sourceResourceURI.fileExtension());
+	}
+
 	@SuppressWarnings("restriction")
-	protected void touchReferencingModel(String triggerModel, Set<URI> items,
-			ResourceSet sourceResourceSet) {
+	protected void touchReferencingModel(String triggerModel, Set<URI> items, ResourceSet sourceResourceSet) {
 		final List<IReferenceDescription> referenceTargets = new ArrayList<>();
-		referenceFinder.findAllReferences(items, new LocalResourceAccess(
-				sourceResourceSet), new IAcceptor<IReferenceDescription>() {
-			@Override
-			public void accept(IReferenceDescription t) {
-				if (!referenceTargets.contains(t)) {
-					referenceTargets.add(t);
-				}
-			}
-		}, null);
+		referenceFinder.findAllReferences(items, new LocalResourceAccess(sourceResourceSet),
+				new IAcceptor<IReferenceDescription>() {
+					@Override
+					public void accept(IReferenceDescription t) {
+						if (shouldTouch(t)) {
+							if (!referenceTargets.contains(t)) {
+								referenceTargets.add(t);
+							}
+						}
+					}
+				}, null);
 
 		List<Resource> affectedResources = new LinkedList<>();
 		Map<IProject, XtextResourceSet> targetResourceSets = new HashMap<>();
 		for (IReferenceDescription desc : referenceTargets) {
 			IProject project = null;
-			Iterable<Pair<IStorage, IProject>> pairs = uriStorageMapper
-					.getStorages(desc.getSourceEObjectUri());
+			Iterable<Pair<IStorage, IProject>> pairs = uriStorageMapper.getStorages(desc.getSourceEObjectUri());
 			if (pairs.iterator().hasNext()) {
 				project = pairs.iterator().next().getSecond();
 			}
 
 			if (project == null) {
-				LOGGER.error("No project could be found for "
-						+ desc.getSourceEObjectUri());
+				LOGGER.error("No project could be found for " + desc.getSourceEObjectUri());
 				continue;
 			}
 
@@ -437,22 +449,17 @@
 			}
 
 			// load the resource by the resource set
-			Resource modelResource = resourceSet.getResource(desc
-					.getSourceEObjectUri().trimFragment(), true);
+			Resource modelResource = resourceSet.getResource(desc.getSourceEObjectUri().trimFragment(), true);
 			if (!affectedResources.contains(modelResource)) {
 				affectedResources.add(modelResource);
 			}
 		}
 		try {
 			for (Resource resource : affectedResources) {
-				LOGGER.info("writing from " + triggerModel
-						+ " affected resource "
-						+ resource.getURI().lastSegment());
-				resource.save(SaveOptions.newBuilder().format().getOptions()
-						.toOptionsMap());
-				LOGGER.info("finished writing from " + triggerModel
-						+ " affected resource "
-						+ resource.getURI().lastSegment());
+				LOGGER.info("writing from " + triggerModel + " affected resource " + resource.getURI().lastSegment());
+				// wora 16.01.2018
+				saveRessourceOnlyWhenAllowed(resource);
+				LOGGER.info("finished writing from " + triggerModel + " affected resource "+ resource.getURI().lastSegment());
 			}
 		} catch (IOException e) {
 			LOGGER.error("{}", e);
@@ -489,8 +496,7 @@
 		}
 
 		final List<IReferenceDescription> referenceTargets = new ArrayList<>();
-		referenceFinder.findAllReferences(entities, new LocalResourceAccess(
-				lEntityModel.eResource().getResourceSet()),
+		referenceFinder.findAllReferences(entities, new LocalResourceAccess(lEntityModel.eResource().getResourceSet()),
 				new IAcceptor<IReferenceDescription>() {
 					@Override
 					public void accept(IReferenceDescription t) {
@@ -504,15 +510,13 @@
 		Map<IProject, XtextResourceSet> datamartResourceSets = new HashMap<>();
 		for (IReferenceDescription desc : referenceTargets) {
 			IProject datamartProject = null;
-			Iterable<Pair<IStorage, IProject>> pairs = uriStorageMapper
-					.getStorages(desc.getSourceEObjectUri());
+			Iterable<Pair<IStorage, IProject>> pairs = uriStorageMapper.getStorages(desc.getSourceEObjectUri());
 			if (pairs.iterator().hasNext()) {
 				datamartProject = pairs.iterator().next().getSecond();
 			}
 
 			if (datamartProject == null) {
-				LOGGER.error("No project could be found for "
-						+ desc.getSourceEObjectUri());
+				LOGGER.error("No project could be found for " + desc.getSourceEObjectUri());
 				continue;
 			}
 
@@ -525,11 +529,9 @@
 			}
 
 			// load the resource by the resource set
-			Resource datamartModelResource = resourceSet.getResource(desc
-					.getSourceEObjectUri().trimFragment(), true);
-			DatamartEntity dmEntity = (DatamartEntity) EObjectHelper
-					.getSemanticElement(datamartModelResource, desc
-							.getSourceEObjectUri().fragment());
+			Resource datamartModelResource = resourceSet.getResource(desc.getSourceEObjectUri().trimFragment(), true);
+			DatamartEntity dmEntity = (DatamartEntity) EObjectHelper.getSemanticElement(datamartModelResource,
+					desc.getSourceEObjectUri().fragment());
 
 			if (!dmEntity.isTracking()) {
 				continue;
@@ -541,25 +543,20 @@
 
 			// clear properties section
 			DatamartDSLFactory dmFactory = DatamartDSLFactory.eINSTANCE;
-			EList<DatamartProperty> properties = dmEntity
-					.getProperties();
+			EList<DatamartAttribute> properties = dmEntity.getAttributes();
 			if (properties != null) {
 				properties.clear();
 				// rebuild properties section
-				for (LEntityAttribute eAttr : dmEntity.getEntityRef()
-						.getAllAttributes()) {
-					if (!eAttr.isId() && !eAttr.isUuid()) {
-						DatamartProperty property = dmFactory
-								.createDatamartProperty();
-						property.setAggregated(false);
-						property.setFiltered(false);
-						property.setOptional(false);
-						property.setScaled(false);
-						property.setSelected(false);
-						property.setPlaced(true);
-						property.setAxis(AxisEnum.COLUMNS);
-						property.setPropertyRef(eAttr);
-						properties.add(property);
+				for (LEntityAttribute eAttr : dmEntity.getEntityRef().getAllAttributes()) {
+					if (!eAttr.isId() && !eAttr.isUuid() && !eAttr.isVersion() && !(eAttr.getType() instanceof LBean)) {
+						DatamartAxis axis = dmFactory.createDatamartAxis();
+						axis.setName(AxisEnum.COLUMNS);
+						DatamartAttribute attribute = dmFactory.createDatamartAttribute();
+						attribute.setAggregated(false);
+						attribute.setScaled(false);
+						attribute.setAxis(axis);
+						attribute.setAttributeRef(eAttr);
+						properties.add(attribute);
 					}
 				}
 			}
@@ -568,8 +565,8 @@
 		try {
 			LOGGER.info("writing datamart");
 			for (Resource resource : affectedResources) {
-				resource.save(SaveOptions.newBuilder().format().getOptions()
-						.toOptionsMap());
+				// wora 16.01.2018
+				saveRessourceOnlyWhenAllowed(resource);
 			}
 			LOGGER.info("finished writing datamart");
 		} catch (IOException e) {
@@ -610,8 +607,7 @@
 	 * @return
 	 */
 	protected boolean isOpened(IResourceDelta delta) {
-		return delta.getResource() instanceof IProject
-				&& (delta.getFlags() & IResourceDelta.OPEN) != 0
+		return delta.getResource() instanceof IProject && (delta.getFlags() & IResourceDelta.OPEN) != 0
 				&& ((IProject) delta.getResource()).isOpen();
 	}
 
@@ -622,8 +618,7 @@
 		}
 	}
 
-	public static class LocalResourceAccess implements
-			IReferenceFinder.ILocalResourceAccess {
+	public static class LocalResourceAccess implements IReferenceFinder.ILocalResourceAccess {
 
 		private ResourceSet resourceSet;
 
@@ -642,4 +637,30 @@
 		}
 
 	}
+	
+	/**
+	 * Make sure that resources (delta) changes are only saved onto a model, when they comply with the corresponding
+	 * model grammar rules. 
+	 * @param	resource	the new {@link Resource} resource (change)
+	 * @throws	@{@link IllegalArgumentException} or {@link IOException}
+	 * @since	wora	16.01.2018
+	 */
+	public void saveRessourceOnlyWhenAllowed(Resource resource) throws IllegalArgumentException, IOException{		
+		Diagnostic diagnostic = Diagnostician.INSTANCE.validate(resource.getContents().get(0));
+		int sev = diagnostic.getSeverity();
+		if (sev <= Diagnostic.WARNING) {
+			LOGGER.info("saveRessourceOnlyWhenAllowed - writing {} allowed.", resource.toString());
+			resource.save(SaveOptions.newBuilder().format().getOptions().toOptionsMap());
+		} else if(sev == Diagnostic.ERROR) {
+			String childrenErrorDetail = "";
+			for(Object diag : diagnostic.getChildren()){
+				FeatureBasedDiagnostic f = ((FeatureBasedDiagnostic) diag);
+				childrenErrorDetail += "\n\nERROR MESSAGE: "+f.getMessage()+ "\n\nSOURCE:"+ f.getSource() + "\n\n";
+			}
+			// In case the model itself contains errors
+			String err = ((!resource.getErrors().isEmpty()) ? resource.getErrors().get(0).toString() : "") + childrenErrorDetail;
+			LOGGER.error("saveRessourceOnlyWhenAllowed - diagnosic error {}", err);
+			throw new IllegalArgumentException(err);
+		}
+	}
 }
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/BaseExtender.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/BaseExtender.java
index 44828ce..aba3a65 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/BaseExtender.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/BaseExtender.java
@@ -15,7 +15,6 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.eclipse.core.resources.IWorkspace;
 import org.eclipse.xtext.resource.IResourceDescriptions;
 import org.eclipse.xtext.ui.resource.XtextResourceSetProvider;
 import org.slf4j.Logger;
@@ -40,7 +39,7 @@
 		this.extension = extension;
 	}
 
-	protected abstract boolean extendModel(Map<String, ModelInstanceDescription> packageDeltas);
+	protected abstract boolean extendModel(Map<String, ModelInstanceDescription> packageDeltas) throws Exception;
 
 	public String getExtension() {
 		return extension;
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderAdapter.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderAdapter.java
index 9dd7a91..3491deb 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderAdapter.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderAdapter.java
@@ -25,8 +25,7 @@
 	Map<String, DataType> getColInfo();
 	char getCustomDelimiter();
 	char getTextQualifier();
-	Map<String, String> getAttributeMap();
-	void setAttributeMap(Map<String, String> attributeMap);
 	void setXtextUtilService(IXtextUtilService xtextUtilService);
 	IXtextUtilService getXtextUtilService();
+	boolean isForeignUuid(int idx);
 }
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderProvider.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderProvider.java
index 068e4fb..cc40cc7 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderProvider.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/IModelExtenderProvider.java
@@ -28,6 +28,7 @@
 			void addExtension(IModelExtenderProvider.Event.Listener listener, BaseExtender baseExtender) throws Exception;
 			Map<String, ModelInstanceDescription> getModelInstanceDescriptionMap(IModelExtenderProvider.Event.Listener listener);
 			Set<String> getPending();
+			void clearAll();
 		}
 	
 		/**
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderEventSource.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderEventSource.java
index 7182f0f..a8599fc 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderEventSource.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderEventSource.java
@@ -26,9 +26,11 @@
 import org.eclipse.osbp.ide.core.ui.softwarefactory.extender.IModelExtenderProvider.Event.Listener;
 import org.eclipse.xtext.builder.builderState.IBuilderState;
 import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.IReferenceDescription;
 import org.eclipse.xtext.resource.IResourceDescription;
 import org.eclipse.xtext.resource.IResourceDescription.Delta;
 
+import com.google.common.collect.Iterables;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
@@ -144,7 +146,7 @@
 	public void descriptionsChanged(org.eclipse.xtext.resource.IResourceDescription.Event event) {
 		Map<String, IResourceDescription> toBeRebuilt = new HashMap<String, IResourceDescription>();
 		for (Delta delta : event.getDeltas()) {
-			if ((delta.haveEObjectDescriptionsChanged() && delta.getNew() != null) || authorizationChanged(delta)) {
+			if ((delta.haveEObjectDescriptionsChanged() && delta.getNew() != null) || authorizationChanged(delta) || changedDelta(delta)) {
 				toBeRebuilt.put(delta.getUri().fileExtension(), delta.getNew());
 			}
 		}
@@ -171,7 +173,21 @@
 		}
 		return false;
 	}
+	
+	boolean changedReferenceDescriptions(Delta delta){
+		Iterable<IReferenceDescription> oldReferenceDescriptions = delta.getOld().getReferenceDescriptions();
+		Iterable<IReferenceDescription> newReferenceDescriptions = delta.getNew().getReferenceDescriptions();
+		return (Iterables.size(oldReferenceDescriptions) != Iterables.size(newReferenceDescriptions));
+	}
 
+	boolean changedImportNames(Delta delta){
+		return (contains(delta.getNew().getImportedNames()) && !contains(delta.getOld().getImportedNames()));
+	}
+	
+	boolean changedDelta(Delta delta){
+		return changedReferenceDescriptions(delta) || changedImportNames(delta);
+	}
+	
 	boolean contains(Iterable<QualifiedName> iterable) {
 		String identifier = adapter.getIdentifier().toLowerCase();
 		for (QualifiedName qn : iterable) {
@@ -190,4 +206,11 @@
 		}
 		return false;
 	}
+	
+	public void clearAll () {
+		if (listenerList!=null) listenerList.clear();
+		if (packageDeltaMap!=null) packageDeltaMap.clear();
+		if (pending!=null) pending.clear();
+		System.out.println("+++++++++++++++++++++ clearALL ++++++++++++++++++++++++++");
+	}
 }
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderUtils.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderUtils.java
index cc2cd44..50df502 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderUtils.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelExtenderUtils.java
@@ -22,6 +22,7 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.osbp.xtext.addons.EObjectHelper;
 import org.eclipse.xtext.naming.QualifiedName;
 import org.eclipse.xtext.resource.IEObjectDescription;
 import org.eclipse.xtext.resource.IResourceDescription;
@@ -29,45 +30,82 @@
 import org.eclipse.xtext.resource.SaveOptions;
 import org.eclipse.xtext.resource.XtextResourceSet;
 import org.eclipse.xtext.ui.resource.XtextResourceSetProvider;
+import org.eclipse.xtext.validation.FeatureBasedDiagnostic;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.eclipse.osbp.xtext.addons.EObjectHelper;
-import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
-import org.eclipse.osbp.xtext.datamartdsl.services.DatamartDSLGrammarAccess;
 
 public class ModelExtenderUtils {
-	public static enum	DataType	{ NONE("none"), DOUBLE("double"), DOUBLECOLON("double"), INT("int"), TEXT("String"), DATE("date"), BOOLEAN("boolean"); 
+	private ModelExtenderUtils() {}
+	public enum	DataType	{ 
+		NONE("none", null, null), DOUBLE("double", null, null), DOUBLECOLON("double", "###.00", "de_DE"), INT("int", null, null), 
+		UUID("uuid", null, null), TEXT("String", null, null), DATE("Date", "yyyyMMdd", null), BOOLEAN("boolean", null, null),
+		// wora 15.12.2017 missing datatype
+		BLOBMAPPING("BlobMapping", null, null);
+		
 		private String value;
+		private String format;
+		private String locale;
 	
-	    private DataType(String value) {
-	            this.value = value;
+		private DataType(String value, String format, String locale) {
+            this.value = value;
+            this.format = format;
+            this.locale = locale;
+	    }
+
+	    private DataType(DataType type) {
+	    	this.value = type.value;
+	    	this.format = type.format;
+	    	this.locale = type.locale;
 	    }
 	
 		public String getValue() {
 			return value;
 		}
-	};   
 
-	private static final Logger LOGGER = LoggerFactory
-			.getLogger(ModelExtenderUtils.class);
+		public String getFormat() {
+			return format;
+		}
+
+		public void setFormat(String format) {
+			this.format = format;
+		}
+
+		public String getLocale() {
+			return locale;
+		}
+		
+	}  
+
+	private static final Logger LOGGER = LoggerFactory.getLogger(ModelExtenderUtils.class);
 
 	// persist the modified model
 	public static void writeModel(EObject model, String id) {
 		try {
-			LOGGER.info("running diagnostic for "+id);
-			Diagnostic diagnostic = Diagnostician.INSTANCE
-					.validate(model.eResource().getContents().get(0));
+			LOGGER.info("running diagnostic for {}",id);
+			Diagnostic diagnostic = Diagnostician.INSTANCE.validate(model.eResource().getContents().get(0));
 			int sev = diagnostic.getSeverity();
 			if (sev <= Diagnostic.WARNING) {
-				LOGGER.info("writing "+id);
-				model.eResource().save(
-						SaveOptions.newBuilder().format().getOptions()
-								.toOptionsMap());
-			} else {
-				LOGGER.error(model.eResource().getErrors().get(0)
-						.toString());
+				LOGGER.info("writing {}",id);
+				model.eResource().save(SaveOptions.newBuilder().format().getOptions().toOptionsMap());
+			} else if(sev == Diagnostic.ERROR) {
+				// wora 11.12.2017 just making sure we get a proper error message shown to us
+				String err = "";
+				if(!model.eResource().getErrors().isEmpty()){ 				// In case the model itself contains errors
+					err = model.eResource().getErrors().get(0).toString();
+				}	
+				String childrenErrorDetail = "";
+				for(Object diag : diagnostic.getChildren()){
+					FeatureBasedDiagnostic f = ((FeatureBasedDiagnostic) diag);
+					String mes = f.getMessage();
+					String source = f.getSource();
+					childrenErrorDetail += "\n\nERROR MESSAGE: "+mes+ "\n\nSOURCE:"+ source + "\n\n";
+				}
+				err = "Grammar Diagnostic ERROR\nMODEL: "+id+ childrenErrorDetail;
+				
+				LOGGER.error("diagnosic error {}", err);
+				throw new IllegalArgumentException(err);
 			}
-			LOGGER.info("finished writing "+id);
+			LOGGER.info("finished writing {}",id);
 		} catch (IOException e) {
 			LOGGER.error("{}", e);
 		}
@@ -77,7 +115,7 @@
 	// avoid some keywords
 	public static String normalizeName(String name) {
 		String normalized = Normalizer.normalize(name, Normalizer.Form.NFKD).toLowerCase().replaceAll("[^a-z0-9 ]", "").replace(" ", "_");
-		if(normalized.toLowerCase().equals("description")) {
+		if(normalized.equalsIgnoreCase("description")) {
 			normalized = "_"+normalized;
 		}
 		return normalized;
@@ -101,7 +139,7 @@
 			IEObjectDescription desc = iter.next();
 			objects.add(desc.getEObjectOrProxy());
 		}
-		return objects.size()>0;
+		return !objects.isEmpty();
 	}
 
 	// get an EObject from a full qualified datatype name
@@ -122,7 +160,7 @@
 			IEObjectDescription desc = iter.next();
 			objects.add(desc.getEObjectOrProxy());
 		}
-		return objects.size()>0;
+		return !objects.isEmpty();
 	}
 	
 	/**
diff --git a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelInstanceDescription.java b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelInstanceDescription.java
index f004fca..7abb0a7 100644
--- a/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelInstanceDescription.java
+++ b/org.eclipse.osbp.ide.core.ui.softwarefactory/src/org/eclipse/osbp/ide/core/ui/softwarefactory/extender/ModelInstanceDescription.java
@@ -15,7 +15,6 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.xtext.resource.IResourceDescription;
-import org.eclipse.xtext.resource.IResourceDescription.Delta;
 
 public class ModelInstanceDescription {
 	private String packageName;
diff --git a/pom.xml b/pom.xml
index 1cc863f..34b5eda 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,4 +106,13 @@
             </plugins>
         </pluginManagement>
     </build>
+    <dependencies>
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>
+				org.eclipse.osbp.dependencies.bundle.activemq.all.osgi
+			</artifactId>
+			<version>5.14.5-SNAPSHOT</version>
+		</dependency>
+    </dependencies>
 </project>