Index: src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java =================================================================== --- src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java (revision 25396) +++ src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java (working copy) @@ -946,17 +946,55 @@ } public void createConnection(List children, List connections) { - Object parentTask = taskType.getParent(); - if(parentTask instanceof TaskType) { - if(((TaskType) parentTask).getId().equals(TaskTypeManager.TASK_ID_INPUT)) { - for (AbstractSmooksGraphicalModel abstractSmooksGraphicalModel : children) { - if (abstractSmooksGraphicalModel instanceof InputDataContianerModel) { - createConnection(abstractSmooksGraphicalModel); - break; + /* + * This was the original code that Dart had here + */ +// for (Iterator iterator = children.iterator(); iterator.hasNext();) { +// AbstractSmooksGraphicalModel abstractSmooksGraphicalModel = (AbstractSmooksGraphicalModel) iterator.next(); +// if (!(abstractSmooksGraphicalModel instanceof InputDataContianerModel)) { +// if (canCreateConnection(abstractSmooksGraphicalModel)) { +// Collection c = createConnection(abstractSmooksGraphicalModel); +// if (c != null) { +// connections.addAll(c); +// } +// } +// List cchildren = abstractSmooksGraphicalModel.getChildren(); +// createConnection(cchildren, connections); +// } +// } + + if (taskType != null) { + String id = taskType.getId(); + if (id.equals(TaskTypeManager.TASK_ID_FREEMARKER_CSV_TEMPLATE) || + id.equals(TaskTypeManager.TASK_ID_FREEMARKER_XML_TEMPLATE)) { + + Object parentTask = taskType.getParent(); + + if(parentTask instanceof TaskType) { + if(((TaskType) parentTask).getId().equals(TaskTypeManager.TASK_ID_INPUT)) { + for (AbstractSmooksGraphicalModel abstractSmooksGraphicalModel : children) { + if (abstractSmooksGraphicalModel instanceof InputDataContianerModel) { + createConnection(abstractSmooksGraphicalModel); + break; + } + } + } else if(((TaskType) parentTask).getId().equals(TaskTypeManager.TASK_ID_JAVA_MAPPING)) { + for (AbstractSmooksGraphicalModel abstractSmooksGraphicalModel : children) { + if (!(abstractSmooksGraphicalModel instanceof InputDataContianerModel)) { + if (canCreateConnection(abstractSmooksGraphicalModel)) { + Collection c = createConnection(abstractSmooksGraphicalModel); + if (c != null) { + connections.addAll(c); + } + } + List cchildren = abstractSmooksGraphicalModel.getChildren(); + createConnection(cchildren, connections); + } + } } - } - } else if(((TaskType) parentTask).getId().equals(TaskTypeManager.TASK_ID_JAVA_MAPPING)) { + } + } else if (id.equals(TaskTypeManager.TASK_ID_JAVA_MAPPING)) { for (AbstractSmooksGraphicalModel abstractSmooksGraphicalModel : children) { if (!(abstractSmooksGraphicalModel instanceof InputDataContianerModel)) { if (canCreateConnection(abstractSmooksGraphicalModel)) { @@ -970,7 +1008,8 @@ } } } - } + } + } private boolean canCreateConnection(AbstractSmooksGraphicalModel model) {