catch up with branch daily

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
index 15722a6..61f739b 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -25,15 +25,25 @@
                 <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.action</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.authorization</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.blip</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.chart</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.cube</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.datainterchange</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.datamart</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.dialog</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.entitymock</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.functionlibrary</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.i18n</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.menu</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.message</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.organization</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.perspective</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.report</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.signal</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.statemachine</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.strategy</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.table</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.topology</jenkins.build.dependency>
         </jenkins.build.dependencies>
 </jenkins>
diff --git a/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF
index 4582269..5fe8fba 100644
--- a/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.dsl.metadata.service/META-INF/MANIFEST.MF
@@ -19,36 +19,44 @@
  org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.bpmn2;bundle-version="1.0.0",
  org.eclipse.osbp.bpmn2.ecore;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.perspective;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.blip;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.functionlibrarydsl;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.datainterchange;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.entitymock;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.menu;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.strategy;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.core.common.model;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.persistence.jpa;bundle-version="2.6.1",
+ org.eclipse.osbp.ui.api;bundle-version="0.9.0",
+ org.eclipse.osgi.services;bundle-version="3.5.100",
  org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.dto.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.datatype.xtext;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.statemachine;bundle-version="0.9.0",
  org.eclipse.osbp.ecview.dsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.ecview.dsl.lib;bundle-version="0.9.0",
+ org.eclipse.osbp.xtext.i18n;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.authorizationdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.messagedsl;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.functionlibrarydsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datainterchange;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datamartdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.table;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.chart;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.reportdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.topologydsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.entitymock;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.strategy;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.dialogdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.perspective;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.blip;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.organizationdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.statemachine;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.menu;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.signal;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.ecview.core.common;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.ecview.core.common.model;bundle-version="[0.9.0,0.10.0)"
+ org.eclipse.osbp.preferences;bundle-version="0.9.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.validation.constraints,
  org.apache.commons.lang3;version="3.4.0",
  org.eclipse.e4.core.services.translation,
- org.eclipse.osbp.preferences;version="0.9.0",
- org.eclipse.osbp.ui.api.metadata;version="0.9.0",
- org.eclipse.osbp.ui.api.perspective;version="0.9.0",
- org.eclipse.osbp.xtext.blip;version="0.9.0",
- org.eclipse.osbp.xtext.i18n;version="0.9.0",
- org.eclipse.osbp.xtext.perspective;version="0.9.0",
- org.osgi.service.component;version="1.2.0",
- org.osgi.service.component.annotations,
  org.slf4j;resolution:=optional
 Export-Package: org.eclipse.osbp.dsl.metadata.service
 Service-Component: OSGI-INF/org.eclipse.osbp.dsl.metadata.service.DSLBuilderParticipant.xml
diff --git a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java
index aa56d41..d0bd2bb 100644
--- a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java
+++ b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/DSLBuilderParticipant.java
@@ -23,8 +23,8 @@
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Hashtable;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -45,14 +45,14 @@
 import org.eclipse.osbp.dsl.semantic.dto.LDto;
 import org.eclipse.osbp.dsl.semantic.entity.LEntity;
 import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProvider;
-import org.eclipse.osbp.ecview.core.common.context.IViewContext;
-import org.eclipse.osbp.ecview.core.common.extender.IECViewProviderService;
-import org.eclipse.osbp.ecview.semantic.uimodel.UiModel;
-import org.eclipse.osbp.ecview.semantic.uimodel.UiView;
+import org.eclipse.osbp.ecview.semantic.uimodel.UiIDEView;
+import org.eclipse.osbp.ecview.semantic.uimodel.UiModelPackage;
 import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.extender.IExtenderConstants;
 import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
 import org.eclipse.osbp.ui.api.perspective.IPerspectiveProvider;
+import org.eclipse.osbp.xtext.action.ActionPackage;
+import org.eclipse.osbp.xtext.action.ActionToolbar;
 import org.eclipse.osbp.xtext.authorizationdsl.AuthorizationPackage;
 import org.eclipse.osbp.xtext.authorizationdsl.Role;
 import org.eclipse.osbp.xtext.builder.metadata.services.AbstractBuilderParticipant;
@@ -70,6 +70,11 @@
 import org.eclipse.osbp.xtext.dialogdsl.Dialog;
 import org.eclipse.osbp.xtext.dialogdsl.DialogDSLPackage;
 import org.eclipse.osbp.xtext.dialogdsl.DialogPackage;
