From dac345d5480d52c4071c22fbdeba605dc1236cc0 Mon Sep 17 00:00:00 2001 From: scottkurz Date: Wed, 26 Jan 2011 01:18:02 +0000 Subject: Fix more issues with multiple outputs. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1063548 13f79535-47bb-0310-9956-ffa450edef68 --- .../tuscany/sca/databinding/impl/MediatorImpl.java | 40 ++++++++++------------ 1 file changed, 18 insertions(+), 22 deletions(-) (limited to 'sca-java-2.x/trunk/modules/databinding/src/main/java') diff --git a/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/MediatorImpl.java b/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/MediatorImpl.java index 6759edc992..0ba35866d9 100644 --- a/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/MediatorImpl.java +++ b/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/MediatorImpl.java @@ -559,30 +559,26 @@ public class MediatorImpl implements Mediator { List inputTypesTarget = targetOperation == null ? null : targetOperation.getInputType().getLogical(); Object[] copy = new Object[data.length]; Map map = new IdentityHashMap(); - for (int i = 0, nextIndex = 0; i < inputTypes.size(); i++) { - // Account for OUT-only parameters. Would be more thorough to look at targetOperation - // and ensure it has the same parameter mode, but we'll let that go for now. - ParameterMode mode = sourceOperation.getParameterModes().get(i); - if (!mode.equals(ParameterMode.OUT)) { - Object arg = data[nextIndex]; - if (arg == null) { - copy[nextIndex] = null; + + // OUT-only parameters have already been filtered out of the inputTypes List. + for (int i = 0; i < inputTypes.size(); i++) { + Object arg = data[i]; + if (arg == null) { + copy[i] = null; + } else { + Object copiedArg = map.get(arg); + if (copiedArg != null) { + copy[i] = copiedArg; } else { - Object copiedArg = map.get(arg); - if (copiedArg != null) { - copy[nextIndex] = copiedArg; - } else { - copiedArg = - copy(arg, - inputTypes.get(i), - inputTypesTarget == null ? null : inputTypesTarget.get(i), - sourceOperation, - targetOperation); - map.put(arg, copiedArg); - copy[nextIndex] = copiedArg; - } + copiedArg = + copy(arg, + inputTypes.get(i), + inputTypesTarget == null ? null : inputTypesTarget.get(i), + sourceOperation, + targetOperation); + map.put(arg, copiedArg); + copy[i] = copiedArg; } - nextIndex++; } } return copy; -- cgit v1.2.3