Ah, yes, right.  This was a bug fix introduced in JTS 1.11, to ensure 
that Point.isValid checked for invalid (eg NaN) coordinates.

In general, the contract for IsValid does not support "null" being 
passed as in input argument.  OJ should not be trying to determine the 
validity of a null geometry - it needs to detect this situation and make 
its own decision about whether null is valid or not.

So I think the way you'd sum this up is that a bug in JTS 1.10 masked a 
bug in OJ.

Larry, I think your fix should take care of this in OJ.  If it were me I 
would encapsulate that logic in a general-purpose utility method called 
something like GeometryUtil.isValidOrNull(Geometry g).  That gives a 
single functionality point for the design decision to allow nulls as 
valid geometry, in case it needs to be changed in the future.

Larry Becker wrote:
> I see that prior versions of JTS Point.isValid() didn't call
> IsValidOP.isValid().  It just returned trure.
>
> Stepping though the debugger, isValid is throwing an NPE when it does the
> getCoordinate().
>
>   public boolean isValid() {
>       if (! IsValidOp.isValid(getCoordinate()))
>           return false;
>     return true;
>   }
>
> Larry
>
> On Mon, Mar 22, 2010 at 3:58 PM, Larry Becker <becker.la...@gmail.com>wrote:
>
>   
>> There are no changes in the SVN history for several months before 24
>> February that seem relevant.  I made a bunch of changes to rendering and
>> such, but nothing related to EditTransactions.
>>
>> I happened to have a copy of OJ dated 22 February and it does not have the
>> delete point problem.  Can't say for sure when it started though.
>>
>> Larry
>>
>>
>>
>>
>> On Mon, Mar 22, 2010 at 3:48 PM, Larry Becker <becker.la...@gmail.com>wrote:
>>
>>     
>>> Hi Michaël,
>>>
>>>   Yes, I am using the latest SVN version.  You can do the test yourself in
>>> a few minutes.
>>>
>>>   I just checked and SkyJUMP and OJ both have identical code to handle
>>> deleting selected items, except for the changes Michaël made to
>>> EditTransaction and the JTS version. Those changes were made in March.
>>> SkyJUMP does not have the problem yet.
>>>
>>> @Stefan,  what are the changes for null geometries that you spoke of?
>>>
>>> Larry
>>>
>>>
>>>
>>> 2010/3/22 Michaël Michaud <michael.mich...@free.fr>
>>>
>>> Hi Stefan and others,
>>>       
>>>> Did you check OJ with the svn code.
>>>> I have fixed EditTransaction a few days ago.
>>>> Fo a reason, in the EditTrasaction process, two methods created a
>>>> Point(null,null,0) geometry.
>>>> This geometry did not throw NPE... until JTS 1.11
>>>> I replaced Point(null,null,0) by an empty GeometryCollection.
>>>> Hope it does the trick.
>>>>
>>>> Miichaël
>>>>         
>>>>> Hei,
>>>>>
>>>>> I haven't found the time to look into it, but I got this error report
>>>>> from Bernd:
>>>>>
>>>>> the issue is that he can not delete point features in existing projects
>>>>> or even just created tets layers. (must have been introduced to the NB
>>>>> after Feb 24th)
>>>>>
>>>>> ava.lang.NullPointerException
>>>>>          at
>>>>>
>>>>>           
>>>> com.vividsolutions.jts.operation.valid.IsValidOp.isValid(IsValidOp.java:62)
>>>>         
>>>>>          at com.vividsolutions.jts.geom.Point.isValid(Point.java:117)
>>>>>          at
>>>>>
>>>>>           
>>>> com.vividsolutions.jump.workbench.ui.EditTransaction.proposedGeometriesValid(EditTransaction.java:315)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> com.vividsolutions.jump.workbench.ui.EditTransaction.commit(EditTransaction.java:256)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> com.vividsolutions.jump.workbench.ui.EditTransaction.commit(EditTransaction.java:235)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> com.vividsolutions.jump.workbench.ui.plugin.DeleteSelectedItemsPlugIn.execute(DeleteSelectedItemsPlugIn.java:99)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> com.vividsolutions.jump.workbench.plugin.AbstractPlugIn$1.actionPerformed(AbstractPlugIn.java:130)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> com.vividsolutions.jump.workbench.ui.WorkbenchFrame$24.keyPressed(WorkbenchFrame.java:1142)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> com.vividsolutions.jump.workbench.ui.WorkbenchFrame$9.keyPressed(WorkbenchFrame.java:353)
>>>>         
>>>>>          at
>>>>> java.awt.AWTEventMulticaster.keyPressed(AWTEventMulticaster.java:233)
>>>>>          at java.awt.Component.processKeyEvent(Component.java:6221)
>>>>>          at
>>>>>           
>>>> javax.swing.JComponent.processKeyEvent(JComponent.java:2801)
>>>>         
>>>>>          at java.awt.Component.processEvent(Component.java:6040)
>>>>>          at java.awt.Container.processEvent(Container.java:2041)
>>>>>          at java.awt.Component.dispatchEventImpl(Component.java:4630)
>>>>>          at java.awt.Container.dispatchEventImpl(Container.java:2099)
>>>>>          at java.awt.Component.dispatchEvent(Component.java:4460)
>>>>>          at
>>>>>
>>>>>           
>>>> java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:704)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:969)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:841)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:668)
>>>>         
>>>>>          at java.awt.Component.dispatchEventImpl(Component.java:4502)
>>>>>          at java.awt.Container.dispatchEventImpl(Container.java:2099)
>>>>>          at java.awt.Window.dispatchEventImpl(Window.java:2475)
>>>>>          at java.awt.Component.dispatchEvent(Component.java:4460)
>>>>>          at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>>>>>          at
>>>>>
>>>>>           
>>>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
>>>>         
>>>>>          at
>>>>>
>>>>>           
>>>> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
>>>>         
>>>>>          at
>>>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
>>>>>          at
>>>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
>>>>>          at
>>>>>           
>>>> java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
>>>>         
>>>>>           
>>>> ------------------------------------------------------------------------------
>>>>         
>>>>> Download Intel&#174; Parallel Studio Eval
>>>>> Try the new software tools for yourself. Speed compiling, find bugs
>>>>> proactively, and fine-tune applications for parallel performance.
>>>>> See why Intel Parallel Studio got high marks during beta.
>>>>> http://p.sf.net/sfu/intel-sw-dev
>>>>> _______________________________________________
>>>>> Jump-pilot-devel mailing list
>>>>> Jump-pilot-devel@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>>>
>>>>>
>>>>>
>>>>>           
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Download Intel&#174; Parallel Studio Eval
>>>> Try the new software tools for yourself. Speed compiling, find bugs
>>>> proactively, and fine-tune applications for parallel performance.
>>>> See why Intel Parallel Studio got high marks during beta.
>>>> http://p.sf.net/sfu/intel-sw-dev
>>>> _______________________________________________
>>>> Jump-pilot-devel mailing list
>>>> Jump-pilot-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>>
>>>>         
>>>       
>
>   
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------------
> Download Intel&#174; Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> ------------------------------------------------------------------------
>
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>   

-- 
Martin Davis
Senior Technical Architect
Refractions Research, Inc.
(250) 383-3022


------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to