org.eclipse.xtext.generator.ecore
Class EcoreGeneratorFragment

java.lang.Object
  extended by org.eclipse.xtext.generator.DefaultGeneratorFragment
      extended by org.eclipse.xtext.generator.AbstractGeneratorFragment
          extended by org.eclipse.xtext.generator.ecore.EcoreGeneratorFragment
All Implemented Interfaces:
IGeneratorFragment, NamingAware

public class EcoreGeneratorFragment
extends AbstractGeneratorFragment

A IGeneratorFragment that saves the generated Ecore models and creates appropriate EMF generators. Then it runs the EMF generator to create the EMF classes for the generated Ecore models.

Author:
Michael Clay, Sebastian Zarnekow, Sven Efftinge
This class is not intended to be subclassed by clients.
This class is not intended to be subclassed by clients.

Nested Class Summary
static class EcoreGeneratorFragment.ToPlatformResourceDeresolvingURIHandler
           
 
Constructor Summary
EcoreGeneratorFragment()
           
 
Method Summary
 void addSaveMapping(org.eclipse.emf.mwe.utils.Mapping mapping)
          Deprecated. Save mappings are no longer supported. The EcoreGeneratorFragment will use the uri that is given in the referenced genmodel or create a platform resource uri for new files.
protected  org.eclipse.emf.ecore.resource.Resource createResourceForEPackages(Grammar grammar, org.eclipse.xpand2.XpandExecutionContext ctx, java.util.List<org.eclipse.emf.ecore.EPackage> packs, org.eclipse.emf.ecore.resource.ResourceSet rs)
           
protected  void doGenerate(org.eclipse.emf.codegen.ecore.genmodel.GenModel genModel)
           
 void generate(Grammar grammar, org.eclipse.xpand2.XpandExecutionContext ctx)
          can be used to generate whatever necessary
 java.lang.String getBasePackage(Grammar g)
           
protected  org.eclipse.emf.common.util.URI getEcoreFileUri(Grammar grammar, org.eclipse.xpand2.XpandExecutionContext ctx)
           
 java.lang.String getEditDirectory(org.eclipse.xpand2.XpandExecutionContext ctx)
           
 java.lang.String getEditorDirectory(org.eclipse.xpand2.XpandExecutionContext ctx)
           
protected  java.lang.String getEditorPluginID(org.eclipse.xpand2.XpandExecutionContext ctx)
           
 java.lang.String getEditPluginID(org.eclipse.xpand2.XpandExecutionContext ctx)
           
 java.lang.String[] getExportedPackagesRt(Grammar grammar)
          return the exported packages for the runtime bundle
 java.lang.String getFileExtensions()
           
 java.lang.String getGeneratedEPackageName(Grammar g, org.eclipse.emf.ecore.EPackage pack)
           
protected  java.util.List<org.eclipse.emf.ecore.EPackage> getGeneratedEPackages(Grammar grammar)
           
protected  org.eclipse.emf.codegen.ecore.genmodel.GenModel getGenModel(org.eclipse.emf.ecore.resource.ResourceSet rs, Grammar grammar, org.eclipse.xpand2.XpandExecutionContext ctx, java.util.List<org.eclipse.emf.ecore.EPackage> packs)
           
protected  org.eclipse.emf.common.util.URI getGenModelUri(Grammar grammar, org.eclipse.xpand2.XpandExecutionContext ctx)
           
protected  java.util.List<org.eclipse.emf.codegen.ecore.genmodel.GenPackage> getGenPackagesForPackages(org.eclipse.emf.codegen.ecore.genmodel.GenModel existingGenModel, java.util.Collection<org.eclipse.emf.ecore.EPackage> packs)
           
protected  java.lang.String getJavaModelDirectory(org.eclipse.xpand2.XpandExecutionContext ctx)
           
protected  java.lang.String getModelName(Grammar grammar)
           
 java.lang.String getModelPluginID(org.eclipse.xpand2.XpandExecutionContext ctx)
           
protected  java.util.List<java.lang.Object> getParameters(Grammar grammar)
           
protected  java.util.Set<org.eclipse.emf.ecore.EPackage> getReferencedEPackages(java.util.List<org.eclipse.emf.ecore.EPackage> packs)
           
 java.lang.String getReferencedGenModels()
          Deprecated. 
 java.lang.String[] getRequiredBundlesRt(Grammar grammar)
          return the bundles this fragment requires at runtime
protected  org.eclipse.emf.codegen.ecore.genmodel.GenModel getSaveAndReconcileGenModel(org.eclipse.emf.ecore.resource.ResourceSet rs, Grammar grammar, org.eclipse.xpand2.XpandExecutionContext ctx, java.util.List<org.eclipse.emf.ecore.EPackage> packs)
           
 java.lang.String getXmiModelDirectory()
           
protected  java.lang.String getXmiModelDirectory(Grammar grammar, java.lang.String javaPath)
           
 boolean isGenerateEdit()
           
 boolean isGenerateEditor()
           
 boolean isSkipGenerate()
           
protected  java.util.List<org.eclipse.emf.codegen.ecore.genmodel.GenPackage> loadReferencedGenModels(org.eclipse.emf.ecore.resource.ResourceSet rs)
          Deprecated. 
protected  void registerReferencedGenModels()
          Deprecated. 
 void setBasePackage(java.lang.String basePackage)
          the java package the generated java classes shall be placed in.
 void setEditDirectory(java.lang.String editDirectory)
          Sets the target directory for the generated EMF-edit code.
 void setEditorDirectory(java.lang.String editorDirectory)
          Sets the target directory for the generated EMF-editor code.
 void setEditorPluginID(java.lang.String editorPluginId)
          Sets the plug-in ID of the generated EMF editor plug-in.
 void setEditPluginID(java.lang.String editPluginId)
          Sets the plug-in ID of the generated EMF edit plug-in.
 void setEmfRuntimeVersion(java.lang.String emfRuntimeVersion)
          Sets the target EMF runtime version to generate for to the specified value.
 void setFileExtensions(java.lang.String fileExtensions)
           
 void setGenerateEdit(boolean gen)
          If true, the EMF-edit code will be generated as well.
 void setGenerateEditor(boolean gen)
          If true, the EMF editor code will be generated as well.
 void setGenModel(java.lang.String genModel)
           
 void setGenModels(java.lang.String uris)
          Deprecated.  
 void setJavaModelDirectory(java.lang.String dir)
          Sets the target directory for the generated EMF-model code.
 void setModelPluginID(java.lang.String modelPluginId)
          Sets the ID of the generated EMF-model plug-in.
 void setReferencedGenModels(java.lang.String referencedGenModel)
          Deprecated. 
 void setSkipGenerate(boolean skipGenerate)
          Whether the Java class generation should be skipped.
 void setXmiModelDirectory(java.lang.String dir)
           
protected  java.lang.String toGenModelProjectPath(java.lang.String path)
          required to match the path format as expected from GenModelImpl.getProjectPath(java.lang.String)
 
Methods inherited from class org.eclipse.xtext.generator.AbstractGeneratorFragment
addToPluginXmlRt, addToPluginXmlTests, addToPluginXmlUi, addToStandaloneSetup, getExportedPackagesUi, getGuiceBindingsRt, getGuiceBindingsUi, getNaming, getRequiredBundlesUi, getTemplate, registerNaming
 
Methods inherited from class org.eclipse.xtext.generator.DefaultGeneratorFragment
checkConfiguration, getImportedPackagesRt, getImportedPackagesUi
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EcoreGeneratorFragment

public EcoreGeneratorFragment()
Method Detail

createResourceForEPackages

protected org.eclipse.emf.ecore.resource.Resource createResourceForEPackages(Grammar grammar,
                                                                             org.eclipse.xpand2.XpandExecutionContext ctx,
                                                                             java.util.List<org.eclipse.emf.ecore.EPackage> packs,
                                                                             org.eclipse.emf.ecore.resource.ResourceSet rs)

doGenerate

protected void doGenerate(org.eclipse.emf.codegen.ecore.genmodel.GenModel genModel)

generate

public void generate(Grammar grammar,
                     org.eclipse.xpand2.XpandExecutionContext ctx)
Description copied from interface: IGeneratorFragment
can be used to generate whatever necessary

Specified by:
generate in interface IGeneratorFragment
Overrides:
generate in class AbstractGeneratorFragment
ctx - - the execution context to use

