package org.arquillian.cube.spi; import java.util.HashMap; import java.util.Map; import org.arquillian.cube.spi.metadata.CubeMetadata; public abstract class BaseCube<T> implements Cube<T> { private Map<Class<? extends CubeMetadata>, Object> metadata = new HashMap<>(); @Override public <X extends CubeMetadata> boolean hasMetadata(Class<X> type) { return metadata.containsKey(type); } @Override public <X extends CubeMetadata> void addMetadata(Class<X> type, X impl) { metadata.put(type, impl); } @Override @SuppressWarnings("unchecked") public <X extends CubeMetadata> X getMetadata(Class<X> type) { return (X) metadata.get(type); } }