Author: ate
Date: Wed Sep 24 03:36:34 2008
New Revision: 698512
URL: http://svn.apache.org/viewvc?rev=698512&view=rev
Log:
Fixing connection already closed errors: need to run through the Spring managed
TransactionManager
Modified:
portals/jetspeed-2/portal/branches/security-refactoring/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/JetspeedSecurityPersistenceManager.java
Modified:
portals/jetspeed-2/portal/branches/security-refactoring/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/JetspeedSecurityPersistenceManager.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/security-refactoring/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/JetspeedSecurityPersistenceManager.java?rev=698512&r1=698511&r2=698512&view=diff
==============================================================================
---
portals/jetspeed-2/portal/branches/security-refactoring/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/JetspeedSecurityPersistenceManager.java
(original)
+++
portals/jetspeed-2/portal/branches/security-refactoring/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/JetspeedSecurityPersistenceManager.java
Wed Sep 24 03:36:34 2008
@@ -16,6 +16,7 @@
*/
package org.apache.jetspeed.security.spi.impl;
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -36,13 +37,16 @@
import org.apache.jetspeed.security.spi.JetspeedPrincipalStorageManager;
import org.apache.jetspeed.security.spi.UserPasswordCredentialAccessManager;
import org.apache.jetspeed.security.spi.UserPasswordCredentialStorageManager;
-import org.apache.ojb.broker.Identity;
+import org.apache.ojb.broker.PersistenceBroker;
+import org.apache.ojb.broker.PersistenceBrokerException;
+import org.apache.ojb.broker.accesslayer.LookupException;
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.query.QueryFactory;
import org.apache.ojb.broker.query.ReportQueryByCriteria;
import org.apache.ojb.broker.util.collections.ManageableArrayList;
import org.springframework.dao.DataIntegrityViolationException;
+import org.springframework.orm.ojb.PersistenceBrokerCallback;
/**
* @version $Id$
@@ -53,6 +57,21 @@
JetspeedPrincipalStorageManager,
UserPasswordCredentialStorageManager, UserPasswordCredentialAccessManager,
JetspeedPrincipalAssociationStorageManager,
JetspeedPermissionStorageManager
{
+ private static class ManagedListByQueryCallback implements
PersistenceBrokerCallback
+ {
+ private Query query;
+
+ public ManagedListByQueryCallback(Query query)
+ {
+ this.query = query;
+ }
+ public Object doInPersistenceBroker(PersistenceBroker pb) throws
PersistenceBrokerException, LookupException,
+ SQLException
+ {
+ return pb.getCollectionByQuery(ManageableArrayList.class, query);
+ }
+ }
+
public JetspeedSecurityPersistenceManager(String repositoryPath)
{
super(repositoryPath);
@@ -68,7 +87,7 @@
criteria.addEqualTo("id", principal.getId());
criteria.addEqualTo("type", principal.getType().getName());
Query query =
QueryFactory.newQuery(PersistentJetspeedPrincipal.class,criteria);
- return getPersistenceBroker(true).getCount(query) == 1;
+ return getPersistenceBrokerTemplate().getCount(query) == 1;
}
//
@@ -81,7 +100,7 @@
criteria.addEqualTo("associationsTo.from.name", principalFromName);
criteria.addEqualTo("type", to.getName());
Query query = QueryFactory.newQuery(PersistentJetspeedPrincipal.class,
criteria);
- return (List<JetspeedPrincipal>)
getPersistenceBroker(true).getCollectionByQuery(ManageableArrayList.class,
query);
+ return (List<JetspeedPrincipal>)
getPersistenceBrokerTemplate().execute(new ManagedListByQueryCallback(query));
}
public List<JetspeedPrincipal> getAssociatedTo(String principalToName,
JetspeedPrincipalType from, JetspeedPrincipalType to, String associationName)
@@ -91,7 +110,7 @@
criteria.addEqualTo("associationsFrom.to.name", principalToName);
criteria.addEqualTo("type", from.getName());
Query query = QueryFactory.newQuery(PersistentJetspeedPrincipal.class,
criteria);
- return (List<JetspeedPrincipal>)
getPersistenceBroker(true).getCollectionByQuery(ManageableArrayList.class,
query);
+ return (List<JetspeedPrincipal>)
getPersistenceBrokerTemplate().execute(new ManagedListByQueryCallback(query));
}
public List<JetspeedPrincipal> getAssociatedFrom(Long principalFromId,
JetspeedPrincipalType from, JetspeedPrincipalType to, String associationName)
@@ -101,7 +120,7 @@
criteria.addEqualTo("associationsTo.from.id", principalFromId);
criteria.addEqualTo("type", to.getName());
Query query = QueryFactory.newQuery(PersistentJetspeedPrincipal.class,
criteria);
- return (List<JetspeedPrincipal>)
getPersistenceBroker(true).getCollectionByQuery(ManageableArrayList.class,
query);
+ return (List<JetspeedPrincipal>)
getPersistenceBrokerTemplate().execute(new ManagedListByQueryCallback(query));
}
public List<JetspeedPrincipal> getAssociatedTo(Long principalToId,
JetspeedPrincipalType from, JetspeedPrincipalType to, String associationName)
@@ -111,7 +130,7 @@
criteria.addEqualTo("associationsFrom.to.id", principalToId);
criteria.addEqualTo("type", from.getName());
Query query = QueryFactory.newQuery(PersistentJetspeedPrincipal.class,
criteria);
- return (List<JetspeedPrincipal>)
getPersistenceBroker(true).getCollectionByQuery(ManageableArrayList.class,
query);
+ return (List<JetspeedPrincipal>)
getPersistenceBrokerTemplate().execute(new ManagedListByQueryCallback(query));
}
public List<String> getAssociatedNamesFrom(String principalFromName,
JetspeedPrincipalType from, JetspeedPrincipalType to, String associationName)
@@ -123,7 +142,7 @@
ReportQueryByCriteria query =
QueryFactory.newReportQuery(PersistentJetspeedPrincipal.class, criteria);
query.setAttributes(new String[]{"name"});
ArrayList<String> names = new ArrayList<String>();
- for (Iterator<Object[]> iter =
getPersistenceBroker(true).getReportQueryIteratorByQuery(query);
iter.hasNext(); )
+ for (Iterator<Object[]> iter =
getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(query);
iter.hasNext(); )
{
names.add((String)iter.next()[0]);
}
@@ -139,7 +158,7 @@
ReportQueryByCriteria query =
QueryFactory.newReportQuery(PersistentJetspeedPrincipal.class, criteria);
query.setAttributes(new String[]{"name"});
ArrayList<String> names = new ArrayList<String>();
- for (Iterator<Object[]> iter =
getPersistenceBroker(true).getReportQueryIteratorByQuery(query);
iter.hasNext(); )
+ for (Iterator<Object[]> iter =
getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(query);
iter.hasNext(); )
{
names.add((String)iter.next()[0]);
}
@@ -155,7 +174,7 @@
ReportQueryByCriteria query =
QueryFactory.newReportQuery(PersistentJetspeedPrincipal.class, criteria);
query.setAttributes(new String[]{"name"});
ArrayList<String> names = new ArrayList<String>();
- for (Iterator<Object[]> iter =
getPersistenceBroker(true).getReportQueryIteratorByQuery(query);
iter.hasNext(); )
+ for (Iterator<Object[]> iter =
getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(query);
iter.hasNext(); )
{
names.add((String)iter.next()[0]);
}
@@ -171,7 +190,7 @@
ReportQueryByCriteria query =
QueryFactory.newReportQuery(PersistentJetspeedPrincipal.class, criteria);
query.setAttributes(new String[]{"name"});
ArrayList<String> names = new ArrayList<String>();
- for (Iterator<Object[]> iter =
getPersistenceBroker(true).getReportQueryIteratorByQuery(query);
iter.hasNext(); )
+ for (Iterator<Object[]> iter =
getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(query);
iter.hasNext(); )
{
names.add((String)iter.next()[0]);
}
@@ -180,8 +199,7 @@
public JetspeedPrincipal getPrincipal(Long id)
{
- Identity oid =
getPersistenceBroker(true).serviceIdentity().buildIdentity(PersistentJetspeedPrincipal.class,
id);
- return
(JetspeedPrincipal)getPersistenceBroker(true).getObjectByIdentity(oid);
+ return
(JetspeedPrincipal)getPersistenceBrokerTemplate().getObjectById(PersistentJetspeedPrincipal.class,
id);
}
public JetspeedPrincipal getPrincipal(String principalName,
JetspeedPrincipalType type)
@@ -190,7 +208,7 @@
criteria.addEqualTo("name", principalName);
criteria.addEqualTo("type", type.getName());
Query query =
QueryFactory.newQuery(PersistentJetspeedPrincipal.class,criteria);
- return
(JetspeedPrincipal)getPersistenceBroker(true).getObjectByQuery(query);
+ return
(JetspeedPrincipal)getPersistenceBrokerTemplate().getObjectByQuery(query);
}
public List<String> getPrincipalNames(String nameFilter,
JetspeedPrincipalType type)
@@ -204,7 +222,7 @@
ReportQueryByCriteria query =
QueryFactory.newReportQuery(PersistentJetspeedPrincipal.class,criteria);
query.setAttributes(new String[]{"name"});
ArrayList<String> names = new ArrayList<String>();
- for (Iterator<Object[]> iter =
getPersistenceBroker(true).getReportQueryIteratorByQuery(query);
iter.hasNext(); )
+ for (Iterator<Object[]> iter =
getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(query);
iter.hasNext(); )
{
names.add((String)iter.next()[0]);
}
@@ -220,7 +238,7 @@
}
criteria.addEqualTo("type", type.getName());
Query query =
QueryFactory.newQuery(PersistentJetspeedPrincipal.class,criteria);
- return (List<JetspeedPrincipal>)
getPersistenceBroker(true).getCollectionByQuery(ManageableArrayList.class,
query);
+ return (List<JetspeedPrincipal>)
getPersistenceBrokerTemplate().execute(new ManagedListByQueryCallback(query));
}
public List<JetspeedPrincipal> getPrincipalsByAttribute(String
attributeName, String attributeValue, JetspeedPrincipalType type)
@@ -230,7 +248,7 @@
criteria.addEqualTo("attributes.value", attributeValue);
criteria.addEqualTo("type", type.getName());
Query query =
QueryFactory.newQuery(PersistentJetspeedPrincipal.class,criteria);
- return (List<JetspeedPrincipal>)
getPersistenceBroker(true).getCollectionByQuery(ManageableArrayList.class,
query);
+ return (List<JetspeedPrincipal>)
getPersistenceBrokerTemplate().execute(new ManagedListByQueryCallback(query));
}
public boolean principalExists(String principalName, JetspeedPrincipalType
type)
@@ -239,7 +257,7 @@
criteria.addEqualTo("name", principalName);
criteria.addEqualTo("type", type.getName());
Query query =
QueryFactory.newQuery(PersistentJetspeedPrincipal.class,criteria);
- return getPersistenceBroker(true).getCount(query) == 1;
+ return getPersistenceBrokerTemplate().getCount(query) == 1;
}
//
@@ -335,7 +353,7 @@
criteria.addEqualTo("principalId", user.getId());
criteria.addEqualTo("type", PasswordCredential.TYPE_CURRENT);
Query query =
QueryFactory.newQuery(PasswordCredentialImpl.class,criteria);
- PasswordCredentialImpl pwc =
(PasswordCredentialImpl)getPersistenceBroker(true).getObjectByQuery(query);
+ PasswordCredentialImpl pwc =
(PasswordCredentialImpl)getPersistenceBrokerTemplate().getObjectByQuery(query);
if (pwc == null)
{
pwc = new PasswordCredentialImpl();
@@ -354,7 +372,7 @@
credential.setPassword(credential.getNewPassword(),
credential.isEncoded());
}
}
- getPersistenceBroker(true).store(credential);
+ getPersistenceBrokerTemplate().store(credential);
}
//
@@ -377,7 +395,7 @@
criteria.addEqualTo("user.name", userName);
criteria.addEqualTo("type", PasswordCredential.TYPE_CURRENT);
Query query =
QueryFactory.newQuery(PasswordCredentialImpl.class,criteria);
- PasswordCredentialImpl pwc =
(PasswordCredentialImpl)getPersistenceBroker(true).getObjectByQuery(query);
+ PasswordCredentialImpl pwc =
(PasswordCredentialImpl)getPersistenceBrokerTemplate().getObjectByQuery(query);
if (pwc != null)
{
// store the userName by hand as the user is configured as
auto-retrieve="false"
@@ -386,11 +404,20 @@
return pwc;
}
- public void loadPasswordCredentialUser(PasswordCredential credential)
+ public void loadPasswordCredentialUser(final PasswordCredential credential)
{
if (credential.getUser() == null)
{
- getPersistenceBroker(true).retrieveReference(credential, "user");
+ getPersistenceBrokerTemplate().execute(
+ new PersistenceBrokerCallback()
+ {
+ public Object doInPersistenceBroker(PersistenceBroker
pb) throws PersistenceBrokerException
+ {
+ pb.retrieveReference(credential, "user");
+ return null;
+ }
+ }
+ );
}
}
@@ -400,7 +427,7 @@
criteria.addEqualTo("principalId", user.getId());
criteria.addEqualTo("type", PasswordCredential.TYPE_HISTORICAL);
Query query =
QueryFactory.newQuery(PasswordCredentialImpl.class,criteria);
- List<PasswordCredential> list =
(List<PasswordCredential>)getPersistenceBroker(true).getCollectionByQuery(ManageableArrayList.class,
query);
+ List<PasswordCredential> list =
(List<PasswordCredential>)getPersistenceBrokerTemplate().execute(new
ManagedListByQueryCallback(query));
for (PasswordCredential pwc : list)
{
// store the user by hand as its configured as
auto-retrieve="false"
@@ -420,11 +447,11 @@
criteria.addEqualTo("toPrincipalId", to.getId());
criteria.addEqualTo("associationName", associationName);
Query query =
QueryFactory.newQuery(JetspeedPrincipalAssociation.class,criteria);
- if (getPersistenceBroker(true).getCount(query) == 0)
+ if (getPersistenceBrokerTemplate().getCount(query) == 0)
{
try
{
- getPersistenceBroker(true).store(new
JetspeedPrincipalAssociation(from, to, associationName));
+ getPersistenceBrokerTemplate().store(new
JetspeedPrincipalAssociation(from, to, associationName));
}
catch (Exception pbe)
{
@@ -450,7 +477,7 @@
criteria.addEqualTo("toPrincipalId", to.getId());
criteria.addEqualTo("associationName", associationName);
Query query =
QueryFactory.newQuery(JetspeedPrincipalAssociation.class,criteria);
- if (getPersistenceBroker(true).getCount(query) != 0)
+ if (getPersistenceBrokerTemplate().getCount(query) != 0)
{
try
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]