FAMIXType>>incomingAccesses

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

FAMIXType>>incomingAccesses

Damien Cassou
#flatCollect:. In my case, the variable 'attributes' is of type
http://damiencassou.seasidehosting.st

  FAMIXType>>incomingAccesses
    ^ self privateState
        cacheAt: #incomingAccesses
        ifAbsentPut: [ attributes flatCollect: [ :each | each
        incomingAccesses ] ]

Hi,
 
in this method
 
when the cache is empty, it is initialized with the result of
FMMultivalueLink. When sending #flatCollect: to a
FMMultiValueLink, the result is an OrderedCollection (because
FMMultiValueLink>>#species returns OrderedCollection). This means
that it is no more possible to
update the list of incomingAccesses.

Is that the desired behavior?
 
In my case, this behavior triggers a bug. When the following
method is
  FMMultiValueLink class>>on: element update: selector from: old
  to: new
    "refresh the other side of the relations to reflect change in
    value"
    old ~= new ifTrue: [
       old notNil ifTrue: [ (old perform: selector) unsafeRemove:
       element ].
       new notNil ifTrue: [ (new perform: selector) unsafeAdd:
       element ]].
    ^ new

executed while importing a mse, I get a DNU:
 
This is because the (new perform: selector) expression returns an
OrderedCollection that does not understand #unsafeAdd: (selector
equals
to #incomingAccesses).

Could somebody help me please?

--  Damien Cassou
"Success is the ability to go from one failure to another without
losing enthusiasm." --Winston Churchill
_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: FAMIXType>>incomingAccesses

Nicolas Anquetil

My guess would be that this is remnant of the old navigation system (Cook)

You should use the new one (Chef) which is more robust and generic:

aFAMIXType queryIncomingAccesses

you can then refine the query:

aFAMIXType queryIncomingAccesses atClassScope
-> all the classes that access an attribute of aFAMIXType

aFAMIXType queryIncomingAccesses atClassScope withoutSelfLoops
-> same, but aFAMIXType will be filtered out (if it does access its own
attributes which it should)

aFAMIXType queryIncomingAccesses opposite
-> all behaviourals (presumably methods) that access an attribute of
aFAMIXType


nicolas

On 16/02/2015 18:50, Damien Cassou wrote:

> #flatCollect:. In my case, the variable 'attributes' is of type
> http://damiencassou.seasidehosting.st
>
>  FAMIXType>>incomingAccesses
>    ^ self privateState
>        cacheAt: #incomingAccesses
>        ifAbsentPut: [ attributes flatCollect: [ :each | each        
> incomingAccesses ] ]
>
> Hi,
>
> in this method
>
> when the cache is empty, it is initialized with the result of
> FMMultivalueLink. When sending #flatCollect: to a FMMultiValueLink,
> the result is an OrderedCollection (because FMMultiValueLink>>#species
> returns OrderedCollection). This means that it is no more possible to
> update the list of incomingAccesses.
>
> Is that the desired behavior?
>
> In my case, this behavior triggers a bug. When the following method is
>  FMMultiValueLink class>>on: element update: selector from: old  to: new
>    "refresh the other side of the relations to reflect change in    
> value"
>    old ~= new ifTrue: [
>       old notNil ifTrue: [ (old perform: selector) unsafeRemove:      
> element ].
>       new notNil ifTrue: [ (new perform: selector) unsafeAdd:      
> element ]].
>    ^ new
>
> executed while importing a mse, I get a DNU:
>
> This is because the (new perform: selector) expression returns an
> OrderedCollection that does not understand #unsafeAdd: (selector equals
> to #incomingAccesses).
>
> Could somebody help me please?
>
> --  Damien Cassou
> "Success is the ability to go from one failure to another without
> losing enthusiasm." --Winston Churchill
> _______________________________________________
> Moose-dev mailing list
> [hidden email]
> https://www.iam.unibe.ch/mailman/listinfo/moose-dev

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev