diff options
author | Nathalie Lepine | 2013-08-01 16:28:12 +0000 |
---|---|---|
committer | Nathalie Lepine | 2013-08-02 08:42:08 +0000 |
commit | 2524b8f10552abc20d0b619ac93a7f75ba4da39d (patch) | |
tree | 26fd92025060ff572628f7f79ba12c9f5f2439fd /plugins | |
parent | 2d9643e00f109d6d6f1a025bd30333e399dd01d0 (diff) | |
download | org.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')
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}) /] |