Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathalie Lepine2013-08-01 16:28:12 +0000
committerNathalie Lepine2013-08-02 08:42:08 +0000
commit2524b8f10552abc20d0b619ac93a7f75ba4da39d (patch)
tree26fd92025060ff572628f7f79ba12c9f5f2439fd /plugins
parent2d9643e00f109d6d6f1a025bd30333e399dd01d0 (diff)
downloadorg.eclipse.eef-2524b8f10552abc20d0b619ac93a7f75ba4da39d.tar.gz
org.eclipse.eef-2524b8f10552abc20d0b619ac93a7f75ba4da39d.tar.xz
org.eclipse.eef-2524b8f10552abc20d0b619ac93a7f75ba4da39d.zip
fix feature with XMLType
fix reload GenModel with reconcile
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/launcher/EEFLauncher.java32
-rw-r--r--plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/services/EcoreService.java6
-rw-r--r--plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/services/emfCodeGen.mtl15
3 files changed, 50 insertions, 3 deletions
diff --git a/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/launcher/EEFLauncher.java b/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/launcher/EEFLauncher.java
index 56e0b5862..96f4db034 100644
--- a/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/launcher/EEFLauncher.java
+++ b/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/launcher/EEFLauncher.java
@@ -21,12 +21,18 @@ import org.eclipse.acceleo.engine.event.IAcceleoTextGenerationListener;
import org.eclipse.acceleo.engine.generation.strategy.IAcceleoGenerationStrategy;
import org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.codegen.ecore.genmodel.GenBase;
+import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
import org.eclipse.emf.common.EMFPlugin;
import org.eclipse.emf.common.util.BasicMonitor;
import org.eclipse.emf.common.util.Monitor;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.eef.EEFGen.EEFGenModel;
+import org.eclipse.emf.eef.EEFGen.GenEditionContext;
+import org.eclipse.emf.eef.components.PropertiesEditionContext;
import org.osgi.framework.Bundle;
/**
@@ -226,7 +232,31 @@ public class EEFLauncher extends AbstractAcceleoGenerator {
super.doGenerate(monitor);
}
- /**
+
+
+ @Override
+ public EObject getModel() {
+ EObject eObject = super.getModel();
+ if (eObject instanceof EEFGenModel) {
+ for (GenEditionContext context : ((EEFGenModel) eObject).getEditionContexts()) {
+
+ PropertiesEditionContext propertiesEditionContext = context.getPropertiesEditionContext();
+ if (propertiesEditionContext != null) {
+ ResourceSet resourceSet = propertiesEditionContext.getModel().eResource().getResourceSet();
+ Resource resource = resourceSet.getResource(URI.createPlatformPluginURI("org.eclipse.emf.ecore/model/XMLType.genmodel", true), true);
+ if (!resource.getContents().isEmpty() && resource.getContents().get(0) instanceof GenModel) {
+ ((GenModel) resource.getContents().get(0)).reconcile();
+ };
+
+ propertiesEditionContext.getModel().reconcile();
+ }
+ }
+ }
+ // load
+ return eObject;
+ }
+
+ /**
* If this generator needs to listen to text generation events, listeners can be returned from here.
*
* @return List of listeners that are to be notified when text is generated through this launch.
diff --git a/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/services/EcoreService.java b/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/services/EcoreService.java
index 3f67eaf55..255437cfe 100644
--- a/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/services/EcoreService.java
+++ b/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/services/EcoreService.java
@@ -11,6 +11,7 @@
package org.eclipse.emf.eef.codegen.services;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
+import org.eclipse.emf.codegen.util.CodeGenUtil;
import org.eclipse.emf.codegen.util.ImportManager;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
@@ -45,4 +46,9 @@ public class EcoreService {
}
throw new RuntimeException("Unable to retrieve Ecore gen model from " + eo);
}
+
+ public String getFormattedName(String name) {
+ String string = CodeGenUtil.upperName(name);
+ return CodeGenUtil.format(string, '_', null, false, false);
+ }
}
diff --git a/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/services/emfCodeGen.mtl b/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/services/emfCodeGen.mtl
index aff9cba86..a43cc2834 100644
--- a/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/services/emfCodeGen.mtl
+++ b/plugins/org.eclipse.emf.eef.codegen/src/org/eclipse/emf/eef/codegen/services/emfCodeGen.mtl
@@ -28,7 +28,11 @@
[/template]
[template public qualifiedMetamodelPackage(ePackage : EPackage)]
+[if (ePackage.nsURI='http://www.eclipse.org/emf/2003/XMLType')]
+org.eclipse.emf.ecore.xml.type.XMLTypePackage
+[else]
[ePackage.getGenPackage().getQualifiedPackageInterfaceName()/]
+[/if]
[/template]
[template public completePackage(ePackage : EPackage)]
@@ -60,8 +64,12 @@ endif/]
[eClassifier.eInverse(GenClassifier).getQualifiedClassifierAccessor()/]
[/template]
-[template public metamodelGetter(eDataType : EDataType)]
-[eDataType.getGenDataType().getQualifiedClassifierAccessor()/]
+[template public metamodelGetter(eDataType : EDataType) post (trim())]
+[if (self.ePackage.nsURI='http://www.eclipse.org/emf/2003/XMLType')]
+XMLTypePackage.Literals.[eDataType.getFormattedName()/]
+[else]
+[eDataType.getGenDataType().getQualifiedClassifierAccessor()/]
+[/if]
[/template]
[template public metamodelGetter(eClass : EClass)]
@@ -125,3 +133,6 @@ if self.ePackage.nsURI = 'http://www.eclipse.org/emf/2002/Ecore'
then self.ePackage.getGenPackage().genDataTypes -> select(ecoreDataType.name = eDataType.name) -> first()
else self.eInverse(GenDataType) -> first()
endif/]
+
+[query public getFormattedName(e : EDataType) : String
+ = invoke('org.eclipse.emf.eef.codegen.services.EcoreService', 'getFormattedName(java.lang.String)', Sequence{e.name}) /]

Back to the top