+import org.eclipse.osbp.xtext.dialogdsl.mapper.AutowireUiFactory;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDialogGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDialogHook;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage;
 import org.eclipse.osbp.xtext.i18n.I18NKeyGenerator;
 import org.eclipse.osbp.xtext.organizationdsl.Organization;
 import org.eclipse.osbp.xtext.perspective.Perspective;
@@ -89,14 +94,16 @@
 import org.eclipse.osbp.xtext.topologydsl.Topology;
 import org.eclipse.osbp.xtext.topologydsl.TopologyDSLPackage;
 import org.eclipse.osbp.xtext.topologydsl.TopologyPackage;
+import org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider;
+import org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor;
+import org.eclipse.persistence.internal.jpa.deployment.SEPersistenceUnitInfo;
+import org.eclipse.persistence.jpa.Archive;
+import org.eclipse.persistence.jpa.PersistenceProvider;
 import org.eclipse.xtext.common.types.JvmDeclaredType;
 import org.eclipse.xtext.resource.IEObjectDescription;
 import org.eclipse.xtext.util.Pair;
 import org.eclipse.xtext.util.Tuples;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.service.component.ComponentContext;
@@ -128,6 +135,12 @@
 
 	/** The dsl bundles. */
 	private Map<String, List<Bundle>> dslBundles = new HashMap<>();
+	
+	/** The entity class loaders. */
+	private Map<String, ClassLoader> entityClassLoaders = new HashMap<>();
+
+	/** The persistence units. */
+	private Map<String, SEPersistenceUnitInfo> persistenceUnitInfos = new HashMap<>();
 
 	/** The used keys. */
 	private Map<Bundle, List<String>> usedKeys = new HashMap<>();
@@ -139,13 +152,13 @@
 	private List<Bundle> masterBundles = new ArrayList<>();
 	
 	/** The translations. */
-	private HashMap<String, Properties> translations = new HashMap<>();
+	private Map<String, Properties> translations = new HashMap<>();
 	/** The translations source. */
-	private HashMap<String, Properties> translationSource = new HashMap<>();
+	private Map<String, Properties> translationSource = new HashMap<>();
 	/** The cache for nearest localeTag to a localeString */
-	private HashMap<String, String> localeCache = new HashMap<>();
+	private Map<String, String> localeCache = new HashMap<>();
 	/** to reduce regex matching */
-	private HashMap<String, String> keyCache = new HashMap<>();
+	private Map<String, String> keyCache = new HashMap<>();
 
 	private boolean osbee = false;
 
@@ -293,12 +306,57 @@
 						if (!scannedBundles.contains(suspect)) {
 							scanTranslationBundles(suspect);
 						}
+						if("entity".equals(extension)) {
+							extractPersistenceUnits(wiring);
+						}
 					}
 				}
 			}
 		}
 	}
 
