Úkoly č. 11
Navrhněte anotace, které vám usnadní serializaci a deserializaci jednoduchých objektů do formátu XML. Předpokládejte, že objekty mají bezparametrický konstruktor a pomocí parametru anotace je určený element XML dokumentu obsahující příslušnou hodnotu.
Metody třídy by mělo být možné označit následovně:
@Serialize(as = "emp") @Deserialize(as = "emp") class Employee { private String name; private int age; private double salary; public Employee() { } @Deserialize(as = "name") public void setName(String name) { this.name = name; } @Serialize(as = "name") public String getName() { return this.name; } @Deserialize(as = "age") public void setAge(int age) { this.age = age; } @Serialize(as = "age") public int getAge() { return this.age; } @Deserialize(as = "income") public void setSalary(int salary) { this.salary = salary; } @Serialize(as = "income") public int getSalary() { return this.salary; } }
Implementujte třídu Serializer
mající metodu void serialize(Object obj)
, která využije anotací a vygeneruje XML soubor ve tvaru:
<emp> <name>Tomas Marny</name> <income>58000</income> <age>42</age> </emp>
Implementujte třídu Deserializer
mající metodu Object deserialize()
, která z XML souboru vytvoří daný objekt.
Třídy Serializer
a Deserializer
by měly být obecné, tj. musí ukládat nebo načítat libovolné objekty vybavené příslušnými anotacemi.
Můžete použít libovolnou knihovnu pro práci s XML.
Vyřešené úkoly zašlete do 2.5.2017 11:00 CEST na email petr.krajca (zavináč) upol.cz s předmětem ZP4JV11. Zasílejte pouze zdrojové kódy.