Immutability

Expand / Collapse
 
     

Immutability


Question: After `Person.allInstances->orderBy(name) (ExpressionHandle.Element as IObjectList).AddNew() throw the Exception: System.NotSupportedException. Is this correct behaviour?

Answer: Most ocl list-operations will create a new list rather than manipulating the orignal one. The new list is readonly and does not have any connection to the original list. It does not know how to perform an AddNew operation. The same would have happened if the original list had been an association end. Imagine for example the expression:

 Person.allInstances->select(assets > 10000)

If you would try to add a new object to this list, it would have to have the attribute assets set to a value that would qualify in the condition.

In the case of ordering, the AddNew would have to take into account that the list is ordered (something that the list itself is unaware of) in order to add the new object in the correct possition.

The solution is to add the new object to a list that is not filtered/ordered, and it will appear in the correct position in the ordered list in the handle (thanks to subscriptions)


Add Your Comments


Name: *
Email Address:
Web Address:
Verification Code:
*
 

Details
Last Modified:den 18 april 2008
Last Modified By: Jonas Högström
Type: INFO
Level: Beginner
Article not rated yet.
Article has been viewed 764 times.
Options