loadReferencedGenModels

@Deprecated
protected java.util.List<org.eclipse.emf.codegen.ecore.genmodel.GenPackage> loadReferencedGenModels(org.eclipse.emf.ecore.resource.ResourceSet rs)
Deprecated. 

Use GenModelAccess#getGenPackage(EPackage)


getReferencedEPackages

protected java.util.Set<org.eclipse.emf.ecore.EPackage> getReferencedEPackages(java.util.List<org.eclipse.emf.ecore.EPackage> packs)
Since:
2.0

getGenPackagesForPackages

protected java.util.List<org.eclipse.emf.codegen.ecore.genmodel.GenPackage> getGenPackagesForPackages(org.eclipse.emf.codegen.ecore.genmodel.GenModel existingGenModel,
                                                                                                      java.util.Collection<org.eclipse.emf.ecore.EPackage> packs)
Since:
2.0

getBasePackage

public java.lang.String getBasePackage(Grammar g)

getEcoreFileUri

protected org.eclipse.emf.common.util.URI getEcoreFileUri(Grammar grammar,
                                                          org.eclipse.xpand2.XpandExecutionContext ctx)

getEditDirectory

public java.lang.String getEditDirectory(org.eclipse.xpand2.XpandExecutionContext ctx)

getEditorDirectory

public java.lang.String getEditorDirectory(org.eclipse.xpand2.XpandExecutionContext ctx)

getEditorPluginID

protected java.lang.String getEditorPluginID(org.eclipse.xpand2.XpandExecutionContext ctx)

getEditPluginID

public java.lang.String getEditPluginID(org.eclipse.xpand2.XpandExecutionContext ctx)

getExportedPackagesRt

public java.lang.String[] getExportedPackagesRt(Grammar grammar)
Description copied from interface: IGeneratorFragment
return the exported packages for the runtime bundle

Specified by:
getExportedPackagesRt in interface IGeneratorFragment
Overrides:
getExportedPackagesRt in class AbstractGeneratorFragment

getGeneratedEPackageName

public java.lang.String getGeneratedEPackageName(Grammar g,
                                                 org.eclipse.emf.ecore.EPackage pack)

getGeneratedEPackages

protected java.util.List<org.eclipse.emf.ecore.EPackage> getGeneratedEPackages(Grammar grammar)

getGenModel

protected org.eclipse.emf.codegen.ecore.genmodel.GenModel getGenModel(org.eclipse.emf.ecore.resource.ResourceSet rs,
                                                                      Grammar grammar,
                                                                      org.eclipse.xpand2.XpandExecutionContext ctx,
                                                                      java.util.List<org.eclipse.emf.ecore.EPackage> packs)

getGenModelUri

protected org.eclipse.emf.common.util.URI getGenModelUri(Grammar grammar,
                                                         org.eclipse.xpand2.XpandExecutionContext ctx)

getJavaModelDirectory

protected java.lang.String getJavaModelDirectory(org.eclipse.xpand2.XpandExecutionContext ctx)

getModelName

protected java.lang.String getModelName(Grammar grammar)

getModelPluginID

public java.lang.String getModelPluginID(org.eclipse.xpand2.XpandExecutionContext ctx)

getParameters

protected java.util.List<java.lang.Object> getParameters(Grammar grammar)
Overrides:
getParameters in class AbstractGeneratorFragment

getReferencedGenModels

@Deprecated
public java.lang.String getReferencedGenModels()
Deprecated. 


getRequiredBundlesRt

public java.lang.String[] getRequiredBundlesRt(Grammar grammar)
Description copied from interface: IGeneratorFragment
return the bundles this fragment requires at runtime

Specified by:
getRequiredBundlesRt in interface IGeneratorFragment
Overrides:
getRequiredBundlesRt in class AbstractGeneratorFragment

getSaveAndReconcileGenModel

protected org.eclipse.emf.codegen.ecore.genmodel.GenModel getSaveAndReconcileGenModel(org.eclipse.emf.ecore.resource.ResourceSet rs,
                                                                                      Grammar grammar,
                                                                                      org.eclipse.xpand2.XpandExecutionContext ctx,
                                                                                      java.util.List<org.eclipse.emf.ecore.EPackage> packs)
                                                                               throws org.eclipse.emf.mwe.core.ConfigurationException
