This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 85928 - Undo/Redo throws exceptions after change bpel from navigator
Summary: Undo/Redo throws exceptions after change bpel from navigator
Status: VERIFIED FIXED
Alias: None
Product: soa
Classification: Unclassified
Component: BPEL (show other bugs)
Version: 5.x
Hardware: All All
: P2 blocker (vote)
Assignee: Denis Anisimov
URL:
Keywords:
Depends on: 85918
Blocks:
  Show dependency tree
 
Reported: 2006-09-27 17:58 UTC by Andrey Yamkovoy
Modified: 2006-10-24 21:20 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Yamkovoy 2006-09-27 17:58:20 UTC
Steps to reproduce:
- Create Synchronous sample project.
- Open bpel diagram.
- Add 2 Empty activities to process.
- Invoke Undo action.
- Switch to bpel source.
- Go to Navigator window and change bpel from it(for ex. delete some activity).
- Go to bpel source window.
- Invoke Redo action.
- Exception occurs.

java.lang.ArrayIndexOutOfBoundsException: 242
	at org.netbeans.editor.MarkVector.update(MarkVector.java:296)
	at org.netbeans.editor.DocumentContent$Edit.undoOrRedo
(DocumentContent.java:377)
	at org.netbeans.editor.DocumentContent$Edit.redo
(DocumentContent.java:359)
	at org.netbeans.editor.BaseDocumentEvent.redo
(BaseDocumentEvent.java:322)
	at org.netbeans.editor.GuardedDocumentEvent.redo
(GuardedDocumentEvent.java:56)
	at javax.swing.undo.CompoundEdit.redo(CompoundEdit.java:59)
	at javax.swing.undo.CompoundEdit.redo(CompoundEdit.java:59)
	at org.netbeans.modules.xml.xam.AbstractModel$ModelUndoableEdit.redo
(AbstractModel.java:458)
	at 
org.netbeans.modules.bpel.model.impl.BpelModelImpl$BpelModelUndoableEdit.redo
(BpelModelImpl.java:734)
	at javax.swing.undo.UndoManager.redoTo(UndoManager.java:329)
	at javax.swing.undo.UndoManager.redo(UndoManager.java:436)
	at 
org.openide.text.CloneableEditorSupport$CESUndoRedoManager.access$2301
(CloneableEditorSupport.java:2639)
	at 
org.openide.text.CloneableEditorSupport$CESUndoRedoManager$RenderUndo.run
(CloneableEditorSupport.java:2774)
	at org.netbeans.editor.GuardedDocument.runAtomic
(GuardedDocument.java:226)
	at 
org.openide.text.CloneableEditorSupport$CESUndoRedoManager$RenderUndo.<init>
(CloneableEditorSupport.java:2759)
	at 
org.openide.text.CloneableEditorSupport$CESUndoRedoManager$RenderUndo.<init>
(CloneableEditorSupport.java:2751)
	at org.openide.text.CloneableEditorSupport$CESUndoRedoManager.redo
(CloneableEditorSupport.java:2655)
	at org.netbeans.modules.xml.xam.ui.undo.FilterUndoManager.redo
(FilterUndoManager.java:116)
	at org.netbeans.modules.xml.xam.ui.undo.CompoundUndoManager.redo
(CompoundUndoManager.java:182)
	at org.netbeans.modules.xml.xam.ui.undo.QuietUndoManager.redo
(QuietUndoManager.java:159)
	at org.openide.actions.RedoAction.performAction(RedoAction.java:71)

-----

java.lang.NullPointerException
	at 
org.netbeans.modules.bpel.core.annotations.impl.AnnotationManagerProvider.getAnn
otations(AnnotationManagerProvider.java:163)
	at 
org.netbeans.modules.bpel.design.decoration.providers.DebuggerDecorationProvider
.getDecoration(DebuggerDecorationProvider.java:154)
	at 
org.netbeans.modules.bpel.design.decoration.DecorationManager.updateResult
(DecorationManager.java:168)
	at 
org.netbeans.modules.bpel.design.decoration.DecorationManager.updateResultRecurs
ive(DecorationManager.java:268)
	at 
org.netbeans.modules.bpel.design.decoration.DecorationManager.decorationChanged
(DecorationManager.java:119)
	at 
