[API Review] Property and expression conversion methods

Martin Sladecek martin.sladecek at oracle.com
Fri Feb 22 01:39:43 PST 2013

I've tried to prototype this and realized, the static method on Property 
will have to be more restricted.
Instead of

public static<T extends Number>  DoubleProperty 

we will have

public static DoubleProperty doubleProperty(Property<Double>);

The problem here is that when the double property is set, I don't know 
what type should I convert the value to. (may be any Number type).

Expressions and ReadOnlyProperties are OK, as they cannot be set / bound.

If there are no other concerns, can I get "api-approved" for the issues?


On 02/21/2013 05:01 PM, steve.x.northover at oracle.com wrote:
> Ok, consistency with asString() seems good to me.
> Steve
> On 21/02/2013 6:20 AM, Martin Sladecek wrote:
>> As expressions already have asString() that returns StringBinding, I 
>> think it's better to call it asObject(), but I don't strongly insist 
>> on this name, asObjectExpression() is a good option too.
>> -martin
>> On 19.2.2013 23:30, steve.x.northover at oracle.com wrote:
>>> I understand.  Since they are all a kind of expression, perhaps 
>>> asObjectExpression() is the name we should use.
>>> Another possibility is to create a new instance of the adapter class 
>>> explicitly (ie. new ReadOnlyObjectProperyAdapter(zzzz)) rather than 
>>> zzzzx.asXXX()) method.  Not sure if this is better or worse.
>>> Steve
>>> On 19/02/2013 3:26 PM, Martin Sladecek wrote:
>>>> As properties extend read only properties, which extend 
>>>> expressions, using asObject() everywhere would mean we have only 
>>>> one method, which return covariant return type in subclasses.
>>>> Renaming these method will result in 3 method in property classes. 
>>>> E.g. DoubleProperty would have:
>>>> ObjectExpression<Double> asObjectExpression();
>>>> ObjectReadOnlyProperty<Double> asReadOnlyObjectProperty();
>>>> ObjectProperty<Double> asObjectProperty();
>>>> instead of just having
>>>> ObjectProperty<Double> asObject();
>>>> which overrides ObjectExpression<Double> asObject() from 
>>>> DoubleExpression.
>>>> -Martin
>>>> On 02/19/2013 06:44 PM, steve.x.northover at oracle.com wrote:
>>>>> I agree.  asObject seems a bit to general.
>>>>> Steve
>>>>> On 19/02/2013 12:23 PM, Richard Bair wrote:
>>>>>>> public ObjectExpression<Double> asObject();
>>>>>>> public ReadOnlyObjectProperty<Double> asObject();
>>>>>>> ObjectProperty<Double>  asObject();
>>>>>>> public static<T extends Number> DoubleExpression 
>>>>>>> doubleExpression(ObservableValue<T>)
>>>>>>> public static<T extends Number> ReadOnlyDoubleProperty 
>>>>>>> readOnlyDoubleProperty(ReadOnlyProperty<T>);
>>>>>>> public static<T extends Number>  DoubleProperty 
>>>>>>> doubleProperty(Property<T>);
>>>>>> I wonder if we ought not use a consistent naming here, such as 
>>>>>> asObjectProperty and asDoubleExpression? Also should it be asFoo 
>>>>>> or toFoo? Is there a precedent?
>>>>>> Richard

More information about the openjfx-dev mailing list