Hi!

I have been working for a looong time now on removing ImmutableProperty 
and replacing it with @Immutable Property. This is now committed. The 
same goes for ComputedProperty, which is now done as @Computed Property. 
This means that there is only one interface for properties, namely Property.

It is also possible to declare @Immutable on the interface of the 
property. Such as:
@Immutable
interface Nameable
{
   Property<String> name();
}

This will allow properties to be defined as mutable, but then used in an 
immutable context:
interface Nameable
{
   Property<String> name();
}

@Immutable
interface PersonValue
   extends Nameable, Composite
{}

This makes it possible to use name() both as mutable and immutable 
property, which I think is a good thing. Same goes for @Computed.

I've also changed so that now the property is actually set as mutable 
during composite builder time. If you ask property.isImmutable() on an 
immutable property when the source is a CompositeBuilder, the result 
will be false. This properly ensures that the semantics are correct, and 
that you can edit a composite in a UI with automatic detection of what 
can be edited, and what cannot be edited.

/Rickard

_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to