Hei,

so by looking on the JUMP code,

deleting always creates a null geometry:
com.vividsolutions.jump.workbench.ui.GeometryEditor.remove(Geometry g, 
Geometry itemToRemove)

calls

com.vividsolutions.jump.workbench.ui.GeometryEditor.createNullGeometry(Class 
geometryClass)

so, we could do the change in createNullGeometry() [though I don't 
really like the idea here to create an empty GeometryCollection is 
Michael did for the other positions] or in

com.vividsolutions.jump.workbench.ui.EditTransaction.proposedGeometriesValid()
by catching null geometries here and not checking them.

or.. of course... both.

any suggestions by you Larry, Michael, Martin?
Probably the second solution is best?


ohh.. @Martin, actually, if that only happens for point geometries 
now... what is with the other geometry.isValid operations... why don't 
they return an error if null geomtries are created?

stefan

Martin Davis wrote:
> 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
>>   
> 

------------------------------------------------------------------------------
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