Feature/bael 968 (#2154)

* Merging BAEL-968: Apache Commons BeanUtils

* BAEL-968: Updated code for copyProperties example

* BAEL-968: Updated code based on reviewer comments

* BAEL-968: Fixed merge issue
This commit is contained in:
Syed Ali Raza 2017-07-01 10:08:14 +05:00 committed by Grzegorz Piwowarek
parent c499ecee27
commit fd790bef2f
3 changed files with 67 additions and 11 deletions

View File

@ -0,0 +1,35 @@
package com.baeldung.commons.beanutils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CourseEntity {
private String name;
private List<String> codes;
private Map<String, Student> students = new HashMap<String, Student>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getCodes() {
return codes;
}
public void setCodes(List<String> codes) {
this.codes = codes;
}
public void setStudent(String id, Student student) {
students.put(id, student);
}
public Student getStudent(String enrolledId) {
return students.get(enrolledId);
}
}

View File

@ -3,32 +3,38 @@ package com.baeldung.commons.beanutils;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.List; import java.util.List;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.beanutils.PropertyUtils;
public class CourseService { public class CourseService {
public static void setValues(Course course, String name, List<String> codes) public static void setValues(Course course, String name, List<String> codes)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
// Setting the simple properties // Setting the simple properties
PropertyUtils.setSimpleProperty(course, "name", name); PropertyUtils.setSimpleProperty(course, "name", name);
PropertyUtils.setSimpleProperty(course, "codes", codes); PropertyUtils.setSimpleProperty(course, "codes", codes);
} }
public static void setIndexedValue(Course course, int codeIndex, String code) public static void setIndexedValue(Course course, int codeIndex, String code)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
// Setting the indexed properties // Setting the indexed properties
PropertyUtils.setIndexedProperty(course, "codes[" + codeIndex + "]", code); PropertyUtils.setIndexedProperty(course, "codes[" + codeIndex + "]", code);
} }
public static void setMappedValue(Course course, String enrollId, Student student) public static void setMappedValue(Course course, String enrollId, Student student)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
// Setting the mapped properties // Setting the mapped properties
PropertyUtils.setMappedProperty(course, "enrolledStudent(" + enrollId + ")", student); PropertyUtils.setMappedProperty(course, "enrolledStudent(" + enrollId + ")", student);
} }
public static String getNestedValue(Course course, String enrollId, String nestedPropertyName) public static String getNestedValue(Course course, String enrollId, String nestedPropertyName)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return (String) PropertyUtils.getNestedProperty( return (String) PropertyUtils.getNestedProperty(
course, "enrolledStudent(" + enrollId + ")." + nestedPropertyName); course, "enrolledStudent(" + enrollId + ")." + nestedPropertyName);
} }
public static void copyProperties(Course course, CourseEntity courseEntity)
throws IllegalAccessException, InvocationTargetException {
BeanUtils.copyProperties(course, courseEntity);
}
} }

View File

@ -11,7 +11,7 @@ public class CourseServiceTest {
@Test @Test
public void givenCourse_whenSetValuesUsingPropertyUtil_thenReturnSetValues() public void givenCourse_whenSetValuesUsingPropertyUtil_thenReturnSetValues()
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
Course course = new Course(); Course course = new Course();
String name = "Computer Science"; String name = "Computer Science";
List<String> codes = Arrays.asList("CS", "CS01"); List<String> codes = Arrays.asList("CS", "CS01");
@ -35,4 +35,19 @@ public class CourseServiceTest {
Assert.assertEquals(studentName, accessedStudentName); Assert.assertEquals(studentName, accessedStudentName);
} }
@Test
public void givenCopyProperties_whenCopyCourseToCourseEntity_thenCopyPropertyWithSameName()
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
Course course = new Course();
course.setName("Computer Science");
course.setCodes(Arrays.asList("CS"));
course.setEnrolledStudent("ST-1", new Student());
CourseEntity courseEntity = new CourseEntity();
CourseService.copyProperties(course, courseEntity);
Assert.assertEquals(course.getName(), courseEntity.getName());
Assert.assertEquals(course.getCodes(), courseEntity.getCodes());
Assert.assertNull(courseEntity.getStudent("ST-1"));
}
} }