У меня есть два класса bean-компонентов immutable, для которых я использую сопоставление Orika для копирования значений из одного в другой. Однако, когда я пытаюсь скопировать unmodifiableList
через сопоставление Orika, это не удается, выдавая следующее исключение:
java.lang.UnsupportedOperationException
at ma.glasnost.orika.ExceptionUtility.newMappingException(ExceptionUtility.java:55)
at ma.glasnost.orika.impl.MapperFacadeImpl.map(MapperFacadeImpl.java:681)
at ma.glasnost.orika.impl.MapperFacadeImpl.map(MapperFacadeImpl.java:650)
at com.myproject.OrikaTest.testEmployeeMapping
Я предоставил приведенный ниже код, с помощью которого вы можете воспроизвести ту же проблему:
EmployeeDto class:
public final class EmployeeDto {
private final int id;
private final String name;
private final List<String> previousGrades;
public EmployeeDto(int id, String name, List<String> previousGrades) {
this.id = id;//validations removed
this.name = name;//validations removed
//Commented unmodifiableList as it does not work
//this.previousGrades = Collections.unmodifiableList(previousGrades);
this.previousGrades = previousGrades;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public List<String> getPreviousGrades() {
//tried like this, even this does not work
return Collections.unmodifiableList(previousGrades);
}
}
Класс сотрудников:
public final class Employee {
//ditto AS EmployeeDto
}
Класс OrikaTest:
public class OrikaTest {
private static final MapperFactory mapperFactory =
new DefaultMapperFactory.Builder().build();
private static final MapperFacade mapperFacade =
mapperFactory.getMapperFacade();
@Test
public void testEmployeeMapping() {
List<String> employeeGrades = Arrays.asList("A", "B");
Employee employee = new Employee(1234, "John", employeeGrades);
EmployeeDto employeeDto = mapperFacade.map(employee, EmployeeDto.class);
//tests using assertEquals
Assert.assertEquals(employeeGrades, employeeDto.getPreviousGrades());
}
}
Я мог найти ссылку здесь на эту тему, но это было не так ясно поскольку альтернативы не были объяснены должным образом.
Итак, можете ли вы помочь с примером или каким-либо обходным путем, как скопировать unmodifiableList
через сопоставление Orika?