From 9b888847ea1595f3e6c592b1718d65bbea004ecf Mon Sep 17 00:00:00 2001 From: sjaakd Date: Tue, 3 Mar 2015 23:30:37 +0100 Subject: [PATCH] #485 ArrayCopyWrapper local var possibly not safe --- .../main/java/org/mapstruct/ap/model/PropertyMapping.java | 8 +++++++- .../mapstruct/ap/model/assignment/ArrayCopyWrapper.java | 6 ++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/processor/src/main/java/org/mapstruct/ap/model/PropertyMapping.java b/processor/src/main/java/org/mapstruct/ap/model/PropertyMapping.java index 7646e6146..74151ee11 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/PropertyMapping.java +++ b/processor/src/main/java/org/mapstruct/ap/model/PropertyMapping.java @@ -170,7 +170,13 @@ public class PropertyMapping extends ModelElement { } else if ( targetType.isArrayType() && sourceType.isArrayType() && assignment.getType() == DIRECT ) { Type arrayType = ctx.getTypeFactory().getType( Arrays.class ); - assignment = new ArrayCopyWrapper( assignment, targetPropertyName, arrayType, targetType ); + assignment = new ArrayCopyWrapper( + assignment, + targetPropertyName, + arrayType, + targetType, + existingVariableNames + ); assignment = new NullCheckWrapper( assignment ); } else { diff --git a/processor/src/main/java/org/mapstruct/ap/model/assignment/ArrayCopyWrapper.java b/processor/src/main/java/org/mapstruct/ap/model/assignment/ArrayCopyWrapper.java index ab9d70746..7f6f790f1 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/assignment/ArrayCopyWrapper.java +++ b/processor/src/main/java/org/mapstruct/ap/model/assignment/ArrayCopyWrapper.java @@ -18,11 +18,13 @@ */ package org.mapstruct.ap.model.assignment; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Set; import org.mapstruct.ap.model.common.Type; +import org.mapstruct.ap.util.Strings; import static org.mapstruct.ap.util.Strings.decapitalize; import static org.mapstruct.ap.util.Strings.getSaveVariableName; @@ -38,9 +40,9 @@ public class ArrayCopyWrapper extends AssignmentWrapper { private final Type targetType; public ArrayCopyWrapper(Assignment decoratedAssignment, String targetPropertyName, Type arraysType, - Type targetType) { + Type targetType, Collection existingVariableNames ) { super( decoratedAssignment ); - this.targetPropertyName = targetPropertyName; + this.targetPropertyName = Strings.getSaveVariableName( targetPropertyName, existingVariableNames ); this.arraysType = arraysType; this.targetType = targetType; }