package org.hivedb.services;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
import org.hivedb.configuration.EntityConfig;
import org.hivedb.util.Lists;
import org.hivedb.util.functional.Transform;
import org.hivedb.util.functional.Unary;
public class ServiceResponseImpl<T> implements ServiceResponse<T,ServiceContainer<T>>, Serializable {
private static final long serialVersionUID = 1L;
private Collection<ServiceContainer<T>> containers = Lists.newArrayList();
public ServiceResponseImpl() {}
public ServiceResponseImpl(final EntityConfig config, Collection<T> instances) {
this.containers = Transform.map(new Unary<T, ServiceContainer<T>>(){
public ServiceContainer<T> f(T item) {
return new ServiceContainerImpl<T>(item, config.getVersion(item));
}}, instances);
}
public ServiceResponseImpl(final EntityConfig config, T... instances) {
this(config, Arrays.asList(instances));
}
public ServiceResponseImpl(Collection<ServiceContainer<T>> containers) {
this.containers = containers;
}
public Collection<ServiceContainer<T>> getContainers() {
return containers;
}
public void setContainers(Collection<ServiceContainer<T>> containers) {
this.containers = containers;
}
public Collection<T> getInstances() {
return Transform.map(new Unary<ServiceContainer<T>, T>(){
public T f(ServiceContainer<T> item) {
return item.getInstance();
}}, containers);
}
}