[kepler-dev] error dragging a relation from a port

Daniel Crawl danielcrawl at gmail.com
Tue Aug 21 17:46:53 PDT 2012


Hi Christopher,

The problem is related to the change listener in
org.kepler.moml.NamedObjId. When the workflow is changed, this
listener fires off additional change requests in changeExecuted().
When I comment out the additional change requests, I don't get
errors or weird behavior with the grab handle. Also, if the
requests are made in the Swing thread, everything works. It's
not clear to me if this actually fixes the problem or why it's
necessary after r64430...Hopefully this helps you track down
the problem.

   --dan

On 8/21/12 4:24 PM, Christopher Brooks wrote:
> The problem seems to be fairly complex.
> There are two changes, r64418 to diva BasicGraphHandle where we check
> for null
> and r64430 where there are a bunch of changes to ptolemy outside of diva.
>
> I agree that the change to BasicGraphHandle would seem to be a good idea.
> However, if it is present and r64430 is present, then the blue grab
> handles don't
> work well in Kepler and Ptolemy.  When I drag a connection around it
> does not
> have a blue grab handle at the end.  A blue grab handle appears at the
> upper left.
> I do get NPEs, but the behavior seems to be better.
>
> Another issue is that I believe that Kepler uses diva.jar, so the change to
> BasicGraphHandle was not present until I updated diva.jar.
>
> I'm not sure about a fix to this, the bug is fairly mysterious.  I can take
> a look, but it may take a day or two.
>
> _Christopher
>
> Edward writes:
>> Rolling back this change will cause more null pointer exceptions.
>> If the "return" below is not executed, you _will_ get a NPE.
>>
>> if (_site.getFigure() == null || _site.getFigure().getParent() == null) {
>>             // Cannot relocate.
>>             return;
>> }
>>
>> Edward
>
> On 8/21/12 12:42 AM, Christopher Brooks wrote:
>> Hi Derik,
>> I think this change:
>> 2012-08-18 17:08  eal
>>
>>     * [r64430] /trunk/ptolemy/actor/Manager.java,
>>       /trunk/ptolemy/actor/lib/hoc/LifeCycleManager.java,
>>       /trunk/ptolemy/kernel/undo/RedoChangeRequest.java,
>>       /trunk/ptolemy/kernel/undo/UndoChangeRequest.java,
>>       /trunk/ptolemy/kernel/util/Changeable.java,
>>       /trunk/ptolemy/kernel/util/NamedObj.java,
>>       /trunk/ptolemy/moml/MoMLParser.java: Fixed long standing deadlock
>>       that occurs while editing models while they run
>>
>> is what is causing the stack trace like [1] below.
>>
>> I'll take a further look tomorrow.
>>
>> This change is fairly important in that it solves a long standing
>> issue, so we need
>> to fix the bug as opposed to just reverting.
>>
>> _Christopher
>>
>> On 8/20/12 6:44 PM, Derik Barseghian wrote:
>>> Hey Christopher,
>>> I updated my local copy of kepler to use ptII r64449 but I'm still
>>> getting errors like [1] below, wild dragging behavior, and remaining
>>> dots.
>>> I haven't seen any rogue floating upper-left endpoints yet though.
>>> Derik
>>>
>>> On Aug 20, 2012, at 6:14 PM, Christopher
>>> Brooks<cxh at eecs.berkeley.edu>  wrote:
>>>
>>>> Hi Derik,
>>>>
>>>> It seems like it is Edward's change:
>>>>
>>>> 2012-08-18 06:22  eal
>>>>
>>>>      * [r64418] /trunk/diva/canvas/interactor/BasicGrabHandle.java:
>>>>        Prevent null pointer exception that can happen while editing a
>>>>        model while it is running by checking the Figure of Site for the
>>>>        connector being dragged.
>>>>
>>>> The change is:
>>>>> [dhcp-39-161:~/ptII] cxh% svn diff -r64417:64418
>>>>> diva/canvas/interactor/BasicGrabHandle.java
>>>>> Index: diva/canvas/interactor/BasicGrabHandle.java
>>>>> ===================================================================
>>>>> --- diva/canvas/interactor/BasicGrabHandle.java (revision 64417)
>>>>> +++ diva/canvas/interactor/BasicGrabHandle.java (revision 64418)
>>>>> @@ -87,6 +87,10 @@
>>>>>           // Be sure to take into account that the transformContext
>>>>> of the
>>>>>           // site and the context of the grab handle may be different.
>>>>>           TransformContext tc = getTransformContext();
>>>>> +        if (_site.getFigure() == null ||
>>>>> _site.getFigure().getParent() == null) {
>>>>> +            // Cannot relocate.
>>>>> +            return;
>>>>> +        }
>>>>>           Point2D p = _site.getPoint(tc);
>>>>>           double x = p.getX();
>>>>>           double y = p.getY();
>>>> I rolled back  r64418 and updated diva.jar
>>>>
>>>> _Christopher
>>>>
>>>>
>>>> On 8/20/12 3:28 PM, Derik Barseghian wrote:
>>>>> Hey Christopher,
>>>>> Dan and I are getting an error[1] when trying to drag a relation
>>>>> from a port today in Kepler.
>>>>> I'm also seeing a few other issues that seem to happen after the
>>>>> above. I got an NPE[2] from a click, have strange actor-drag
>>>>> behavior (actor drags wildly / shoots off in one direction), and
>>>>> sometimes dots are left over on canvas at the point where I clicked
>>>>> on the port. Also when I'm dragging out a relation I also notice in
>>>>> the upper left corner of canvas a blue 'port endpoint' square
>>>>> (generally only noticeable in the overview section in the lower left).
>>>>> See attached screenshot to see dots and blue square.
>>>>> Derik
>>>>>
>>>>> [1]
>>>>> java.lang.NullPointerException
>>>>>   at
>>>>> diva.canvas.TransformContext.getTransform(TransformContext.java:161)
>>>>>   at diva.canvas.AbstractSite.getPoint(AbstractSite.java:82)
>>>>>   at
>>>>> diva.canvas.connector.BasicManhattanRouter.routeManhattan(BasicManhattanRouter.java:87)
>>>>>
>>>>>   at
>>>>> diva.canvas.connector.BasicManhattanRouter.route(BasicManhattanRouter.java:68)
>>>>>
>>>>>   at
>>>>> diva.canvas.connector.ManhattanConnector.route(ManhattanConnector.java:121)
>>>>>
>>>>>   at
>>>>> ptolemy.vergil.actor.KielerLayoutConnector.route(KielerLayoutConnector.java:214)
>>>>>
>>>>>   at
>>>>> diva.canvas.connector.AbstractConnector.reroute(AbstractConnector.java:285)
>>>>>
>>>>>   at
>>>>> diva.canvas.connector.AbstractConnector.tailMoved(AbstractConnector.java:406)
>>>>>
>>>>>   at
>>>>> diva.canvas.connector.AbstractConnector.setTailSite(AbstractConnector.java:398)
>>>>>
>>>>>   at
>>>>> ptolemy.vergil.actor.ActorEditorGraphController$LinkCreator.mousePressed(ActorEditorGraphController.java:676)
>>>>>
>>>>>   at
>>>>> diva.canvas.interactor.CompositeInteractor.mousePressed(CompositeInteractor.java:199)
>>>>>
>>>>>   at diva.canvas.FigureLayer.dispatchEventUpTree(FigureLayer.java:551)
>>>>>   at diva.canvas.FigureLayer.grabPointer(FigureLayer.java:319)
>>>>>   at diva.canvas.FigureLayer.processLayerEvent(FigureLayer.java:673)
>>>>>   at diva.canvas.FigureLayer.dispatchEvent(FigureLayer.java:203)
>>>>>   at diva.canvas.CanvasPane.processLayerEvent(CanvasPane.java:280)
>>>>>   at diva.canvas.CanvasPane.dispatchEvent(CanvasPane.java:89)
>>>>>   at diva.canvas.JCanvas.internalProcessMouseEvent(JCanvas.java:520)
>>>>>   at diva.canvas.JCanvas.processMouseEvent(JCanvas.java:474)
>>>>>   at java.awt.Component.processEvent(Component.java:6140)
>>>>>   at java.awt.Container.processEvent(Container.java:2083)
>>>>>   at java.awt.Component.dispatchEventImpl(Component.java:4737)
>>>>>   at java.awt.Container.dispatchEventImpl(Container.java:2141)
>>>>>   at java.awt.Component.dispatchEvent(Component.java:4565)
>>>>>   at
>>>>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
>>>>>   at
>>>>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:4277)
>>>>>   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
>>>>>   at java.awt.Container.dispatchEventImpl(Container.java:2127)
>>>>>   at java.awt.Window.dispatchEventImpl(Window.java:2482)
>>>>>   at java.awt.Component.dispatchEvent(Component.java:4565)
>>>>>   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:684)
>>>>>   at java.awt.EventQueue.access$000(EventQueue.java:85)
>>>>>   at java.awt.EventQueue$1.run(EventQueue.java:643)
>>>>>   at java.awt.EventQueue$1.run(EventQueue.java:641)
>>>>>   at java.security.AccessController.doPrivileged(Native Method)
>>>>>   at
>>>>> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
>>>>>
>>>>>   at
>>>>> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
>>>>>
>>>>>   at java.awt.EventQueue$2.run(EventQueue.java:657)
>>>>>   at java.awt.EventQueue$2.run(EventQueue.java:655)
>>>>>   at java.security.AccessController.doPrivileged(Native Method)
>>>>>   at
>>>>> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
>>>>>
>>>>>   at java.awt.EventQueue.dispatchEvent(EventQueue.java:654)
>>>>>   at
>>>>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
>>>>>
>>>>>   at
>>>>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
>>>>>
>>>>>   at
>>>>> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
>>>>>
>>>>>   at
>>>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
>>>>>   at
>>>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
>>>>>   at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
>>>>>
>>>>>
>>>>> [2]
>>>>>        [run] Exception in thread "AWT-EventQueue-0"
>>>>> java.lang.NullPointerException
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.TransformContext.getTransform(TransformContext.java:161)
>>>>>        [run]
>>>>>          at diva.canvas.AbstractSite.getPoint(AbstractSite.java:82)
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.interactor.BasicGrabHandle.relocate(BasicGrabHandle.java:94)
>>>>>
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.interactor.Manipulator.relocateGrabHandles(Manipulator.java:191)
>>>>>
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.interactor.Manipulator.repaint(Manipulator.java:211)
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.interactor.Manipulator.repaint(Manipulator.java:175)
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.AbstractFigure.repaint(AbstractFigure.java:236)
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.AbstractFigure.repaint(AbstractFigure.java:224)
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.FigureDecorator.setChild(FigureDecorator.java:190)
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.connector.ConnectorManipulator.setChild(ConnectorManipulator.java:215)
>>>>>
>>>>>        [run]
>>>>>          at diva.canvas.FigureLayer.decorate(FigureLayer.java:180)
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.interactor.BasicSelectionRenderer.renderSelected(BasicSelectionRenderer.java:119)
>>>>>
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.interactor.BasicSelectionModel.renderSelected(BasicSelectionModel.java:271)
>>>>>
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.interactor.BasicSelectionModel.addSelection(BasicSelectionModel.java:101)
>>>>>
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.interactor.SelectionInteractor.mousePressed(SelectionInteractor.java:172)
>>>>>
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.FigureLayer.dispatchEventUpTree(FigureLayer.java:551)
>>>>>        [run]
>>>>>          at diva.canvas.FigureLayer.grabPointer(FigureLayer.java:319)
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.FigureLayer.processLayerEvent(FigureLayer.java:673)
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.FigureLayer.dispatchEvent(FigureLayer.java:203)
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.CanvasPane.processLayerEvent(CanvasPane.java:280)
>>>>>        [run]
>>>>>          at diva.canvas.CanvasPane.dispatchEvent(CanvasPane.java:89)
>>>>>        [run]
>>>>>          at
>>>>> diva.canvas.JCanvas.internalProcessMouseEvent(JCanvas.java:520)
>>>>>        [run]
>>>>>          at diva.canvas.JCanvas.processMouseEvent(JCanvas.java:474)
>>>>>        [run]
>>>>>          at java.awt.Component.processEvent(Component.java:6140)
>>>>>        [run]
>>>>>          at java.awt.Container.processEvent(Container.java:2083)
>>>>>        [run]
>>>>>          at java.awt.Component.dispatchEventImpl(Component.java:4737)
>>>>>        [run]
>>>>>          at java.awt.Container.dispatchEventImpl(Container.java:2141)
>>>>>        [run]
>>>>>          at java.awt.Component.dispatchEvent(Component.java:4565)
>>>>>        [run]
>>>>>          at
>>>>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
>>>>>        [run]
>>>>>          at
>>>>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:4277)
>>>>>        [run]
>>>>>          at
>>>>> java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
>>>>>        [run]
>>>>>          at java.awt.Container.dispatchEventImpl(Container.java:2127)
>>>>>        [run]
>>>>>          at java.awt.Window.dispatchEventImpl(Window.java:2482)
>>>>>        [run]
>>>>>          at java.awt.Component.dispatchEvent(Component.java:4565)
>>>>>        [run]
>>>>>          at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:684)
>>>>>        [run]
>>>>>          at java.awt.EventQueue.access$000(EventQueue.java:85)
>>>>>        [run]
>>>>>          at java.awt.EventQueue$1.run(EventQueue.java:643)
>>>>>        [run]
>>>>>          at java.awt.EventQueue$1.run(EventQueue.java:641)
>>>>>        [run]
>>>>>          at java.security.AccessController.doPrivileged(Native Method)
>>>>>        [run]
>>>>>          at
>>>>> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
>>>>>
>>>>>        [run]
>>>>>          at
>>>>> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
>>>>>
>>>>>        [run]
>>>>>          at java.awt.EventQueue$2.run(EventQueue.java:657)
>>>>>        [run]
>>>>>          at java.awt.EventQueue$2.run(EventQueue.java:655)
>>>>>        [run]
>>>>>          at java.security.AccessController.doPrivileged(Native Method)
>>>>>        [run]
>>>>>          at
>>>>> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
>>>>>
>>>>>        [run]
>>>>>          at java.awt.EventQueue.dispatchEvent(EventQueue.java:654)
>>>>>        [run]
>>>>>          at
>>>>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
>>>>>
>>>>>        [run]
>>>>>          at
>>>>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
>>>>>
>>>>>        [run]
>>>>>          at
>>>>> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
>>>>>
>>>>>        [run]
>>>>>          at
>>>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
>>>>>        [run]
>>>>>          at
>>>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
>>>>>        [run]
>>>>>          at
>>>>> java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
>>>>>
>>>>> <Mail Attachment.png>
>>>>>
>>>> --
>>>> Christopher Brooks, PMP                       University of California
>>>> CHESS Executive Director                      US Mail: 337 Cory Hall
>>>> Programmer/Analyst CHESS/Ptolemy/Trust        Berkeley, CA 94720-1774
>>>> ph: 510.643.9841                                (Office: 545Q Cory)
>>>> home: (F-Tu) 707.665.0131 cell: 707.332.0670
>>
>> --
>> Christopher Brooks, PMP                       University of California
>> CHESS Executive Director                      US Mail: 337 Cory Hall
>> Programmer/Analyst CHESS/Ptolemy/Trust        Berkeley, CA 94720-1774
>> ph: 510.643.9841                                (Office: 545Q Cory)
>> home: (F-Tu) 707.665.0131 cell: 707.332.0670
>>
>>
>> _______________________________________________
>> Kepler-dev mailing list
>> Kepler-dev at kepler-project.org
>> http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev
>
>
>
> _______________________________________________
> Kepler-dev mailing list
> Kepler-dev at kepler-project.org
> http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev
>



More information about the Kepler-dev mailing list