thanks for fixing and discussing,

now, I would prefer to leave the OJ code as is, and wait for JTS NB (or 
something alike). Because I don't see an elegant way to avoid isValid 
checks for EditTransactions.commit(), without telling what type of 
transaction is done.

I.e. we need to do EditTransactions.commit() right?
as performed in DeleteSelectedItemsPlugIn.java:99

if not, I would rather change code here, before touching/changing 
something in EditTransaction that allows the delivery of the transaction 
type.

mhm.. I am honestly a bit scared to do changes here, because I can not 
assess what a change in the EditTransaction code can have for side 
effects - especially with respect to writing something back to real 
databases. So if a skilled person like Larry or Martin (as the JUMP 
designer) or Michael or Andreas would propose and do changes - I am 
totally happy with it.
Though.. preferring still no code changes at all and rather a change of JTS.

puzzled
stefan

Martin Davis wrote:
> But not a *good* reason!  8^)    For obvious reasons...  !
> 
> Larry Becker wrote:
>> Hi Martin,
>>
>>   Thanks for the fix.  Assuming you meant "why OJ is testing for validity on
>> a delete", the answer may be because it makes the code simpler.  Not the
>> best reason, but it is a reason.  :-)
>>
>> regards,
>> Larry
>>
>> On Tue, Mar 23, 2010 at 10:52 AM, Martin Davis 
>> <mbda...@refractions.net>wrote:
>>
>>   
>>> Yes, POINT EMPTY is valid.  This is a bug in JTS.  I'll fix this today.
>>> Thanks, Michael!
>>>
>>> One thing that doesn't make sense to me is why JTS is testing for
>>> validity on a delete?  Surely it's safe to NOT do this, even for Undo?
>>>
>>>
>>> Michaël Michaud wrote:
>>>     
>>>> Hi Martin, all,
>>>>
>>>> Finally, I think the problem could be a consistency problem in JTS.
>>>> JTS accepts empty Points, empty LineStrings and empty Polygons created
>>>>       
>>> with
>>>     
>>>> factory.createPoint(null) -> POINT EMPTY
>>>> factory.createLineString(null) -> LINESTRING EMPTY
>>>> factory.createPolygon(null,null) -> POLYGON EMPTY
>>>>
>>>> empty LineString and empty Polygon, which hold an empty
>>>> CoordinateSequence are seen as valid Geometries
>>>>
>>>> on the other hand, empty Point, which also holds an empty
>>>> CoordinateSequence throws an exception while tested for its validity
>>>> The reason is Point.isValid() does not test its CoordinateSequence but
>>>> tests the validity of Point.getCoordinate(), which returns a null in
>>>> this case.
>>>>
>>>> Could you confirm POINT EMPTY should be considered as a valid Geometry ?
>>>>
>>>> Michaël
>>>>
>>>> Stefan Steiniger a écrit :
>>>>
>>>>       
>>>>> 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
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>         
>>>>       
>>> ------------------------------------------------------------------------------
>>>     
>>>> 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
>>>
>>>     
>>   
>> ------------------------------------------------------------------------
>>
>> ------------------------------------------------------------------------------
>> 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