Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: EntityId decision analysis page (wasRE:[higgins-dev]entityIDnotanattribute?)

I assume createEntity would continue to take a string, and the cp would
make the determination as to whether that can also be the canonical id. 
The cp could also create it's own id(s), so the IdAS consumer wouldn't
ever be expected to set more than one ID.  On the second point, yes, I
think you're right.

>>> "Markus Sabadello" <msabadello@xxxxxxxxxxxxx> 09/17/08 6:20 AM >>>

Hello Jim,

Wouldn't this also imply changes to other parts of the API, e.g.
IContext.createEntity(). How would you add/remove EntityIds from an
Entity?

Also, if the cardinality is 0..n, shouldn't IEntity().getEntityID()
return a String array?

Markus


On Wed, Sep 17, 2008 at 2:30 AM, Jim Sermersheim 
<jimse@xxxxxxxxxx> 

wrote:


This is interesting.  So, further... Maybe we could define our policy
objects such when one is going about the business of specifying an
entity (as a subject or resource), instead of allowing any old string or
textual identifier to be passed there, one must actually pass an
IEntity.  That way, the policy object could be sure to call
getCanonicalID.  Maybe that's heavy-handed.  I just hate leaving gapping
holes lying around for people to stumble into.

Anyway to repeat... An Entity could be referred to by it's
'human-friendly' entityID which isn't guaranteed to always be able to
find the same entity (though one imagines confidence being at least
medium to med-high), and also possibly be referred to by its canonical
entityID (which may or may not be less aesthetically pleasing to humans)
which is guaranteed to get you back to the original entity.  I think
this may be an example of what Tony was talking about when he was saying
"an entity could have multiple entity identifiers"

