Home » Modeling » EMF » EClassifier ordering in generated EPackages
|
Re: EClassifier ordering in generated EPackages [message #1085598 is a reply to message #1085306] |
Tue, 13 August 2013 05:34 |
Ed Merks Messages: 33141 Registered: July 2009 |
Senior Member |
|
|
Felix,
Comments below.
On 12/08/2013 8:42 PM, Felix Dorner wrote:
> Hi,
>
> I noticed that the EClassifiers in a generated jave EPackage are
> ordered differently than in the Ecore model from which the EPackage
> was generated, it seems that EEnums always come last?
Yes.
> Just out of curiosity, is there a "real" reason behind that, or is it
> just a matter of organization?
More of an organizational thing, e.g., from this in GenPackageImpl, and
because the GenPackage has separate containment features for GenClass,
GenDataType, and GenEnum.
public List<GenClassifier> getOrderedGenClassifiers()
{
List<GenClassifier> result = new
ArrayList<GenClassifier>(getOrderedGenClasses());
result.addAll(getGenEnums());
result.addAll(getGenDataTypes());
return result;
}
>
> If I read EClassifers through the EPackages Genpackage, will the
> ordering be consistent? (I noticed in the Genmodel editor, the Enums
> are on the bottom too...)
Via the getOrderedGenClassifiers, yes.
>
>
> Thanks,
> Felix
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
| | | |
Re: EClassifier ordering in generated EPackages [message #1086025 is a reply to message #1085982] |
Tue, 13 August 2013 17:54 |
Ed Merks Messages: 33141 Registered: July 2009 |
Senior Member |
|
|
Felix,
Comments below.
On 13/08/2013 6:23 PM, Felix Dorner wrote:
> Hi,
>>>
>>> I assume that the code generator uses something similar, and not
>>> getOrderedGenClasses()/getOrderedGenClassifiers()), this would
>>> perfectly explain my observations.
>> I'm not sure what else you're observing...
>
> If you create a package like this:
>
> MyPackage
> - BClass extends AClass
> - AClass
>
> And generate code for this, then MyPackage.eInstance.getEClassifiers()
> returns a list [B, A], whereas myGenPackage.getOrderedGenClassifiers()
> returns [A, B] because it reorders the EClasses so that subclasses
> come after their superclasses.
Yes, in PackageClass.javajet, the package contents are created like
this, so the order will be their order in GenPackage.getGenClasses(), in
is reconciled to be ordered like they are in the EPackage.getEClassifiers.
public void createPackageContents()
{
if (isCreated) return;
isCreated = true;
<%if (!genPackage.getGenClasses().isEmpty()) {%>
// Create classes and their features
<%for (Iterator<GenClass>
c=genPackage.getGenClasses().iterator(); c.hasNext();) { GenClass
genClass = c.next();%>
But GenPackage segregates GenClass, GenEnum, and GenDataType into
separate containment features and that will be noticed in the generated
package contents' order.
>
> Felix.
>
>
>
>
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Goto Forum:
Current Time: Thu Apr 25 22:11:17 GMT 2024
Powered by FUDForum. Page generated in 0.03139 seconds
|