By
implementing Converter interface, we can specify custom converter.
import java.lang.reflect.Method; import org.aeonbits.owner.Converter; public class EmployeeConverter implements Converter<Employee> { @Override public Employee convert(Method method, String input) { String[] split = input.split(";"); int id = Integer.parseInt(split[0]); String name = split[1]; Employee emp = new Employee(); emp.setId(id); emp.setName(name); return emp; } }
public class Employee { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Employee [id=").append(id).append(", name=") .append(name).append("]"); return builder.toString(); } }
import java.util.List; import org.aeonbits.owner.Config; public interface ProjectConfig extends Config { @DefaultValue("1;Hari Krishna Gurram") @ConverterClass(EmployeeConverter.class) Employee employee(); @DefaultValue("1;Hari Krishna Gurram, 2;Senthil, 3;Rakesh") @ConverterClass(EmployeeConverter.class) List<Employee> employees(); }
import org.aeonbits.owner.ConfigFactory; import java.util.*; public class PropertyUtil { public static void main(String args[]) throws Exception { Map<String, String> properties1 = new HashMap<>(); properties1.put("employee", "1;Prasob"); properties1.put("employees", "1;Sandesh, 2;Desraj, 3;Srinath"); ProjectConfig cfg = ConfigFactory.create(ProjectConfig.class, properties1); Employee emp = cfg.employee(); List<Employee> emps = cfg.employees(); System.out.println("----------------"); System.out.println(emp); System.out.println("----------------"); for (Employee employee : emps) { System.out.println(employee); } } }
Output
---------------- Employee [id=1, name=Prasob] ---------------- Employee [id=1, name=Sandesh] Employee [id=2, name=Desraj] Employee [id=3, name=Srinath]
No comments:
Post a Comment