diff --git a/.travis.yml b/.travis.yml index f1e64769820..39a330ae23d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,11 @@ language: java sudo: false dist: precise +addons: + hosts: + - mybatisci + hostname: mybatisci + jdk: - oraclejdk8 - oraclejdk7 diff --git a/src/main/java/org/apache/ibatis/mapping/ResultMap.java b/src/main/java/org/apache/ibatis/mapping/ResultMap.java index 4120489d9c5..5f329161a80 100644 --- a/src/main/java/org/apache/ibatis/mapping/ResultMap.java +++ b/src/main/java/org/apache/ibatis/mapping/ResultMap.java @@ -185,24 +185,29 @@ private boolean argTypesMatch(final List constructorArgNames, } private List getArgNames(Constructor constructor) { - if (resultMap.configuration.isUseActualParamName() && Jdk.parameterExists) { - return ParamNameUtil.getParamNames(constructor); - } else { - List paramNames = new ArrayList(); - final Annotation[][] paramAnnotations = constructor.getParameterAnnotations(); - int paramCount = paramAnnotations.length; - for (int paramIndex = 0; paramIndex < paramCount; paramIndex++) { - String name = null; - for (Annotation annotation : paramAnnotations[paramIndex]) { - if (annotation instanceof Param) { - name = ((Param) annotation).value(); - break; - } + List paramNames = new ArrayList(); + List actualParamNames = null; + final Annotation[][] paramAnnotations = constructor.getParameterAnnotations(); + int paramCount = paramAnnotations.length; + for (int paramIndex = 0; paramIndex < paramCount; paramIndex++) { + String name = null; + for (Annotation annotation : paramAnnotations[paramIndex]) { + if (annotation instanceof Param) { + name = ((Param) annotation).value(); + break; + } + } + if (name == null && resultMap.configuration.isUseActualParamName() && Jdk.parameterExists) { + if (actualParamNames == null) { + actualParamNames = ParamNameUtil.getParamNames(constructor); + } + if (actualParamNames.size() > paramIndex) { + name = actualParamNames.get(paramIndex); } - paramNames.add(name != null ? name : "arg" + paramIndex); } - return paramNames; + paramNames.add(name != null ? name : "arg" + paramIndex); } + return paramNames; } } diff --git a/src/test/java/org/apache/ibatis/submitted/named_constructor_args/User.java b/src/test/java/org/apache/ibatis/submitted/named_constructor_args/User.java index 17fc44f3820..39258cb2d27 100644 --- a/src/test/java/org/apache/ibatis/submitted/named_constructor_args/User.java +++ b/src/test/java/org/apache/ibatis/submitted/named_constructor_args/User.java @@ -28,10 +28,10 @@ public User(@Param("id") String id) { this.id = Integer.valueOf(id); } - public User(Integer userId, String name) { + public User(Integer userId, @Param("name") String userName) { super(); this.id = userId; - this.name = name; + this.name = userName; } public User(@Param("id") int id, @Param("name") String name, @Param("team") String team) {