org.netbeans.modules.bpel.design.decoration.DecorationProvider.fireDecorationCha
nged(DecorationProvider.java:48)
	at 
org.netbeans.modules.bpel.design.decoration.providers.ValidationDecorationProvid
er.access$600(ValidationDecorationProvider.java:47)
[catch] at 
org.netbeans.modules.bpel.design.decoration.providers.ValidationDecorationProvid
er$2.run(ValidationDecorationProvider.java:135)
Comment 1 Michael Frisino 2006-09-27 19:39:42 UTC
not sure if this is model or ui issue. Denis please evaluate first.
Comment 2 Denis Anisimov 2006-09-28 07:50:38 UTC
This is the same issue as #85918.
It has other description but reason for both bugs are the same.
Comment 3 Denis Anisimov 2006-09-29 12:07:03 UTC
This is fixed locally.
Needs to commit into CVS.
Comment 4 Denis Anisimov 2006-09-29 15:57:36 UTC
Fixed in "dev" branch.
Needs to be fixed in release55 branch.
Comment 5 Denis Anisimov 2006-09-29 16:02:13 UTC
File Changes:

Directory: /enterprise/bpel/editors/src/org/netbeans/modules/bpel/design/
=========================================================================

File [changed]: DnDHandler.java
Url:
http://enterprise.netbeans.org/source/browse/enterprise/bpel/editors/src/org/netbeans/modules/bpel/design/DnDHandler.java?r1=1.1.2.24&r2=1.1.2.24.2.1
Delta lines:  +4 -3
-------------------
--- DnDHandler.java	25 Sep 2006 16:24:34 -0000	1.1.2.24
+++ DnDHandler.java	29 Sep 2006 14:59:37 -0000	1.1.2.24.2.1
@@ -285,7 +285,8 @@
         
         //BpelEntity be = getBpelEntity(dtde.getTransferable());
         
-        
+        getDesignView().getTopComponent().requestActive();
+        getDesignView().requestFocusInWindow();
         
         getGhostSelection().clear();
         
@@ -311,6 +312,7 @@
             };
             
         }
+
         try {
             if (callable != null){
                 designView.getBPELModel().invoke(callable, this);
@@ -320,8 +322,7 @@
         }
         
         
-        getDesignView().getTopComponent().requestActive();
-        getDesignView().requestFocusInWindow();
+        
     }
     
     

Directory: /enterprise/bpel/editors/src/org/netbeans/modules/bpel/editors/multiview/
====================================================================================

File [changed]: DesignerMultiViewElement.java
Url:
http://enterprise.netbeans.org/source/browse/enterprise/bpel/editors/src/org/netbeans/modules/bpel/editors/multiview/DesignerMultiViewElement.java?r1=1.1.2.28&r2=1.1.2.28.2.1
Delta lines:  +15 -25
---------------------
--- DesignerMultiViewElement.java	20 Sep 2006 16:09:41 -0000	1.1.2.28
+++ DesignerMultiViewElement.java	29 Sep 2006 14:59:37 -0000	1.1.2.28.2.1
@@ -69,6 +69,7 @@
 import org.netbeans.modules.bpel.model.api.Assign;
 import org.netbeans.modules.bpel.model.api.BpelEntity;
 import org.openide.util.Lookup;
+import org.openide.util.WeakListeners;
 import org.openide.util.lookup.Lookups;
 import org.openide.util.lookup.ProxyLookup;
 import org.openide.nodes.Node;
@@ -119,12 +120,14 @@
 import org.netbeans.modules.bpel.model.api.Variable;
 import org.netbeans.modules.bpel.model.api.VariableContainer;
 import org.netbeans.modules.bpel.model.api.VariableDeclarationScope;
+import org.netbeans.modules.bpel.model.api.events.ChangeEventListener;
 import org.netbeans.modules.bpel.model.api.events.ChangeEventListenerAdapter;
 import org.netbeans.modules.bpel.model.api.events.PropertyUpdateEvent;
 import org.netbeans.modules.bpel.palette.SoaPaletteFactory;
 import org.netbeans.modules.bpel.properties.PropertyNodeFactory;
 import org.netbeans.modules.xml.validation.ValidateAction;
 import org.netbeans.modules.xml.validation.ValidateAction.RunAction;
