Program: 123695
Project: 123695
Buggy source:
@Override public void execute(){
  if (targetEditPart == null) {
    return;
  }
  xmlMapData=getXmlMapData(targetEditPart.getModel());
  if (xmlMapData == null) {
    return;
  }
  if (newObjects instanceof TransferedObject) {
    TransferedObject tranceferedObj=(TransferedObject)newObjects;
    NodeType selectedNodeType=NodeType.ELEMENT;
    if (!update && targetEditPart instanceof OutputTreeNodeEditPart) {
      OutputTreeNode targetOutputNode=(OutputTreeNode)((OutputTreeNodeEditPart)targetEditPart).getModel();
      Shell shell=targetEditPart.getViewer().getControl().getShell();
      boolean needPrompt=false;
      boolean hasSubTree=false;
      for (      Object o : tranceferedObj.getToTransfer()) {
        if (o instanceof VarNodeEditPart) {
          needPrompt=true;
        }
 else         if (o instanceof TreeNodeEditPart) {
          TreeNode treeNode=(TreeNode)((TreeNodeEditPart)o).getModel();
          if (NodeType.ATTRIBUT.equals(treeNode.getNodeType())) {
            needPrompt=true;
          }
          if (NodeType.ELEMENT.equals(treeNode.getNodeType())) {
            if (treeNode.getChildren().isEmpty()) {
              needPrompt=true;
            }
 else {
              hasSubTree=true;
            }
          }
        }
      }
      if (needPrompt) {
        DragAndDrogDialog selectDialog=new DragAndDrogDialog(shell,!targetOutputNode.getChildren().isEmpty());
        int open=selectDialog.open();
        if (open == Window.OK) {
          if (DragAndDrogDialog.CREATE_AS_SUBELEMENT.equals(selectDialog.getSelectValue())) {
            selectedNodeType=NodeType.ELEMENT;
          }
 else           if (DragAndDrogDialog.CREATE_AS_ATTRIBUTE.equals(selectDialog.getSelectValue())) {
            selectedNodeType=NodeType.ATTRIBUT;
          }
 else           if (DragAndDrogDialog.CREATE_AS_SUBELEMENT.equals(selectDialog.getSelectValue())) {
            selectedNodeType=NodeType.NAME_SPACE;
          }
 else           if (DragAndDrogDialog.CREATE_AS_TEXT.equals(selectDialog.getSelectValue())) {
            update=true;
          }
        }
 else {
          return;
        }
      }
      if (!update) {
        if (!targetOutputNode.getIncomingConnections().isEmpty() && ((selectedNodeType != NodeType.ATTRIBUT && selectedNodeType != NodeType.NAME_SPACE) || hasSubTree)) {
          boolean canContinue=MessageDialog.openConfirm(null,"String_Node_Str","String_Node_Str");
          if (canContinue) {
            XmlMapUtil.detachNodeConnections(targetOutputNode,xmlMapData,false);
          }
 else {
            return;
          }
        }
      }
    }
    for (    Object o : (tranceferedObj.getToTransfer())) {
      if (!(o instanceof AbstractNodePart)) {
        continue;
      }
      boolean isLookup=false;
      AbstractNode sourceNode=(AbstractNode)((AbstractNodePart)o).getModel();
      if (sourceNode instanceof TreeNode) {
        AbstractInOutTree abstractTree=XmlMapUtil.getAbstractInOutTree((TreeNode)sourceNode);
        if (abstractTree != null && abstractTree instanceof InputXmlTree) {
          isLookup=((InputXmlTree)abstractTree).isLookup();
        }
      }
      if (o instanceof TreeNodeEditPart && !isLookup) {
        loopParentTreeNode=XmlMapUtil.getLoopParentNode((TreeNode)sourceNode);
      }
      if (update) {
        doUpdate(sourceNode);
      }
 else {
        if (targetEditPart instanceof OutputTreeNodeEditPart) {
          OutputTreeNode targetOutputNode=(OutputTreeNode)((OutputTreeNodeEditPart)targetEditPart).getModel();
          OutputTreeNode targetNode=XmlmapFactory.eINSTANCE.createOutputTreeNode();
          targetNode.setName(sourceNode.getName());
          targetNode.setType(XmlMapUtil.DEFAULT_DATA_TYPE);
          if (sourceNode instanceof TreeNode) {
            NodeType nodeType=selectedNodeType;
            if (NodeType.NAME_SPACE.equals(((TreeNode)sourceNode).getNodeType())) {
              nodeType=NodeType.NAME_SPACE;
              targetNode.setDefaultValue(((TreeNode)sourceNode).getDefaultValue());
            }
 else             if (!((TreeNode)sourceNode).getChildren().isEmpty()) {
              nodeType=((TreeNode)sourceNode).getNodeType();
            }
            targetNode.setXpath(XmlMapUtil.getXPath(targetOutputNode.getXpath(),targetNode.getName(),nodeType));
            targetNode.setNodeType(nodeType);
            targetNode.setExpression(XmlMapUtil.convertToExpression(((TreeNode)sourceNode).getXpath()));
            EList<TreeNode> sourceChildren=((TreeNode)sourceNode).getChildren();
            if (!sourceChildren.isEmpty()) {
              for (              TreeNode child : sourceChildren) {
                OutputTreeNode childTarget=XmlmapFactory.eINSTANCE.createOutputTreeNode();
                childTarget.setName(child.getName());
                childTarget.setType(child.getType());
                childTarget.setNodeType(child.getNodeType());
                childTarget.setXpath(XmlMapUtil.getXPath(targetNode.getXpath(),childTarget.getName(),childTarget.getNodeType()));
                targetNode.getChildren().add(childTarget);
                if (NodeType.NAME_SPACE.equals(child.getNodeType())) {
                  childTarget.setDefaultValue(child.getDefaultValue());
                  childTarget.setExpression("String_Node_Str");
                }
 else {
                  childTarget.setExpression(XmlMapUtil.convertToExpression(((TreeNode)child).getXpath()));
                  Connection conn=XmlmapFactory.eINSTANCE.createConnection();
                  conn.setSource(child);
                  conn.setTarget(childTarget);
                  childTarget.getIncomingConnections().add(conn);
                  child.getOutgoingConnections().add(conn);
                  if (xmlMapData != null) {
                    xmlMapData.getConnections().add(conn);
                  }
                }
              }
            }
          }
 else           if (sourceNode instanceof VarNode) {
            String variable=sourceNode.getName();
            targetNode.setXpath(XmlMapUtil.getXPath(targetOutputNode.getXpath(),targetNode.getName(),selectedNodeType));
            targetNode.setNodeType(selectedNodeType);
            if (sourceNode.eContainer() instanceof VarTable) {
              VarTable container=(VarTable)sourceNode.eContainer();
              variable=container.getName() + TalendTextUtils.JAVA_END_STRING + variable;
            }
            targetNode.setExpression(variable);
          }
          targetOutputNode.getChildren().add(targetNode);
          Connection conn=XmlmapFactory.eINSTANCE.createConnection();
          conn.setSource(sourceNode);
          conn.setTarget(targetNode);
          targetNode.getIncomingConnections().add(conn);
          sourceNode.getOutgoingConnections().add(conn);
          if (xmlMapData != null) {
            xmlMapData.getConnections().add(conn);
          }
          createInputLoopTable(targetNode,(OutputTreeNodeEditPart)targetEditPart);
        }
      }
    }
  }
  if (targetEditPart instanceof OutputTreeNodeEditPart) {
    OutputTreeNode model=(OutputTreeNode)targetEditPart.getModel();
    if (NodeType.NAME_SPACE.equals(model.getNodeType()) && model.getExpression() != null && !"String_Node_Str".equals(model.getExpression())) {
      model.setDefaultValue("String_Node_Str");
    }
    if (!XmlMapUtil.isExpressionEditable(model)) {
      model.setExpression("String_Node_Str");
      if (model.isAggregate()) {
        model.setAggregate(false);
      }
    }
  }
}