Throws:
org.eclipse.emf.mwe.core.ConfigurationException
Since:
2.0

getXmiModelDirectory

public java.lang.String getXmiModelDirectory()

getXmiModelDirectory

protected java.lang.String getXmiModelDirectory(Grammar grammar,
                                                java.lang.String javaPath)

isGenerateEdit

public boolean isGenerateEdit()

isGenerateEditor

public boolean isGenerateEditor()

isSkipGenerate

public boolean isSkipGenerate()

setGenModels

@Deprecated
public void setGenModels(java.lang.String uris)
Deprecated. 

Sets the URIs for the generated EMF generator models (aka genmodels). use StandaloneSetup.addRegisterGenModelFile(String)

Parameters:
uris -

setBasePackage

public void setBasePackage(java.lang.String basePackage)
the java package the generated java classes shall be placed in.


setEmfRuntimeVersion

public void setEmfRuntimeVersion(java.lang.String emfRuntimeVersion)
Sets the target EMF runtime version to generate for to the specified value.

Parameters:
emfRuntimeVersion - the EMF runtime version.
Since:
2.3

setEditDirectory

public void setEditDirectory(java.lang.String editDirectory)
Sets the target directory for the generated EMF-edit code. Only needed if you want to generate an EMF edit plug-in.

Parameters:
editDirectory -

setEditorDirectory

public void setEditorDirectory(java.lang.String editorDirectory)
Sets the target directory for the generated EMF-editor code. Only needed if you want to generate an EMF editor plug_in.

Parameters:
editorDirectory -

setEditorPluginID

public void setEditorPluginID(java.lang.String editorPluginId)
Sets the plug-in ID of the generated EMF editor plug-in. Only needed if you want to generate an EMF editor plug_in.

Parameters:
editorPluginId -

setEditPluginID

public void setEditPluginID(java.lang.String editPluginId)
Sets the plug-in ID of the generated EMF edit plug-in. Only needed if you want to generate an EMF editor plug_in.

Parameters:
editPluginId -

setGenerateEdit

public void setGenerateEdit(boolean gen)
If true, the EMF-edit code will be generated as well.

Parameters:
gen -
See Also:
setEditDirectory(String), setEditPluginID(String)

setGenerateEditor

public void setGenerateEditor(boolean gen)
If true, the EMF editor code will be generated as well.

Parameters:
gen -
See Also:
setEditorDirectory(String), setEditorPluginID(String)

setGenModel

public void setGenModel(java.lang.String genModel)

setJavaModelDirectory

public void setJavaModelDirectory(java.lang.String dir)
Sets the target directory for the generated EMF-model code. Only needed if you want to generate the EMF code into a separate plug-in.

Parameters:
dir -

setModelPluginID

public void setModelPluginID(java.lang.String modelPluginId)
Sets the ID of the generated EMF-model plug-in. Only needed if you want to generate the EMF code into a separate plug-in.

Parameters:
modelPluginId -

setReferencedGenModels

@Deprecated
public void setReferencedGenModels(java.lang.String referencedGenModel)
Deprecated. 

use StandaloneSetup.addRegisterGenModelFile(String)


registerReferencedGenModels

@Deprecated
protected void registerReferencedGenModels()
Deprecated. 

Since:
2.0

setSkipGenerate

public void setSkipGenerate(boolean skipGenerate)
Whether the Java class generation should be skipped. If true only the ecore file is generated.


setXmiModelDirectory

public void setXmiModelDirectory(java.lang.String dir)

toGenModelProjectPath

protected java.lang.String toGenModelProjectPath(java.lang.String path)
required to match the path format as expected from GenModelImpl.getProjectPath(java.lang.String)


addSaveMapping

@Deprecated
public void addSaveMapping(org.eclipse.emf.mwe.utils.Mapping mapping)
Deprecated. Save mappings are no longer supported. The EcoreGeneratorFragment will use the uri that is given in the referenced genmodel or create a platform resource uri for new files.


setFileExtensions

public void setFileExtensions(java.lang.String fileExtensions)
Parameters:
fileExtensions - a comma-separated list of fileExtensions for the generated packages.

getFileExtensions

public java.lang.String getFileExtensions()