+import org.netbeans.modules.xml.xam.Model;
 import org.netbeans.modules.xml.xam.Model.State;
 import org.netbeans.modules.xml.xam.spi.Validator.ResultItem;
 import org.netbeans.modules.xml.xam.ui.undo.QuietUndoManager;
@@ -252,7 +255,7 @@
         super.componentDeactivated();
         // Don't touch undo manager when cpmponent still present showing
         // but just lost focus....
-        //removeUndoManager();
+        removeUndoManager();
     }
     
     public void componentHidden() {
@@ -556,38 +559,23 @@
         requestVisible();
     }
     
+    
     /**
-     * Adds the undo/redo manager to the schema model as an undoable
+     * Adds the undo/redo manager to the bpel model as an undoable
      * edit listener, so it receives the edits onto the queue.
      */
     private void addUndoManager() {
-        BpelModel model = getBpelModel();
-        if (model != null) {
-            BPELDataEditorSupport editor = getDataObject().getEditorSupport();
-            QuietUndoManager undo = editor.getUndoManager();
-            // Ensure the listener is not added twice.
-            model.removeUndoableEditListener(undo);
-            model.addUndoableEditListener(undo);
-            // Ensure the model is sync'd when undo/redo is invoked,
-            // otherwise the edits are added to the queue and eventually
-            // cause exceptions.
-            undo.setModel(model);
-        }
+        UndoRedoManagerUtils.addUndoManager( getBpelModel() , 
+                myDataObject.getEditorSupport());
     }
 
     /**
      * Removes the undo/redo manager undoable edit listener from the
-     * schema model, to stop receiving undoable edits.
+     * bpel model, to stop receiving undoable edits.
      */
     private void removeUndoManager() {
-        BpelModel model = getBpelModel();
-        if (model != null) {
-            BPELDataEditorSupport editor = getDataObject().getEditorSupport();
-            QuietUndoManager undo = editor.getUndoManager();
-            model.removeUndoableEditListener(undo);
-            // Must unset the model when leaving model view.
-            undo.setModel(null);
-        }
+        UndoRedoManagerUtils.removeUndoManager( getBpelModel() , 
+                myDataObject.getEditorSupport());
     }
     
     private BpelModel getBpelModel() {
@@ -693,8 +681,10 @@
         @Override
         public void notifyPropertyUpdated( PropertyUpdateEvent event )
         {
-            if ( BpelModel.STATE_PROPERTY.equals( event.getName()) ) {
-                // TODO : write code for replacing view.
+            if ( BpelModel.STATE.equals( event.getName()) &&
+                    Model.State.NOT_WELL_FORMED.equals(event.getNewValue()) ) 
+            {
+                setActivatedNodes(new Node[] {getDataObject().getNodeDelegate()});
             }
         }
 

File [added]: UndoRedoManagerUtils.java
Url:
http://enterprise.netbeans.org/source/browse/enterprise/bpel/editors/src/org/netbeans/modules/bpel/editors/multiview/UndoRedoManagerUtils.java?rev=1.1.2.1&content-type=text/vnd.viewcvs-markup
Added lines: 0
--------------

Directory: /enterprise/bpel/editors/src/org/netbeans/modules/bpel/navigator/
============================================================================

File [changed]: BpelModelLogicalBeanTree.java
Url:
http://enterprise.netbeans.org/source/browse/enterprise/bpel/editors/src/org/netbeans/modules/bpel/navigator/BpelModelLogicalBeanTree.java?r1=1.1.2.10&r2=1.1.2.10.4.1
Delta lines:  +38 -9
--------------------
--- BpelModelLogicalBeanTree.java	24 Jul 2006 07:05:31 -0000	1.1.2.10
+++ BpelModelLogicalBeanTree.java	29 Sep 2006 14:59:38 -0000	1.1.2.10.4.1
@@ -23,12 +23,15 @@
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyVetoException;
+
 import javax.swing.SwingUtilities;
 import javax.swing.tree.TreeSelectionModel;
+
+import org.netbeans.modules.bpel.core.BPELDataEditorSupport;
+import org.netbeans.modules.bpel.design.nodes.NodeType;
+import org.netbeans.modules.bpel.editors.multiview.UndoRedoManagerUtils;
 import org.netbeans.modules.bpel.model.api.BpelEntity;
 import org.netbeans.modules.bpel.model.api.BpelModel;
-import org.netbeans.modules.bpel.model.api.PartnerLink;
-import org.netbeans.modules.bpel.design.nodes.NodeType;
 import org.netbeans.modules.bpel.model.api.events.ArrayUpdateEvent;
 import org.netbeans.modules.bpel.model.api.events.ChangeEventListener;
 import org.netbeans.modules.bpel.model.api.events.EntityInsertEvent;
@@ -36,14 +39,13 @@
 import org.netbeans.modules.bpel.model.api.events.EntityUpdateEvent;
 import org.netbeans.modules.bpel.model.api.events.PropertyRemoveEvent;
 import org.netbeans.modules.bpel.model.api.events.PropertyUpdateEvent;
+import org.netbeans.modules.bpel.nodes.BpelNode;
+import org.netbeans.modules.bpel.nodes.BpelProcessNode;
 import org.netbeans.modules.bpel.nodes.navigator.Util;
 import org.netbeans.modules.bpel.nodes.refactoring.UsageFilterNode;
 import org.netbeans.modules.bpel.properties.NodeUtils;
-import org.netbeans.modules.bpel.nodes.BpelNode;
-import org.netbeans.modules.bpel.nodes.BpelProcessNode;
 import org.netbeans.modules.xml.xam.Model;
 import org.openide.ErrorManager;
-
 import org.openide.explorer.ExplorerManager;
 import org.openide.explorer.view.BeanTreeView;
 import org.openide.nodes.Node;
@@ -69,9 +71,6 @@
     private BpelModel myBpelModel;
     //context lookup
     private Lookup myContextLookup;
-    private PartnerLink[] myPartnerLinks;
-    //true mean to send selection event to other subscribed components.....
-    private boolean isSendSelectionEvent = true;
     
     private BeanTreeView myBeanTreeView;
     private ExplorerManager myExplorerManager;
@@ -184,7 +183,16 @@
         TopComponent navigatorTopComponent 
                 = BpelNavigatorController.getNavigatorTC();
         
-        if (propertyName.equals(TopComponent.Registry.PROP_ACTIVATED_NODES)) {
+        if (propertyName.equals(TopComponent.Registry.PROP_ACTIVATED)) {
+            if (TopComponent.getRegistry().getActivated() ==
navigatorTopComponent) {
+                removeUndoManager();
+                addUndoManager();
+            }
+            else {
+                removeUndoManager();
+            }
+        }
+        else if (propertyName.equals(TopComponent.Registry.PROP_ACTIVATED_NODES)) {
            if (TopComponent.getRegistry().getActivated() !=
navigatorTopComponent) {
                doTreeNodeSelectionByActiveNode();
            }
@@ -270,6 +278,27 @@
         } catch (PropertyVetoException ex) {
             //JUST IGNORE
         }
+    }
+    
+    /**
+     * Adds the undo/redo manager to the schema model as an undoable
+     * edit listener, so it receives the edits onto the queue.
+     */
+    private void addUndoManager() {
+        UndoRedoManagerUtils.addUndoManager( myBpelModel , 
+                (BPELDataEditorSupport)myContextLookup.
+                lookup( BPELDataEditorSupport.class  ));
+    }
+    
+    /**
+     * Removes the undo/redo manager undoable edit listener from the
+     * schema model, to stop receiving undoable edits.
+     */
+    private void removeUndoManager() {
+        UndoRedoManagerUtils.removeUndoManager( myBpelModel , 
+                (BPELDataEditorSupport)myContextLookup.
+                lookup( BPELDataEditorSupport.class  ));
+
     }
 }
 




---------
Comment 6 Vladimir Yaroslavskiy 2006-10-02 16:22:42 UTC
I've reviewed fix for these issues:
http://www.netbeans.org/issues/show_bug.cgi?id=85928
http://www.netbeans.org/issues/show_bug.cgi?id=85918

Everything looks okey.
Comment 7 Andrey Yamkovoy 2006-10-16 13:49:26 UTC
fixed