Fixed version (ground truth):
@Override public void execute(){
  if (targetEditPart == null) {
    return;
  }
  xmlMapData=getXmlMapData(targetEditPart.getModel());
  if (xmlMapData == null) {
    return;
  }
  if (newObjects instanceof TransferedObject) {
    TransferedObject tranceferedObj=(TransferedObject)newObjects;
    NodeType selectedNodeType=NodeType.ELEMENT;
    if (!update && targetEditPart instanceof OutputTreeNodeEditPart) {
      OutputTreeNode targetOutputNode=(OutputTreeNode)((OutputTreeNodeEditPart)targetEditPart).getModel();
      Shell shell=targetEditPart.getViewer().getControl().getShell();
      boolean needPrompt=false;
      boolean hasSubTree=false;
      for (      Object o : tranceferedObj.getToTransfer()) {
        if (o instanceof VarNodeEditPart) {
          needPrompt=true;
        }
 else         if (o instanceof TreeNodeEditPart) {
          TreeNode treeNode=(TreeNode)((TreeNodeEditPart)o).getModel();
          if (NodeType.ATTRIBUT.equals(treeNode.getNodeType())) {
            needPrompt=true;
          }
          if (NodeType.ELEMENT.equals(treeNode.getNodeType())) {
            if (treeNode.getChildren().isEmpty()) {
              needPrompt=true;
            }
 else {
              hasSubTree=true;
            }
          }
        }
      }
      if (needPrompt) {
        DragAndDrogDialog selectDialog=new DragAndDrogDialog(shell,!targetOutputNode.getChildren().isEmpty());
        int open=selectDialog.open();
        if (open == Window.OK) {
          if (DragAndDrogDialog.CREATE_AS_SUBELEMENT.equals(selectDialog.getSelectValue())) {
            selectedNodeType=NodeType.ELEMENT;
          }
 else           if (DragAndDrogDialog.CREATE_AS_ATTRIBUTE.equals(selectDialog.getSelectValue())) {
            selectedNodeType=NodeType.ATTRIBUT;
          }
 else           if (DragAndDrogDialog.CREATE_AS_SUBELEMENT.equals(selectDialog.getSelectValue())) {
            selectedNodeType=NodeType.NAME_SPACE;
          }
 else           if (DragAndDrogDialog.CREATE_AS_TEXT.equals(selectDialog.getSelectValue())) {
            update=true;
          }
        }
 else {
          return;
        }
      }
      if (!update) {
        if (!targetOutputNode.getIncomingConnections().isEmpty() && ((selectedNodeType != NodeType.ATTRIBUT && selectedNodeType != NodeType.NAME_SPACE) || hasSubTree)) {
          boolean canContinue=MessageDialog.openConfirm(null,"String_Node_Str","String_Node_Str");
          if (canContinue) {
            XmlMapUtil.detachNodeConnections(targetOutputNode,xmlMapData,false);
          }
 else {
            return;
          }
        }
      }
    }
    for (    Object o : (tranceferedObj.getToTransfer())) {
      if (!(o instanceof AbstractNodePart)) {
        continue;
      }
      AbstractNode sourceNode=(AbstractNode)((AbstractNodePart)o).getModel();
      if (update) {
        doUpdate(sourceNode);
      }
 else {
        if (targetEditPart instanceof OutputTreeNodeEditPart) {
          OutputTreeNode targetOutputNode=(OutputTreeNode)((OutputTreeNodeEditPart)targetEditPart).getModel();
          OutputTreeNode targetNode=XmlmapFactory.eINSTANCE.createOutputTreeNode();
          targetNode.setName(sourceNode.getName());
          targetNode.setType(XmlMapUtil.DEFAULT_DATA_TYPE);
          if (sourceNode instanceof TreeNode) {
            NodeType nodeType=selectedNodeType;
            if (NodeType.NAME_SPACE.equals(((TreeNode)sourceNode).getNodeType())) {
              nodeType=NodeType.NAME_SPACE;
              targetNode.setDefaultValue(((TreeNode)sourceNode).getDefaultValue());
            }
 else             if (!((TreeNode)sourceNode).getChildren().isEmpty()) {
              nodeType=((TreeNode)sourceNode).getNodeType();
            }
            targetNode.setXpath(XmlMapUtil.getXPath(targetOutputNode.getXpath(),targetNode.getName(),nodeType));
            targetNode.setNodeType(nodeType);
            targetNode.setExpression(XmlMapUtil.convertToExpression(((TreeNode)sourceNode).getXpath()));
            EList<TreeNode> sourceChildren=((TreeNode)sourceNode).getChildren();
            if (!sourceChildren.isEmpty()) {
              for (              TreeNode child : sourceChildren) {
                OutputTreeNode childTarget=XmlmapFactory.eINSTANCE.createOutputTreeNode();
                childTarget.setName(child.getName());
                childTarget.setType(child.getType());
                childTarget.setNodeType(child.getNodeType());
                childTarget.setXpath(XmlMapUtil.getXPath(targetNode.getXpath(),childTarget.getName(),childTarget.getNodeType()));
                targetNode.getChildren().add(childTarget);
                if (NodeType.NAME_SPACE.equals(child.getNodeType())) {
                  childTarget.setDefaultValue(child.getDefaultValue());
                  childTarget.setExpression("String_Node_Str");
                }
 else {
                  childTarget.setExpression(XmlMapUtil.convertToExpression(((TreeNode)child).getXpath()));
                  Connection conn=XmlmapFactory.eINSTANCE.createConnection();
                  conn.setSource(child);
                  conn.setTarget(childTarget);
                  childTarget.getIncomingConnections().add(conn);
                  child.getOutgoingConnections().add(conn);
                  if (xmlMapData != null) {
                    xmlMapData.getConnections().add(conn);
                  }
                }
              }
            }
          }
 else           if (sourceNode instanceof VarNode) {
            String variable=sourceNode.getName();
            targetNode.setXpath(XmlMapUtil.getXPath(targetOutputNode.getXpath(),targetNode.getName(),selectedNodeType));
            targetNode.setNodeType(selectedNodeType);
            if (sourceNode.eContainer() instanceof VarTable) {
              VarTable container=(VarTable)sourceNode.eContainer();
              variable=container.getName() + TalendTextUtils.JAVA_END_STRING + variable;
            }
            targetNode.setExpression(variable);
          }
          targetOutputNode.getChildren().add(targetNode);
          Connection conn=XmlmapFactory.eINSTANCE.createConnection();
          conn.setSource(sourceNode);
          conn.setTarget(targetNode);
          targetNode.getIncomingConnections().add(conn);
          sourceNode.getOutgoingConnections().add(conn);
          if (xmlMapData != null) {
            xmlMapData.getConnections().add(conn);
          }
          if (sourceNode instanceof TreeNode) {
            createInputLoopTable((TreeNode)sourceNode,targetNode);
          }
        }
      }
    }
  }
  if (targetEditPart instanceof OutputTreeNodeEditPart) {
    OutputTreeNode model=(OutputTreeNode)targetEditPart.getModel();
    if (NodeType.NAME_SPACE.equals(model.getNodeType()) && model.getExpression() != null && !"String_Node_Str".equals(model.getExpression())) {
      model.setDefaultValue("String_Node_Str");
    }
    if (!XmlMapUtil.isExpressionEditable(model)) {
      model.setExpression("String_Node_Str");
      if (model.isAggregate()) {
        model.setAggregate(false);
      }
    }
  }
}