Skip to content

Commit

Permalink
ObjectToObjectConverter properly handles constructors on non-public c…
Browse files Browse the repository at this point in the history
…lasses

Issue: SPR-14304
(cherry picked from commit 9659bc5)
  • Loading branch information
jhoeller committed Oct 31, 2016
1 parent bf0df54 commit edf1df3
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 16 deletions.
Expand Up @@ -102,6 +102,7 @@ public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor t
}
else if (member instanceof Constructor) {
Constructor<?> ctor = (Constructor<?>) member;
ReflectionUtils.makeAccessible(ctor);
return ctor.newInstance(source);
}
}
Expand Down
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

package org.springframework.core.convert.support;
package org.springframework.core.convert.converter;

import java.awt.Color;
import java.lang.reflect.Method;
Expand Down Expand Up @@ -49,8 +49,7 @@
import org.springframework.core.convert.ConversionFailedException;
import org.springframework.core.convert.ConverterNotFoundException;
import org.springframework.core.convert.TypeDescriptor;
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.converter.ConverterRegistry;
import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.tests.Assume;
import org.springframework.tests.TestGroup;
import org.springframework.util.ClassUtils;
Expand All @@ -60,16 +59,16 @@
import static org.junit.Assert.*;

/**
* Unit tests for the {@link DefaultConversionService}.
* Unit tests for {@link DefaultConversionService}.
*
* <p>For tests involving the {@link GenericConversionService}, see
* {@link GenericConversionServiceTests}.
* <p>In this package for enforcing accessibility checks to non-public classes outside
* of the {@code org.springframework.core.convert.support} implementation package.
* Only in such a scenario, {@code setAccessible(true)} is actually necessary.
*
* @author Keith Donald
* @author Juergen Hoeller
* @author Stephane Nicoll
* @author Sam Brannen
* @see GenericConversionServiceTests
*/
public class DefaultConversionServiceTests {

Expand Down Expand Up @@ -243,22 +242,22 @@ public void testStringToEnumEmptyString() {
public void testEnumToString() {
assertEquals("BAR", conversionService.convert(Foo.BAR, String.class));
}

@Test
public void testIntegerToEnum() throws Exception {
assertEquals(Foo.BAR, conversionService.convert(0, Foo.class));
}

@Test
public void testIntegerToEnumWithSubclass() throws Exception {
assertEquals(SubFoo.BAZ, conversionService.convert(1, SubFoo.BAR.getClass()));
}

@Test
public void testIntegerToEnumNull() {
assertEquals(null, conversionService.convert(null, Foo.class));
}

@Test
public void testEnumToInteger() {
assertEquals(Integer.valueOf(0), conversionService.convert(Foo.BAR, Integer.class));
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2015 the original author or authors.
* Copyright 2002-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -54,17 +54,15 @@
import static org.junit.Assert.*;

/**
* Unit tests for the {@link GenericConversionService}.
* Unit tests for {@link GenericConversionService}.
*
* <p>For tests involving the {@link DefaultConversionService}, see
* {@link DefaultConversionServiceTests}.
* <p>In this package for access to package-local converter implementations.
*
* @author Keith Donald
* @author Juergen Hoeller
* @author Phillip Webb
* @author David Haraburda
* @author Sam Brannen
* @see DefaultConversionServiceTests
*/
public class GenericConversionServiceTests {

Expand Down

0 comments on commit edf1df3

Please sign in to comment.