Return-Path: Delivered-To: apmail-ws-tuscany-dev-archive@locus.apache.org Received: (qmail 48726 invoked from network); 10 Jan 2008 15:55:39 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 10 Jan 2008 15:55:39 -0000 Received: (qmail 71332 invoked by uid 500); 10 Jan 2008 15:55:21 -0000 Delivered-To: apmail-ws-tuscany-dev-archive@ws.apache.org Received: (qmail 71310 invoked by uid 500); 10 Jan 2008 15:55:21 -0000 Mailing-List: contact tuscany-dev-help@ws.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: tuscany-dev@ws.apache.org Delivered-To: mailing list tuscany-dev@ws.apache.org Received: (qmail 71297 invoked by uid 99); 10 Jan 2008 15:55:21 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 10 Jan 2008 07:55:21 -0800 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of kelvingoodson@gmail.com designates 72.14.202.178 as permitted sender) Received: from [72.14.202.178] (HELO ro-out-1112.google.com) (72.14.202.178) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 10 Jan 2008 15:54:50 +0000 Received: by ro-out-1112.google.com with SMTP id a14so809541rof.8 for ; Thu, 10 Jan 2008 07:54:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:in-reply-to:mime-version:content-type:references:x-google-sender-auth; bh=ECbESz6P7aXi3Os8Ps/h9C1lGre4zJOFiT2p54Z8Ku4=; b=Ley+3Cv2/feOoXIBicWw2NgcLuVrgkHNC4ZKHs8jU/Zufj1Ejh0W7QTyoeMUV1BkyKNoHfOR1jWbZETvqaC2XJm/2Qyl5JKeANYrbmaLm22i2D7wTGLoui4MxRVbcRjHH75vByaxHhbdC+H1Pqlqt5khUH3Bwd72bZlHify84p0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:in-reply-to:mime-version:content-type:references:x-google-sender-auth; b=Z4bRZi1kx+UmMMbOD0Kn3rTcnK2lXOAbEnbM51f1pBxhNgoOKwrzZ7hfOXZt47pBbEAPNUCoi5qkYIRG5nrfoZpzrUusg6z0mM4yPOvlFqkEXWoURCJ8aTdrUUab3iJ/5qwYwpkJDhZBj+hrVM8dGZh0L2QVi6Uw6pnrssGgUsk= Received: by 10.115.77.1 with SMTP id e1mr2420817wal.103.1199980479108; Thu, 10 Jan 2008 07:54:39 -0800 (PST) Received: by 10.35.31.8 with HTTP; Thu, 10 Jan 2008 07:54:38 -0800 (PST) Message-ID: <9deac9fd0801100754m68eec949s16e2157935cb3355@mail.gmail.com> Date: Thu, 10 Jan 2008 15:54:38 +0000 From: "kelvin goodson" Sender: kelvingoodson@gmail.com To: tuscany-dev@ws.apache.org Subject: Re: [SDO] questions about support for Enumeration facet In-Reply-To: <62dd6b650801100250v6cad3a5fmfd65d3753f82896e@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_26026_2628090.1199980478951" References: <62dd6b650712110159g359fcafaj47022d3b7f9b99d5@mail.gmail.com> <9deac9fd0712110826k439c8713xd678ab765b30468@mail.gmail.com> <9deac9fd0712120209y3a293742qa35db479cfe59fef@mail.gmail.com> <9deac9fd0712120210q5e5e5fb0x9ec47e7b802a18b8@mail.gmail.com> <62dd6b650712140251j465404d3ua6e3ed780134f67e@mail.gmail.com> <9deac9fd0712170240h65847298mcea78e3b8ef1cd70@mail.gmail.com> <62dd6b650712210242g77438d1ald8ba791658117e8@mail.gmail.com> <9deac9fd0712210301q60d3b0f8ue5518035ed777805@mail.gmail.com> <62dd6b650801010241h257f8d9ax17056eed4d915cf6@mail.gmail.com> <62dd6b650801100250v6cad3a5fmfd65d3753f82896e@mail.gmail.com> X-Google-Sender-Auth: da1abb5fb83b1fde X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_26026_2628090.1199980478951 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Amita, thanks for the patches. I've had a good look, but still haven't made up my mind which way to go. First off is I think that you should not have different test cases in your patches. I believe the test case should always test for 3 enumerations, and the patch using the commons.sdo#Strings type approach should be shown to fail. This is my preferred approach if it can be made to work. I was digging down to see if this is an EMF bug, but have not proved it yet. I was hoping to show that EcoreUtil's encoding for Strings to String is not always the inverse of it's own String to Strings mapping, but we don't seem to use EcoreUtil for both directions of the mapping. I may adopt the alternative patsh as a tactical approach, and mark the code to keep a handle on the issue, but I'd like to investigate a bit further before I make that choice. Kelvin. On 10/01/2008, Amita Vadhavkar wrote: > > Please see the 2 patches attached to JIRA-1360 and give comments. > > Regards, > Amita > > On Jan 1, 2008 4:11 PM, Amita Vadhavkar wrote: > > > Hi Kelvin, > > Yes , below is the change I tried to see to make a Property of type > > Strings, in DataObjectUtil - > > > > protected static Property getGlobalProperty(HelperContext hc, String > > uri, String name) > > { > > Property property; > > if (ExtendedMetaData.ANNOTATION_URI.equals(uri)) { > > if ("minExclusive".equals(name) ||... > > "enumeration".equals(name) || > > "pattern".equals(name)) > > { > > if("enumeration".equals(name) || "pattern".equals(name)) { > > property = SDOUtil.createOpenContentProperty(hc, uri, > name, > > ((ModelFactoryImpl)ModelFactory.INSTANCE).getStrings()); > > } else { > > property = SDOUtil.createOpenContentProperty(hc, uri, > name, > > ((ModelFactoryImpl)ModelFactory.INSTANCE).getString()); > > } > > } > > else > > { > > property = null; > > } > > } > > else > > { > > property = hc.getTypeHelper().getOpenContentProperty(uri, name); > > if (property == null) > > { > > property = SDOUtil.createOpenContentProperty(hc, uri, name, > > ((ModelFactoryImpl)ModelFactory.INSTANCE).getString()); > > } > > } > > return property; > > } > > > > Regards, > > Amita > > > > > > On Dec 21, 2007 4:31 PM, kelvin goodson > > wrote: > > > > > Amita, > > > I'm a little unclear what you have changed. Have you altered the > > > enumeration facet Property type to commonj.sdo.{Strings}? > > > Regards, Kelvin. > > > > > > On 21/12/2007, Amita Vadhavkar wrote: > > > > > > > > This looks quite easy with one small difference in the behavior - > > > > > > > > For enum like below - > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 1) below returns size as 3 i.e. conuts for the null value > > > > if(metaObject instanceof EDataTypeImpl){ > > > > System.out.println("metaObject instance of EDataTypeImpl"); > > > > if( property.getName().equals("enumeration")) { > > > > System.out.println > > > > > > > > (((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet()); > > > > List enumVals = > > > > > > > > ((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet(); > > > > System.out.println("enum size from > > > **EMF**"+enumVals.size()); > > > > } > > > > } > > > > > > > > 2) whereas below returns size as 2, i.e. does not count for null > > > > result = SDOUtil.createFromString (getInstanceProperty(type, > > > > "enumeration").getType(), type.get(getInstanceProperty(type, > > > > "enumeration")).toString()); > > > > System.out.println("Frank:enumeration"+result+", result > > > > type:"+result.getClass().getName()+", size-"+ ((java.util.ArrayList > > > > )result).size()); > > > > > > > > in 2) the EMF call is made to EcoreUtil.createFromString > > > > ((EDataType)dataType, > > > > literal); > > > > and assumed that DataObjectUtil.getGlobalProperty() checks for enum > > > and > > > > does > > > > SDOUtil.createOpenContentProperty() for Strings. > > > > > > > > Suggestions? > > > > > > > > Regards, > > > > Amita > > > > > > > > On Dec 17, 2007 4:10 PM, kelvin goodson > > > wrote: > > > > > > > > > Amita, > > > > > > > > > > I think Frank's note in this thread is key to the solution, in > > > that > > > > the > > > > > line ... > > > > > return SDOUtil.createFromString(property.getType(), value); > > > > > will create a List if the type of the Property is set to " > > > > > commonj.sdo{Strings}" > > > > > > > > > > > > > > > Regards, Kelvin. > > > > > > > > > > > > > > > On 14/12/2007, Amita Vadhavkar wrote: > > > > > > > > > > > > Tried to do little more analysis to see what is the way to reach > > > > > > ExtendedMetadata from DataObjectUtil. Please see the findings > > > below. > > > > > > > > > > > > DataObjectUtil.getMetaObjectInstanceProperty (EModelElement, > > > Property) > > > > > can > > > > > > be > > > > > > reached from > > > > > > AttributeImpl(EAttributeImpl), ClassImpl(EClassImpl), > > > > > > DataTypeImpl(EDataTypeImpl), ReferenceImpl(EReferenceImpl). > > > > > > > > > > > > Below is the inheritance for EAttributeImpl - > > > > > > java.lang.Object > > > > > > extended by > org.eclipse.emf.common.notify.impl.BasicNotifierImpl > > > > > > extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl > > > > > > extended by org.eclipse.emf.ecore.impl.EObjectImpl > > > > > > extended by > > > org.eclipse.emf.ecore.impl.FlatEObjectImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EModelElementImpl** > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.ENamedElementImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.ETypedElementImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EStructuralFeatureImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EAttributeImpl > > > > > > > > > > > > Below is the inheritance for EClassImpl - > > > > > > java.lang.Object > > > > > > extended by > org.eclipse.emf.common.notify.impl.BasicNotifierImpl > > > > > > extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl > > > > > > extended by org.eclipse.emf.ecore.impl.EObjectImpl > > > > > > extended by > > > org.eclipse.emf.ecore.impl.FlatEObjectImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EModelElementImpl** > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.ENamedElementImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EClassifierImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EClassImpl > > > > > > > > > > > > Below is the inheritance for EDataTypeImpl - > > > > > > java.lang.Object > > > > > > extended by > org.eclipse.emf.common.notify.impl.BasicNotifierImpl > > > > > > extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl > > > > > > extended by org.eclipse.emf.ecore.impl.EObjectImpl > > > > > > extended by > > > org.eclipse.emf.ecore.impl.FlatEObjectImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EModelElementImpl** > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.ENamedElementImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EClassifierImpl**** > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EDataTypeImpl**** > > > > > > > > > > > > Below is the inheritance for EReferenceImpl - > > > > > > java.lang.Object > > > > > > extended by > org.eclipse.emf.common.notify.impl.BasicNotifierImpl > > > > > > extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl > > > > > > extended by org.eclipse.emf.ecore.impl.EObjectImpl > > > > > > extended by > > > org.eclipse.emf.ecore.impl.FlatEObjectImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EModelElementImpl** > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.ENamedElementImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.ETypedElementImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EStructuralFeatureImpl > > > > > > extended by > > > > > > org.eclipse.emf.ecore.impl.EReferenceImpl > > > > > > > > > > > > In this heirarchy, DataObjectUtil.getMetaObjectInstanceProperty > () > > > > > sticks > > > > > > to > > > > > > EModelElementImpl as is it common in all these 4 cases. > > > > > > But in case of EDataTypeImpl there is further hierarchy which is > > > > useful > > > > > > when > > > > > > it comes to facets - which is EClassifierImpl. > > > > > > EClassifierImpl has getExtendedMetaData() returning > > > > > > BasicExtendedMetaData.EClassifierExtendedMetaData. This one has > > > all > > > > the > > > > > > methods > > > > > > for getting different facet informations like - java.util.List< > > > > > > java.lang.String> getEnumerationFacet() , int > > > getMinLengthFacet() > > > > > > and so on. > > > > > > > > > > > > So a way out to get the enum facet value as a list can be - in > > > > > > DataObjectUtil.getMetaObjectInstanceProperty () - do as below - > > > > > > > > > > > > if(metaObject instanceof EDataTypeImpl/EClassifierImpl){ > > > > > > if(property.getName().equals("enumeration")) { > > > > > > List enumVals = > > > > > > > > > > > > > > ((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet(); > > > > > > return enumVals; > > > > > > } > > > > > > } > > > > > > > > > > > > Same can be the way to get value of "getPatternFacet() as this > is > > > the > > > > > only > > > > > > other facet which returns a list" (ref > > > > > > emfBasicExtendedMetaData.EClassifierExtendedMetaData). > > > > > > > > > > > > For all other facets as they return a single value, the current > > > SDO > > > > code > > > > > > may > > > > > > be enough {OR for all facets on EDataTypeImpl, we can > > > > > > reach ((EDataTypeImpl)metaObject).getExtendedMetaData() and call > > > > > > patricular > > > > > > getFacet methods, not sure if this is required - suggestions?} > > > > > > > > > > > > DataObjectUtil.getMetaObjectInstanceProperties() can remain > > > unchanged. > > > > > > > > > > > > With the above change in > > > DataObjectUtil.getMetaObjectInstanceProperty > > > > (), > > > > > > we > > > > > > can add a new method in SDOUtil - > > > > > > > > > > > > public static List getEnumerationFacet(Type type) { > > > > > > Property enumProperty = getInstanceProperty(type, > > > "enumeration"); > > > > > > return DataObjectUtil.getMetaObjectInstanceProperty(type, > > > > > > enumProperty); > > > > > > } > > > > > > > > > > > > This way for a DataTypeImpl enum facet values will come out as a > > > List. > > > > > > Please give suggestions. > > > > > > I can open another JIRA and fix patternFacet too in same way. > > > > > > > > > > > > Regards, > > > > > > Amita > > > > > > > > > > > > On Dec 12, 2007 3:40 PM, kelvin goodson < > kelvin@thegoodsons.org.uk> > > > > > wrote: > > > > > > > > > > > > > By the way, until the wiki has been used to update the > websitre > > > then > > > > > the > > > > > > > FAQ > > > > > > > can be seen at > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > http://cwiki.apache.org/confluence/display/TUSCANY/Tuscany+SDO+Java+-+FAQ > > > > > > > > > > > > > > > > > Kelvin. > > > > > > > > > > > > > > On 12/12/2007, kelvin goodson > wrote: > > > > > > > > > > > > > > > > > > > It occurred to me that there's a bit of a knack to debugging > > > into > > > > > EMF > > > > > > > > code, so I just wrote an FAQ to describe how to do > > > > this. Comments > > > > > > are > > > > > > > > welcome on its clarity or accuracy. > > > > > > > > > > > > > > > > Regards, Kelvin. > > > > > > > > > > > > > > > > On 11/12/2007, kelvin goodson < kelvin@thegoodsons.org.uk> > > > wrote: > > > > > > > > > > > > > > > > > > Amita, > > > > > > > > > > > > > > > > > > It feels like option 1 is the easy way to do things, and > > > option > > > > 2 > > > > > is > > > > > > > the > > > > > > > > > right way given the introduction of instance properties on > > > > > metadata > > > > > > > provided > > > > > > > > > for this purpose (but doesn't currently work). > > > > > > > > > > > > > > > > > > Here's the results of my digging around. Let's start with > > > what > > > > I > > > > > > > found > > > > > > > > > last since it might prove to be the answer. It seems > highly > > > > > > > > likely > > > > > > to > > > > > > > be > > > > > > > > > so, but there is more thinking to be done. So after > quite > > > a > > > > bit > > > > > of > > > > > > > digging > > > > > > > > > to see how things are handled in EMF I saw the TODO in > > > > > > DataObjectUtil > > > > > > > .... > > > > > > > > > > > > > > > > > > public static Object > > > > getMetaObjectInstanceProperty(EModelElement > > > > > > > > > metaObject, Property property) > > > > > > > > > { > > > > > > > > > String value = EcoreUtil.getAnnotation (metaObject, > > > > > > > > > property.getContainingType().getURI(), property.getName()); > > > > > > > > > //TODO if (property.isMany()) ... // create list of > > > values > > > > > from > > > > > > > from > > > > > > > > > string > > > > > > > > > return SDOUtil.createFromString(property.getType(), > > > value); > > > > > > > > > } > > > > > > > > > > > > > > > > > > So there's a couple of things I haven't got my head round > > > yet > > > > that > > > > > > > > > perhaps you could take a look at since I must divert my > > > > attention > > > > > > for > > > > > > > a > > > > > > > > > while. The first is that the instance Property for the > > > Type's > > > > > > > enumeration > > > > > > > > > is isMany = false. So even if we handled the TODO we > > > wouldn't > > > > get > > > > > > the > > > > > > > > > desired result. The second is that we must ensure a > generic > > > > > string > > > > > > > > > tokenizer here, but I'm not yet confident that the > > > tokenizing > > > > > that > > > > > > we > > > > > > > want > > > > > > > > > to satisfy the current issue would be the same for all > > > > Properties. > > > > > > > What I > > > > > > > > > mean by this is that for the example you give, it starts > > > with > > > > the > > > > > > > separator > > > > > > > > > "space" indicating that the first literal that should be > > > > returned > > > > > > from > > > > > > > > > tokenizing is the empty string. Would this be true for > all > > > > > Property > > > > > > > values, > > > > > > > > > or is it the case that sometimes we would consider > trimming > > > > > leading > > > > > > > white > > > > > > > > > space? > > > > > > > > > > > > > > > > > > I had been going down a track of investigating storage and > > > > > retrieval > > > > > > > of > > > > > > > > > the enumeration facets inside EMF, which may yet prove to > > > be > > > > the > > > > > > way > > > > > > > to fix > > > > > > > > > this issue. The facets seem to be stored in two > ways. Once > > > as > > > > an > > > > > > > > > annotation on the metadata artifact directly, in > > > concatenated > > > > > string > > > > > > > form, > > > > > > > > > and once as a vector on the extended metadata associated > > > with > > > > the > > > > > > > eDataType > > > > > > > > > (See setEnumerationFacet(EDataType,List) of > > > > BasicExtendedMetaData. > > > > > > > The bulk > > > > > > > > > of code in setEnumerationFacet is devoted to concatenating > > > the > > > > > > string > > > > > > > > > literals and hanging the annotation on the eDataType > > > > (Type), but > > > > > > the > > > > > > > last > > > > > > > > > line then squirrels the original input vector of > > > enumerations > > > > away > > > > > > on > > > > > > > the > > > > > > > > > extended metadata. > > > > > > > > > > > > > > > > > > Now there is a basicGetEnumerationFacet method on the > nested > > > > class > > > > > > > > > EDataTypeExtendedMetaDataImpl, which is contained in > > > > > > > BasicExtendedMetaData > > > > > > > > > which has all the reverse logic for unpacking the vector > of > > > > > > > enumerations > > > > > > > > > from the concatenated string, but it never gets called in > > > the > > > > > > > scenario you > > > > > > > > > described. Given the piece of code I included above, that > > > > > wouldn't > > > > > > > work > > > > > > > > > anyway, given the EcoreUtil .getAnnotation returns a > single > > > > > String. > > > > > > > > > > > > > > > > > > I don't have a solution yet, but I'll think on it. Any > > > > > suggestions > > > > > > > you > > > > > > > > > may have are welcome. > > > > > > > > > > > > > > > > > > Regards, Kelvin. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 11/12/2007, Amita Vadhavkar > > > > wrote: > > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > I tried TUSCANY-1360 related to enumeration facet. Below > > > is > > > > the > > > > > > > > > > summary of > > > > > > > > > > what was > > > > > > > > > > discussed so far and a few questions. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------------------------------------------------------------- > > > > > > > > > > > > > > > > > > > > > > > 1) One way to do this is - > > > > > > > > > > public static List getEnumerationFacet(Type > type) > > > { > > > > > > > > > > return ExtendedMetaData.INSTANCE.getEnumerationFacet > > > > > > > > > > ((EDataType)type); > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > which works very straight forward and gives a list of > > > enums. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------------------------------------------------------------- > > > > > > > > > > > > > 2) Another way is - > > > > > > > > > > Do type.getInstanceProperties() and find the Property > > > called > > > > > > > > > > "enumeration". > > > > > > > > > > > > > > > > > > > > Where, getInstanceProperties() calls > > > > > > > > > > DataObjectUtil.getMetaObjectInstanceProperties > > > (EModelElement > > > > > > > > > > metaObject) > > > > > > > > > > in which for the given metaObject its annotations and > > > details > > > > of > > > > > > > each > > > > > > > > > > annotations are traversed. Each > > > > > > > > > > Annotation Detail is mapped to > EStringToStringMapEntryImpl > > > > > > > entry > > > > > > > like > > > > > > > > > > below > > > > > > > > > > - > > > > > > > > > > > > > > > > > > > > EStringToStringMapEntryImpl entry = > > > > > > > > > > (EStringToStringMapEntryImpl)iter.next(); //iter is > > > Iterator > > > > > > over > > > > > > > > > > current > > > > > > > > > > Annotation's Details > > > > > > > > > > String propertyName = entry.getTypedKey(); > > > > > > > > > > > > > > > > > > > > Property globalProperty = getGlobalProperty(hc, > > > propertyURI, > > > > > > > > > > propertyName); > > > > > > > > > > if (globalProperty != null) > > > > > > > > > > { > > > > > > > > > > result.add(globalProperty); > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > Result is a UniqueEList which is returned at the end. > > > > > > > > > > > > > > > > > > > > Here, when entry.getTypedKey() is "enumeration", > > > > > > entry.getTypedValue > > > > > > > () > > > > > > > > > > gives > > > > > > > > > > a String having space separated enums > > > > > > > > > > > > > > > > > > > > e.g. for > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > it gives," Good Bad" > > > > > > > > > > > > > > > > > > > > As we see in Property globalProperty = > > > getGlobalProperty(hc, > > > > > > > > > > propertyURI, > > > > > > > > > > propertyName); the TypedKey information is > > > > > > > > > > used when forming Property with name "enumeration", but > > > the > > > > > > > TypedValue > > > > > > > > > > information is not stored in the Property. > > > > > > > > > > Same thing will be applicable for other facets like > > > MinLenght, > > > > > > > > > > MaxExclusive.... > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > > > > > > > > > > > > > > > > > > > Questions: > > > > > > > > > > > > > > > > > > > > Thus, the question I have is, in case of following 2), > > > what > > > > will > > > > > > be > > > > > > > > > > the way > > > > > > > > > > to preserve the mapping (key-value) > > > > > > > > > > information available about facets from EMF in the > formed > > > > > > Property? > > > > > > > > > > And what > > > > > > > > > > will be better approach for TUSCANY-1360 > > > > > > > > > > and as such for any other facets? > > > > > > > > > > > > > > > > > > > > Regards, > > > > > > > > > > Amita > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------=_Part_26026_2628090.1199980478951--