[jboss-svn-commits] JBL Code SVN: r27917 - in labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943: stm and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Jul 12 14:21:57 EDT 2009
Author: whitingjr
Date: 2009-07-12 14:21:57 -0400 (Sun, 12 Jul 2009)
New Revision: 27917
Added:
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/persistence/
labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/persistence/STMPersistenceProviderImpl.java
Log:
Created a persistence provider for software transactional memory system.
Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/persistence/STMPersistenceProviderImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/persistence/STMPersistenceProviderImpl.java (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/stm/persistence/STMPersistenceProviderImpl.java 2009-07-12 18:21:57 UTC (rev 27917)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.stm.persistence;
+
+import java.util.Map;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.spi.PersistenceProvider;
+import javax.persistence.spi.PersistenceUnitInfo;
+import javax.persistence.spi.PersistenceUnitTransactionType;
+
+import org.apache.log4j.Logger;
+
+import uk.ac.ncl.sdia.a8905943.entitymanager.STMEntityManagerFactoryImpl;
+
+/**
+ * This object is responsible for creating an EntityManagerFactory for this
+ * provider STM system. This object is used by the container to create a factory
+ * which in turn can create an EntityManager. There is the expectation of there
+ * only being a single instance of the EMF in the JVM.
+ *
+ * This implementation supports only:
+ * JTA transaction type
+ * Properties for provider supplied in persistence.xml
+ *
+ * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ */
+public class STMPersistenceProviderImpl implements PersistenceProvider
+{
+ private static Logger logger = Logger.getLogger(STMPersistenceProviderImpl.class);
+
+ public static final String PROPERTY_TRANSACTION_TYPE = "javax.persistence.transactionType";
+ public static final String PROPERTY_JTA_DATASOURCE = "javax.persistence.jtaDataSource";
+ public static final String PROPERTY_PERSISTENCE_PROVIDER = "javax.persistence.provider";
+ public static final String PROPERTY_ISOLATION_LEVEL = "ISOLATION_LEVEL";
+
+ //TODO: jrw make factory a singleton and thread safe
+ private static final STMEntityManagerFactoryImpl factory = new STMEntityManagerFactoryImpl();
+
+ @Override
+ public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map map)
+ {
+ EntityManagerFactory returnValue = null;
+ if (logger.isInfoEnabled())
+ {
+ logger.info("STM Persistence provider has been called to create an STM EntityManagerFactory");
+ }
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Dump of PersisteneceUnitInfo["+info.toString()+"] and properties Map ["+map.toString()+"]");
+ }
+ if (logger.isTraceEnabled())
+ {
+ logger.trace("Creating EntityManagerFactory for thread with id ["+Thread.currentThread().getId()+"]");
+ }
+
+ if (PersistenceUnitTransactionType.JTA != info.getTransactionType())
+ {
+ throw new UnsupportedOperationException("Attempt to use resource-local persistence provider which is not supported. Only JTA is supported.");
+ }
+
+ // currently this factory could be ready by concurrent thread without the properties map being set.
+ //TODO:jrw to be finished
+ factory.setMap(map);
+ returnValue = factory;
+
+ return returnValue;
+ }
+
+ @Override
+ public EntityManagerFactory createEntityManagerFactory(String emName, Map map)
+ {
+ if (true)
+ {
+ throw new UnsupportedOperationException("The STM persistence provider does not support application managed entity manager factory creation. Only containers can create this.");
+ }
+ return null;
+ }
+
+}
More information about the jboss-svn-commits
mailing list