catch up with development
Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.dsl.metadata.service/.classpath b/org.eclipse.osbp.dsl.metadata.service/.classpath
index 43b9862..cf36b56 100644
--- a/org.eclipse.osbp.dsl.metadata.service/.classpath
+++ b/org.eclipse.osbp.dsl.metadata.service/.classpath
@@ -2,6 +2,6 @@
<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="src" path="src/"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
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 a7dcac9..171b5a6 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
@@ -44,7 +44,11 @@
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.osbp.dsl.common.datatypes.IDto;
import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LAutoInheritDto;
import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
import org.eclipse.osbp.dsl.semantic.entity.LEntity;
import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProvider;
import org.eclipse.osbp.ecview.dsl.extensions.SuperTypeCollector;
@@ -144,9 +148,11 @@
import org.eclipse.persistence.internal.jpa.deployment.SEPersistenceUnitInfo;
import org.eclipse.persistence.jpa.Archive;
import org.eclipse.persistence.jpa.PersistenceProvider;
+import org.eclipse.xtext.EcoreUtil2;
import org.eclipse.xtext.common.types.JvmDeclaredType;
import org.eclipse.xtext.common.types.JvmTypeReference;
import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.IReferenceDescription;
import org.eclipse.xtext.util.Pair;
import org.eclipse.xtext.util.Tuples;
import org.osgi.framework.Bundle;
@@ -502,14 +508,13 @@
// let the empty value be the one with the closest distance, so it will not be used if there is something better!
int distanceFromKey = 0;
+ int distanceFromPrevious = 0;
if ( value != null && value.length() > 0 ) {
distanceFromKey = StringUtils.getLevenshteinDistance(value, element);
- }
-
- String prevValue = properties.getProperty(element);
- int distanceFromPrevious = 0;
- if (prevValue != null && value.length() > 0 ) {
- distanceFromPrevious = StringUtils.getLevenshteinDistance(prevValue, element);
+ String prevValue = properties.getProperty(element);
+ if (prevValue != null && value.length() > 0 ) {
+ distanceFromPrevious = StringUtils.getLevenshteinDistance(prevValue, element);
+ }
}
if (distanceFromKey > 1 && distanceFromKey > distanceFromPrevious) {
@@ -1001,17 +1006,34 @@
return osbee;
}
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.ui.api.metadata.IDSLMetadataService#getEntityClassLoader(java.lang.String)
+ */
+ @Override
+ public ClassLoader getEntityClassLoader(String className) {
+ return entityClassLoaders.get(className.substring(0, className.lastIndexOf('.')));
+ }
/* (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();
+ public ClassLoader getClassLoader(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(fqn);
+ } catch (ClassNotFoundException e) {
+ // nothing to do
+ }
+ if (clz != null) {
+ return classLoader;
+ }
}
}
+ log.error("classLoader for class {} could not be found for extension {}", fqn, extension);
return null;
}
@@ -1277,6 +1299,29 @@
});
return !result.isEmpty();
}
+
+ @Override
+ public Set<String> getDTOsForStateClass(String stateClassName) {
+ Set<String> result = new HashSet<>();
+ Iterable<IEObjectDescription> allDescs = getAllDescriptions(OSBPDtoPackage.Literals.LDTO_ATTRIBUTE);
+ Iterator<IEObjectDescription> iter = allDescs.iterator();
+ while (iter.hasNext()) {
+ IEObjectDescription desc = iter.next();
+ EObject attr = desc.getEObjectOrProxy();
+ if(attr instanceof LDtoAttribute) {
+ if(attr.eIsProxy()) {
+ attr = metadataBuilderService.resolve(attr);
+ }
+ String pkgName = ((LTypedPackage)attr.eContainer().eContainer()).getName();
+ if(stateClassName.equals(pkgName+"."+((LDtoAttribute) attr).getType().getName())) {
+ if(attr.eContainer() instanceof LAutoInheritDto) {
+ result.add(pkgName+"."+((LAutoInheritDto)attr.eContainer()).getName());
+ }
+ }
+ }
+ }
+ return result;
+ }
}
/**