package restx.factory;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
/**
* @author apeyrard
*/
public interface Warehouse extends AutoCloseable {
String getId();
ImmutableList<Warehouse> getProviders();
<T> Optional<StoredBox<T>> getStoredBox(Name<T> name);
<T> Optional<NamedComponent<T>> checkOut(Name<T> name);
<T> void checkIn(ComponentBox<T> componentBox, SatisfiedBOM satisfiedBOM);
Iterable<Name<?>> listNames();
Iterable<Name<?>> listDependencies(Name name);
public void close();
public static class StoredBox<T> {
final ComponentBox<T> box;
final SatisfiedBOM satisfiedBOM;
public StoredBox(ComponentBox<T> box, SatisfiedBOM satisfiedBOM) {
this.box = box;
this.satisfiedBOM = satisfiedBOM;
}
public ComponentBox<T> getBox() {
return box;
}
public SatisfiedBOM getSatisfiedBOM() {
return satisfiedBOM;
}
@Override
public String toString() {
return "StoredBox{" +
"box=" + box +
", satisfiedBOM=" + satisfiedBOM +
'}';
}
}
}