summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/databinding
diff options
context:
space:
mode:
authorscottkurz <scottkurz@13f79535-47bb-0310-9956-ffa450edef68>2011-01-26 01:18:02 +0000
committerscottkurz <scottkurz@13f79535-47bb-0310-9956-ffa450edef68>2011-01-26 01:18:02 +0000
commitdac345d5480d52c4071c22fbdeba605dc1236cc0 (patch)
treec63f2f6803ec3f22357558d58f55ddfe3e753af6 /sca-java-2.x/trunk/modules/databinding
parent875e50908c2630d263661af492654cd44bef2d65 (diff)
Fix more issues with multiple outputs.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1063548 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/databinding')
-rw-r--r--sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/MediatorImpl.java40
1 files changed, 18 insertions, 22 deletions
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<DataType> inputTypesTarget = targetOperation == null ? null : targetOperation.getInputType().getLogical();
Object[] copy = new Object[data.length];
Map<Object, Object> map = new IdentityHashMap<Object, Object>();
- 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;