package com.buschmais.xo.impl.test.bootstrap.provider;
import java.util.List;
import java.util.Map;
import com.buschmais.xo.api.bootstrap.XOUnit;
import com.buschmais.xo.impl.test.bootstrap.provider.metadata.TestEntityMetadata;
import com.buschmais.xo.impl.test.bootstrap.provider.metadata.TestRelationMetadata;
import com.buschmais.xo.spi.datastore.Datastore;
import com.buschmais.xo.spi.datastore.DatastoreMetadataFactory;
import com.buschmais.xo.spi.datastore.DatastoreSession;
import com.buschmais.xo.spi.metadata.type.TypeMetadata;
import com.buschmais.xo.spi.reflection.AnnotatedElement;
import com.buschmais.xo.spi.reflection.AnnotatedMethod;
import com.buschmais.xo.spi.reflection.AnnotatedType;
import com.buschmais.xo.spi.reflection.PropertyMethod;
public class TestXODatastore<D extends DatastoreSession> implements Datastore<D, TestEntityMetadata, String, TestRelationMetadata, String> {
private final XOUnit xoUnit;
public TestXODatastore(XOUnit xoUnit) {
this.xoUnit = xoUnit;
}
@Override
public DatastoreMetadataFactory<TestEntityMetadata, String, TestRelationMetadata, String> getMetadataFactory() {
return new DatastoreMetadataFactory<TestEntityMetadata, String, TestRelationMetadata, String>() {
@Override
public TestEntityMetadata createEntityMetadata(AnnotatedType annotatedType, List<TypeMetadata> superTypes, Map<Class<?>, TypeMetadata> metadataByType) {
return new TestEntityMetadata(annotatedType.getAnnotatedElement().getName());
}
@Override
public <ImplementedByMetadata> ImplementedByMetadata createImplementedByMetadata(AnnotatedMethod annotatedMethod) {
return null;
}
@Override
public <CollectionPropertyMetadata> CollectionPropertyMetadata createCollectionPropertyMetadata(PropertyMethod propertyMethod) {
return null;
}
@Override
public <ReferencePropertyMetadata> ReferencePropertyMetadata createReferencePropertyMetadata(PropertyMethod propertyMethod) {
return null;
}
@Override
public <PrimitivePropertyMetadata> PrimitivePropertyMetadata createPropertyMetadata(PropertyMethod propertyMethod) {
return null;
}
@Override
public <IndexedPropertyMetadata> IndexedPropertyMetadata createIndexedPropertyMetadata(PropertyMethod propertyMethod) {
return null;
}
@Override
public TestRelationMetadata createRelationMetadata(AnnotatedElement<?> annotatedElement, Map<Class<?>, TypeMetadata> metadataByType) {
return null;
}
};
}
@Override
public D createSession() {
return null;
}
@Override
public void close() {
}
@Override
public void init(Map<Class<?>, TypeMetadata> registeredMetadata) {
}
public XOUnit getXOUnit() {
return xoUnit;
}
}