we could just overload getEntityID to take a bool bEnsureCanonical arg.
Also, the following could be used to test whether an entityID is
canonical (assuming EntityID's are Strings here:

String friendlyID = myEntity.getEntityID();
String canonicalID = myEntity.getEntityID(true);

if (friendlyID !=null && canonicalID != null &&
friendlyID.equals(canonicalID)) {
  // the entity has a friendly id and it is canonical.
}

of course, one interested in the canonical id would simply get that and
use it.

Jim

>>> "Drummond Reed" <drummond.reed@xxxxxxxxxxxx> 09/16/08 2:04 PM >>>


Yes, it's a good point Jim - all a getEntityIdsMutable method could do
is
serve as an input to a application making policy decisions.

More useful might be a method for asking an Entity specifically for an
immutable EntityId. Call it getCanonicalId. The rule would be that it
always
returns one EntityId value that the Context asserts is the immutable
canonical identifier for that Entity in that Context.

If the Context does not support immutable identifiers, then
getCanonicalId
will return an error, and the application can plan accordingly. But I
suspect the value of having an immutable reference would incent CPs to
support this method.

=Drummond

> -----Original Message-----
> From: higgins-dev-bounces@xxxxxxxxxxx [mailto:higgins-dev-
> bounces@xxxxxxxxxxx] On Behalf Of Jim Sermersheim
> Sent: Monday, September 15, 2008 11:01 PM
> To: 'Higgins (Trust Framework) Project developer discussions'
> Subject: RE: EntityId decision analysis page
(wasRE:[higgins-dev]entityID
> notan attribute?)
>
> How does it help an application to know whether a context's entityIDs
> are mutable?  Does that tell the client that they'd better not use
this
> Higgins policy objects (at least none that refer to entities as
subjects
> or resources)?
>
>
>
> >>> "Drummond Reed" <drummond.reed@xxxxxxxxxxxx> 09/15/08 9:59 PM >>>
> Okay, after talking with Markus and Paul on the phone, and gathering
the
> last round of comments in email, I did another update to
> http://wiki.eclipse.org/EntityId_Requirements. This should really be
> called
> "EntityId Requirements for Context Data Model 1.1", since what we're
> talking
> about here is the delta between what we have in 1.0 and 1.1.
>
> The current state as I understand it in 1.0 is that the entityId
> parameter
> to the getEntity method on IContext interface:
>
>    1. Is of type string (confirm?)
>    2. Has cardinality 0..1
>    3. MUST be Context-unique; MAY be globally unique.
>    4. Is always exposed as an Attribute.
>    5. Exposes no information about mutability.
>
> Following are the proposed changes in 1.1. Please do comment on each
> one.
>
> #1: NOT REQUIRE entityId TO BE EXPOSED AS AN ATTRIBUTE
>
> The proposed change is to make EntityId OPTIONAL to expose as an
> Attribute.
> Contexts that do not want to expose the EntityId can omit it from the
> list
> of Attributes for an Entity. Note: if the EntityId is mutable, it
SHOULD
> be
> exposed as an Attribute so it can be modified.
>
> #2: ADD getEntityIdsMutable METHOD
>
> The proposed change is to add a getEntityIdsMutable() method on
IContext
> that returns a Boolean indicating whether EntityIds in that Context
are
> mutable or not. True = mutable.
>
> #3: ADD getIdentifiers METHOD
>
> The proposed change is to add a getIdentifiers() method on IEntity
that
> returns all Identifiers for an Entity (0..n). By definition this would
> return all identifiers that the Context considers to be synonyms of
the
> EntityId, even if the EntityId was not among the values returned.
>
> #4: MULTI-PART KEYS
>
> The proposal is to keep it simple by requiring multi-part keys to be
> serialized into a composite identifier, which can then be used as an
> EntityId or exposed as an Identifiers attribute.
>
> Again, comments welcome so we can close this.
>
> =Drummond
>
> > -----Original Message-----
> > From: higgins-dev-bounces@xxxxxxxxxxx [mailto:higgins-dev-
> > bounces@xxxxxxxxxxx] On Behalf Of Tom Doman
> > Sent: Monday, September 15, 2008 1:34 PM
> > To: 'Higgins (Trust Framework) Project developer discussions'
> > Subject: RE: EntityId decision analysis
> page(wasRE:[higgins-dev]entityID
> > not an attribute?)
> >
> > +1
> >
> > On #1, I think more complex could get CP implementors into some
> > difficult situations though that's just a hunch w/o concrete
examples.
> > But, like Jim, I prefer simple.
> >
> > On "another question", I don't see how we could guarantee
immutability
> > or referential integrity.  I understand the need, just not how we'd
> pull
> > it off especially w/o producing a major house of cards to implement.
> > Event notification from the backing store, if even possible, would
> still
> > not be guaranteed to be reliable.  Maybe doing the best we can is
> better
> > than no guarantee whatsoever.
> >
> > Tom
> >
>
> _______________________________________________
> higgins-dev mailing list
> higgins-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/higgins-dev
>
>
> ------------------- TEXT.htm follows -------------------
> <html>
>   <head>
>     <style type=3D"text/css">
>       <!--
>         body { font-variant: normal; margin-left: 4px; margin-bottom:
1px;
> =
> line-height: normal; margin-top: 4px; margin-right: 4px }
>         p { margin-bottom: 0; margin-top: 0 }
>       -->
>     </style>
>    =20
>   </head>
>   <body style=3D"margin-left: 4px; margin-bottom: 1px; margin-top:
4px; =
> margin-right: 4px">
>     <p style=3D"margin-bottom: 0; margin-top: 0">
>       <font face=3D"Dialog" size=3D"2">How does it help an application
to
> =
> know whether a context&#39;s entityIDs are mutable&#63; &nbsp;Does
that =
> tell the client that they&#39;d better not use this Higgins policy
objects
> =
> &#40;at least none that refer to entities as subjects or
> resources&#41;&#63=
> ; </font>    </p>
> <br>     =20
>     <p style=3D"margin-bottom: 0; margin-top: 0">
>       <br>
>       <br>
>       &gt;&gt;&gt; &quot;Drummond Reed&quot;
> &lt;drummond.reed@xxxxxxxxxxxx (
mailto:lt%3Bdrummond.reed@xxxxxxxxxxxx )=
> &gt; 09/15/08 9:59 PM &gt;&gt;&gt;<br>Okay&#44; after talking with
Markus
> =
> and Paul on the phone&#44; and gathering the<br>last round of comments
in
> =
> email&#44; I did another update to<br><a
> href=3D"http://wiki.eclipse.org/En= ( http://wiki.eclipse.org/En= )
>
tityId_Requirements.">http://wiki.eclipse.org/EntityId_Requirements.</a>&n
> b=
> sp;This should really be called<br>&quot;EntityId Requirements for
Context
> =
> Data Model 1.1&quot;&#44; since what we&#39;re talking<br>about here
is =
> the delta between what we have in 1.0 and 1.1.<br><br>The current
state as
> =
> I understand it in 1.0 is that the entityId parameter<br>to the
getEntity
> =
> method on IContext interface:<br><br>&#160;&#160;&nbsp;1. Is of type =
> string &#40;confirm&#63;&#41;<br>&#160;&#160;&nbsp;2. Has cardinality
=
> 0..1<br>&#160;&#160;&nbsp;3. MUST be Context-unique&#59; MAY be
globally =
> unique.<br>&#160;&#160;&nbsp;4. Is always exposed as an
> Attribute.<br>&#160=
> ;&#160;&nbsp;5. Exposes no information about
mutability.<br><br>Following
> =
> are the proposed changes in 1.1. Please do comment on each
> one.<br><br>&#35=
> ;1: NOT REQUIRE entityId TO BE EXPOSED AS AN ATTRIBUTE<br><br>The
proposed
> =
> change is to make EntityId OPTIONAL to expose as an
Attribute.<br>Contexts
> =
> that do not want to expose the EntityId can omit it from the
list<br>of =
> Attributes for an Entity. Note: if the EntityId is mutable&#44; it
SHOULD
> =
> be<br>exposed as an Attribute so it can be modified.<br><br>&#35;2:
ADD =
> getEntityIdsMutable METHOD<br><br>The proposed change is to add a =
> getEntityIdsMutable&#40;&#41; method on IContext<br>that returns a
Boolean
> =
> indicating whether EntityIds in that Context are<br>mutable or not.
True =
> &#61; mutable.<br><br>&#35;3: ADD getIdentifiers METHOD<br><br>The =
> proposed change is to add a getIdentifiers&#40;&#41; method on IEntity
=
> that<br>returns all Identifiers for an Entity &#40;0..n&#41;. By
> definition=
>  this would<br>return all identifiers that the Context considers to be
=
> synonyms of the<br>EntityId&#44; even if the EntityId was not among
the =
> values returned.<br><br>&#35;4: MULTI-PART KEYS<br><br>The proposal is
to
> =
> keep it simple by requiring multi-part keys to be<br>serialized into a
=
> composite identifier&#44; which can then be used as an<br>EntityId or
=
> exposed as an Identifiers attribute.<br><br>Again&#44; comments
welcome so
> =
> we can close this.<br><br>&#61;Drummond<br><br>&gt; -----Original =
> Message-----<br>&gt; From: higgins-dev-bounces@xxxxxxxxxxx
> &#91;mailto:higg=
> ins-dev-<br>&gt; bounces@xxxxxxxxxxx&#93; On Behalf Of Tom
Doman<br>&gt; =
> Sent: Monday&#44; September 15&#44; 2008 1:34 PM<br>&gt; To:
&#39;Higgins
> =
> &#40;Trust Framework&#41; Project developer discussions&#39;<br>&gt; =
> Subject: RE: EntityId decision analysis page&#40;wasRE:&#91;higgins-
> dev&#93=
> ;entityID<br>&gt; not an attribute&#63;&#41;<br>&gt;<br>&gt;
> &#43;1<br>&gt;=
> <br>&gt; On &#35;1&#44; I think more complex could get CP implementors
=
> into some<br>&gt; difficult situations though that&#39;s just a hunch
w/o
> =
> concrete examples.<br>&gt; But&#44; like Jim&#44; I prefer
> simple.<br>&gt;<=
> br>&gt; On &quot;another question&quot;&#44; I don&#39;t see how we
could
> =
> guarantee immutability<br>&gt; or referential integrity.&#160;&nbsp;I
=
> understand the need&#44; just not how we&#39;d pull<br>&gt; it off =
> especially w/o producing a major house of cards to implement.<br>&gt;
=
> Event notification from the backing store&#44; if even possible&#44;
would
> =
> still<br>&gt; not be guaranteed to be reliable.&#160;&nbsp;Maybe doing
the
> =
> best we can is better<br>&gt; than no guarantee
> whatsoever.<br>&gt;<br>&gt;=
>
>
Tom<br>&gt;<br><br>_______________________________________________<br>higg
> =
> ins-dev mailing list<br>higgins-dev@xxxxxxxxxxx<br><a
> href=3D"https://dev.e=
>
clipse.org/mailman/listinfo/higgins">https://dev.eclipse.org/mailman/listi
> n=
> fo/higgins</a>-dev<br>
>     </p>
>   </body>
> </html>
> _______________________________________________
> higgins-dev mailing list
> higgins-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/higgins-dev

_______________________________________________
higgins-dev mailing list
higgins-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/higgins-dev


------------------- TEXT.htm follows -------------------
<html>
 <head>
   <style type=3D"text/css">
     <!--

       body { line-height: normal; font-variant: normal; margin-bottom:
=
1px; margin-top: 4px; margin-left: 4px; margin-right: 4px }
       p { margin-top: 0; margin-bottom: 0 }
     -->
   </style>
  =20
 </head>
 <body style=3D"margin-left: 4px; margin-top: 4px; margin-bottom: 1px; =

margin-right: 4px">
   <p style=3D"margin-bottom: 0; margin-top: 0">

     <font size=3D"2" face=3D"Dialog">This is interesting. &nbsp;So&#44;
=
further... Maybe we could define our policy objects such when one is
going =
about the business of specifying an entity &#40;as a subject or
resource&#4=
1;&#44; instead of allowing any old string or textual identifier to be =
passed there&#44; one must actually pass an IEntity. &nbsp;That way&#44;
=
the policy object could be sure to call getCanonicalID. &nbsp;Maybe =
that&#39;s heavy-handed. &nbsp;I just hate leaving gapping holes lying =
around for people to stumble into.</font>    </p>

<br>     =20
   <p style=3D"margin-bottom: 0; margin-top: 0">

     <font size=3D"2" face=3D"Dialog">Anyway to repeat... An Entity
could =
be referred to by it&#39;s &#39;human-friendly&#39; entityID which =
isn&#39;t guaranteed to always be able to find the same entity
&#40;though =
one imagines confidence being at least medium to med-high&#41;&#44; and
=
also possibly be referred to by its canonical entityID &#40;which may or
=
may not be less aesthetically pleasing to humans&#41; which is
guaranteed =
to get you back to the original entity. &nbsp;I think this may be an =
example of what Tony was talking about when he was saying &quot;an
entity =
could have multiple entity identifiers&quot;</font>    </p>

<br>     =20
   <p style=3D"margin-bottom: 0; margin-top: 0">

     <font size=3D"2" face=3D"Dialog">we could just overload getEntityID
=
to take a bool bEnsureCanonical arg. &nbsp;Also&#44; the following could
=
be used to test whether an entityID is canonical &#40;assuming
EntityID&#39=
;s are Strings here:</font>    </p>

<br>     =20
   <p style=3D"margin-bottom: 0; margin-top: 0">

     <font size=3D"2" face=3D"Dialog">String friendlyID &#61;
myEntity.get=
EntityID&#40;&#41;&#59;</font>    </p>

   <p style=3D"margin-bottom: 0; margin-top: 0">

     <font size=3D"2" face=3D"Dialog">String canonicalID &#61;
myEntity.ge=
tEntityID&#40;true&#41;&#59;</font>    </p>

<br>     =20
   <p style=3D"margin-bottom: 0; margin-top: 0">

     <font size=3D"2" face=3D"Dialog">if &#40;friendlyID &#33;&#61;null
=
&amp;&amp; canonicalID &#33;&#61; null &amp;&amp;
friendlyID.equals&#40;can=
onicalID&#41;&#41;&nbsp;&#123;</font>    </p>

   <p style=3D"margin-bottom: 0; margin-top: 0">

     <font size=3D"2" face=3D"Dialog">&nbsp;&nbsp;&nbsp;// the entity
has =
a friendly id and it is canonical.</font>    </p>

   <p style=3D"margin-bottom: 0; margin-top: 0">

     <font size=3D"2" face=3D"Dialog">&#125;</font>    </p>

<br>     =20
   <p style=3D"margin-bottom: 0; margin-top: 0">

     <font size=3D"2" face=3D"Dialog">of course&#44; one interested in =
the canonical id would simply get that and use it.</font>    </p>

<br>     =20
   <p style=3D"margin-bottom: 0; margin-top: 0">

     <font size=3D"2" face=3D"Dialog">Jim</font><br><br>&gt;&gt;&gt; =
&quot;Drummond Reed&quot; &lt;drummond.reed@xxxxxxxxxxxx (
mailto:lt%3Bdrummond.reed@xxxxxxxxxxxx )&gt; 09/16/08 2:04 =
PM &gt;&gt;&gt;<br>Yes&#44; it&#39;s a good point Jim - all a
getEntityIdsM=
utable method could do is<br>serve as an input to a application making =
policy decisions.<br><br>More useful might be a method for asking an =
Entity specifically for an<br>immutable EntityId. Call it
getCanonicalId. =
The rule would be that it always<br>returns one EntityId value that the
=
Context asserts is the immutable<br>canonical identifier for that Entity
=
in that Context.<br><br>If the Context does not support immutable =
identifiers&#44; then getCanonicalId<br>will return an error&#44; and
the =
application can plan accordingly. But I<br>suspect the value of having
an =
immutable reference would incent CPs to<br>support this
method.<br><br>&#61=

;Drummond<br><br>&gt; -----Original Message-----<br>&gt; From:
higgins-dev-=

bounces@xxxxxxxxxxx &#91;mailto:higgins-dev-<br>&gt;
bounces@xxxxxxxxxxx&#9=
3; On Behalf Of Jim Sermersheim<br>&gt; Sent: Monday&#44; September =
15&#44; 2008 11:01 PM<br>&gt; To: &#39;Higgins &#40;Trust Framework&#41;
=

Project developer discussions&#39;<br>&gt; Subject: RE: EntityId
decision =

analysis page &#40;wasRE:&#91;higgins-dev&#93;entityID<br>&gt; notan =
attribute&#63;&#41;<br>&gt;<br>&gt; How does it help an application to =
know whether a context&#39;s entityIDs<br>&gt; are
mutable&#63;&#160;&nbsp;=
Does that tell the client that they&#39;d better not use this<br>&gt; =

Higgins policy objects &#40;at least none that refer to entities as =

subjects<br>&gt; or resources&#41;&#63;<br>&gt;<br>&gt;<br>&gt;<br>&gt;
=

&gt;&gt;&gt; &quot;Drummond Reed&quot; &lt;drummond.reed@xxxxxxxxxxxx (
mailto:lt%3Bdrummond.reed@xxxxxxxxxxxx )&gt; =

09/15/08 9:59 PM &gt;&gt;&gt;<br>&gt; Okay&#44; after talking with
Markus =
and Paul on the phone&#44; and gathering the<br>&gt; last round of =
comments in email&#44; I did another update to<br>&gt; <a
href=3D"http://wi=
ki.eclipse.org/EntityId_Requirements.">http://wiki.eclipse.org/EntityId_Req=
( http://wiki.eclipse.org/EntityId_Req= )
uirements.</a>&nbsp;This should really be<br>&gt; called<br>&gt;
&quot;Enti=

tyId Requirements for Context Data Model 1.1&quot;&#44; since what =

we&#39;re<br>&gt; talking<br>&gt; about here is the delta between what
we =
have in 1.0 and 1.1.<br>&gt;<br>&gt; The current state as I understand
it =
in 1.0 is that the entityId<br>&gt; parameter<br>&gt; to the getEntity =
method on IContext interface:<br>&gt;<br>&gt;&#160;&#160;&#160;&nbsp;1.
Is =
of type string &#40;confirm&#63;&#41;<br>&gt;&#160;&#160;&#160;&nbsp;2.
=
Has cardinality 0..1<br>&gt;&#160;&#160;&#160;&nbsp;3. MUST be
Context-uniq=
ue&#59; MAY be globally unique.<br>&gt;&#160;&#160;&#160;&nbsp;4. Is =
always exposed as an Attribute.<br>&gt;&#160;&#160;&#160;&nbsp;5.
Exposes =
no information about mutability.<br>&gt;<br>&gt; Following are the =
proposed changes in 1.1. Please do comment on each<br>&gt;
one.<br>&gt;<br>=
&gt; &#35;1: NOT REQUIRE entityId TO BE EXPOSED AS AN
ATTRIBUTE<br>&gt;<br>=
&gt; The proposed change is to make EntityId OPTIONAL to expose as =
an<br>&gt; Attribute.<br>&gt; Contexts that do not want to expose the =
EntityId can omit it from the<br>&gt; list<br>&gt; of Attributes for an
=
Entity. Note: if the EntityId is mutable&#44; it SHOULD<br>&gt;
be<br>&gt; =
exposed as an Attribute so it can be modified.<br>&gt;<br>&gt; &#35;2:
ADD =
getEntityIdsMutable METHOD<br>&gt;<br>&gt; The proposed change is to add
a =
getEntityIdsMutable&#40;&#41; method on IContext<br>&gt; that returns a
=
Boolean indicating whether EntityIds in that Context are<br>&gt; mutable
=
or not. True &#61; mutable.<br>&gt;<br>&gt; &#35;3: ADD getIdentifiers =
METHOD<br>&gt;<br>&gt; The proposed change is to add a
getIdentifiers&#40;&=
#41; method on IEntity that<br>&gt; returns all Identifiers for an
Entity =
&#40;0..n&#41;. By definition this would<br>&gt; return all identifiers
=
that the Context considers to be synonyms of the<br>&gt; EntityId&#44; =
even if the EntityId was not among the values returned.<br>&gt;<br>&gt;
=
&#35;4: MULTI-PART KEYS<br>&gt;<br>&gt; The proposal is to keep it
simple =
by requiring multi-part keys to be<br>&gt; serialized into a composite =
identifier&#44; which can then be used as an<br>&gt; EntityId or exposed
=
as an Identifiers attribute.<br>&gt;<br>&gt; Again&#44; comments welcome
=
so we can close this.<br>&gt;<br>&gt; &#61;Drummond<br>&gt;<br>&gt; &gt;
=
-----Original Message-----<br>&gt; &gt; From:
higgins-dev-bounces@eclipse.o=
rg &#91;mailto:higgins-dev-<br>&gt; &gt; bounces@xxxxxxxxxxx&#93; On =
Behalf Of Tom Doman<br>&gt; &gt; Sent: Monday&#44; September 15&#44;
2008 =
1:34 PM<br>&gt; &gt; To: &#39;Higgins &#40;Trust Framework&#41; Project
=
developer discussions&#39;<br>&gt; &gt; Subject: RE: EntityId decision =
analysis<br>&gt; page&#40;wasRE:&#91;higgins-dev&#93;entityID<br>&gt;
&gt; =
not an attribute&#63;&#41;<br>&gt; &gt;<br>&gt; &gt; &#43;1<br>&gt; =
&gt;<br>&gt; &gt; On &#35;1&#44; I think more complex could get CP =
implementors into some<br>&gt; &gt; difficult situations though
that&#39;s =
just a hunch w/o concrete examples.<br>&gt; &gt; But&#44; like Jim&#44;
I =
prefer simple.<br>&gt; &gt;<br>&gt; &gt; On &quot;another
question&quot;&#4=
4; I don&#39;t see how we could guarantee immutability<br>&gt; &gt; or =

referential integrity.&#160;&nbsp;I understand the need&#44; just not
how =

we&#39;d<br>&gt; pull<br>&gt; &gt; it off especially w/o producing a
major =
house of cards to implement.<br>&gt; &gt; Event notification from the =
backing store&#44; if even possible&#44; would<br>&gt; still<br>&gt;
&gt; =

not be guaranteed to be reliable.&#160;&nbsp;Maybe doing the best we can
=

is<br>&gt; better<br>&gt; &gt; than no guarantee whatsoever.<br>&gt; =
&gt;<br>&gt; &gt; Tom<br>&gt; &gt;<br>&gt;<br>&gt;
________________________=
_______________________<br>&gt; higgins-dev mailing list<br>&gt;
higgins-de=
v@xxxxxxxxxxx<br>&gt; <a
href=3D"https://dev.eclipse.org/mailman/listinfo/h= (
https://dev.eclipse.org/mailman/listinfo/h= )
iggins">https://dev.eclipse.org/mailman/listinfo/higgins</a>-dev<br>&gt;<br=
>&gt;<br>&gt; ------------------- TEXT.htm follows
-------------------<br>&=
gt;
&lt;html&gt;<br>&gt;&#160;&#160;&nbsp;&lt;head&gt;<br>&gt;&#160;&#160;&=
#160;&#160;&nbsp;&lt;style
type&#61;3D&quot;text/css&quot;&gt;<br>&gt;&#160=
;&#160;&#160;&#160;&#160;&#160;&nbsp;&lt;&#33;--<br>&gt;&#160;&#160;&#160;&=
#160;&#160;&#160;&#160;&#160;&nbsp;body&nbsp;&#123;&nbsp;font-variant: =
normal&#59; margin-left: 4px&#59; margin-bottom: 1px&#59;<br>&gt; =
&#61;<br>&gt; line-height: normal&#59; margin-top: 4px&#59;
margin-right: =
4px&nbsp;&#125;<br>&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbs=
p;p&nbsp;&#123;&nbsp;margin-bottom: 0&#59; margin-top:
0&nbsp;&#125;<br>&gt=
;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;--&gt;<br>&gt;&#160;&#160;&#160;=
&#160;&nbsp;&lt;/style&gt;<br>&gt;&#160;&#160;&#160;&nbsp;&#61;20<br>&gt;&#=
160;&#160;&nbsp;&lt;/head&gt;<br>&gt;&#160;&#160;&nbsp;&lt;body
style&#61;3=
D&quot;margin-left: 4px&#59; margin-bottom: 1px&#59; margin-top:
4px&#59; =
&#61;<br>&gt; margin-right:
4px&quot;&gt;<br>&gt;&#160;&#160;&#160;&#160;&n=
bsp;&lt;p style&#61;3D&quot;margin-bottom: 0&#59; margin-top:
0&quot;&gt;<b=
r>&gt;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;&lt;font
face&#61;3D&quot;D=
ialog&quot; size&#61;3D&quot;2&quot;&gt;How does it help an application
=
to<br>&gt; &#61;<br>&gt; know whether a context&amp;&#35;39&#59;s =
entityIDs are mutable&amp;&#35;63&#59; &amp;nbsp&#59;Does that
&#61;<br>&gt=
; tell the client that they&amp;&#35;39&#59;d better not use this
Higgins =
policy objects<br>&gt; &#61;<br>&gt; &amp;&#35;40&#59;at least none that
=
refer to entities as subjects or<br>&gt;
resources&amp;&#35;41&#59;&amp;&#3=
5;63&#61;<br>&gt; &#59;
&lt;/font&gt;&#160;&#160;&#160;&nbsp;&lt;/p&gt;<br>=
&gt;
&lt;br&gt;&#160;&#160;&#160;&#160;&nbsp;&#61;20<br>&gt;&#160;&#160;&#1=
60;&#160;&nbsp;&lt;p style&#61;3D&quot;margin-bottom: 0&#59; margin-top:
=
0&quot;&gt;<br>&gt;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;&lt;br&gt;<br>=
&gt;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;&lt;br&gt;<br>&gt;&#160;&#160=
;&#160;&#160;&#160;&#160;&nbsp;&amp;gt&#59;&amp;gt&#59;&amp;gt&#59; =
&amp;quot&#59;Drummond Reed&amp;quot&#59;<br>&gt;
&amp;lt&#59;drummond.reed=
@cordance.net&#61;<br>&gt; &amp;gt&#59; 09/15/08 9:59 PM
&amp;gt&#59;&amp;g=
t&#59;&amp;gt&#59;&lt;br&gt;Okay&amp;&#35;44&#59; after talking with =
Markus<br>&gt; &#61;<br>&gt; and Paul on the phone&amp;&#35;44&#59; and
=
gathering the&lt;br&gt;last round of comments in<br>&gt; &#61;<br>&gt; =
email&amp;&#35;44&#59; I did another update to&lt;br&gt;&lt;a<br>&gt; =
href&#61;3D&quot;http://wiki.eclipse.org/En&#61 (
http://wiki.eclipse.org/En&#61 );<br>&gt; tityId_Requirement=
s.&quot;&gt;<a
href=3D"http://wiki.eclipse.org/EntityId_Requirements.";>http=
://wiki.eclipse.org/EntityId_Requirements.</a>&lt;/a&gt;&amp;n<br>&gt; =
b&#61;<br>&gt; sp&#59;This should really be
called&lt;br&gt;&amp;quot&#59;E=
ntityId Requirements for Context<br>&gt; &#61;<br>&gt; Data Model =
1.1&amp;quot&#59;&amp;&#35;44&#59; since what we&amp;&#35;39&#59;re =
talking&lt;br&gt;about here is &#61;<br>&gt; the delta between what we =
have in 1.0 and 1.1.&lt;br&gt;&lt;br&gt;The current state as<br>&gt; =
&#61;<br>&gt; I understand it in 1.0 is that the entityId
parameter&lt;br&g=
t;to the getEntity<br>&gt; &#61;<br>&gt; method on IContext
interface:&lt;b=
r&gt;&lt;br&gt;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;1. Is
of =
type &#61;<br>&gt; string
&amp;&#35;40&#59;confirm&amp;&#35;63&#59;&amp;&#3=
5;41&#59;&lt;br&gt;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;2.
=
Has cardinality &#61;<br>&gt;
0..1&lt;br&gt;&amp;&#35;160&#59;&amp;&#35;160=
&#59;&amp;nbsp&#59;3. MUST be Context-unique&amp;&#35;59&#59; MAY be =
globally &#61;<br>&gt;
unique.&lt;br&gt;&amp;&#35;160&#59;&amp;&#35;160&#59=
;&amp;nbsp&#59;4. Is always exposed as an<br>&gt;
Attribute.&lt;br&gt;&amp;=
&#35;160&#61;<br>&gt; &#59;&amp;&#35;160&#59;&amp;nbsp&#59;5. Exposes no
=
information about mutability.&lt;br&gt;&lt;br&gt;Following<br>&gt; =
&#61;<br>&gt; are the proposed changes in 1.1. Please do comment on =
each<br>&gt; one.&lt;br&gt;&lt;br&gt;&amp;&#35;35&#61;<br>&gt; &#59;1:
NOT =
REQUIRE entityId TO BE EXPOSED AS AN ATTRIBUTE&lt;br&gt;&lt;br&gt;The =
proposed<br>&gt; &#61;<br>&gt; change is to make EntityId OPTIONAL to =
expose as an Attribute.&lt;br&gt;Contexts<br>&gt; &#61;<br>&gt; that do
=
not want to expose the EntityId can omit it from the list&lt;br&gt;of =
&#61;<br>&gt; Attributes for an Entity. Note: if the EntityId is
mutable&am=
p;&#35;44&#59; it SHOULD<br>&gt; &#61;<br>&gt; be&lt;br&gt;exposed as an
=
Attribute so it can be modified.&lt;br&gt;&lt;br&gt;&amp;&#35;35&#59;2:
=
ADD &#61;<br>&gt; getEntityIdsMutable METHOD&lt;br&gt;&lt;br&gt;The =
proposed change is to add a &#61;<br>&gt;
getEntityIdsMutable&amp;&#35;40&#=
59;&amp;&#35;41&#59; method on IContext&lt;br&gt;that returns a
Boolean<br>=
&gt; &#61;<br>&gt; indicating whether EntityIds in that Context
are&lt;br&g=
t;mutable or not. True &#61;<br>&gt; &amp;&#35;61&#59;
mutable.&lt;br&gt;&l=
t;br&gt;&amp;&#35;35&#59;3: ADD getIdentifiers
METHOD&lt;br&gt;&lt;br&gt;Th=
e &#61;<br>&gt; proposed change is to add a
getIdentifiers&amp;&#35;40&#59;=
&amp;&#35;41&#59; method on IEntity &#61;<br>&gt; that&lt;br&gt;returns
=
all Identifiers for an Entity &amp;&#35;40&#59;0..n&amp;&#35;41&#59;. =
By<br>&gt; definition&#61;<br>&gt;&#160;&nbsp;this would&lt;br&gt;return
=
all identifiers that the Context considers to be &#61;<br>&gt; synonyms
of =
the&lt;br&gt;EntityId&amp;&#35;44&#59; even if the EntityId was not
among =
the &#61;<br>&gt; values
returned.&lt;br&gt;&lt;br&gt;&amp;&#35;35&#59;4: =
MULTI-PART KEYS&lt;br&gt;&lt;br&gt;The proposal is to<br>&gt;
&#61;<br>&gt;=
 keep it simple by requiring multi-part keys to be&lt;br&gt;serialized =
into a &#61;<br>&gt; composite identifier&amp;&#35;44&#59; which can
then =
be used as an&lt;br&gt;EntityId or &#61;<br>&gt; exposed as an
Identifiers =
attribute.&lt;br&gt;&lt;br&gt;Again&amp;&#35;44&#59; comments welcome =
so<br>&gt; &#61;<br>&gt; we can close
this.&lt;br&gt;&lt;br&gt;&amp;&#35;61=
&#59;Drummond&lt;br&gt;&lt;br&gt;&amp;gt&#59; -----Original
&#61;<br>&gt; =
Message-----&lt;br&gt;&amp;gt&#59; From:
higgins-dev-bounces@xxxxxxxxxxx<br=
>&gt; &amp;&#35;91&#59;mailto:higg&; ( mailto:higg%26 )#61;<br>&gt;
ins-dev-&lt;br&gt;&amp;gt&#=
59; bounces@xxxxxxxxxxx&amp;&#35;93&#59; On Behalf Of Tom
Doman&lt;br&gt;&a=
mp;gt&#59; &#61;<br>&gt; Sent: Monday&amp;&#35;44&#59; September
15&amp;&#3=
5;44&#59; 2008 1:34 PM&lt;br&gt;&amp;gt&#59; To:
&amp;&#35;39&#59;Higgins<b=
r>&gt; &#61;<br>&gt; &amp;&#35;40&#59;Trust Framework&amp;&#35;41&#59; =
Project developer discussions&amp;&#35;39&#59;&lt;br&gt;&amp;gt&#59; =
&#61;<br>&gt; Subject: RE: EntityId decision analysis
page&amp;&#35;40&#59;=
wasRE:&amp;&#35;91&#59;higgins-<br>&gt; dev&amp;&#35;93&#61;<br>&gt; =
&#59;entityID&lt;br&gt;&amp;gt&#59; not an
attribute&amp;&#35;63&#59;&amp;&=
#35;41&#59;&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59;<br>&gt;
&amp;&#35;4=
3&#59;1&lt;br&gt;&amp;gt&#59;&#61;<br>&gt; &lt;br&gt;&amp;gt&#59; On =
&amp;&#35;35&#59;1&amp;&#35;44&#59; I think more complex could get CP =
implementors &#61;<br>&gt; into some&lt;br&gt;&amp;gt&#59; difficult =
situations though that&amp;&#35;39&#59;s just a hunch w/o<br>&gt; =
&#61;<br>&gt; concrete examples.&lt;br&gt;&amp;gt&#59;
But&amp;&#35;44&#59;=
 like Jim&amp;&#35;44&#59; I prefer<br>&gt;
simple.&lt;br&gt;&amp;gt&#59;&l=
t;&#61;<br>&gt; br&gt;&amp;gt&#59; On &amp;quot&#59;another
question&amp;qu=
ot&#59;&amp;&#35;44&#59; I don&amp;&#35;39&#59;t see how we
could<br>&gt; =
&#61;<br>&gt; guarantee immutability&lt;br&gt;&amp;gt&#59; or
referential =
integrity.&amp;&#35;160&#59;&amp;nbsp&#59;I &#61;<br>&gt; understand the
=
need&amp;&#35;44&#59; just not how we&amp;&#35;39&#59;d
pull&lt;br&gt;&amp;=
gt&#59; it off &#61;<br>&gt; especially w/o producing a major house of =
cards to implement.&lt;br&gt;&amp;gt&#59; &#61;<br>&gt; Event
notification =
from the backing store&amp;&#35;44&#59; if even
possible&amp;&#35;44&#59; =
would<br>&gt; &#61;<br>&gt; still&lt;br&gt;&amp;gt&#59; not be
guaranteed =
to be reliable.&amp;&#35;160&#59;&amp;nbsp&#59;Maybe doing the<br>&gt; =
&#61;<br>&gt; best we can is better&lt;br&gt;&amp;gt&#59; than no =
guarantee<br>&gt;
whatsoever.&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&#=
61;<br>&gt;<br>&gt;
Tom&lt;br&gt;&amp;gt&#59;&lt;br&gt;&lt;br&gt;__________=
_____________________________________&lt;br&gt;higg<br>&gt;
&#61;<br>&gt; =
ins-dev mailing list&lt;br&gt;higgins-dev@xxxxxxxxxxx (
mailto:list%26lt%3Bbr%26gt%3Bhiggins-dev@xxxxxxxxxxx
)&lt;br&gt;&lt;a<br>&gt=
; href&#61;3D&quot;https://dev.e&#61;<br>&gt;
clipse.org/mailman/listinfo/h=
iggins&quot;&gt ( http://clipse.org/mailman/listinfo/h=iggins&quot;&gt
);<a href=3D"https://dev.eclipse.org/mailman/listi";>https://d=
ev.eclipse.org/mailman/listi</a><br>&gt; n&#61;<br>&gt;
fo/higgins&lt;/a&gt=
;-dev&lt;br&gt;<br>&gt;&#160;&#160;&#160;&#160;&nbsp;&lt;/p&gt;<br>&gt;&#16=
0;&#160;&nbsp;&lt;/body&gt;<br>&gt; &lt;/html&gt;<br>&gt;
_________________=
______________________________<br>&gt; higgins-dev mailing list<br>&gt;
=
higgins-dev@xxxxxxxxxxx<br>&gt; <a
href=3D"https://dev.eclipse.org/mailman/=
listinfo/higgins ( https://dev.eclipse.org/mailman/=listinfo/higgins
)">https://dev.eclipse.org/mailman/listinfo/higgins</a>-dev<=
br><br>_______________________________________________<br>higgins-dev =
mailing list<br>higgins-dev@xxxxxxxxxxx<br><a
href=3D"https://dev.eclipse.o=
rg/mailman/listinfo/higgins">https://dev.eclipse.org/mailman/listinfo/higgi=
( https://dev.eclipse.org/mailman/listinfo/higgi= )


ns</a>-dev<br>
   </p>
 </body>
</html>
_______________________________________________
higgins-dev mailing list
higgins-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/higgins-dev




------------------- TEXT.htm follows ------------------- 
<html>
  <head>
    <style type=3D"text/css">
      <!--
        body { line-height: normal; font-variant: normal; margin-bottom: =
1px; margin-top: 4px; margin-left: 4px; margin-right: 4px }
        p { margin-top: 0; margin-bottom: 0 }
      -->
    </style>
   =20
  </head>
  <body>
    <p style=3D"margin-bottom: 0; margin-top: 0">
      <font size=3D"2" face=3D"Dialog">I assume createEntity would =
continue to take a string&#44; and the cp would make the determination as =
to whether that can also be the canonical id. &nbsp;The cp could also =
create it&#39;s own id&#40;s&#41;&#44; so the IdAS consumer wouldn&#39;t =
ever be expected to set more than one ID. &nbsp;On the second point&#44; =
yes&#44; I think you&#39;re right.</font><br><br>&gt;&gt;&gt; &quot;Markus =
Sabadello&quot; &lt;msabadello@xxxxxxxxxxxxx&gt; 09/17/08 6:20 AM =
&gt;&gt;&gt;<br>    </p>
    <div dir=3D"ltr" http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3DISO-8859-1">
      <p style=3D"margin-bottom: 0; margin-top: 0">
        Hello Jim&#44;<br><br>Wouldn&#39;t this also imply changes to =
other parts of the API&#44; e.g. IContext.createEntity&#40;&#41;. How =
would you add/remove EntityIds from an Entity&#63;<br><br>Also&#44; if the =
cardinality is 0..n&#44; shouldn&#39;t IEntity&#40;&#41;.getEntityID&#40;&#=
41; return a String array&#63;<br><br>Markus<br><br>      </p>
      <div class=3D"gmail_quote">
        <p style=3D"margin-bottom: 0; margin-top: 0">
          On Wed&#44; Sep 17&#44; 2008 at 2:30 AM&#44; Jim Sermersheim     =
   </p>
        <div dir=3D"ltr">
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &lt;<a href=3D"mailto:jimse@xxxxxxxxxx";>jimse@xxxxxxxxxx</a>&gt=
;          </p>
        </div>
        <p style=3D"margin-bottom: 0; margin-top: 0">
          wrote:<br>        </p>
        <blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid =
rgb(204, 204, 204); margin-right: 0pt; margin-bottom: 0pt; padding-left: =
0; margin-left: 0; margin-top: 0pt">
          <p style=3D"margin-bottom: 0; margin-top: 0">
            This is interesting.&nbsp;&#160;So&#44; further... Maybe we =
could define our policy<br>objects such when one is going about the =
business of specifying an<br>entity &#40;as a subject or resource&#41;&#44;=
 instead of allowing any old string or<br>textual identifier to be passed =
there&#44; one must actually pass an<br>IEntity.&nbsp;&#160;That way&#44; =
the policy object could be sure to call<br>getCanonicalID.&nbsp;&#160;Maybe=
 that&#39;s heavy-handed.&nbsp;&#160;I just hate leaving gapping<br>holes =
lying around for people to stumble into.<br><br>Anyway to repeat... An =
Entity could be referred to by it&#39;s<br>&#39;human-friendly&#39; =
entityID which isn&#39;t guaranteed to always be able to<br>find the same =
entity &#40;though one imagines confidence being at least<br>medium to =
med-high&#41;&#44; and also possibly be referred to by its canonical<br>ent=
ityID &#40;which may or may not be less aesthetically pleasing to =
humans&#41;<br>which is guaranteed to get you back to the original =
entity.&nbsp;&#160;I think<br>this may be an example of what Tony was =
talking about when he was saying<br>&quot;an entity could have multiple =
entity identifiers&quot;<br><br>we could just overload getEntityID to take =
a bool bEnsureCanonical arg.<br>Also&#44; the following could be used to =
test whether an entityID is<br>canonical &#40;assuming EntityID&#39;s are =
Strings here:<br><br>String friendlyID &#61; myEntity.getEntityID&#40;&#41;=
&#59;<br>String canonicalID &#61; myEntity.getEntityID&#40;true&#41;&#59;<b=
r><br>if &#40;friendlyID &#33;&#61;null &amp;&amp; canonicalID &#33;&#61; =
null &amp;&amp;<br>friendlyID.equals&#40;canonicalID&#41;&#41;&nbsp;&#123;<=
br>&#160;&nbsp;// the entity has a friendly id and it is canonical.<br>&#12=
5;<br><br>of course&#44; one interested in the canonical id would simply =
get that and<br>use it.<br><br>Jim<br><br>&gt;&gt;&gt; &quot;Drummond =
Reed&quot; &lt;<a href=3D"mailto:drummond.reed@xxxxxxxxxxxx";>drummond.reed@=
cordance.net</a>&gt; 09/16/08 2:04 PM &gt;&gt;&gt;<br>          </p>
          <div>
            <div>
<br>               =20
            </div>
            <div class=3D"wj3c7c">
              <p style=3D"margin-bottom: 0; margin-top: 0">
                Yes&#44; it&#39;s a good point Jim - all a getEntityIdsMuta=
ble method could do<br>is<br>serve as an input to a application making =
policy decisions.<br><br>More useful might be a method for asking an =
Entity specifically for an<br>immutable EntityId. Call it getCanonicalId. =
The rule would be that it<br>always<br>returns one EntityId value that the =
Context asserts is the immutable<br>canonical identifier for that Entity =
in that Context.<br><br>If the Context does not support immutable =
identifiers&#44; then<br>getCanonicalId<br>will return an error&#44; and =
the application can plan accordingly. But I<br>suspect the value of having =
an immutable reference would incent CPs to<br>support this method.<br><br>&=
#61;Drummond<br><br>&gt; -----Original Message-----<br>&gt; From: <a =
href=3D"mailto:higgins-dev-bounces@xxxxxxxxxxx";>higgins-dev-bounces@eclipse=
.org</a>&nbsp;&#91;mailto:<a href=3D"mailto:higgins-dev-";>higgins-dev-</a><=
br>&gt; <a href=3D"mailto:bounces@xxxxxxxxxxx";>bounces@xxxxxxxxxxx</a>&#93;=
 On Behalf Of Jim Sermersheim<br>&gt; Sent: Monday&#44; September 15&#44; =
2008 11:01 PM<br>&gt; To: &#39;Higgins &#40;Trust Framework&#41; Project =
developer discussions&#39;<br>&gt; Subject: RE: EntityId decision analysis =
page<br>&#40;wasRE:&#91;higgins-dev&#93;entityID<br>&gt; notan attribute&#6=
3;&#41;<br>&gt;<br>&gt; How does it help an application to know whether a =
context&#39;s entityIDs<br>&gt; are mutable&#63;&nbsp;&#160;Does that tell =
the client that they&#39;d better not use<br>this<br>&gt; Higgins policy =
objects &#40;at least none that refer to entities as<br>subjects<br>&gt; =
or resources&#41;&#63;<br>&gt;<br>&gt;<br>&gt;<br>&gt; &gt;&gt;&gt; =
&quot;Drummond Reed&quot; &lt;<a href=3D"mailto:drummond.reed@xxxxxxxxxxxx"=
>drummond.reed@xxxxxxxxxxxx</a>&gt; 09/15/08 9:59 PM &gt;&gt;&gt;<br>&gt; =
Okay&#44; after talking with Markus and Paul on the phone&#44; and =
gathering<br>the<br>&gt; last round of comments in email&#44; I did =
another update to<br>&gt; <a href=3D"http://wiki.eclipse.org/EntityId_Requi=
rements" target=3D"_blank">http://wiki.eclipse.org/EntityId_Requirements</a=
>. This should really be<br>&gt; called<br>&gt; &quot;EntityId Requirements=
 for Context Data Model 1.1&quot;&#44; since what we&#39;re<br>&gt; =
talking<br>&gt; about here is the delta between what we have in 1.0 and =
1.1.<br>&gt;<br>&gt; The current state as I understand it in 1.0 is that =
the entityId<br>&gt; parameter<br>&gt; to the getEntity method on IContext =
interface:<br>&gt;<br>&gt;&nbsp;&#160;&nbsp;&#160;1. Is of type string =
&#40;confirm&#63;&#41;<br>&gt;&nbsp;&#160;&nbsp;&#160;2. Has cardinality =
0..1<br>&gt;&nbsp;&#160;&nbsp;&#160;3. MUST be Context-unique&#59; MAY be =
globally unique.<br>&gt;&nbsp;&#160;&nbsp;&#160;4. Is always exposed as an =
Attribute.<br>&gt;&nbsp;&#160;&nbsp;&#160;5. Exposes no information about =
mutability.<br>&gt;<br>&gt; Following are the proposed changes in 1.1. =
Please do comment on each<br>&gt; one.<br>&gt;<br>&gt; &#35;1: NOT REQUIRE =
entityId TO BE EXPOSED AS AN ATTRIBUTE<br>&gt;<br>&gt; The proposed change =
is to make EntityId OPTIONAL to expose as an<br>&gt; Attribute.<br>&gt; =
Contexts that do not want to expose the EntityId can omit it from =
the<br>&gt; list<br>&gt; of Attributes for an Entity. Note: if the =
EntityId is mutable&#44; it<br>SHOULD<br>&gt; be<br>&gt; exposed as an =
Attribute so it can be modified.<br>&gt;<br>&gt; &#35;2: ADD getEntityIdsMu=
table METHOD<br>&gt;<br>&gt; The proposed change is to add a getEntityIdsMu=
table&#40;&#41; method on<br>IContext<br>&gt; that returns a Boolean =
indicating whether EntityIds in that Context<br>are<br>&gt; mutable or =
not. True &#61; mutable.<br>&gt;<br>&gt; &#35;3: ADD getIdentifiers =
METHOD<br>&gt;<br>&gt; The proposed change is to add a getIdentifiers&#40;&=
#41; method on IEntity<br>that<br>&gt; returns all Identifiers for an =
Entity &#40;0..n&#41;. By definition this would<br>&gt; return all =
identifiers that the Context considers to be synonyms of<br>the<br>&gt; =
EntityId&#44; even if the EntityId was not among the values returned.<br>&g=
t;<br>&gt; &#35;4: MULTI-PART KEYS<br>&gt;<br>&gt; The proposal is to keep =
it simple by requiring multi-part keys to be<br>&gt; serialized into a =
composite identifier&#44; which can then be used as an<br>&gt; EntityId or =
exposed as an Identifiers attribute.<br>&gt;<br>&gt; Again&#44; comments =
welcome so we can close this.<br>&gt;<br>&gt; &#61;Drummond<br>&gt;<br>&gt;=
 &gt; -----Original Message-----<br>&gt; &gt; From: <a href=3D"mailto:higgi=
ns-dev-bounces@xxxxxxxxxxx">higgins-dev-bounces@xxxxxxxxxxx</a>&nbsp;&#91;m=
ailto:<a href=3D"mailto:higgins-dev-";>higgins-dev-</a><br>&gt; &gt; <a =
href=3D"mailto:bounces@xxxxxxxxxxx";>bounces@xxxxxxxxxxx</a>&#93; On Behalf =
Of Tom Doman<br>&gt; &gt; Sent: Monday&#44; September 15&#44; 2008 1:34 =
PM<br>&gt; &gt; To: &#39;Higgins &#40;Trust Framework&#41; Project =
developer discussions&#39;<br>&gt; &gt; Subject: RE: EntityId decision =
analysis<br>&gt; page&#40;wasRE:&#91;higgins-dev&#93;entityID<br>&gt; &gt; =
not an attribute&#63;&#41;<br>&gt; &gt;<br>&gt; &gt; &#43;1<br>&gt; =
&gt;<br>&gt; &gt; On &#35;1&#44; I think more complex could get CP =
implementors into some<br>&gt; &gt; difficult situations though that&#39;s =
just a hunch w/o concrete<br>examples.<br>&gt; &gt; But&#44; like Jim&#44; =
I prefer simple.<br>&gt; &gt;<br>&gt; &gt; On &quot;another question&quot;&=
#44; I don&#39;t see how we could guarantee<br>immutability<br>&gt; &gt; =
or referential integrity.&nbsp;&#160;I understand the need&#44; just not =
how we&#39;d<br>&gt; pull<br>&gt; &gt; it off especially w/o producing a =
major house of cards to implement.<br>&gt; &gt; Event notification from =
the backing store&#44; if even possible&#44; would<br>&gt; still<br>&gt; =
&gt; not be guaranteed to be reliable.&nbsp;&#160;Maybe doing the best we =
can is<br>&gt; better<br>&gt; &gt; than no guarantee whatsoever.<br>&gt; =
&gt;<br>&gt; &gt; Tom<br>&gt; &gt;<br>&gt;<br>&gt; ________________________=
_______________________<br>&gt; higgins-dev mailing list<br>&gt; <a =
href=3D"mailto:higgins-dev@xxxxxxxxxxx";>higgins-dev@xxxxxxxxxxx</a><br>&gt;=
 <a href=3D"https://dev.eclipse.org/mailman/listinfo/higgins-dev"; =
target=3D"_blank">https://dev.eclipse.org/mailman/listinfo/higgins-dev</a><=
br>&gt;<br>&gt;<br>&gt; ------------------- TEXT.htm follows --------------=
-----<br>&gt; &lt;html&gt;<br>&gt;&nbsp;&#160;&nbsp;&lt;head&gt;<br>&gt;&nb=
sp;&#160;&nbsp;&#160;&nbsp;&lt;style type&#61;3D&quot;text/css&quot;&gt;<br=
>&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#160;&nbsp;&lt;&#33;--<br>&gt;&nbsp;&#1=
60;&nbsp;&#160;&nbsp;&#160;&nbsp;&#160;&nbsp;body&nbsp;&#123;&nbsp;font-var=
iant: normal&#59; margin-left: 4px&#59; margin-bottom:<br>1px&#59;<br>&gt; =
&#61;<br>&gt; line-height: normal&#59; margin-top: 4px&#59; margin-right: =
4px&nbsp;&#125;<br>&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#160;&nbsp;&#160;&nbs=
p;p&nbsp;&#123;&nbsp;margin-bottom: 0&#59; margin-top: 0&nbsp;&#125;<br>&gt=
;&nbsp;&#160;&nbsp;&#160;&nbsp;&#160;&nbsp;--&gt;<br>&gt;&nbsp;&#160;&nbsp;=
&#160;&nbsp;&lt;/style&gt;<br>&gt;&nbsp;&#160;&nbsp;&#160;&#61;20<br>&gt;&n=
bsp;&#160;&nbsp;&lt;/head&gt;<br>&gt;&nbsp;&#160;&nbsp;&lt;body style&#61;3=
D&quot;margin-left: 4px&#59; margin-bottom: 1px&#59; margin-top:<br>4px&#59=
; &#61;<br>&gt; margin-right: 4px&quot;&gt;<br>&gt;&nbsp;&#160;&nbsp;&#160;=
&nbsp;&lt;p style&#61;3D&quot;margin-bottom: 0&#59; margin-top: 0&quot;&gt;=
<br>&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#160;&nbsp;&lt;font face&#61;3D&quot=
;Dialog&quot; size&#61;3D&quot;2&quot;&gt;How does it help an application<b=
r>to<br>&gt; &#61;<br>&gt; know whether a context&amp;&#35;39&#59;s =
entityIDs are mutable&amp;&#35;63&#59; &amp;nbsp&#59;Does<br>that =
&#61;<br>&gt; tell the client that they&amp;&#35;39&#59;d better not use =
this Higgins policy<br>objects<br>&gt; &#61;<br>&gt; &amp;&#35;40&#59;at =
least none that refer to entities as subjects or<br>&gt; resources&amp;&#35=
;41&#59;&amp;&#35;63&#61;<br>&gt; &#59; &lt;/font&gt;&nbsp;&#160;&nbsp;&#16=
0;&lt;/p&gt;<br>&gt; &lt;br&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#61;20<br>&gt=
;&nbsp;&#160;&nbsp;&#160;&nbsp;&lt;p style&#61;3D&quot;margin-bottom: =
0&#59; margin-top: 0&quot;&gt;<br>&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#160;&=
nbsp;&lt;br&gt;<br>&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#160;&nbsp;&lt;br&gt;=
<br>&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#160;&nbsp;&amp;gt&#59;&amp;gt&#59;&=
amp;gt&#59; &amp;quot&#59;Drummond Reed&amp;quot&#59;<br>&gt; &amp;<a =
href=3D"mailto:lt%3Bdrummond.reed@xxxxxxxxxxxx";>lt&#59;drummond.reed@cordan=
ce.net</a>&#61;<br>&gt; &amp;gt&#59; 09/15/08 9:59 PM &amp;gt&#59;&amp;gt&#=
59;&amp;gt&#59;&lt;br&gt;Okay&amp;&#35;44&#59; after talking with<br>Markus=
<br>&gt; &#61;<br>&gt; and Paul on the phone&amp;&#35;44&#59; and =
gathering the&lt;br&gt;last round of comments<br>in<br>&gt; &#61;<br>&gt; =
email&amp;&#35;44&#59; I did another update to&lt;br&gt;&lt;a<br>&gt; =
href&#61;3D&quot;<a href=3D"http://wiki.eclipse.org/En=3D"; target=3D"_blank=
">http://wiki.eclipse.org/En&#61;</a><br>&gt;<br>tityId_Requirements.&quot;=
&gt;<a href=3D"http://wiki.eclipse.org/EntityId_Requirements"; target=3D"_bl=
ank">http://wiki.eclipse.org/EntityId_Requirements</a>.&lt;/a&gt;&amp;n<br>=
&gt; b&#61;<br>&gt; sp&#59;This should really be called&lt;br&gt;&amp;quot&=
#59;EntityId Requirements for<br>Context<br>&gt; &#61;<br>&gt; Data Model =
1.1&amp;quot&#59;&amp;&#35;44&#59; since what we&amp;&#35;39&#59;re =
talking&lt;br&gt;about here<br>is &#61;<br>&gt; the delta between what we =
have in 1.0 and 1.1.&lt;br&gt;&lt;br&gt;The current<br>state as<br>&gt; =
&#61;<br>&gt; I understand it in 1.0 is that the entityId parameter&lt;br&g=
t;to the<br>getEntity<br>&gt; &#61;<br>&gt; method on IContext interface:&l=
t;br&gt;&lt;br&gt;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;1. Is =
of type &#61;<br>&gt; string &amp;&#35;40&#59;confirm&amp;&#35;63&#59;&amp;=
&#35;41&#59;&lt;br&gt;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;2. =
Has cardinality<br>&#61;<br>&gt; 0..1&lt;br&gt;&amp;&#35;160&#59;&amp;&#35;=
160&#59;&amp;nbsp&#59;3. MUST be Context-unique&amp;&#35;59&#59; MAY =
be<br>globally &#61;<br>&gt; unique.&lt;br&gt;&amp;&#35;160&#59;&amp;&#35;1=
60&#59;&amp;nbsp&#59;4. Is always exposed as an<br>&gt; Attribute.&lt;br&gt=
;&amp;&#35;160&#61;<br>&gt; &#59;&amp;&#35;160&#59;&amp;nbsp&#59;5. =
Exposes no information about<br>mutability.&lt;br&gt;&lt;br&gt;Following<br=
>&gt; &#61;<br>&gt; are the proposed changes in 1.1. Please do comment on =
each<br>&gt; one.&lt;br&gt;&lt;br&gt;&amp;&#35;35&#61;<br>&gt; &#59;1: NOT =
REQUIRE entityId TO BE EXPOSED AS AN ATTRIBUTE&lt;br&gt;&lt;br&gt;The<br>pr=
oposed<br>&gt; &#61;<br>&gt; change is to make EntityId OPTIONAL to expose =
as an<br>Attribute.&lt;br&gt;Contexts<br>&gt; &#61;<br>&gt; that do not =
want to expose the EntityId can omit it from the<br>list&lt;br&gt;of =
&#61;<br>&gt; Attributes for an Entity. Note: if the EntityId is mutable&am=
p;&#35;44&#59; it<br>SHOULD<br>&gt; &#61;<br>&gt; be&lt;br&gt;exposed as =
an Attribute so it can be modified.&lt;br&gt;&lt;br&gt;&amp;&#35;35&#59;2:<=
br>ADD &#61;<br>&gt; getEntityIdsMutable METHOD&lt;br&gt;&lt;br&gt;The =
proposed change is to add a &#61;<br>&gt; getEntityIdsMutable&amp;&#35;40&#=
59;&amp;&#35;41&#59; method on IContext&lt;br&gt;that returns a<br>Boolean<=
br>&gt; &#61;<br>&gt; indicating whether EntityIds in that Context =
are&lt;br&gt;mutable or not.<br>True &#61;<br>&gt; &amp;&#35;61&#59; =
mutable.&lt;br&gt;&lt;br&gt;&amp;&#35;35&#59;3: ADD getIdentifiers =
METHOD&lt;br&gt;&lt;br&gt;The &#61;<br>&gt; proposed change is to add a =
getIdentifiers&amp;&#35;40&#59;&amp;&#35;41&#59; method on IEntity<br>&#61;=
<br>&gt; that&lt;br&gt;returns all Identifiers for an Entity &amp;&#35;40&#=
59;0..n&amp;&#35;41&#59;. By<br>&gt; definition&#61;<br>&gt;&nbsp;&#160;thi=
s would&lt;br&gt;return all identifiers that the Context considers to =
be<br>&#61;<br>&gt; synonyms of the&lt;br&gt;EntityId&amp;&#35;44&#59; =
even if the EntityId was not among<br>the &#61;<br>&gt; values returned.&lt=
;br&gt;&lt;br&gt;&amp;&#35;35&#59;4: MULTI-PART KEYS&lt;br&gt;&lt;br&gt;The=
 proposal is<br>to<br>&gt; &#61;<br>&gt; keep it simple by requiring =
multi-part keys to be&lt;br&gt;serialized into a<br>&#61;<br>&gt; =
composite identifier&amp;&#35;44&#59; which can then be used as an&lt;br&gt=
;EntityId or<br>&#61;<br>&gt; exposed as an Identifiers attribute.&lt;br&gt=
;&lt;br&gt;Again&amp;&#35;44&#59; comments<br>welcome so<br>&gt; &#61;<br>&=
gt; we can close this.&lt;br&gt;&lt;br&gt;&amp;&#35;61&#59;Drummond&lt;br&g=
t;&lt;br&gt;&amp;gt&#59; -----Original &#61;<br>&gt; Message-----&lt;br&gt;=
&amp;gt&#59; From: <a href=3D"mailto:higgins-dev-bounces@xxxxxxxxxxx";>higgi=
ns-dev-bounces@xxxxxxxxxxx</a><br>&gt; &amp;&#35;91&#59;mailto:<a =
href=3D"mailto:higg";>higg</a>&#61;<br>&gt; ins-dev-&lt;br&gt;&amp;gt&#59; =
<a href=3D"mailto:bounces@xxxxxxxxxxx";>bounces@xxxxxxxxxxx</a>&amp;&#35;93&=
#59; On Behalf Of Tom<br>Doman&lt;br&gt;&amp;gt&#59; &#61;<br>&gt; Sent: =
Monday&amp;&#35;44&#59; September 15&amp;&#35;44&#59; 2008 1:34 PM&lt;br&gt=
;&amp;gt&#59; To:<br>&amp;&#35;39&#59;Higgins<br>&gt; &#61;<br>&gt; =
&amp;&#35;40&#59;Trust Framework&amp;&#35;41&#59; Project developer =
discussions&amp;&#35;39&#59;&lt;br&gt;&amp;gt&#59; &#61;<br>&gt; Subject: =
RE: EntityId decision analysis page&amp;&#35;40&#59;wasRE:&amp;&#35;91&#59;=
higgins-<br>&gt; dev&amp;&#35;93&#61;<br>&gt; &#59;entityID&lt;br&gt;&amp;g=
t&#59; not an attribute&amp;&#35;63&#59;&amp;&#35;41&#59;&lt;br&gt;&amp;gt&=
#59;&lt;br&gt;&amp;gt&#59;<br>&gt; &amp;&#35;43&#59;1&lt;br&gt;&amp;gt&#59;=
&#61;<br>&gt; &lt;br&gt;&amp;gt&#59; On &amp;&#35;35&#59;1&amp;&#35;44&#59;=
 I think more complex could get CP implementors<br>&#61;<br>&gt; into =
some&lt;br&gt;&amp;gt&#59; difficult situations though that&amp;&#35;39&#59=
;s just a hunch<br>w/o<br>&gt; &#61;<br>&gt; concrete examples.&lt;br&gt;&a=
mp;gt&#59; But&amp;&#35;44&#59; like Jim&amp;&#35;44&#59; I prefer<br>&gt; =
simple.&lt;br&gt;&amp;gt&#59;&lt;&#61;<br>&gt; br&gt;&amp;gt&#59; On =
&amp;quot&#59;another question&amp;quot&#59;&amp;&#35;44&#59; I don&amp;&#3=
5;39&#59;t see how we<br>could<br>&gt; &#61;<br>&gt; guarantee immutability=
&lt;br&gt;&amp;gt&#59; or referential integrity.&amp;&#35;160&#59;&amp;nbsp=
&#59;I<br>&#61;<br>&gt; understand the need&amp;&#35;44&#59; just not how =
we&amp;&#35;39&#59;d pull&lt;br&gt;&amp;gt&#59; it off &#61;<br>&gt; =
especially w/o producing a major house of cards to implement.&lt;br&gt;&amp=
;gt&#59;<br>&#61;<br>&gt; Event notification from the backing store&amp;&#3=
5;44&#59; if even possible&amp;&#35;44&#59;<br>would<br>&gt; &#61;<br>&gt; =
still&lt;br&gt;&amp;gt&#59; not be guaranteed to be reliable.&amp;&#35;160&=
#59;&amp;nbsp&#59;Maybe doing<br>the<br>&gt; &#61;<br>&gt; best we can is =
better&lt;br&gt;&amp;gt&#59; than no guarantee<br>&gt; whatsoever.&lt;br&gt=
;&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&#61;<br>&gt;<br>&gt;<br>Tom&lt;br&gt;&a=
mp;gt&#59;&lt;br&gt;&lt;br&gt;_____________________________________________=
__&lt;br&gt;higg<br>&gt; &#61;<br>&gt; ins-dev mailing list&lt;br&gt;<a =
href=3D"mailto:higgins-dev@xxxxxxxxxxx";>higgins-dev@xxxxxxxxxxx</a>&lt;br&g=
t;&lt;a<br>&gt; href&#61;3D&quot;<a href=3D"https://dev.e"; target=3D"_blank=
">https://dev.e</a>&#61;<br>&gt;<br><a href=3D"http://clipse.org/mailman/li=
stinfo/higgins" target=3D"_blank">clipse.org/mailman/listinfo/higgins</a>&q=
uot;&gt;<a href=3D"https://dev.eclipse.org/mailman/listi"; target=3D"_blank"=
>https://dev.eclipse.org/mailman/listi</a><br>&gt; n&#61;<br>&gt; =
fo/higgins&lt;/a&gt;-dev&lt;br&gt;<br>&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&lt=
;/p&gt;<br>&gt;&nbsp;&#160;&nbsp;&lt;/body&gt;<br>&gt; &lt;/html&gt;<br>&gt=
; _______________________________________________<br>&gt; higgins-dev =
mailing list<br>&gt; <a href=3D"mailto:higgins-dev@xxxxxxxxxxx";>higgins-dev=
@eclipse.org</a><br>&gt; <a href=3D"https://dev.eclipse.org/mailman/listinf=
o/higgins-dev" target=3D"_blank">https://dev.eclipse.org/mailman/listinfo/h=
iggins-dev</a><br><br>_______________________________________________<br>hi=
ggins-dev mailing list<br><a href=3D"mailto:higgins-dev@xxxxxxxxxxx";>higgin=
s-dev@xxxxxxxxxxx</a><br><a href=3D"https://dev.eclipse.org/mailman/listinf=
o/higgins-dev" target=3D"_blank">https://dev.eclipse.org/mailman/listinfo/h=
iggins-dev</a><br><br><br>------------------- TEXT.htm follows ------------=
-------<br>&lt;html&gt;<br>&#160;&lt;head&gt;<br>&#160;&nbsp;&#160;&lt;styl=
e type&#61;3D&quot;text/css&quot;&gt;<br>&#160;&nbsp;&#160;&nbsp;&#160;&lt;=
&#33;--<br>              </p>
            </div>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &#160;&nbsp;&#160;&nbsp;&#160;&nbsp;&#160;body&nbsp;&#123;&nbsp=
;line-height: normal&#59; font-variant: normal&#59; margin-bottom: =
&#61;<br>1px&#59; margin-top: 4px&#59; margin-left: 4px&#59; margin-right: =
4px&nbsp;&#125;<br>&#160;&nbsp;&#160;&nbsp;&#160;&nbsp;&#160;p&nbsp;&#123;&=
nbsp;margin-top: 0&#59; margin-bottom: 0&nbsp;&#125;<br>&#160;&nbsp;&#160;&=
nbsp;&#160;--&gt;<br>&#160;&nbsp;&#160;&lt;/style&gt;<br>&#160;&nbsp;&#61;2=
0<br>&#160;&lt;/head&gt;<br>&#160;&lt;body style&#61;3D&quot;margin-left: =
4px&#59; margin-top: 4px&#59; margin-bottom: 1px&#59; &#61;<br>          =
</p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              margin-right: 4px&quot;&gt;<br>&#160;&nbsp;&#160;&lt;p =
style&#61;3D&quot;margin-bottom: 0&#59; margin-top: 0&quot;&gt;<br>        =
    </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &#160;&nbsp;&#160;&nbsp;&#160;&lt;font size&#61;3D&quot;2&quot;=
 face&#61;3D&quot;Dialog&quot;&gt;This is interesting. &amp;nbsp&#59;So&amp=
;&#35;44&#59; &#61;<br>further... Maybe we could define our policy objects =
such when one is going &#61;<br>about the business of specifying an entity =
&amp;&#35;40&#59;as a subject or resource&amp;&#35;4&#61;<br>1&#59;&amp;&#3=
5;44&#59; instead of allowing any old string or textual identifier to be =
&#61;<br>passed there&amp;&#35;44&#59; one must actually pass an IEntity. =
&amp;nbsp&#59;That way&amp;&#35;44&#59; &#61;<br>the policy object could =
be sure to call getCanonicalID. &amp;nbsp&#59;Maybe &#61;<br>that&amp;&#35;=
39&#59;s heavy-handed. &amp;nbsp&#59;I just hate leaving gapping holes =
lying &#61;<br>around for people to stumble into.&lt;/font&gt;&nbsp;&#160;&=
nbsp;&#160;&lt;/p&gt;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              &lt;br&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#61;20<br>&#160;&nbs=
p;&#160;&lt;p style&#61;3D&quot;margin-bottom: 0&#59; margin-top: =
0&quot;&gt;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &#160;&nbsp;&#160;&nbsp;&#160;&lt;font size&#61;3D&quot;2&quot;=
 face&#61;3D&quot;Dialog&quot;&gt;Anyway to repeat... An Entity could =
&#61;<br>be referred to by it&amp;&#35;39&#59;s &amp;&#35;39&#59;human-frie=
ndly&amp;&#35;39&#59; entityID which &#61;<br>isn&amp;&#35;39&#59;t =
guaranteed to always be able to find the same entity &amp;&#35;40&#59;thoug=
h &#61;<br>one imagines confidence being at least medium to med-high&amp;&#=
35;41&#59;&amp;&#35;44&#59; and &#61;<br>also possibly be referred to by =
its canonical entityID &amp;&#35;40&#59;which may or &#61;<br>may not be =
less aesthetically pleasing to humans&amp;&#35;41&#59; which is guaranteed =
&#61;<br>to get you back to the original entity. &amp;nbsp&#59;I think =
this may be an &#61;<br>example of what Tony was talking about when he was =
saying &amp;quot&#59;an entity &#61;<br>could have multiple entity =
identifiers&amp;quot&#59;&lt;/font&gt;&nbsp;&#160;&nbsp;&#160;&lt;/p&gt;<br=
>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              &lt;br&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#61;20<br>&#160;&nbs=
p;&#160;&lt;p style&#61;3D&quot;margin-bottom: 0&#59; margin-top: =
0&quot;&gt;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &#160;&nbsp;&#160;&nbsp;&#160;&lt;font size&#61;3D&quot;2&quot;=
 face&#61;3D&quot;Dialog&quot;&gt;we could just overload getEntityID =
&#61;<br>to take a bool bEnsureCanonical arg. &amp;nbsp&#59;Also&amp;&#35;4=
4&#59; the following could &#61;<br>be used to test whether an entityID is =
canonical &amp;&#35;40&#59;assuming EntityID&amp;&#35;39&#61;<br>&#59;s =
are Strings here:&lt;/font&gt;&nbsp;&#160;&nbsp;&#160;&lt;/p&gt;<br>       =
   </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              &lt;br&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#61;20<br>&#160;&nbs=
p;&#160;&lt;p style&#61;3D&quot;margin-bottom: 0&#59; margin-top: =
0&quot;&gt;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &#160;&nbsp;&#160;&nbsp;&#160;&lt;font size&#61;3D&quot;2&quot;=
 face&#61;3D&quot;Dialog&quot;&gt;String friendlyID &amp;&#35;61&#59; =
myEntity.get&#61;<br>EntityID&amp;&#35;40&#59;&amp;&#35;41&#59;&amp;&#35;59=
&#59;&lt;/font&gt;&nbsp;&#160;&nbsp;&#160;&lt;/p&gt;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              &#160;&nbsp;&#160;&lt;p style&#61;3D&quot;margin-bottom: =
0&#59; margin-top: 0&quot;&gt;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &#160;&nbsp;&#160;&nbsp;&#160;&lt;font size&#61;3D&quot;2&quot;=
 face&#61;3D&quot;Dialog&quot;&gt;String canonicalID &amp;&#35;61&#59; =
myEntity.ge&#61;<br>tEntityID&amp;&#35;40&#59;true&amp;&#35;41&#59;&amp;&#3=
5;59&#59;&lt;/font&gt;&nbsp;&#160;&nbsp;&#160;&lt;/p&gt;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              &lt;br&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#61;20<br>&#160;&nbs=
p;&#160;&lt;p style&#61;3D&quot;margin-bottom: 0&#59; margin-top: =
0&quot;&gt;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &#160;&nbsp;&#160;&nbsp;&#160;&lt;font size&#61;3D&quot;2&quot;=
 face&#61;3D&quot;Dialog&quot;&gt;if &amp;&#35;40&#59;friendlyID &amp;&#35;=
33&#59;&amp;&#35;61&#59;null &#61;<br>&amp;amp&#59;&amp;amp&#59; canonicalI=
D &amp;&#35;33&#59;&amp;&#35;61&#59; null &amp;amp&#59;&amp;amp&#59; =
friendlyID.equals&amp;&#35;40&#59;can&#61;<br>onicalID&amp;&#35;41&#59;&amp=
;&#35;41&#59;&amp;nbsp&#59;&amp;&#35;123&#59;&lt;/font&gt;&nbsp;&#160;&nbsp=
;&#160;&lt;/p&gt;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              &#160;&nbsp;&#160;&lt;p style&#61;3D&quot;margin-bottom: =
0&#59; margin-top: 0&quot;&gt;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &#160;&nbsp;&#160;&nbsp;&#160;&lt;font size&#61;3D&quot;2&quot;=
 face&#61;3D&quot;Dialog&quot;&gt;&amp;nbsp&#59;&amp;nbsp&#59;&amp;nbsp&#59=
;// the entity has &#61;<br>a friendly id and it is canonical.&lt;/font&gt;=
&nbsp;&#160;&nbsp;&#160;&lt;/p&gt;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              &#160;&nbsp;&#160;&lt;p style&#61;3D&quot;margin-bottom: =
0&#59; margin-top: 0&quot;&gt;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &#160;&nbsp;&#160;&nbsp;&#160;&lt;font size&#61;3D&quot;2&quot;=
 face&#61;3D&quot;Dialog&quot;&gt;&amp;&#35;125&#59;&lt;/font&gt;&nbsp;&#16=
0;&nbsp;&#160;&lt;/p&gt;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              &lt;br&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#61;20<br>&#160;&nbs=
p;&#160;&lt;p style&#61;3D&quot;margin-bottom: 0&#59; margin-top: =
0&quot;&gt;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &#160;&nbsp;&#160;&nbsp;&#160;&lt;font size&#61;3D&quot;2&quot;=
 face&#61;3D&quot;Dialog&quot;&gt;of course&amp;&#35;44&#59; one interested=
 in &#61;<br>the canonical id would simply get that and use it.&lt;/font&gt=
;&nbsp;&#160;&nbsp;&#160;&lt;/p&gt;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              &lt;br&gt;&nbsp;&#160;&nbsp;&#160;&nbsp;&#61;20<br>&#160;&nbs=
p;&#160;&lt;p style&#61;3D&quot;margin-bottom: 0&#59; margin-top: =
0&quot;&gt;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            &#160;&nbsp;&#160;&nbsp;&#160;&lt;font size&#61;3D&quot;2&quot;=
 face&#61;3D&quot;Dialog&quot;&gt;Jim&lt;/font&gt;&lt;br&gt;&lt;br&gt;&amp;=
gt&#59;&amp;gt&#59;&amp;gt&#59; &#61;<br>&amp;quot&#59;Drummond Reed&amp;qu=
ot&#59; &amp;<a href=3D"mailto:lt%3Bdrummond.reed@xxxxxxxxxxxx";>lt&#59;drum=
mond.reed@xxxxxxxxxxxx</a>&amp;gt&#59; 09/16/08 2:04 &#61;<br>PM &amp;gt&#5=
9;&amp;gt&#59;&amp;gt&#59;&lt;br&gt;Yes&amp;&#35;44&#59; it&amp;&#35;39&#59=
;s a good point Jim - all a getEntityIdsM&#61;<br>utable method could do =
is&lt;br&gt;serve as an input to a application making &#61;<br>policy =
decisions.&lt;br&gt;&lt;br&gt;More useful might be a method for asking an =
&#61;<br>Entity specifically for an&lt;br&gt;immutable EntityId. Call it =
getCanonicalId. &#61;<br>The rule would be that it always&lt;br&gt;returns =
one EntityId value that the &#61;<br>Context asserts is the immutable&lt;br=
&gt;canonical identifier for that Entity &#61;<br>in that Context.&lt;br&gt=
;&lt;br&gt;If the Context does not support immutable &#61;<br>identifiers&a=
mp;&#35;44&#59; then getCanonicalId&lt;br&gt;will return an error&amp;&#35;=
44&#59; and the &#61;<br>application can plan accordingly. But I&lt;br&gt;s=
uspect the value of having an &#61;<br>immutable reference would incent =
CPs to&lt;br&gt;support this method.&lt;br&gt;&lt;br&gt;&amp;&#35;61&#61;<b=
r>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              &#59;Drummond&lt;br&gt;&lt;br&gt;&amp;gt&#59; -----Original =
Message-----&lt;br&gt;&amp;gt&#59; From: higgins-dev-&#61;<br>            =
</p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            <a href=3D"mailto:bounces@xxxxxxxxxxx";>bounces@xxxxxxxxxxx</a>&=
nbsp;&amp;&#35;91&#59;mailto:<a href=3D"mailto:higgins-dev-";>higgins-dev-</=
a>&lt;br&gt;&amp;gt&#59; <a href=3D"mailto:bounces@xxxxxxxxxxx";>bounces@ecl=
ipse.org</a>&amp;&#35;9&#61;<br>3&#59; On Behalf Of Jim Sermersheim&lt;br&g=
t;&amp;gt&#59; Sent: Monday&amp;&#35;44&#59; September &#61;<br>15&amp;&#35=
;44&#59; 2008 11:01 PM&lt;br&gt;&amp;gt&#59; To: &amp;&#35;39&#59;Higgins =
&amp;&#35;40&#59;Trust Framework&amp;&#35;41&#59; &#61;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              Project developer discussions&amp;&#35;39&#59;&lt;br&gt;&amp;=
gt&#59; Subject: RE: EntityId decision &#61;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            analysis page &amp;&#35;40&#59;wasRE:&amp;&#35;91&#59;higgins-d=
ev&amp;&#35;93&#59;entityID&lt;br&gt;&amp;gt&#59; notan &#61;<br>attribute&=
amp;&#35;63&#59;&amp;&#35;41&#59;&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#5=
9; How does it help an application to &#61;<br>know whether a context&amp;&=
#35;39&#59;s entityIDs&lt;br&gt;&amp;gt&#59; are mutable&amp;&#35;63&#59;&a=
mp;&#35;160&#59;&amp;nbsp&#59;&#61;<br>Does that tell the client that =
they&amp;&#35;39&#59;d better not use this&lt;br&gt;&amp;gt&#59; &#61;<br> =
         </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              Higgins policy objects &amp;&#35;40&#59;at least none that =
refer to entities as &#61;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            subjects&lt;br&gt;&amp;gt&#59; or resources&amp;&#35;41&#59;&am=
p;&#35;63&#59;&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt=
&#59;&lt;br&gt;&amp;gt&#59; &#61;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              &amp;gt&#59;&amp;gt&#59;&amp;gt&#59; &amp;quot&#59;Drummond =
Reed&amp;quot&#59; &amp;<a href=3D"mailto:lt%3Bdrummond.reed@xxxxxxxxxxxx";>=
lt&#59;drummond.reed@xxxxxxxxxxxx</a>&amp;gt&#59; &#61;<br>            =
</p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            09/15/08 9:59 PM &amp;gt&#59;&amp;gt&#59;&amp;gt&#59;&lt;br&gt;=
&amp;gt&#59; Okay&amp;&#35;44&#59; after talking with Markus &#61;<br>and =
Paul on the phone&amp;&#35;44&#59; and gathering the&lt;br&gt;&amp;gt&#59; =
last round of &#61;<br>comments in email&amp;&#35;44&#59; I did another =
update to&lt;br&gt;&amp;gt&#59; &lt;a href&#61;3D&quot;<a href=3D"http://wi=
" target=3D"_blank">http://wi</a>&#61;<br><a href=3D"http://ki.eclipse.org/=
EntityId_Requirements" target=3D"_blank">ki.eclipse.org/EntityId_Requiremen=
ts</a>.&quot;&gt;<a href=3D"http://wiki.eclipse.org/EntityId_Req=3D"; =
target=3D"_blank">http://wiki.eclipse.org/EntityId_Req&#61;</a><br>uirement=
s.&lt;/a&gt;&amp;nbsp&#59;This should really be&lt;br&gt;&amp;gt&#59; =
called&lt;br&gt;&amp;gt&#59; &amp;quot&#59;Enti&#61;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              tyId Requirements for Context Data Model 1.1&amp;quot&#59;&am=
p;&#35;44&#59; since what &#61;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            we&amp;&#35;39&#59;re&lt;br&gt;&amp;gt&#59; talking&lt;br&gt;&a=
mp;gt&#59; about here is the delta between what we &#61;<br>have in 1.0 =
and 1.1.&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59; The current state as =
I understand it &#61;<br>in 1.0 is that the entityId&lt;br&gt;&amp;gt&#59; =
parameter&lt;br&gt;&amp;gt&#59; to the getEntity &#61;<br>method on =
IContext interface:&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&amp;&#35;16=
0&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;1. Is &#61;<br>of =
type string &amp;&#35;40&#59;confirm&amp;&#35;63&#59;&amp;&#35;41&#59;&lt;b=
r&gt;&amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp=
;nbsp&#59;2. &#61;<br>Has cardinality 0..1&lt;br&gt;&amp;gt&#59;&amp;&#35;1=
60&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;3. MUST be =
Context-uniq&#61;<br>ue&amp;&#35;59&#59; MAY be globally unique.&lt;br&gt;&=
amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&=
#59;4. Is &#61;<br>always exposed as an Attribute.&lt;br&gt;&amp;gt&#59;&am=
p;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;5. =
Exposes &#61;<br>no information about mutability.&lt;br&gt;&amp;gt&#59;&lt;=
br&gt;&amp;gt&#59; Following are the &#61;<br>proposed changes in 1.1. =
Please do comment on each&lt;br&gt;&amp;gt&#59; one.&lt;br&gt;&amp;gt&#59;&=
lt;br&gt;&#61;<br>&amp;gt&#59; &amp;&#35;35&#59;1: NOT REQUIRE entityId TO =
BE EXPOSED AS AN ATTRIBUTE&lt;br&gt;&amp;gt&#59;&lt;br&gt;&#61;<br>&amp;gt&=
#59; The proposed change is to make EntityId OPTIONAL to expose as =
&#61;<br>an&lt;br&gt;&amp;gt&#59; Attribute.&lt;br&gt;&amp;gt&#59; =
Contexts that do not want to expose the &#61;<br>EntityId can omit it from =
the&lt;br&gt;&amp;gt&#59; list&lt;br&gt;&amp;gt&#59; of Attributes for an =
&#61;<br>Entity. Note: if the EntityId is mutable&amp;&#35;44&#59; it =
SHOULD&lt;br&gt;&amp;gt&#59; be&lt;br&gt;&amp;gt&#59; &#61;<br>exposed as =
an Attribute so it can be modified.&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&=
#59; &amp;&#35;35&#59;2: ADD &#61;<br>getEntityIdsMutable METHOD&lt;br&gt;&=
amp;gt&#59;&lt;br&gt;&amp;gt&#59; The proposed change is to add a =
&#61;<br>getEntityIdsMutable&amp;&#35;40&#59;&amp;&#35;41&#59; method on =
IContext&lt;br&gt;&amp;gt&#59; that returns a &#61;<br>Boolean indicating =
whether EntityIds in that Context are&lt;br&gt;&amp;gt&#59; mutable =
&#61;<br>or not. True &amp;&#35;61&#59; mutable.&lt;br&gt;&amp;gt&#59;&lt;b=
r&gt;&amp;gt&#59; &amp;&#35;35&#59;3: ADD getIdentifiers &#61;<br>METHOD&lt=
;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59; The proposed change is to add a =
getIdentifiers&amp;&#35;40&#59;&amp;&#61;<br>&#35;41&#59; method on =
IEntity that&lt;br&gt;&amp;gt&#59; returns all Identifiers for an Entity =
&#61;<br>&amp;&#35;40&#59;0..n&amp;&#35;41&#59;. By definition this =
would&lt;br&gt;&amp;gt&#59; return all identifiers &#61;<br>that the =
Context considers to be synonyms of the&lt;br&gt;&amp;gt&#59; EntityId&amp;=
&#35;44&#59; &#61;<br>even if the EntityId was not among the values =
returned.&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59; &#61;<br>&amp;&#35;35=
&#59;4: MULTI-PART KEYS&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59; The =
proposal is to keep it simple &#61;<br>by requiring multi-part keys to =
be&lt;br&gt;&amp;gt&#59; serialized into a composite &#61;<br>identifier&am=
p;&#35;44&#59; which can then be used as an&lt;br&gt;&amp;gt&#59; EntityId =
or exposed &#61;<br>as an Identifiers attribute.&lt;br&gt;&amp;gt&#59;&lt;b=
r&gt;&amp;gt&#59; Again&amp;&#35;44&#59; comments welcome &#61;<br>so we =
can close this.&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59; &amp;&#35;61&#5=
9;Drummond&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59; &amp;gt&#59; =
&#61;<br>-----Original Message-----&lt;br&gt;&amp;gt&#59; &amp;gt&#59; =
From: higgins-dev-bounces@eclipse.o&#61;<br>rg &amp;&#35;91&#59;mailto:<a =
href=3D"mailto:higgins-dev-";>higgins-dev-</a>&lt;br&gt;&amp;gt&#59; =
&amp;gt&#59; <a href=3D"mailto:bounces@xxxxxxxxxxx";>bounces@xxxxxxxxxxx</a>=
&amp;&#35;93&#59; On &#61;<br>Behalf Of Tom Doman&lt;br&gt;&amp;gt&#59; =
&amp;gt&#59; Sent: Monday&amp;&#35;44&#59; September 15&amp;&#35;44&#59; =
2008 &#61;<br>1:34 PM&lt;br&gt;&amp;gt&#59; &amp;gt&#59; To: &amp;&#35;39&#=
59;Higgins &amp;&#35;40&#59;Trust Framework&amp;&#35;41&#59; Project =
&#61;<br>developer discussions&amp;&#35;39&#59;&lt;br&gt;&amp;gt&#59; =
&amp;gt&#59; Subject: RE: EntityId decision &#61;<br>analysis&lt;br&gt;&amp=
;gt&#59; page&amp;&#35;40&#59;wasRE:&amp;&#35;91&#59;higgins-dev&amp;&#35;9=
3&#59;entityID&lt;br&gt;&amp;gt&#59; &amp;gt&#59; &#61;<br>not an =
attribute&amp;&#35;63&#59;&amp;&#35;41&#59;&lt;br&gt;&amp;gt&#59; =
&amp;gt&#59;&lt;br&gt;&amp;gt&#59; &amp;gt&#59; &amp;&#35;43&#59;1&lt;br&gt=
;&amp;gt&#59; &#61;<br>&amp;gt&#59;&lt;br&gt;&amp;gt&#59; &amp;gt&#59; On =
&amp;&#35;35&#59;1&amp;&#35;44&#59; I think more complex could get CP =
&#61;<br>implementors into some&lt;br&gt;&amp;gt&#59; &amp;gt&#59; =
difficult situations though that&amp;&#35;39&#59;s &#61;<br>just a hunch =
w/o concrete examples.&lt;br&gt;&amp;gt&#59; &amp;gt&#59; But&amp;&#35;44&#=
59; like Jim&amp;&#35;44&#59; I &#61;<br>prefer simple.&lt;br&gt;&amp;gt&#5=
9; &amp;gt&#59;&lt;br&gt;&amp;gt&#59; &amp;gt&#59; On &amp;quot&#59;another=
 question&amp;quot&#59;&amp;&#35;4&#61;<br>4&#59; I don&amp;&#35;39&#59;t =
see how we could guarantee immutability&lt;br&gt;&amp;gt&#59; &amp;gt&#59; =
or &#61;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              referential integrity.&amp;&#35;160&#59;&amp;nbsp&#59;I =
understand the need&amp;&#35;44&#59; just not how &#61;<br>            =
</p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            we&amp;&#35;39&#59;d&lt;br&gt;&amp;gt&#59; pull&lt;br&gt;&amp;g=
t&#59; &amp;gt&#59; it off especially w/o producing a major &#61;<br>house =
of cards to implement.&lt;br&gt;&amp;gt&#59; &amp;gt&#59; Event notificatio=
n from the &#61;<br>backing store&amp;&#35;44&#59; if even possible&amp;&#3=
5;44&#59; would&lt;br&gt;&amp;gt&#59; still&lt;br&gt;&amp;gt&#59; =
&amp;gt&#59; &#61;<br>          </p>
          <div class=3D"ih2e3d">
            <p style=3D"margin-bottom: 0; margin-top: 0">
              not be guaranteed to be reliable.&amp;&#35;160&#59;&amp;nbsp&=
#59;Maybe doing the best we can &#61;<br>            </p>
          </div>
          <p style=3D"margin-bottom: 0; margin-top: 0">
            is&lt;br&gt;&amp;gt&#59; better&lt;br&gt;&amp;gt&#59; =
&amp;gt&#59; than no guarantee whatsoever.&lt;br&gt;&amp;gt&#59; &#61;<br>&=
amp;gt&#59;&lt;br&gt;&amp;gt&#59; &amp;gt&#59; Tom&lt;br&gt;&amp;gt&#59; =
&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59; __________________=
______&#61;<br>_______________________&lt;br&gt;&amp;gt&#59; higgins-dev =
mailing list&lt;br&gt;&amp;gt&#59; higgins-de&#61;<br><a href=3D"mailto:v@e=
clipse.org">v@xxxxxxxxxxx</a>&lt;br&gt;&amp;gt&#59; &lt;a href&#61;3D&quot;=
<a href=3D"https://dev.eclipse.org/mailman/listinfo/h=3D"; target=3D"_blank"=
>https://dev.eclipse.org/mailman/listinfo/h&#61;</a><br>iggins&quot;&gt;<a =
href=3D"https://dev.eclipse.org/mailman/listinfo/higgins"; target=3D"_blank"=
>https://dev.eclipse.org/mailman/listinfo/higgins</a>&lt;/a&gt;-dev&lt;br&g=
t;&amp;gt&#59;&lt;br&#61;<br>&gt;&amp;gt&#59;&lt;br&gt;&amp;gt&#59; =
------------------- TEXT.htm follows -------------------&lt;br&gt;&amp;&#61=
;<br>gt&#59; &amp;lt&#59;html&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&amp;&#35;16=
0&#59;&amp;&#35;160&#59;&amp;nbsp&#59;&amp;lt&#59;head&amp;gt&#59;&lt;br&gt=
;&amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#61;<br>&#35;160&#59=
;&amp;&#35;160&#59;&amp;nbsp&#59;&amp;lt&#59;style type&amp;&#35;61&#59;3D&=
amp;quot&#59;text/css&amp;quot&#59;&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&amp;&=
#35;160&#61;<br>&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;=
&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;&amp;lt&#59;&amp;&#35;33&=
#59;--&lt;br&gt;&amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;1=
60&#59;&amp;&#61;<br>&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;=
&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;body&amp;nbsp&#59;&amp;&#35;12=
3&#59;&amp;nbsp&#59;font-variant: &#61;<br>normal&amp;&#35;59&#59; =
margin-left: 4px&amp;&#35;59&#59; margin-bottom: 1px&amp;&#35;59&#59;&lt;br=
&gt;&amp;gt&#59; &#61;<br>&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; =
line-height: normal&amp;&#35;59&#59; margin-top: 4px&amp;&#35;59&#59; =
margin-right: &#61;<br>4px&amp;nbsp&#59;&amp;&#35;125&#59;&lt;br&gt;&amp;gt=
&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#5=
9;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&=
amp;nbs&#61;<br>p&#59;p&amp;nbsp&#59;&amp;&#35;123&#59;&amp;nbsp&#59;margin=
-bottom: 0&amp;&#35;59&#59; margin-top: 0&amp;nbsp&#59;&amp;&#35;125&#59;&l=
t;br&gt;&amp;gt&#61;<br>&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;=
160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59=
;--&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&a=
mp;&#35;160&#59;&#61;<br>&amp;&#35;160&#59;&amp;nbsp&#59;&amp;lt&#59;/style=
&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;=
&#35;160&#59;&amp;nbsp&#59;&amp;&#35;61&#59;20&lt;br&gt;&amp;gt&#59;&amp;&#=
35;&#61;<br>160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;&amp;lt&#59;/head&amp;g=
t&#59;&lt;br&gt;&amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#=
59;&amp;lt&#59;body style&amp;&#35;61&#59;3&#61;<br>D&amp;quot&#59;margin-l=
eft: 4px&amp;&#35;59&#59; margin-bottom: 1px&amp;&#35;59&#59; margin-top: =
4px&amp;&#35;59&#59; &#61;<br>&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; =
margin-right: 4px&amp;quot&#59;&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&amp;&#35;=
160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;n&#61;<b=
r>bsp&#59;&amp;lt&#59;p style&amp;&#35;61&#59;3D&amp;quot&#59;margin-bottom=
: 0&amp;&#35;59&#59; margin-top: 0&amp;quot&#59;&amp;gt&#59;&lt;b&#61;<br>r=
&gt;&amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;=
&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;&amp;lt&#59;=
font face&amp;&#35;61&#59;3D&amp;quot&#59;D&#61;<br>ialog&amp;quot&#59; =
size&amp;&#35;61&#59;3D&amp;quot&#59;2&amp;quot&#59;&amp;gt&#59;How does =
it help an application &#61;<br>to&lt;br&gt;&amp;gt&#59; &amp;&#35;61&#59;&=
lt;br&gt;&amp;gt&#59; know whether a context&amp;amp&#59;&amp;&#35;35&#59;3=
9&amp;&#35;59&#59;s &#61;<br>entityIDs are mutable&amp;amp&#59;&amp;&#35;35=
&#59;63&amp;&#35;59&#59; &amp;amp&#59;nbsp&amp;&#35;59&#59;Does that =
&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#61;<br>&#59; tell the client that =
they&amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;d better not use this =
Higgins &#61;<br>policy objects&lt;br&gt;&amp;gt&#59; &amp;&#35;61&#59;&lt;=
br&gt;&amp;gt&#59; &amp;amp&#59;&amp;&#35;35&#59;40&amp;&#35;59&#59;at =
least none that &#61;<br>refer to entities as subjects or&lt;br&gt;&amp;gt&=
#59; resources&amp;amp&#59;&amp;&#35;35&#59;41&amp;&#35;59&#59;&amp;amp&#59=
;&amp;&#35;3&#61;<br>5&#59;63&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; =
&amp;&#35;59&#59; &amp;lt&#59;/font&amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;=
160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;&amp;lt&#59;/p&amp;gt&#59;&lt;br&gt=
;&#61;<br>&amp;gt&#59; &amp;lt&#59;br&amp;gt&#59;&amp;&#35;160&#59;&amp;&#3=
5;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;&amp;&#35;61&#5=
9;20&lt;br&gt;&amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;1&#=
61;<br>60&#59;&amp;&#35;160&#59;&amp;nbsp&#59;&amp;lt&#59;p style&amp;&#35;=
61&#59;3D&amp;quot&#59;margin-bottom: 0&amp;&#35;59&#59; margin-top: =
&#61;<br>0&amp;quot&#59;&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&amp;&#35;160&#59=
;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&a=
mp;&#35;160&#59;&amp;nbsp&#59;&amp;lt&#59;br&amp;gt&#59;&lt;br&gt;&#61;<br>=
&amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35=
;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;nbsp&#59;&amp;lt&#59;br&a=
mp;gt&#59;&lt;br&gt;&amp;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#61;<br>&#5=
9;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&=
amp;nbsp&#59;&amp;amp&#59;gt&amp;&#35;59&#59;&amp;amp&#59;gt&amp;&#35;59&#5=
9;&amp;amp&#59;gt&amp;&#35;59&#59; &#61;<br>&amp;amp&#59;quot&amp;&#35;59&#=
59;Drummond Reed&amp;amp&#59;quot&amp;&#35;59&#59;&lt;br&gt;&amp;gt&#59; =
&amp;amp&#59;lt&amp;&#35;59&#59;drummond.reed&#61;<br>@<a href=3D"http://co=
rdance.net" target=3D"_blank">cordance.net</a>&amp;&#35;61&#59;&lt;br&gt;&a=
mp;gt&#59; &amp;amp&#59;gt&amp;&#35;59&#59; 09/15/08 9:59 PM &amp;amp&#59;g=
t&amp;&#35;59&#59;&amp;amp&#59;g&#61;<br>t&amp;&#35;59&#59;&amp;amp&#59;gt&=
amp;&#35;59&#59;&amp;lt&#59;br&amp;gt&#59;Okay&amp;amp&#59;&amp;&#35;35&#59=
;44&amp;&#35;59&#59; after talking with &#61;<br>Markus&lt;br&gt;&amp;gt&#5=
9; &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; and Paul on the phone&amp;amp&#5=
9;&amp;&#35;35&#59;44&amp;&#35;59&#59; and &#61;<br>gathering the&amp;lt&#5=
9;br&amp;gt&#59;last round of comments in&lt;br&gt;&amp;gt&#59; &amp;&#35;6=
1&#59;&lt;br&gt;&amp;gt&#59; &#61;<br>email&amp;amp&#59;&amp;&#35;35&#59;44=
&amp;&#35;59&#59; I did another update to&amp;lt&#59;br&amp;gt&#59;&amp;lt&=
#59;a&lt;br&gt;&amp;gt&#59; &#61;<br>href&amp;&#35;61&#59;3D&amp;quot&#59;<=
a href=3D"http://wiki.eclipse.org/En&#61"; target=3D"_blank">http://wiki.ecl=
ipse.org/En&amp;&#35;61</a>&#59;&lt;br&gt;&amp;gt&#59; tityId_Requirement&#=
61;<br>s.&amp;quot&#59;&amp;gt&#59;&lt;a href&#61;3D&quot;<a href=3D"http:/=
/wiki.eclipse.org/EntityId_Requirements" target=3D"_blank">http://wiki.ecli=
pse.org/EntityId_Requirements</a>.&quot;&gt;http&#61;<br>://<a href=3D"http=
://wiki.eclipse.org/EntityId_Requirements" target=3D"_blank">wiki.eclipse.o=
rg/EntityId_Requirements</a>.&lt;/a&gt;&amp;lt&#59;/a&amp;gt&#59;&amp;amp&#=
59;n&lt;br&gt;&amp;gt&#59; &#61;<br>b&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59=
; sp&amp;&#35;59&#59;This should really be called&amp;lt&#59;br&amp;gt&#59;=
&amp;amp&#59;quot&amp;&#35;59&#59;E&#61;<br>ntityId Requirements for =
Context&lt;br&gt;&amp;gt&#59; &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; Data =
Model &#61;<br>1.1&amp;amp&#59;quot&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;=
35&#59;44&amp;&#35;59&#59; since what we&amp;amp&#59;&amp;&#35;35&#59;39&am=
p;&#35;59&#59;re &#61;<br>talking&amp;lt&#59;br&amp;gt&#59;about here is =
&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; the delta between what we =
&#61;<br>have in 1.0 and 1.1.&amp;lt&#59;br&amp;gt&#59;&amp;lt&#59;br&amp;g=
t&#59;The current state as&lt;br&gt;&amp;gt&#59; &#61;<br>&amp;&#35;61&#59;=
&lt;br&gt;&amp;gt&#59; I understand it in 1.0 is that the entityId =
parameter&amp;lt&#59;br&amp;g&#61;<br>t&#59;to the getEntity&lt;br&gt;&amp;=
gt&#59; &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; method on IContext =
interface:&amp;lt&#59;b&#61;<br>r&amp;gt&#59;&amp;lt&#59;br&amp;gt&#59;&amp=
;amp&#59;&amp;&#35;35&#59;160&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59=
;160&amp;&#35;59&#59;&amp;amp&#59;nbsp&amp;&#35;59&#59;1. Is of &#61;<br>ty=
pe &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; string &amp;amp&#59;&amp;&#35;35=
&#59;40&amp;&#35;59&#59;confirm&amp;amp&#59;&amp;&#35;35&#59;63&amp;&#35;59=
&#59;&amp;amp&#59;&amp;&#35;3&#61;<br>5&#59;41&amp;&#35;59&#59;&amp;lt&#59;=
br&amp;gt&#59;&amp;amp&#59;&amp;&#35;35&#59;160&amp;&#35;59&#59;&amp;amp&#5=
9;&amp;&#35;35&#59;160&amp;&#35;59&#59;&amp;amp&#59;nbsp&amp;&#35;59&#59;2.=
 &#61;<br>Has cardinality &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; =
0..1&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;&amp;&#35;35&#59;160&amp;&#35;59=
&#59;&amp;amp&#59;&amp;&#35;35&#59;160&#61;<br>&amp;&#35;59&#59;&amp;amp&#5=
9;nbsp&amp;&#35;59&#59;3. MUST be Context-unique&amp;amp&#59;&amp;&#35;35&#=
59;59&amp;&#35;59&#59; MAY be &#61;<br>globally &amp;&#35;61&#59;&lt;br&gt;=
&amp;gt&#59; unique.&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;&amp;&#35;35&#59=
;160&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;160&amp;&#35;59&#61;<br>=
&#59;&amp;amp&#59;nbsp&amp;&#35;59&#59;4. Is always exposed as an&lt;br&gt;=
&amp;gt&#59; Attribute.&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;&#61;<br>&amp=
;&#35;35&#59;160&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; &amp;&#35;59&#59;&a=
mp;amp&#59;&amp;&#35;35&#59;160&amp;&#35;59&#59;&amp;amp&#59;nbsp&amp;&#35;=
59&#59;5. Exposes no &#61;<br>information about mutability.&amp;lt&#59;br&a=
mp;gt&#59;&amp;lt&#59;br&amp;gt&#59;Following&lt;br&gt;&amp;gt&#59; =
&#61;<br>&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; are the proposed changes =
in 1.1. Please do comment on &#61;<br>each&lt;br&gt;&amp;gt&#59; one.&amp;l=
t&#59;br&amp;gt&#59;&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;&amp;&#35;35&#59=
;35&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; &amp;&#35;59&#59;1: NOT =
&#61;<br>REQUIRE entityId TO BE EXPOSED AS AN ATTRIBUTE&amp;lt&#59;br&amp;g=
t&#59;&amp;lt&#59;br&amp;gt&#59;The &#61;<br>proposed&lt;br&gt;&amp;gt&#59;=
 &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; change is to make EntityId =
OPTIONAL to &#61;<br>expose as an Attribute.&amp;lt&#59;br&amp;gt&#59;Conte=
xts&lt;br&gt;&amp;gt&#59; &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; that do =
&#61;<br>not want to expose the EntityId can omit it from the list&amp;lt&#=
59;br&amp;gt&#59;of &#61;<br>&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; =
Attributes for an Entity. Note: if the EntityId is mutable&amp;am&#61;<br>p=
&#59;&amp;&#35;35&#59;44&amp;&#35;59&#59; it SHOULD&lt;br&gt;&amp;gt&#59; =
&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; be&amp;lt&#59;br&amp;gt&#59;exposed=
 as an &#61;<br>Attribute so it can be modified.&amp;lt&#59;br&amp;gt&#59;&=
amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;&amp;&#35;35&#59;35&amp;&#35;59&#59;2=
: &#61;<br>ADD &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; getEntityIdsMutable =
METHOD&amp;lt&#59;br&amp;gt&#59;&amp;lt&#59;br&amp;gt&#59;The &#61;<br>prop=
osed change is to add a &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; getEntityId=
sMutable&amp;amp&#59;&amp;&#35;35&#59;40&amp;&#35;&#61;<br>59&#59;&amp;amp&=
#59;&amp;&#35;35&#59;41&amp;&#35;59&#59; method on IContext&amp;lt&#59;br&a=
mp;gt&#59;that returns a Boolean&lt;br&gt;&#61;<br>&amp;gt&#59; &amp;&#35;6=
1&#59;&lt;br&gt;&amp;gt&#59; indicating whether EntityIds in that Context =
are&amp;lt&#59;br&amp;g&#61;<br>t&#59;mutable or not. True &amp;&#35;61&#59=
;&lt;br&gt;&amp;gt&#59; &amp;amp&#59;&amp;&#35;35&#59;61&amp;&#35;59&#59; =
mutable.&amp;lt&#59;br&amp;gt&#59;&amp;l&#61;<br>t&#59;br&amp;gt&#59;&amp;a=
mp&#59;&amp;&#35;35&#59;35&amp;&#35;59&#59;3: ADD getIdentifiers METHOD&amp=
;lt&#59;br&amp;gt&#59;&amp;lt&#59;br&amp;gt&#59;Th&#61;<br>e &amp;&#35;61&#=
59;&lt;br&gt;&amp;gt&#59; proposed change is to add a getIdentifiers&amp;am=
p&#59;&amp;&#35;35&#59;40&amp;&#35;59&#59;&#61;<br>&amp;amp&#59;&amp;&#35;3=
5&#59;41&amp;&#35;59&#59; method on IEntity &amp;&#35;61&#59;&lt;br&gt;&amp=
;gt&#59; that&amp;lt&#59;br&amp;gt&#59;returns &#61;<br>all Identifiers =
for an Entity &amp;amp&#59;&amp;&#35;35&#59;40&amp;&#35;59&#59;0..n&amp;amp=
&#59;&amp;&#35;35&#59;41&amp;&#35;59&#59;. &#61;<br>By&lt;br&gt;&amp;gt&#59=
; definition&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59;&amp;&#35;160&#59;&amp;n=
bsp&#59;this would&amp;lt&#59;br&amp;gt&#59;return &#61;<br>all identifiers=
 that the Context considers to be &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; =
synonyms of &#61;<br>the&amp;lt&#59;br&amp;gt&#59;EntityId&amp;amp&#59;&amp=
;&#35;35&#59;44&amp;&#35;59&#59; even if the EntityId was not among =
&#61;<br>the &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; values returned.&amp;l=
t&#59;br&amp;gt&#59;&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;&amp;&#35;35&#59=
;35&amp;&#35;59&#59;4: &#61;<br>MULTI-PART KEYS&amp;lt&#59;br&amp;gt&#59;&a=
mp;lt&#59;br&amp;gt&#59;The proposal is to&lt;br&gt;&amp;gt&#59; &amp;&#35;=
61&#59;&lt;br&gt;&amp;gt&#59;&#61;<br>&#160;keep it simple by requiring =
multi-part keys to be&amp;lt&#59;br&amp;gt&#59;serialized &#61;<br>into a =
&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; composite identifier&amp;amp&#59;&a=
mp;&#35;35&#59;44&amp;&#35;59&#59; which can then &#61;<br>be used as =
an&amp;lt&#59;br&amp;gt&#59;EntityId or &amp;&#35;61&#59;&lt;br&gt;&amp;gt&=
#59; exposed as an Identifiers &#61;<br>attribute.&amp;lt&#59;br&amp;gt&#59=
;&amp;lt&#59;br&amp;gt&#59;Again&amp;amp&#59;&amp;&#35;35&#59;44&amp;&#35;5=
9&#59; comments welcome &#61;<br>so&lt;br&gt;&amp;gt&#59; &amp;&#35;61&#59;=
&lt;br&gt;&amp;gt&#59; we can close this.&amp;lt&#59;br&amp;gt&#59;&amp;lt&=
#59;br&amp;gt&#59;&amp;amp&#59;&amp;&#35;35&#59;61&#61;<br>&amp;&#35;59&#59=
;Drummond&amp;lt&#59;br&amp;gt&#59;&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;g=
t&amp;&#35;59&#59; -----Original &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; =
&#61;<br>Message-----&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;gt&amp;&#35;59&=
#59; From: <a href=3D"mailto:higgins-dev-bounces@xxxxxxxxxxx";>higgins-dev-b=
ounces@xxxxxxxxxxx</a>&lt;br&#61;<br>&gt;&amp;gt&#59; &amp;amp&#59;&amp;&#3=
5;35&#59;91&amp;&#35;59&#59;mailto:<a href=3D"mailto:higg%26";>higg&amp;</a>=
&#35;61&#59;&lt;br&gt;&amp;gt&#59; ins-dev-&amp;lt&#59;br&amp;gt&#59;&amp;a=
mp&#59;gt&amp;&#35;&#61;<br>59&#59; <a href=3D"mailto:bounces@xxxxxxxxxxx";>=
bounces@xxxxxxxxxxx</a>&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;59&#59; =
On Behalf Of Tom Doman&amp;lt&#59;br&amp;gt&#59;&amp;a&#61;<br>mp&#59;gt&am=
p;&#35;59&#59; &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; Sent: Monday&amp;amp=
&#59;&amp;&#35;35&#59;44&amp;&#35;59&#59; September 15&amp;amp&#59;&amp;&#3=
5;3&#61;<br>5&#59;44&amp;&#35;59&#59; 2008 1:34 PM&amp;lt&#59;br&amp;gt&#59=
;&amp;amp&#59;gt&amp;&#35;59&#59; To: &amp;amp&#59;&amp;&#35;35&#59;39&amp;=
&#35;59&#59;Higgins&lt;b&#61;<br>r&gt;&amp;gt&#59; &amp;&#35;61&#59;&lt;br&=
gt;&amp;gt&#59; &amp;amp&#59;&amp;&#35;35&#59;40&amp;&#35;59&#59;Trust =
Framework&amp;amp&#59;&amp;&#35;35&#59;41&amp;&#35;59&#59; &#61;<br>Project=
 developer discussions&amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;&amp=
;lt&#59;br&amp;gt&#59;&amp;amp&#59;gt&amp;&#35;59&#59; &#61;<br>&amp;&#35;6=
1&#59;&lt;br&gt;&amp;gt&#59; Subject: RE: EntityId decision analysis =
page&amp;amp&#59;&amp;&#35;35&#59;40&amp;&#35;59&#59;&#61;<br>wasRE:&amp;am=
p&#59;&amp;&#35;35&#59;91&amp;&#35;59&#59;higgins-&lt;br&gt;&amp;gt&#59; =
dev&amp;amp&#59;&amp;&#35;35&#59;93&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; =
&#61;<br>&amp;&#35;59&#59;entityID&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;gt=
&amp;&#35;59&#59; not an attribute&amp;amp&#59;&amp;&#35;35&#59;63&amp;&#35=
;59&#59;&amp;amp&#59;&amp;&#61;<br>&#35;35&#59;41&amp;&#35;59&#59;&amp;lt&#=
59;br&amp;gt&#59;&amp;amp&#59;gt&amp;&#35;59&#59;&amp;lt&#59;br&amp;gt&#59;=
&amp;amp&#59;gt&amp;&#35;59&#59;&lt;br&gt;&amp;gt&#59; &amp;amp&#59;&amp;&#=
35;35&#59;4&#61;<br>3&amp;&#35;59&#59;1&amp;lt&#59;br&amp;gt&#59;&amp;amp&#=
59;gt&amp;&#35;59&#59;&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; &amp;lt&#59;b=
r&amp;gt&#59;&amp;amp&#59;gt&amp;&#35;59&#59; On &#61;<br>&amp;amp&#59;&amp=
;&#35;35&#59;35&amp;&#35;59&#59;1&amp;amp&#59;&amp;&#35;35&#59;44&amp;&#35;=
59&#59; I think more complex could get CP &#61;<br>implementors &amp;&#35;6=
1&#59;&lt;br&gt;&amp;gt&#59; into some&amp;lt&#59;br&amp;gt&#59;&amp;amp&#5=
9;gt&amp;&#35;59&#59; difficult &#61;<br>situations though that&amp;amp&#59=
;&amp;&#35;35&#59;39&amp;&#35;59&#59;s just a hunch w/o&lt;br&gt;&amp;gt&#5=
9; &#61;<br>&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; concrete examples.&amp;=
lt&#59;br&amp;gt&#59;&amp;amp&#59;gt&amp;&#35;59&#59; But&amp;amp&#59;&amp;=
&#35;35&#59;44&amp;&#35;59&#59;&#61;<br>&#160;like Jim&amp;amp&#59;&amp;&#3=
5;35&#59;44&amp;&#35;59&#59; I prefer&lt;br&gt;&amp;gt&#59; simple.&amp;lt&=
#59;br&amp;gt&#59;&amp;amp&#59;gt&amp;&#35;59&#59;&amp;l&#61;<br>t&#59;&amp=
;&#35;61&#59;&lt;br&gt;&amp;gt&#59; br&amp;gt&#59;&amp;amp&#59;gt&amp;&#35;=
59&#59; On &amp;amp&#59;quot&amp;&#35;59&#59;another question&amp;amp&#59;q=
u&#61;<br>ot&amp;&#35;59&#59;&amp;amp&#59;&amp;&#35;35&#59;44&amp;&#35;59&#=
59; I don&amp;amp&#59;&amp;&#35;35&#59;39&amp;&#35;59&#59;t see how we =
could&lt;br&gt;&amp;gt&#59; &#61;<br>&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59=
; guarantee immutability&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;gt&amp;&#35;=
59&#59; or referential &#61;<br>integrity.&amp;amp&#59;&amp;&#35;35&#59;160=
&amp;&#35;59&#59;&amp;amp&#59;nbsp&amp;&#35;59&#59;I &amp;&#35;61&#59;&lt;b=
r&gt;&amp;gt&#59; understand the &#61;<br>need&amp;amp&#59;&amp;&#35;35&#59=
;44&amp;&#35;59&#59; just not how we&amp;amp&#59;&amp;&#35;35&#59;39&amp;&#=
35;59&#59;d pull&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;&#61;<br>gt&amp;&#35=
;59&#59; it off &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; especially w/o =
producing a major house of &#61;<br>cards to implement.&amp;lt&#59;br&amp;g=
t&#59;&amp;amp&#59;gt&amp;&#35;59&#59; &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#=
59; Event notification &#61;<br>from the backing store&amp;amp&#59;&amp;&#3=
5;35&#59;44&amp;&#35;59&#59; if even possible&amp;amp&#59;&amp;&#35;35&#59;=
44&amp;&#35;59&#59; &#61;<br>would&lt;br&gt;&amp;gt&#59; &amp;&#35;61&#59;&=
lt;br&gt;&amp;gt&#59; still&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;gt&amp;&#=
35;59&#59; not be guaranteed &#61;<br>to be reliable.&amp;amp&#59;&amp;&#35=
;35&#59;160&amp;&#35;59&#59;&amp;amp&#59;nbsp&amp;&#35;59&#59;Maybe doing =
the&lt;br&gt;&amp;gt&#59; &#61;<br>&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; =
best we can is better&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;gt&amp;&#35;59&=
#59; than no &#61;<br>guarantee&lt;br&gt;&amp;gt&#59; whatsoever.&amp;lt&#5=
9;br&amp;gt&#59;&amp;amp&#59;gt&amp;&#35;59&#59;&amp;lt&#59;br&amp;gt&#59;&=
amp;amp&#59;gt&amp;&#35;59&#59;&amp;&#35;&#61;<br>61&#59;&lt;br&gt;&amp;gt&=
#59;&lt;br&gt;&amp;gt&#59; Tom&amp;lt&#59;br&amp;gt&#59;&amp;amp&#59;gt&amp=
;&#35;59&#59;&amp;lt&#59;br&amp;gt&#59;&amp;lt&#59;br&amp;gt&#59;__________=
&#61;<br>_____________________________________&amp;lt&#59;br&amp;gt&#59;hig=
g&lt;br&gt;&amp;gt&#59; &amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; &#61;<br>in=
s-dev mailing <a href=3D"mailto:list%26lt%3Bbr%26gt%3Bhiggins-dev@eclipse.o=
rg">list&amp;lt&#59;br&amp;gt&#59;higgins-dev@xxxxxxxxxxx</a>&amp;lt&#59;br=
&amp;gt&#59;&amp;lt&#59;a&lt;br&gt;&amp;gt&#61;<br>&#59; href&amp;&#35;61&#=
59;3D&amp;quot&#59;<a href=3D"https://dev.e"; target=3D"_blank">https://dev.=
e</a>&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; <a href=3D"http://clipse.org/m=
ailman/listinfo/h=3Diggins&quot;&gt" target=3D"_blank">clipse.org/mailman/l=
istinfo/h&#61;<br>iggins&amp;quot&#59;&amp;gt</a>&#59;&lt;a href&#61;3D&quo=
t;<a href=3D"https://dev.eclipse.org/mailman/listi"; target=3D"_blank">https=
://dev.eclipse.org/mailman/listi</a>&quot;&gt;<a href=3D"https://d"; =
target=3D"_blank">https://d</a>&#61;<br><a href=3D"http://ev.eclipse.org/ma=
ilman/listi" target=3D"_blank">ev.eclipse.org/mailman/listi</a>&lt;/a&gt;&l=
t;br&gt;&amp;gt&#59; n&amp;&#35;61&#59;&lt;br&gt;&amp;gt&#59; fo/higgins&am=
p;lt&#59;/a&amp;gt&#61;<br>&#59;-dev&amp;lt&#59;br&amp;gt&#59;&lt;br&gt;&am=
p;gt&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;160&#59;&amp;&#35;16=
0&#59;&amp;nbsp&#59;&amp;lt&#59;/p&amp;gt&#59;&lt;br&gt;&amp;gt&#59;&amp;&#=
35;16&#61;<br>0&#59;&amp;&#35;160&#59;&amp;nbsp&#59;&amp;lt&#59;/body&amp;g=
t&#59;&lt;br&gt;&amp;gt&#59; &amp;lt&#59;/html&amp;gt&#59;&lt;br&gt;&amp;gt=
&#59; _________________&#61;<br>______________________________&lt;br&gt;&am=
p;gt&#59; higgins-dev mailing list&lt;br&gt;&amp;gt&#59; &#61;<br><a =
href=3D"mailto:higgins-dev@xxxxxxxxxxx";>higgins-dev@xxxxxxxxxxx</a>&lt;br&g=
t;&amp;gt&#59; &lt;a href&#61;3D&quot;<a href=3D"https://dev.eclipse.org/ma=
ilman/=3Dlistinfo/higgins" target=3D"_blank">https://dev.eclipse.org/mailma=
n/&#61;<br>listinfo/higgins</a>&quot;&gt;<a href=3D"https://dev.eclipse.org=
/mailman/listinfo/higgins" target=3D"_blank">https://dev.eclipse.org/mailma=
n/listinfo/higgins</a>&lt;/a&gt;-dev&lt;&#61;<br>br&gt;&lt;br&gt;__________=
_____________________________________&lt;br&gt;higgins-dev &#61;<br>mailing=
 list&lt;br&gt;<a href=3D"mailto:higgins-dev@xxxxxxxxxxx";>higgins-dev@eclip=
se.org</a>&lt;br&gt;&lt;a href&#61;3D&quot;<a href=3D"https://dev.eclipse.o=
" target=3D"_blank">https://dev.eclipse.o</a>&#61;<br>rg/mailman/listinfo/h=
iggins&quot;&gt;<a href=3D"https://dev.eclipse.org/mailman/listinfo/higgi=
=3D" target=3D"_blank">https://dev.eclipse.org/mailman/listinfo/higgi&#61;<=
/a><br>          </p>
          <div>
            <div>
<br>               =20
            </div>
            <div class=3D"wj3c7c">
              <p style=3D"margin-bottom: 0; margin-top: 0">
                ns&lt;/a&gt;-dev&lt;br&gt;<br>&#160;&nbsp;&#160;&lt;/p&gt;<=
br>&#160;&lt;/body&gt;<br>&lt;/html&gt;<br>________________________________=
_______________<br>higgins-dev mailing list<br><a href=3D"mailto:higgins-de=
v@xxxxxxxxxxx">higgins-dev@xxxxxxxxxxx</a><br><a href=3D"https://dev.eclips=
e.org/mailman/listinfo/higgins-dev" target=3D"_blank">https://dev.eclipse.o=
rg/mailman/listinfo/higgins-dev</a><br>              </p>
            </div>
          </div>
        </blockquote>
      </div>
      <p style=3D"margin-bottom: 0; margin-top: 0">
        <br>
      </p>
    </div>
  </body>
</html>


Back to the top