I don't see how returning something wrong is any different than throwing an 
exception from a compatibility perspective. Bugs are bugs.

On Oct 16, 2013, at 3:46 PM, Kevin Rushforth <kevin.rushfo...@oracle.com> wrote:

> I can see your point. There are cases where it can make sense to have a 
> restriction now and relax it later, but this isn't exactly that case. It's 
> really more of a case of not being currently implemented correctly in some 
> modes.
> 
> I guess the other option (which Pavel also mentioned) is to continue to 
> return something plausible, but not really correct, and file it as a bug 
> against FX 8.
> 
> -- Kevin
> 
> 
> Stephen F Northover wrote:
>> Initial position:
>> 
>> I don't really want to see any exception.  Throwing an exception is 
>> unexpected and should really be reserved for when something bad happens, not 
>> when we can't decide how an API works.  If the exception goes in, it's API 
>> and it stays forever.
>> 
>> Steve
>> 
>> On 2013-10-16 5:23 PM, Kevin Rushforth wrote:
>>> Steve: if Pavel throws IllegalStateException("not yet supported for 
>>> parallel camera") or similar, do you think that would be OK or do you not 
>>> want to see any exception?
>>> 
>>> -- Kevin
>>> 
>>> 
>>> Kevin Rushforth wrote:
>>>> Would IllegalStateException be better here? Usually UOE is for operations 
>>>> that are simply not supported by the class in question. In this case, the 
>>>> operation is only unsupported if the camera on the scene (i.e., the state 
>>>> of an object) is of a certain type which can change at runtime.
>>>> 
>>>> I'm OK either way, just want it to be a deliberate decision.
>>>> 
>>>> -- Kevin
>>>> 
>>>> 
>>>> Pavel Safrata wrote:
>>>>> As I've said, we intend to fix it in the future, so the situation should 
>>>>> not be impossible. It is mostly used that way in the existing code, but 
>>>>> there definitely are precedents for throwing it just temporarily. For 
>>>>> instance:
>>>>> 
>>>>> nodeOrientationProperty().getCssMetaData:
>>>>>        throw new UnsupportedOperationException("Not supported yet.");
>>>>> 
>>>>> or
>>>>> 
>>>>> MeshView.impl_computeContains():
>>>>>        throw new UnsupportedOperationException("Not supported yet.");
>>>>> (internal but directly accessible to users via contains())
>>>>> 
>>>>> Pavel
>>>>> 
>>>>> On 16.10.2013 20:10, Stephen F Northover wrote:
>>>>>> I took a quick look through JavaFX to find how this exception is used. 
>>>>>> It is mostly used to indicate impossible situation.  Is that the 
>>>>>> situation we have here?
>>>>>> 
>>>>>> Personally, for me, if we throw the exception, then we will generally 
>>>>>> just leave it that way forever.
>>>>>> 
>>>>>> Steve
>>>>>> 
>>>>>> On 2013-10-16 11:22 AM, Pavel Safrata wrote:
>>>>>>> On 16.10.2013 17:03, Stephen F Northover wrote:
>>>>>>>> Could do something useful with what was there now?  We can always fix 
>>>>>>>> this in future by adding another API to govern the interpretation of 
>>>>>>>> the value.
>>>>>>> 
>>>>>>> Not much useful. Anyway, any such stuff can be quite easily done by 
>>>>>>> reading the intersectedPoint's Z coordinate.
>>>>>>> 
>>>>>>>> 
>>>>>>>> Throwing the exception indicates that the call is unsupported, but 
>>>>>>>> application code can be written to catch the exception and when we 
>>>>>>>> implement the API, it can break (I realize that this is unlikely).
>>>>>>> 
>>>>>>> The exception can tell by the message that the operation will be 
>>>>>>> supported in the future.
>>>>>>> 
>>>>>>> Pavel
>>>>>>> 
>>>>>>>> 
>>>>>>>> Steve
>>>>>>>> 
>>>>>>>> On 2013-10-16 10:46 AM, Richard Bair wrote:
>>>>>>>>> My quick vote would be throwing the exception, but is like to hear 
>>>>>>>>> from Steve and Kevin.
>>>>>>>>> 
>>>>>>>>>> On Oct 16, 2013, at 1:04 AM, Pavel Safrata 
>>>>>>>>>> <pavel.safr...@oracle.com> wrote:
>>>>>>>>>> 
>>>>>>>>>> Hello,
>>>>>>>>>> it looks like we can't help releasing a not-fully-baked piece of API 
>>>>>>>>>> with FX8. We've added bunch of new APIs for 3D and did our best to 
>>>>>>>>>> make them work well. Unfortunately, there's been not enough 
>>>>>>>>>> time&priority to fine-tune their behavior in 2D world. Right now I'm 
>>>>>>>>>> concerned about camera position in scene. It is inherent in the 3D 
>>>>>>>>>> perspective camera that it has its specific position in world, but 
>>>>>>>>>> the 2D parallel camera as we have it projects everything to the XY 
>>>>>>>>>> plane basically by ignoring the Z coordinate, so the camera position 
>>>>>>>>>> doesn't matter all that much. However, some of the newly added APIs 
>>>>>>>>>> depend on it:
>>>>>>>>>> 
>>>>>>>>>> 1. Near/far clip on camera. This obviously cannot work without 
>>>>>>>>>> knowing where the camera is. Right now the parallel camera does no 
>>>>>>>>>> clipping though, so I guess we are OK to go with it as a "known 
>>>>>>>>>> limitation".
>>>>>>>>>> 
>>>>>>>>>> 2. PickResult on events which reports "intersectedDistance" between 
>>>>>>>>>> the camera and the picked point. This is worse because we can't just 
>>>>>>>>>> "not support" it - there will be some value and once somebody uses 
>>>>>>>>>> it we'll have a backward compatibility issue. The state right now is 
>>>>>>>>>> that the camera is (tentatively, by my arbitrary decision) at [0, 0, 
>>>>>>>>>> -1] and reports distances from there (note that as the camera 
>>>>>>>>>> renders everything, for nodes "in front of Z=-1" it reports negative 
>>>>>>>>>> distances). This may change when the camera position is properly 
>>>>>>>>>> discussed and specified.
>>>>>>>>>> 
>>>>>>>>>> Note that this post is *not* meant to discuss the camera position. 
>>>>>>>>>> Even if we could find the answer quickly (which I doubt), it's most 
>>>>>>>>>> probably too late to apply the change for FX8.
>>>>>>>>>> 
>>>>>>>>>> So finally here is my question: do you think it's OK to solve this 
>>>>>>>>>> by keeping the current behavior and documenting the 
>>>>>>>>>> "intersectedDistance" in a way that for parallel camera the numbers 
>>>>>>>>>> are unspecified and subject to change in future versions? Or would 
>>>>>>>>>> you prefer something more drastic like throwing an 
>>>>>>>>>> UnsupportedOperationException (losing the possibility to compare the 
>>>>>>>>>> distances)?
>>>>>>>>>> 
>>>>>>>>>> Thanks,
>>>>>>>>>> Pavel
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> 

Reply via email to