Revision: 956
http://datanucleus.svn.sourceforge.net/datanucleus/?rev=956&view=rev
Author: ebengtso
Date: 2008-05-04 15:29:26 -0700 (Sun, 04 May 2008)
Log Message:
-----------
[NUCJDOJCA-1] use delegation instead of inheritance of pmf
Modified Paths:
--------------
platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/ManagedConnectionFactoryImpl.java
platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/ManagedConnectionImpl.java
platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/PersistenceManagerFactoryImpl.java
Modified: platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/ManagedConnectionFactoryImpl.java
===================================================================
--- platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/ManagedConnectionFactoryImpl.java 2008-05-04 18:40:49 UTC (rev 955)
+++ platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/ManagedConnectionFactoryImpl.java 2008-05-04 22:29:26 UTC (rev 956)
@@ -20,9 +20,9 @@
import java.io.PrintWriter;
import java.util.Iterator;
+import java.util.Properties;
import java.util.Set;
-import javax.jdo.JDOUserException;
import javax.resource.ResourceException;
import javax.resource.spi.ConnectionManager;
import javax.resource.spi.ConnectionRequestInfo;
@@ -32,11 +32,8 @@
import javax.security.auth.Subject;
import org.datanucleus.exceptions.NucleusException;
-import org.datanucleus.jdo.AbstractPersistenceManagerFactory;
-import org.datanucleus.jdo.LifecycleListenerForClass;
-import org.datanucleus.metadata.PersistenceUnitMetaData;
+import org.datanucleus.jdo.JDOPersistenceManagerFactory;
import org.datanucleus.metadata.TransactionType;
-import org.datanucleus.util.NucleusLogger;
/**
* Implementation of the JCA adapter for use of JPOX in J2EE environments.
@@ -45,21 +42,18 @@
*
* @version $Revision: 1.1 $
*/
-public class ManagedConnectionFactoryImpl extends AbstractPersistenceManagerFactory implements ManagedConnectionFactory
+public class ManagedConnectionFactoryImpl implements ManagedConnectionFactory
{
+
+ JDOPersistenceManagerFactory pmf;
+ Properties properties = new Properties();
+ boolean configurable = true;
+
/**
* Default constructor
*/
public ManagedConnectionFactoryImpl()
{
- // J2EE : Default to JTA transactions
- setTransactionType(TransactionType.JTA.toString());
-
- // J2EE : Set that using JCA connector
- setJCAMode(Boolean.TRUE);
-
- // J2EE : set ConnectionManager for J2EE usage
- getOMFContext().setConnectionManager(new org.datanucleus.ConnectionManagerImpl(getOMFContext()));
}
/**
@@ -72,63 +66,34 @@
{
return;
}
- // Check if we have persistenceUnitName defined so we can pull in the properties for that
- String persistenceUnitName =
- (String)getStringProperty("datanucleus.PersistenceUnitName");
- if (persistenceUnitName != null)
- {
- NucleusLogger.JDO.info(">> JCA PMF.freezeConfiguration persistence-unit=" + persistenceUnitName + " START");
- // Specified to use a "persistence-unit", so take any props defined for the unit
- try
- {
- PersistenceUnitMetaData pumd =
- omfContext.getMetaDataManager().getMetaDataForPersistenceUnit(persistenceUnitName);
- if (pumd != null)
- {
- // Add the properties for the unit
- if (pumd.getProperties() != null)
- {
- setOptions(pumd.getProperties());
- }
- }
- else
- {
- throw new JDOUserException(LOCALISER_JDO.msg("012004", persistenceUnitName));
- }
- }
- catch (NucleusException jpe)
- {
- throw new JDOUserException(LOCALISER_JDO.msg("012005", persistenceUnitName));
- }
- NucleusLogger.JDO.info(">> JCA PMF.freezeConfiguration persistence-unit=" + persistenceUnitName + " DONE");
- }
+ pmf = new JDOPersistenceManagerFactory(properties);
+ // J2EE : Default to JTA transactions
+ pmf.setTransactionType(TransactionType.JTA.toString());
- super.freezeConfiguration();
+ // J2EE : Set that using JCA connector
+ pmf.setJCAMode(Boolean.TRUE);
+
+ configurable = false;
}
// ----------------------- Setters/Getters for JCA -------------------------
- // --------------- Implementation of ManagedConnectionFactory --------------
-
/**
- * Set the user name for the data store connection.
- * @param userName the user name for the data store connection.
- * @deprecated
+ * Set the persistence UnitName
+ * @param persistenceUnitName the persistence UnitName
*/
- public synchronized void setUserName(String userName)
+ public synchronized void setPersistenceUnitName(String persistenceUnitName)
{
- this.setConnectionUserName(userName);
+ properties.put("javax.jdo.option.PersistenceUnitName",persistenceUnitName);
}
-
- /**
- * Set the password for the data store connection.
- * @param password the password for the data store connection.
- * @deprecated
- */
- public synchronized void setPassword(String password)
+
+ // --------------- Implementation of ManagedConnectionFactory --------------
+
+
+ public JDOPersistenceManagerFactory getPersistenceManagerFactory()
{
- this.setConnectionPassword(password);
- }
+ return pmf;
+ }
/**
* Equality operator.
@@ -191,18 +156,6 @@
freezeConfiguration();
PasswordCredential pc = getPasswordCredential(subject);
ManagedConnectionImpl mc = new ManagedConnectionImpl(this,pc);
-
- // Add any lifecycle listeners to the PM
- if (lifecycleListeners != null)
- {
- Iterator listenerIter = lifecycleListeners.iterator();
- while (listenerIter.hasNext())
- {
- LifecycleListenerForClass listener = (LifecycleListenerForClass) listenerIter.next();
- mc.getPersistenceManager().addInstanceLifecycleListener(listener.getListener(), listener.getClasses());
- }
- }
- getPmCache().add(mc.getPersistenceManager());
return mc;
}
@@ -275,12 +228,12 @@
{
if (subject == null)
{
- if (getConnectionUserName() == null ||
- getConnectionPassword() == null)
+ if (!properties.containsKey("javax.jdo.option.ConnectionUserName") ||
+ !properties.containsKey("javax.jdo.option.ConnectionPassword"))
{
return null;
}
- PasswordCredential pc=new PasswordCredential(getConnectionUserName(), getConnectionPassword().toCharArray());
+ PasswordCredential pc=new PasswordCredential(properties.getProperty("javax.jdo.option.ConnectionUserName"), properties.getProperty("javax.jdo.option.ConnectionPassword").toCharArray());
pc.setManagedConnectionFactory(this);
return pc;
}
Modified: platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/ManagedConnectionImpl.java
===================================================================
--- platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/ManagedConnectionImpl.java 2008-05-04 18:40:49 UTC (rev 955)
+++ platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/ManagedConnectionImpl.java 2008-05-04 22:29:26 UTC (rev 956)
@@ -32,15 +32,12 @@
import javax.resource.spi.ConnectionRequestInfo;
import javax.resource.spi.LocalTransaction;
import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
import javax.resource.spi.ManagedConnectionMetaData;
import javax.resource.spi.security.PasswordCredential;
import javax.security.auth.Subject;
import javax.transaction.xa.XAResource;
-import org.datanucleus.jdo.AbstractPersistenceManagerFactory;
import org.datanucleus.jdo.JDOPersistenceManager;
-import org.datanucleus.jdo.LifecycleListenerForClass;
import org.datanucleus.util.NucleusLogger;
/**
@@ -83,7 +80,7 @@
private JDOPersistenceManager pm;
- private final ManagedConnectionFactory mcf;
+ private final ManagedConnectionFactoryImpl mcf;
/**
* Constructor
@@ -91,7 +88,7 @@
* @param credential the PasswordCredential
* @throws ResourceException
*/
- public ManagedConnectionImpl(ManagedConnectionFactory mcf, PasswordCredential credential)
+ public ManagedConnectionImpl(ManagedConnectionFactoryImpl mcf, PasswordCredential credential)
throws ResourceException
{
this.credential = credential;
@@ -185,11 +182,11 @@
{
if (getPasswordCredential()==null)
{
- pm = new JDOPersistenceManager((AbstractPersistenceManagerFactory)mcf,null,null);
+ pm = (JDOPersistenceManager) mcf.getPersistenceManagerFactory().getPersistenceManager();
}
else
{
- pm = new JDOPersistenceManager((AbstractPersistenceManagerFactory)mcf,getPasswordCredential().getUserName(),new String(getPasswordCredential().getPassword()));
+ pm = (JDOPersistenceManager) mcf.getPersistenceManagerFactory().getPersistenceManager(getPasswordCredential().getUserName(),new String(getPasswordCredential().getPassword()));
}
}
return pm;
@@ -214,18 +211,6 @@
}
PersistenceManagerImpl o = new PersistenceManagerImpl(this);
- // copy the lifecycle listeners from the PMF into the new (or cached?) PM
- //o.removeAllInstanceLifecycleListeners(); // make sure there's none, in case the PM was cached
- List lifecycleListeners = getManagedConnectionFactory().getLifecycleListenerSpecifications();
- if (lifecycleListeners != null)
- {
- Iterator listenerIter = lifecycleListeners.iterator();
- while (listenerIter.hasNext())
- {
- LifecycleListenerForClass listener = (LifecycleListenerForClass) listenerIter.next();
- o.addInstanceLifecycleListener(listener.getListener(), listener.getClasses());
- }
- }
handles.add(0, o);
return o;
Modified: platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/PersistenceManagerFactoryImpl.java
===================================================================
--- platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/PersistenceManagerFactoryImpl.java 2008-05-04 18:40:49 UTC (rev 955)
+++ platform/jdo.connector/trunk/src/java/org/datanucleus/jdo/connector/PersistenceManagerFactoryImpl.java 2008-05-04 22:29:26 UTC (rev 956)
@@ -309,7 +309,7 @@
*/
public void setMultithreaded(boolean multithreaded)
{
- mcf.setMultithreaded(multithreaded);
+ mcf.getPersistenceManagerFactory().setMultithreaded(multithreaded);
}
/**
@@ -318,7 +318,7 @@
*/
public boolean getMultithreaded()
{
- return mcf.getMultithreaded();
+ return mcf.getPersistenceManagerFactory().getMultithreaded();
}
/**
@@ -327,7 +327,7 @@
*/
public void setOptimistic(boolean optimistic)
{
- mcf.setOptimistic(optimistic);
+ mcf.getPersistenceManagerFactory().setOptimistic(optimistic);
}
/**
@@ -336,7 +336,7 @@
*/
public boolean getOptimistic()
{
- return mcf.getOptimistic();
+ return mcf.getPersistenceManagerFactory().getOptimistic();
}
/**
@@ -345,7 +345,7 @@
*/
public void setRetainValues(boolean retain_values)
{
- mcf.setRetainValues(retain_values);
+ mcf.getPersistenceManagerFactory().setRetainValues(retain_values);
}
/**
@@ -354,7 +354,7 @@
*/
public boolean getRetainValues()
{
- return mcf.getRetainValues();
+ return mcf.getPersistenceManagerFactory().getRetainValues();
}
/**
@@ -363,7 +363,7 @@
*/
public void setRestoreValues(boolean restore_values)
{
- mcf.setRestoreValues(restore_values);
+ mcf.getPersistenceManagerFactory().setRestoreValues(restore_values);
}
/**
@@ -372,7 +372,7 @@
*/
public boolean getRestoreValues()
{
- return mcf.getRestoreValues();
+ return mcf.getPersistenceManagerFactory().getRestoreValues();
}
/**
@@ -381,7 +381,7 @@
*/
public void setNontransactionalRead(boolean nontrans_read)
{
- mcf.setNontransactionalRead(nontrans_read);
+ mcf.getPersistenceManagerFactory().setNontransactionalRead(nontrans_read);
}
/**
@@ -390,7 +390,7 @@
*/
public boolean getNontransactionalRead()
{
- return mcf.getNontransactionalRead();
+ return mcf.getPersistenceManagerFactory().getNontransactionalRead();
}
/**
@@ -399,7 +399,7 @@
*/
public void setNontransactionalWrite(boolean nontrans_write)
{
- mcf.setNontransactionalWrite(nontrans_write);
+ mcf.getPersistenceManagerFactory().setNontransactionalWrite(nontrans_write);
}
/**
@@ -408,7 +408,7 @@
*/
public boolean getNontransactionalWrite()
{
- return mcf.getNontransactionalWrite();
+ return mcf.getPersistenceManagerFactory().getNontransactionalWrite();
}
/**
@@ -417,7 +417,7 @@
*/
public void setIgnoreCache(boolean ignore)
{
- mcf.setIgnoreCache(ignore);
+ mcf.getPersistenceManagerFactory().setIgnoreCache(ignore);
}
/**
@@ -426,7 +426,7 @@
*/
public boolean getIgnoreCache()
{
- return mcf.getIgnoreCache();
+ return mcf.getPersistenceManagerFactory().getIgnoreCache();
}
/**
@@ -435,7 +435,7 @@
*/
public void setDetachAllOnCommit(boolean detach)
{
- mcf.setDetachAllOnCommit(detach);
+ mcf.getPersistenceManagerFactory().setDetachAllOnCommit(detach);
}
/**
@@ -453,7 +453,7 @@
*/
public void setMapping(String mapping)
{
- mcf.setMapping(mapping);
+ mcf.getPersistenceManagerFactory().setMapping(mapping);
}
/**
@@ -462,7 +462,7 @@
*/
public String getMapping()
{
- return mcf.getMapping();
+ return mcf.getPersistenceManagerFactory().getMapping();
}
/**
@@ -472,7 +472,7 @@
*/
public Collection supportedOptions()
{
- return mcf.supportedOptions();
+ return mcf.getPersistenceManagerFactory().supportedOptions();
}
/**
@@ -481,7 +481,7 @@
*/
public DataStoreCache getDataStoreCache()
{
- return mcf.getDataStoreCache();
+ return mcf.getPersistenceManagerFactory().getDataStoreCache();
}
/**
@@ -489,7 +489,7 @@
*/
public void close()
{
- mcf.close();
+ mcf.getPersistenceManagerFactory().close();
}
/**
@@ -498,7 +498,7 @@
*/
public boolean isClosed()
{
- return mcf.isClosed();
+ return mcf.getPersistenceManagerFactory().isClosed();
}
/**
@@ -509,7 +509,7 @@
*/
public void addInstanceLifecycleListener(InstanceLifecycleListener listener, Class[] classes)
{
- mcf.addInstanceLifecycleListener(listener, classes);
+ mcf.getPersistenceManagerFactory().addInstanceLifecycleListener(listener, classes);
}
/**
@@ -519,7 +519,7 @@
*/
public void removeInstanceLifecycleListener(InstanceLifecycleListener listener)
{
- mcf.removeInstanceLifecycleListener(listener);
+ mcf.getPersistenceManagerFactory().removeInstanceLifecycleListener(listener);
}
public PersistenceManager getPersistenceManagerProxy()
@@ -534,7 +534,7 @@
*/
public String getPersistenceUnitName()
{
- return mcf.getPersistenceUnitName();
+ return mcf.getPersistenceManagerFactory().getPersistenceUnitName();
}
/**
@@ -543,7 +543,7 @@
*/
public String getServerTimeZoneID()
{
- return mcf.getServerTimeZoneID();
+ return mcf.getPersistenceManagerFactory().getServerTimeZoneID();
}
/**
@@ -552,7 +552,7 @@
*/
public String getTransactionType()
{
- return mcf.getTransactionType();
+ return mcf.getPersistenceManagerFactory().getTransactionType();
}
/**
@@ -570,7 +570,7 @@
*/
public void setServerTimeZoneID(String id)
{
- mcf.setServerTimeZoneID(id);
+ mcf.getPersistenceManagerFactory().setServerTimeZoneID(id);
}
/**
@@ -579,7 +579,7 @@
*/
public void setTransactionType(String type)
{
- mcf.setTransactionType(type);
+ mcf.getPersistenceManagerFactory().setTransactionType(type);
}
/**
@@ -588,7 +588,7 @@
*/
public String getName()
{
- return mcf.getName();
+ return mcf.getPersistenceManagerFactory().getName();
}
/**
@@ -597,16 +597,16 @@
*/
public void setName(String name)
{
- mcf.setName(name);
+ mcf.getPersistenceManagerFactory().setName(name);
}
public boolean getCopyOnAttach()
{
- return mcf.getCopyOnAttach();
+ return mcf.getPersistenceManagerFactory().getCopyOnAttach();
}
public void setCopyOnAttach(boolean flag)
{
- mcf.setCopyOnAttach(flag);
+ mcf.getPersistenceManagerFactory().setCopyOnAttach(flag);
}
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|