package de.nava.mlsample.domain; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import java.util.ArrayList; import java.util.List; @XmlRootElement(name = "product") public class Product { private Long sku; private String name; private String description; private Double price; private int year; private String link; private List<Category> categories = new ArrayList<>(); // Default constructor to keep JAXB happy public Product() { } public Product(Long sku, String name, Double price, List<Category> categories) { this(sku, name, "N/A", price, 0, null, categories); } public Product(Long sku, String name, String description, Double price, int year, String link, List<Category> categories) { this.sku = sku; this.name = name; this.description = description; this.price = price; this.year = year; this.link = link; this.categories = categories; } // ~~ @XmlAttribute(name="sku") public Long getSku() { return sku; } public void setSku(Long sku) { this.sku = sku; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } @XmlElementWrapper(name="categories") @XmlElement(name="category") public List<Category> getCategories() { return categories; } public void setCategories(List<Category> categories) { this.categories = categories; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public String getLink() { return link; } public void setLink(String link) { this.link = link; } @Override public String toString() { return String.format("%s [%d]", name, sku); } }