+	private void extractPersistenceUnits(BundleWiring wiring) {
+		List<URL> pUnits = wiring.findEntries("/", "persistence.xml", BundleWiring.LISTRESOURCES_RECURSE);
+		for (URL pUnit : pUnits) {
+			SEPersistenceUnitInfo persistenceUnitInfo = null;
+			Set<Archive> pars;
+			pars = PersistenceUnitProcessor.findPersistenceArchives(wiring.getClassLoader(), pUnit.getPath());
+			try {
+				for (Archive archive : pars) {
+					Iterator<SEPersistenceUnitInfo> persistenceUnits = PersistenceUnitProcessor.getPersistenceUnits(archive, wiring.getClassLoader()).iterator();
+					while(persistenceUnits.hasNext()) {
+						persistenceUnitInfo = persistenceUnits.next();
+						if (persistenceUnitInfo != null && isPersistenceProviderSupported(persistenceUnitInfo.getPersistenceProviderClassName())) {
+							persistenceUnitInfos.put(persistenceUnitInfo.getPersistenceUnitName(), persistenceUnitInfo);
+							for(String clz:persistenceUnitInfo.getManagedClassNames()) {
+								entityClassLoaders.put(getPackageName(clz), wiring.getClassLoader());
+							}
+							
+						}
+					}
+				}
+			} finally {
+				for (Archive archive : pars) {
+					archive.close();
+				}
+			}
+		}
+	}
+
+	public static String getPackageName(String className) {
+		int lastDot = className.lastIndexOf('.');
+		if (lastDot == -1) {
+			return "";
+		}
+		return className.substring(0, lastDot);
+	}
+
+	private boolean isPersistenceProviderSupported(String providerClassName) {
+		return (providerClassName == null || providerClassName.equals("")
+				|| providerClassName.equals(EntityManagerFactoryProvider.class.getName())
+				|| providerClassName.equals(PersistenceProvider.class.getName()));
+	}
+	
 	/**
 	 * Load translations from a bundle. Tries to find an i18n directory with
 	 * different language properties.
@@ -510,6 +568,15 @@
 	 * Provided as an OSGi service to returnmodels for the given qualified name.
 	 */
 	public class DSLMetadataService implements IDSLMetadataService {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.ui.api.metadata.IDSLMetadataService#reloadModel(java.lang.String)
+		 */
+		@Override
+		public void unloadModel(String extension) {
+			metadataBuilderService.unloadResource(extension);
+		}
+
 		/*
 		 * (non-Javadoc)
 		 * 
@@ -553,14 +620,21 @@
 		 */
 		@Override
 		public Class<?> getClass(EObject eObject, String extension) {
-			String className = getClassName(eObject, "");
+			return getClass(getClassName(eObject, ""), extension);
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.ui.api.metadata.IDSLMetadataService#getClass(java.lang.String, java.lang.String)
+		 */
+		@Override
+		public Class<?> getClass(String fqn, String extension) {
 			if (dslBundles.containsKey(extension)) {
 				for (Bundle bundle : dslBundles.get(extension)) {
 					BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
 					ClassLoader classLoader = bundleWiring.getClassLoader();
 					Class<?> clz = null;
 					try {
-						clz = classLoader.loadClass(className);
+						clz = classLoader.loadClass(fqn);
 					} catch (ClassNotFoundException e) {
 						// nothing to do
 					}
@@ -569,10 +643,10 @@
 					}
 				}
 			}
-			log.error("class {} could not be found for extension {}", className, extension);
+			log.error("class {} could not be found for extension {}", fqn, extension);
 			return null;
 		}
-
+		
 		/*
 		 * (non-Javadoc)
 		 * 
@@ -582,7 +656,14 @@
 		 */
 		@Override
 		public Object getClassInstance(EObject eObject, String extension) {
-			Class<?> clz = getClass(eObject, extension);
+			return getClassInstance(getClass(eObject, extension), extension);
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.ui.api.metadata.IDSLMetadataService#getClassInstance(java.lang.Class, java.lang.String)
+		 */
+		@Override
+		public Object getClassInstance(Class<?> clz, String extension) {
 			try {
 				if (clz != null) {
 					return clz.newInstance();
@@ -590,12 +671,11 @@
 			} catch (InstantiationException | IllegalAccessException e) {
 				log.error("class {} could not be instantiated", clz.getCanonicalName());
 				if (e.getCause() != null) {
-					log.error("because " + e.getCause());
+					log.error("because {}", e.getCause());
 				}
 			}
 			return null;
 		}
-
 		/**
 		 * Gets the class URI. As more than one bundle could carry a model
 		 * instance, we must try to load the requested class to be sure to have
@@ -773,13 +853,18 @@
 		 * (java.lang.String, java.lang.String)
 		 */
 		@Override
-		public Map<String, String> getAllTypeNames(String localeTag, String typeName) {
-			HashMap<String, String> subTypesNames = new HashMap<>();
-			subTypesNames.put(translate(localeTag, typeName.substring(typeName.lastIndexOf('.') + 1)), typeName);
-			JvmDeclaredType type = (JvmDeclaredType) metadataBuilderService.getTypeProvider().findTypeByName(typeName);
-			Set<JvmDeclaredType> subTypes = metadataBuilderService.findSubTypes(type);
+		public Map<String, Object> getAllSubtypes(String localeTag, Class<?> type) {
+			LinkedHashMap<String, Object> subTypesNames = new LinkedHashMap<>();
+			subTypesNames.put(translate(localeTag, type.getSimpleName()), type);
+			JvmDeclaredType jvmType = (JvmDeclaredType) metadataBuilderService.getTypeProvider().findTypeByName(type.getCanonicalName());
+			Set<JvmDeclaredType> subTypes = metadataBuilderService.findSubTypes(jvmType);
 			for (JvmDeclaredType subType : subTypes) {
-				subTypesNames.put(translate(localeTag, subType.getSimpleName()), subType.getQualifiedName());
+				try {
+					Class<?> subtypeClass = createType(subType.getQualifiedName());
+					subTypesNames.put(translate(localeTag, subType.getSimpleName()), subtypeClass);
+				} catch (ClassNotFoundException e) {
+					log.error("{}", e);
+				}
 			}
 			return subTypesNames;
 		}
@@ -869,6 +954,31 @@
 		public boolean isOsbee() {
 			return osbee;
 		}
+
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.ui.api.metadata.IDSLMetadataService#getClassLoader(java.lang.String)
+		 */
+		@Override
+		public ClassLoader getClassLoader(String className) {
+			for(Entry<String, ClassLoader> entityBundle:entityClassLoaders.entrySet()) {
+				if(className.startsWith(entityBundle.getKey())) {
+					return entityBundle.getValue();
+				}
+			}
+			return null;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.ui.api.metadata.IDSLMetadataService#getPersistenceUnitInfo(java.lang.String)
+		 */
+		@Override
+		public Object getPersistenceUnitInfo(String persistenceUnitName) {
+			if(persistenceUnitInfos.containsKey(persistenceUnitName)) {
+				return persistenceUnitInfos.get(persistenceUnitName);
+			}
+			return null;
+		}
 	}
 
 	/**
@@ -898,9 +1008,10 @@
 				return IPerspectiveProvider.PerspectiveViewType.TABLE;
 			} else if (pkg == TopologyDSLPackage.eINSTANCE) {
 				return IPerspectiveProvider.PerspectiveViewType.TOPOLOGY;
-			}
-			else if (pkg == SignalDSLPackage.eINSTANCE) {
+			} else if (pkg == SignalDSLPackage.eINSTANCE) {
 				return IPerspectiveProvider.PerspectiveViewType.SIGNAL;
+			} else if (pkg == FunctionLibraryDSLPackage.eINSTANCE) {
+				return IPerspectiveProvider.PerspectiveViewType.FUNCTIONLIBRARY;
 			}
 			throw new IllegalArgumentException(
 					IDSLMetadataService.ThrowableMessages.NAMING_LOGIC_NOT_REGISTERD + eObject);
@@ -924,8 +1035,12 @@
 				return getAuthorizationFQN(eObject);
 			} else if (eObject instanceof Dialog) {
 				return getDialogFQN(eObject);
+			} else if (eObject instanceof UiIDEView) {
+				return getUiIdeFQN(eObject);
 			} else if (eObject instanceof LDto) {
 				return getDtoFQN(eObject);
+			} else if (eObject instanceof LEntity) {
+				return getEntityFQN(eObject);
 			} else if (eObject instanceof Report) {
 				return getReportFQN(eObject);
 			} else if (eObject instanceof Table) {
@@ -936,6 +1051,12 @@
 				return getDatamartFQN(eObject);
 			} else if (eObject instanceof SignalDefinition) {
 				return getSignalFQN(eObject);
+			} else if (eObject instanceof ActionToolbar) {
+				return getActionFQN(eObject);
+			} else if (eObject instanceof FunctionLibraryDialogGroup) {
+				return getDialogGroupFQN(eObject);
+			} else if (eObject instanceof FunctionLibraryDialogHook) {
+				return getDialogHookFQN(eObject);
 			}
 			throw new IllegalArgumentException(
 					IDSLMetadataService.ThrowableMessages.NAMING_LOGIC_NOT_REGISTERD + eObject);
@@ -975,6 +1096,8 @@
 				return getDataInterchangeClassName(eObject);
 			} else if (eObject instanceof SignalPackage) {
 				return getSignalClassName(eObject);
+			} else if (eObject instanceof ActionToolbar) {
+				return getActionToolbarClassName(eObject);
 			}
 			throw new IllegalArgumentException(
 					IDSLMetadataService.ThrowableMessages.NAMING_LOGIC_NOT_REGISTERD + eObject);
@@ -1091,6 +1214,22 @@
 			DialogPackage pkg = (DialogPackage) dialog.eContainer();
 			return pkg.getName() + "." + dialog.getName();
 		}
+		
+		/**
+		 * Gets the uiModel FQN.
+		 *
+		 * @param eObject
+		 *            the e object
+		 * @return the dialog FQN
+		 */
+		private static String getUiIdeFQN(EObject eObject) {
+			UiIDEView ui = (UiIDEView) eObject;
+			if (ui == null) {
+				return "";
+			}
+			UiModelPackage pkg = (UiModelPackage) ui.eContainer();
+			return pkg.getName() + "." + ui.getName();
+		}
 
 		private static String getDatainterchangeFQN(EObject eObject) {
 			DataInterchangePackage data = (DataInterchangePackage) eObject;
@@ -1149,6 +1288,54 @@
 		}
 		
 		/**
+		 * Gets the action FQN.
+		 *
+		 * @param eObject
+		 *            the e object
+		 * @return the action FQN
+		 */
+		private static String getActionFQN(EObject eObject) {
+			ActionToolbar actionToolbar = (ActionToolbar) eObject;
+			if (actionToolbar == null) {
+				return "";
+			}
+			ActionPackage pkg = (ActionPackage) actionToolbar.eContainer();
+			return pkg.getName() + "." + actionToolbar.getName();
+		}
+		
+		/**
+		 * Gets the functionLibraryInitializationGroup FQN.
+		 *
+		 * @param eObject
+		 *            the e object
+		 * @return the action FQN
+		 */
+		private static String getDialogGroupFQN(EObject eObject) {
+			FunctionLibraryDialogGroup functionLibraryDialogGroup = (FunctionLibraryDialogGroup) eObject;
+			if (functionLibraryDialogGroup == null) {
+				return "";
+			}
+			FunctionLibraryPackage pkg = (FunctionLibraryPackage) functionLibraryDialogGroup.eContainer();
+			return pkg.getName() + "." + functionLibraryDialogGroup.getName();
+		}
+		
+		/**
+		 * Gets the functionLibraryInitialization FQN.
+		 *
+		 * @param eObject
+		 *            the e object
+		 * @return the action FQN
+		 */
+		private static String getDialogHookFQN(EObject eObject) {
+			FunctionLibraryDialogHook functionLibraryDialogHook = (FunctionLibraryDialogHook) eObject;
+			if (functionLibraryDialogHook == null) {
+				return "";
+			}
+			FunctionLibraryPackage pkg = (FunctionLibraryPackage) functionLibraryDialogHook.eContainer().eContainer();
+			return pkg.getName() + "." + functionLibraryDialogHook.getName();
+		}
+		
+		/**
 		 * Gets the watcher FQN.
 		 *
 		 * @param eObject
@@ -1223,6 +1410,16 @@
 		}
 
 		/**
+		 * Gets the toolbar class name.
+		 *
+		 * @param eObject
+		 *            the e object
+		 * @return the toolbar class name
+		 */
+		private static String getActionToolbarClassName(EObject eObject) {
+			return getActionFQN(eObject) + "Toolbar";
+		}
+		/**
 		 * Gets the report class name.
 		 *
 		 * @param eObject
@@ -1302,18 +1499,7 @@
 			if (dialog == null) {
 				return "";
 			}
-			DialogPackage pkg = (DialogPackage) dialog.eContainer();
-			String ecviewId = null;
-			if (dialog.isAutowire()) {
-				ecviewId = pkg.getName() + ".autobinded." + dialog.getName();
-			} else if (dialog.getUiView() != null) {
-				UiView ui = dialog.getUiView();
-				UiModel model = (UiModel) ui.eContainer();
-				ecviewId = model.getPackageName() + "." + ui.getName();
-			} else {
-				ecviewId = pkg.getName() + "." + dialog.getName();
-			}
-			return ecviewId;
+			return AutowireUiFactory.getECViewPackage(dialog) +"."+ AutowireUiFactory.getECViewName(dialog);
 		}
 	}
 
diff --git a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java
index 600550d..332a082 100644
--- a/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java
+++ b/org.eclipse.osbp.dsl.metadata.service/src/org/eclipse/osbp/dsl/metadata/service/StandaloneGrammarsSetup.java
@@ -17,6 +17,8 @@
 import org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammarBundleSpaceSetup;
 import org.eclipse.osbp.dsl.dto.xtext.DtoGrammarBundleSpaceSetup;
 import org.eclipse.osbp.dsl.entity.xtext.EntityGrammarBundleSpaceSetup;
+import org.eclipse.osbp.ecview.dsl.UIGrammarBundleSpaceStandaloneSetup;
+import org.eclipse.osbp.ecview.uisemantics.UISemanticsGrammarBundleSpaceStandaloneSetup;
 import org.eclipse.osbp.xtext.action.ActionDSLBundleSpaceStandaloneSetup;
 import org.eclipse.osbp.xtext.authorizationdsl.AuthorizationDSLBundleSpaceStandaloneSetup;
 import org.eclipse.osbp.xtext.blip.BlipDSLBundleSpaceStandaloneSetup;
@@ -57,6 +59,8 @@
 		DatatypeGrammarBundleSpaceSetup.doSetup();
 		DatamartDSLBundleSpaceStandaloneSetup.doSetup();
 		DialogDSLBundleSpaceStandaloneSetup.doSetup();
+		UIGrammarBundleSpaceStandaloneSetup.doSetup();
+		UISemanticsGrammarBundleSpaceStandaloneSetup.doSetup();
 		DtoGrammarBundleSpaceSetup.doSetup();
 		EntityGrammarBundleSpaceSetup.doSetup();
 		EntityMockDSLBundleSpaceStandaloneSetup.doSetup();