package eu.europeana.cloud.common.response; import eu.europeana.cloud.common.model.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSeeAlso; /** * Result slice for methods that would return possibly huge collections of objects that must be divided into paged to * handle them. * * @param <T> Class of returned objects. */ @XmlRootElement @XmlSeeAlso({DataProvider.class, Representation.class, DataSet.class, CloudId.class, LocalId.class, String.class, CloudVersionRevisionResponse.class, CloudIdAndTimestampResponse.class, CloudTagsResponse.class}) // references to all classes that might be used as generics parameters public class ResultSlice<T> { /** * Reference to next slice of result. */ private String nextSlice; /** * List of results in this slice. */ private List<T> results = new ArrayList<T>(); /** * Creates a new instance of this class. * @param nextSlice * @param results */ public ResultSlice(String nextSlice, List<T> results) { this.nextSlice = nextSlice; this.results = Collections.unmodifiableList(results); } /** * Creates a new instance of this class. */ public ResultSlice() { } public String getNextSlice() { return nextSlice; } public List<T> getResults() { return results; } public void setNextSlice(String nextSlice) { this.nextSlice = nextSlice; } public void setResults(List<T> results) { this.results = results; } }