Null check
diff --git a/org.eclipse.epf.diagram.core/src/org/eclipse/epf/diagram/core/bridge/NodeAdapter.java b/org.eclipse.epf.diagram.core/src/org/eclipse/epf/diagram/core/bridge/NodeAdapter.java index c4ecdfc..eef88f8 100644 --- a/org.eclipse.epf.diagram.core/src/org/eclipse/epf/diagram/core/bridge/NodeAdapter.java +++ b/org.eclipse.epf.diagram.core/src/org/eclipse/epf/diagram/core/bridge/NodeAdapter.java
@@ -254,16 +254,16 @@ // so it will not create duplicate UMA data // NodeAdapter srcNodeAdapter = BridgeHelper.getNodeAdapter(srcNode); - boolean notify = srcNodeAdapter.notificationEnabled; + boolean notify = srcNodeAdapter != null ? srcNodeAdapter.notificationEnabled : false; try { - srcNodeAdapter.notificationEnabled = false; + if(srcNodeAdapter != null) srcNodeAdapter.notificationEnabled = false; ActivityEdge edge = UMLFactory.eINSTANCE.createControlFlow(); edge.setSource(srcNode); edge.setTarget(getNode()); getDiagram().getEdges().add(edge); return edge; } finally { - srcNodeAdapter.notificationEnabled = notify; + if(srcNodeAdapter != null) srcNodeAdapter.notificationEnabled = notify; } } @@ -275,16 +275,16 @@ // disable notification of targetNode before associate it with the link // so it will not create duplicate UMA data // - NodeAdapter nodeImpl = (NodeAdapter) targetNode; - boolean notify = nodeImpl.notificationEnabled; + NodeAdapter nodeAdapter = BridgeHelper.getNodeAdapter(targetNode); + boolean notify = nodeAdapter != null ? nodeAdapter.notificationEnabled : false; try { - nodeImpl.notificationEnabled = false; + if(nodeAdapter != null) nodeAdapter.notificationEnabled = false; ActivityEdge edge = getDiagram().createEdge("", UMLPackage.Literals.CONTROL_FLOW); //$NON-NLS-1$ edge.setSource(getNode()); edge.setTarget(targetNode); return edge; } finally { - nodeImpl.notificationEnabled = notify; + if(nodeAdapter != null) nodeAdapter.notificationEnabled = notify; } }
diff --git a/org.eclipse.epf.diagram.core/src/org/eclipse/epf/diagram/core/bridge/WorkBreakdownElementNodeAdapter.java b/org.eclipse.epf.diagram.core/src/org/eclipse/epf/diagram/core/bridge/WorkBreakdownElementNodeAdapter.java index 86a4a32..3e59160 100644 --- a/org.eclipse.epf.diagram.core/src/org/eclipse/epf/diagram/core/bridge/WorkBreakdownElementNodeAdapter.java +++ b/org.eclipse.epf.diagram.core/src/org/eclipse/epf/diagram/core/bridge/WorkBreakdownElementNodeAdapter.java
@@ -103,14 +103,14 @@ link = (ActivityEdge)obj; } if(link != null && link.getSource() != null){ - NodeAdapter sourceNode = BridgeHelper.getNodeAdapter(link.getSource()); - boolean oldNotify1 = sourceNode.notificationEnabled; + NodeAdapter sourceNodeAdapter = BridgeHelper.getNodeAdapter(link.getSource()); + boolean oldNotify1 = sourceNodeAdapter != null ? sourceNodeAdapter.notificationEnabled : false; try { - sourceNode.notificationEnabled = false; + if(sourceNodeAdapter != null) sourceNodeAdapter.notificationEnabled = false; link.setTarget(null); getNode().getIncomings().remove(link); } finally { - sourceNode.notificationEnabled = oldNotify1; + if(sourceNodeAdapter != null) sourceNodeAdapter.notificationEnabled = oldNotify1; } } } @@ -122,14 +122,14 @@ link = (ActivityEdge)obj; } if(link != null && link.getTarget() != null){ - NodeAdapter sourceNode = BridgeHelper.getNodeAdapter(link.getTarget()); - boolean oldNotify1 = sourceNode.notificationEnabled; + NodeAdapter nodeAdapter = BridgeHelper.getNodeAdapter(link.getTarget()); + boolean oldNotify1 = nodeAdapter != null ? nodeAdapter.notificationEnabled : false; try { - sourceNode.notificationEnabled = false; + if(nodeAdapter != null) nodeAdapter.notificationEnabled = false; link.setSource(null); getNode().getIncomings().remove(link); } finally { - sourceNode.notificationEnabled = oldNotify1; + if(nodeAdapter != null) nodeAdapter.notificationEnabled = oldNotify1; } } } @@ -165,14 +165,16 @@ WorkBreakdownElement succ = (WorkBreakdownElement) BridgeHelper.getMethodElement(link.getTarget()); WorkBreakdownElement pred = (WorkBreakdownElement) e; if (UmaUtil.findWorkOrder(succ, pred) == null) { - NodeAdapter sourceNodeAdapter = BridgeHelper.getNodeAdapter(link.getSource()); - boolean sourceNotify = sourceNodeAdapter.notificationEnabled; + NodeAdapter sourceNodeAdapter = BridgeHelper.getNodeAdapter(link.getSource()); + // node adapter can be NULL if the node is not currently visible in the diagram + // + boolean sourceNotify = sourceNodeAdapter != null ? sourceNodeAdapter.notificationEnabled : false; try { - sourceNodeAdapter.notificationEnabled = false; + if(sourceNodeAdapter != null) sourceNodeAdapter.notificationEnabled = false; //Create a workorder and disable notification flag. order = addDefaultWorkOrder(link.getTarget(), pred); } finally { - sourceNodeAdapter.notificationEnabled = sourceNotify; + if(sourceNodeAdapter != null) sourceNodeAdapter.notificationEnabled = sourceNotify; } } @@ -241,20 +243,18 @@ // look for the incoming connection with source as linked object of the // source node // - for (Iterator iter = getNode().getIncomings().iterator(); iter - .hasNext();) { - ActivityEdge link = (ActivityEdge) iter.next(); + for (ActivityEdge link : getNode().getIncomings()) { if (link.getSource() != null && BridgeHelper.getMethodElement(link.getSource()) == source) { // disable internal notification of the source node // - NodeAdapter sourceNode = BridgeHelper.getNodeAdapter(link.getSource()); - boolean oldNotify = sourceNode.notificationEnabled; + NodeAdapter nodeAdapter = BridgeHelper.getNodeAdapter(link.getSource()); + boolean oldNotify = nodeAdapter != null ? nodeAdapter.notificationEnabled : false; try { - sourceNode.notificationEnabled = false; + if(nodeAdapter != null) nodeAdapter.notificationEnabled = false; link.setSource(null); } finally { - sourceNode.notificationEnabled = oldNotify; + if(nodeAdapter != null) nodeAdapter.notificationEnabled = oldNotify; } link.setTarget(null); BridgeHelper.setSemanticModel(link, null);