package me.prettyprint.hom; import me.prettyprint.hector.api.Keyspace; import me.prettyprint.hom.annotations.AnnotationScanner; import javax.persistence.Cache; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.PersistenceUnitUtil; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.metamodel.Metamodel; import javax.persistence.spi.PersistenceUnitInfo; import java.util.Map; public class EntityManagerFactoryImpl implements EntityManagerFactory { static final String PACKAGES_TO_SCAN = "me.prettyprint.hom.classpathPrefix"; private EntityManager em; public EntityManagerFactoryImpl(final PersistenceUnitInfo info, final Keyspace space, final AnnotationScanner scanner) { if (!info.excludeUnlistedClasses()) { final Class<?>[] classes = new Class<?>[info.getManagedClassNames().size()]; final ClassLoader cl = Thread.currentThread().getContextClassLoader(); int i = 0; for (String name : info.getManagedClassNames()) { try { classes[i++] = cl.loadClass(name); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } em = new EntityManagerImpl(space, this, classes); } else { em = new EntityManagerImpl(space, this, info.getProperties().getProperty(PACKAGES_TO_SCAN).split(","), scanner); } } @Override public EntityManager createEntityManager() { return em; } @Override public EntityManager createEntityManager(Map map) { return em; } @Override public CriteriaBuilder getCriteriaBuilder() { return null; } @Override public Metamodel getMetamodel() { return null; } @Override public boolean isOpen() { return true; } @Override public void close() { // no-op } @Override public Map<String, Object> getProperties() { return null; } @Override public Cache getCache() { return null; } @Override public PersistenceUnitUtil getPersistenceUnitUtil() { return null; } }