Author: gk
Date: Fri Mar  7 10:53:14 2014
New Revision: 1575232

URL: http://svn.apache.org/r1575232
Log:
TRB-92. Adding support for custom Torque peer classes providing manager 
integration. Testing could not yet be done without providing PeerImpl classes 
decorated with peer interfaces, cft. TORQUE-309). Fetching the peer from the 
already available classNames for user manager, etc is done by calling getPeer. 
The attribute peerInterface in fulcrum-turbine-schema.xml is not yet used (cft. 
TORQUE-309).

Added:
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineGroupPeerImpl.java
   (with props)
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbinePermissionPeerImpl.java
   (with props)
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineRolePeerImpl.java
   (with props)
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineUserPeerImpl.java
   (with props)
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/Peer.java
   (with props)
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManager.java
   (with props)
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManagerDefaultImpl.java
   (with props)
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/TorqueTurbinePeer.java
   (with props)
    
turbine/fulcrum/trunk/security/torque/src/test/TurbineTorqueWithPeersComponentConfig.xml
   (with props)
    
turbine/fulcrum/trunk/security/torque/src/test/org/apache/fulcrum/security/torque/turbine/TorquePeerTurbineModelManagerTest.java
   (with props)
Modified:
    
turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractEntityManager.java
    turbine/fulcrum/trunk/security/torque/schema/fulcrum-turbine-schema.xml
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/TorqueAbstractUserManager.java
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueAbstractTurbineGroup.java
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineGroupManagerImpl.java
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbinePermissionManagerImpl.java
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineRoleManagerImpl.java
    
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineUserManagerImpl.java
    turbine/fulcrum/trunk/security/torque/src/test/TurbineTorqueRoleConfig.xml

Modified: 
turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractEntityManager.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractEntityManager.java?rev=1575232&r1=1575231&r2=1575232&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractEntityManager.java
 (original)
+++ 
turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractEntityManager.java
 Fri Mar  7 10:53:14 2014
@@ -34,6 +34,11 @@ public abstract class AbstractEntityMana
 {
     private String className;
     private static final String CLASS_NAME_KEY = "className";
+    
+    private Boolean customPeer = false;  //  used for torque which uses per 
object peer classes
+    
+    private String peerClassName;
+    private static final String PEER_CLASS_NAME_KEY = "peerClassName";
 
     /**
      * Avalon Service lifecycle method
@@ -41,6 +46,12 @@ public abstract class AbstractEntityMana
     public void configure(Configuration conf) throws ConfigurationException
     {
         className = conf.getChild(CLASS_NAME_KEY).getValue();
+       
+        peerClassName = conf.getChild( PEER_CLASS_NAME_KEY).getValue( null );
+        if (peerClassName != null) {
+            setPeerClassName( peerClassName );
+            setCustomPeer(true);
+        } 
     }
 
     /**
@@ -60,4 +71,25 @@ public abstract class AbstractEntityMana
         this.className = className;
     }
 
+    public Boolean getCustomPeer()
+    {
+        return customPeer;
+    }
+
+    public void setCustomPeer( Boolean customPeer )
+    {
+        this.customPeer = customPeer;
+    }
+
+    public String getPeerClassName()
+    {
+        return peerClassName;
+    }
+
+    public void setPeerClassName( String peerClassName )
+    {
+        this.peerClassName = peerClassName;
+    }
+
+
 }

Modified: 
turbine/fulcrum/trunk/security/torque/schema/fulcrum-turbine-schema.xml
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/schema/fulcrum-turbine-schema.xml?rev=1575232&r1=1575231&r2=1575232&view=diff
==============================================================================
--- turbine/fulcrum/trunk/security/torque/schema/fulcrum-turbine-schema.xml 
(original)
+++ turbine/fulcrum/trunk/security/torque/schema/fulcrum-turbine-schema.xml Fri 
Mar  7 10:53:14 2014
@@ -33,7 +33,7 @@
     xsi:schemaLocation="http://db.apache.org/torque/4.0/templates/database 
         http://db.apache.org/torque/4.0/templates/database.xsd";>
 
-  <table name="FULCRUM_TURBINE_PERMISSION" javaName="TorqueTurbinePermission" 
idMethod="idbroker"
+  <table name="FULCRUM_TURBINE_PERMISSION" javaName="TorqueTurbinePermission" 
idMethod="idbroker" 
peerInterface="org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer"
       
baseClass="org.apache.fulcrum.security.torque.turbine.TorqueAbstractTurbinePermission">
     <column name="PERMISSION_ID" required="true" primaryKey="true" 
type="INTEGER" javaName="EntityId" javaType="object"/>
     <column name="PERMISSION_NAME" required="true" size="64" type="VARCHAR" 
javaName="EntityName"/>
@@ -44,7 +44,7 @@
 
   </table>
 
-  <table name="FULCRUM_TURBINE_ROLE" javaName="TorqueTurbineRole" 
idMethod="idbroker"
+  <table name="FULCRUM_TURBINE_ROLE" javaName="TorqueTurbineRole" 
idMethod="idbroker" 
peerInterface="org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer"
       
baseClass="org.apache.fulcrum.security.torque.turbine.TorqueAbstractTurbineRole">
     <column name="ROLE_ID" required="true" primaryKey="true" type="INTEGER" 
javaName="EntityId" javaType="object"/>
     <column name="ROLE_NAME" required="true" size="64" type="VARCHAR" 
javaName="EntityName"/>
@@ -55,7 +55,7 @@
 
   </table>
 
-  <table name="FULCRUM_TURBINE_GROUP" javaName="TorqueTurbineGroup" 
idMethod="idbroker"
+  <table name="FULCRUM_TURBINE_GROUP" javaName="TorqueTurbineGroup" 
idMethod="idbroker" 
peerInterface="org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer"
       
baseClass="org.apache.fulcrum.security.torque.turbine.TorqueAbstractTurbineGroup">
     <column name="GROUP_ID" required="true" primaryKey="true" type="INTEGER" 
javaName="EntityId" javaType="object"/>
     <column name="GROUP_NAME" required="true" type="VARCHAR" size="64" 
javaName="EntityName"/>
@@ -66,7 +66,7 @@
 
   </table>
 
-  <table name="FULCRUM_TURBINE_USER" javaName="TorqueTurbineUser" 
idMethod="idbroker"
+  <table name="FULCRUM_TURBINE_USER" javaName="TorqueTurbineUser" 
idMethod="idbroker" 
peerInterface="org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer"
       
baseClass="org.apache.fulcrum.security.torque.turbine.TorqueAbstractTurbineUser">
     <column name="USER_ID" required="true" primaryKey="true" type="INTEGER" 
javaName="EntityId" javaType="object"/>
     <column name="LOGIN_NAME" required="true" size="64" type="VARCHAR" 
javaName="EntityName"/>

Modified: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/TorqueAbstractUserManager.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/TorqueAbstractUserManager.java?rev=1575232&r1=1575231&r2=1575232&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/TorqueAbstractUserManager.java
 (original)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/TorqueAbstractUserManager.java
 Fri Mar  7 10:53:14 2014
@@ -22,6 +22,7 @@ import java.util.List;
 
 import org.apache.fulcrum.security.entity.User;
 import org.apache.fulcrum.security.spi.AbstractUserManager;
+import org.apache.fulcrum.security.torque.peer.Peer;
 import org.apache.fulcrum.security.util.DataBackendException;
 import org.apache.fulcrum.security.util.EntityExistsException;
 import org.apache.fulcrum.security.util.UnknownEntityException;
@@ -351,4 +352,5 @@ public abstract class TorqueAbstractUser
 
         return user;
     }
+    
 }

Added: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineGroupPeerImpl.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineGroupPeerImpl.java?rev=1575232&view=auto
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineGroupPeerImpl.java
 (added)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineGroupPeerImpl.java
 Fri Mar  7 10:53:14 2014
@@ -0,0 +1,22 @@
+package org.apache.fulcrum.security.torque.om;
+
+/**
+ * The skeleton for this class was autogenerated by Torque on:
+ *
+ * [Tue Mar 04 14:21:36 CET 2014]
+ *
+ * You should add additional methods to this class to meet the
+ * application requirements.  This class will only be generated as
+ * long as it does not already exist in the output directory.
+ */
+
+public class TorqueTurbineGroupPeerImpl
+    extends 
org.apache.fulcrum.security.torque.om.BaseTorqueTurbineGroupPeerImpl
+    implements org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer
+{
+    /** Serial version */
+    private static final long serialVersionUID = 1393939296089L;
+
+
+
+}

Propchange: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineGroupPeerImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbinePermissionPeerImpl.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbinePermissionPeerImpl.java?rev=1575232&view=auto
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbinePermissionPeerImpl.java
 (added)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbinePermissionPeerImpl.java
 Fri Mar  7 10:53:14 2014
@@ -0,0 +1,22 @@
+package org.apache.fulcrum.security.torque.om;
+
+/**
+ * The skeleton for this class was autogenerated by Torque on:
+ *
+ * [Tue Mar 04 14:21:36 CET 2014]
+ *
+ * You should add additional methods to this class to meet the
+ * application requirements.  This class will only be generated as
+ * long as it does not already exist in the output directory.
+ */
+
+public class TorqueTurbinePermissionPeerImpl
+    extends 
org.apache.fulcrum.security.torque.om.BaseTorqueTurbinePermissionPeerImpl
+    implements org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer
+{
+    /** Serial version */
+    private static final long serialVersionUID = 1393939296076L;
+
+
+
+}

Propchange: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbinePermissionPeerImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineRolePeerImpl.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineRolePeerImpl.java?rev=1575232&view=auto
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineRolePeerImpl.java
 (added)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineRolePeerImpl.java
 Fri Mar  7 10:53:14 2014
@@ -0,0 +1,22 @@
+package org.apache.fulcrum.security.torque.om;
+
+/**
+ * The skeleton for this class was autogenerated by Torque on:
+ *
+ * [Tue Mar 04 14:21:36 CET 2014]
+ *
+ * You should add additional methods to this class to meet the
+ * application requirements.  This class will only be generated as
+ * long as it does not already exist in the output directory.
+ */
+
+public class TorqueTurbineRolePeerImpl
+    extends org.apache.fulcrum.security.torque.om.BaseTorqueTurbineRolePeerImpl
+    implements org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer
+{
+    /** Serial version */
+    private static final long serialVersionUID = 1393939296083L;
+
+
+
+}

Propchange: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineRolePeerImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineUserPeerImpl.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineUserPeerImpl.java?rev=1575232&view=auto
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineUserPeerImpl.java
 (added)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineUserPeerImpl.java
 Fri Mar  7 10:53:14 2014
@@ -0,0 +1,22 @@
+package org.apache.fulcrum.security.torque.om;
+
+/**
+ * The skeleton for this class was autogenerated by Torque on:
+ *
+ * [Tue Mar 04 14:21:36 CET 2014]
+ *
+ * You should add additional methods to this class to meet the
+ * application requirements.  This class will only be generated as
+ * long as it does not already exist in the output directory.
+ */
+
+public class TorqueTurbineUserPeerImpl
+    extends org.apache.fulcrum.security.torque.om.BaseTorqueTurbineUserPeerImpl
+    implements org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer
+{
+    /** Serial version */
+    private static final long serialVersionUID = 1393939296095L;
+
+
+
+}

Propchange: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/om/TorqueTurbineUserPeerImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/Peer.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/Peer.java?rev=1575232&view=auto
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/Peer.java
 (added)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/Peer.java
 Fri Mar  7 10:53:14 2014
@@ -0,0 +1,14 @@
+package org.apache.fulcrum.security.torque.peer;
+
+/**
+ * This is a marker interface for {@link PeerManager#getPeerInstance(String)}. 
+ * It allows to swap database operations action classes (called Peers in 
Torque model).
+ * 
+ * @author <a href="mailto:g...@apache.org";>Georg Kallidis</a>
+ * @version $Id$
+ *
+ */
+public interface Peer
+{
+
+}

Propchange: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/Peer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManager.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManager.java?rev=1575232&view=auto
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManager.java
 (added)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManager.java
 Fri Mar  7 10:53:14 2014
@@ -0,0 +1,48 @@
+package org.apache.fulcrum.security.torque.peer;
+
+import org.apache.fulcrum.security.spi.AbstractEntityManager;
+import org.apache.fulcrum.security.util.DataBackendException;
+
+
+/**
+ * Use this manager in role-list, if you want to swap default peer classes.
+ * It gets automatically registered in {@literal 
TorqueTurbine<Type>ManagerImpl classes. <Types> are: <User>, <Group>, 
<Permission>, <Role>}.
+ * You have to register your {@literal <Type>PeerImpl classes} by adding the 
{@link TorqueTurbinePeer} interface.
+ * 
+ * If generating your ORM-classes from a Torque schema, you may have to delete 
or provide your own baseClasses in the schema.
+ * 
+ * @see <a 
href="http://db.apache.org/torque/torque-4.0/documentation/orm-reference/database-4-0.xsd";
 target=_blank>Torque 4.0 Schema</a>
+ * @see org.apache.fulcrum.security.torque.turbine 
TorqueTurbine&lt;Type&gt;ManagerImpl referencing manager classes.
+ *  
+ * @author <a href="mailto:g...@apache.org";>Georg Kallidis</a>
+ * @version $Id$
+ */
+public interface PeerManager
+{
+
+    String ROLE = PeerManager.class.getName(); 
+
+    /**
+     *  Expects the class name of a Torque Peer class, which could be 
instantiated. 
+     *  @see AbstractEntityManager#getPeerClassName()
+     *  
+     * @param peerClassName the peerClassName
+     * 
+     * @return a (cashed) peer class instance
+     */
+    public abstract <P extends Peer> P getPeerInstance(String peerClassName)
+        throws DataBackendException;
+
+    /**
+     * This method is provided to get more helpful exception messages.
+     * 
+     * @param peerClassName
+     * @param class1 expected class the peers should implement 
+     * @param className target class, i.e. the data object class type of the 
Peer object. The data object for which the peer is provided. 
+     * @return
+     * @throws DataBackendException
+     */
+    public abstract <P extends Peer> P getPeerInstance( String peerClassName, 
Class<? extends Peer> class1, String className ) throws DataBackendException;
+
+
+}

Propchange: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManagerDefaultImpl.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManagerDefaultImpl.java?rev=1575232&view=auto
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManagerDefaultImpl.java
 (added)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManagerDefaultImpl.java
 Fri Mar  7 10:53:14 2014
@@ -0,0 +1,59 @@
+package org.apache.fulcrum.security.torque.peer;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.fulcrum.security.spi.AbstractManager;
+import org.apache.fulcrum.security.util.DataBackendException;
+
+/**
+ * Use this class, if you want to replace the default Torque Peer classes with 
your own. 
+ *  
+ * To use it, the PeerImpl classes (usually generated) must implement 
+ * at least the {@linkplain Peer} marker interface or some extended interface.
+ * 
+ * @see PeerManager
+ * 
+ * @author <a href="mailto:g...@apache.org";>Georg Kallidis</a>
+ * @version $Id$
+ * 
+ */
+public class PeerManagerDefaultImpl extends AbstractManager
+    implements PeerManager, Disposable
+{
+      
+    private Map<String,Peer> peers = new 
ConcurrentHashMap<String,Peer>(4,0.75f,4);
+
+    @Override
+    public <P extends Peer> P getPeerInstance(String peerClassName) throws 
DataBackendException
+    {
+        return getPeerInstance( peerClassName, Peer.class, null);
+    }
+
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public <P extends Peer> P getPeerInstance( String peerClassName, Class<? 
extends Peer> peerInterface , String className) throws DataBackendException
+    {
+        if (peers.containsKey(peerClassName )) {
+            getLogger().debug( " get cached PeerInstance():" +  peers.get( 
peerClassName ));
+            return (P) peers.get( peerClassName );
+        }
+        try
+        {
+            P peer = (P) Class.forName(peerClassName).newInstance();
+            getLogger().debug( " getPeerInstance():" +  peer);
+            peers.put( peerClassName, peer );
+            return peer;
+        }
+        catch (ClassCastException e) {
+            throw new DataBackendException( e.getMessage()+ ".\nThe peer class 
" + peerClassName + " should implement "+ peerInterface + "\n of generic type 
<"+className +">.",e );
+        } 
+        catch (Throwable e)
+        {
+            throw new DataBackendException("Problem creating instance of class 
" + peerClassName, e);
+        }             
+    }
+
+
+}

Propchange: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/PeerManagerDefaultImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/TorqueTurbinePeer.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/TorqueTurbinePeer.java?rev=1575232&view=auto
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/TorqueTurbinePeer.java
 (added)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/TorqueTurbinePeer.java
 Fri Mar  7 10:53:14 2014
@@ -0,0 +1,29 @@
+package org.apache.fulcrum.security.torque.peer;
+
+import java.sql.Connection;
+import java.util.List;
+
+import org.apache.torque.NoRowsException;
+import org.apache.torque.TooManyRowsException;
+import org.apache.torque.TorqueException;
+import org.apache.torque.criteria.Criteria;
+
+/**
+ * This extension to the marker interface {@linkplain Peer} is to allow for 
swappable Peer implementations 
+ * in Turbine Torque Manager Implementations.  
+ * 
+ * @param <T>  The data object type used by the Torque PeerImpl class.
+ * 
+ * @author <a href="mailto:g...@apache.org";>Georg Kallidis</a>
+ * @version $Id$
+ */
+public interface TorqueTurbinePeer<T>
+    extends Peer
+{
+
+     List<T> doSelect( Criteria criteria,
+                         Connection connection) throws TorqueException;
+     
+     T retrieveByPK(Integer pk, Connection con)
+                     throws TorqueException, NoRowsException, 
TooManyRowsException;
+}

Propchange: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/peer/TorqueTurbinePeer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueAbstractTurbineGroup.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueAbstractTurbineGroup.java?rev=1575232&r1=1575231&r2=1575232&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueAbstractTurbineGroup.java
 (original)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueAbstractTurbineGroup.java
 Fri Mar  7 10:53:14 2014
@@ -24,7 +24,6 @@ import java.util.Set;
 
 import org.apache.fulcrum.security.model.turbine.entity.TurbineGroup;
 import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
-import org.apache.fulcrum.security.torque.om.TorqueDynamicUserGroupPeer;
 import org.apache.fulcrum.security.torque.om.TorqueTurbineGroupPeer;
 import org.apache.fulcrum.security.torque.om.TorqueTurbineUserGroupRole;
 import org.apache.fulcrum.security.torque.om.TorqueTurbineUserGroupRolePeer;

Modified: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineGroupManagerImpl.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineGroupManagerImpl.java?rev=1575232&r1=1575231&r2=1575232&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineGroupManagerImpl.java
 (original)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineGroupManagerImpl.java
 Fri Mar  7 10:53:14 2014
@@ -22,8 +22,12 @@ import java.util.List;
 
 import org.apache.fulcrum.security.entity.Group;
 import org.apache.fulcrum.security.torque.TorqueAbstractGroupManager;
-import org.apache.fulcrum.security.torque.om.TorqueTurbineGroup;
 import org.apache.fulcrum.security.torque.om.TorqueTurbineGroupPeer;
+import org.apache.fulcrum.security.torque.peer.Peer;
+import org.apache.fulcrum.security.torque.peer.PeerManagable;
+import org.apache.fulcrum.security.torque.peer.PeerManager;
+import org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer;
+import org.apache.fulcrum.security.util.DataBackendException;
 import org.apache.torque.NoRowsException;
 import org.apache.torque.TooManyRowsException;
 import org.apache.torque.TorqueException;
@@ -34,8 +38,10 @@ import org.apache.torque.criteria.Criter
  * @author <a href="mailto:t...@apache.org";>Thomas Vandahl</a>
  * @version $Id:$
  */
-public class TorqueTurbineGroupManagerImpl extends TorqueAbstractGroupManager
+public class TorqueTurbineGroupManagerImpl extends TorqueAbstractGroupManager 
implements PeerManagable
 {
+    
+    PeerManager peerManager;
     /**
      * @see 
org.apache.fulcrum.security.torque.TorqueAbstractGroupManager#doSelectAllGroups(java.sql.Connection)
      */
@@ -43,8 +49,21 @@ public class TorqueTurbineGroupManagerIm
        protected <T extends Group> List<T> doSelectAllGroups(Connection con) 
throws TorqueException
     {
         Criteria criteria = new Criteria(TorqueTurbineGroupPeer.DATABASE_NAME);
+        
+        if ( (getCustomPeer())) {
+            try
+            {
+                return ((TorqueTurbinePeer<T>)getPeerInstance()).doSelect( 
criteria, con );
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            return (List<T>) TorqueTurbineGroupPeer.doSelect(criteria, con);
+        }
+
 
-        return (List<T>)TorqueTurbineGroupPeer.doSelect(criteria, con);
     }
 
     /**
@@ -53,7 +72,19 @@ public class TorqueTurbineGroupManagerIm
     @SuppressWarnings("unchecked")
        protected <T extends Group> T doSelectById(Integer id, Connection con) 
throws NoRowsException, TooManyRowsException, TorqueException
     {
-        return (T) TorqueTurbineGroupPeer.retrieveByPK(id, con);
+        if ( (getCustomPeer())) {
+            try
+            {
+                return ((TorqueTurbinePeer<T>) 
getPeerInstance()).retrieveByPK( id, con );
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            return  (T)  TorqueTurbineGroupPeer.retrieveByPK(id, con);
+        }
+
     }
 
     /**
@@ -66,14 +97,43 @@ public class TorqueTurbineGroupManagerIm
         criteria.where(TorqueTurbineGroupPeer.GROUP_NAME, name);
         criteria.setIgnoreCase(true);
         criteria.setSingleRecord(true);
-
-        List<TorqueTurbineGroup> groups = 
TorqueTurbineGroupPeer.doSelect(criteria, con);
+        List<T> groups = null;
+        
+        if ( (getCustomPeer())) {
+            try
+            {
+                
+                groups = ((TorqueTurbinePeer<T>) getPeerInstance()).doSelect( 
criteria, con );
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            groups = (List<T>) TorqueTurbineGroupPeer.doSelect(criteria, con);
+        }
 
         if (groups.isEmpty())
         {
             throw new NoRowsException(name);
         }
 
-        return (T) groups.get(0);
+        return groups.get(0);
+    }
+    
+    public Peer getPeerInstance() throws DataBackendException {
+        return getPeerManager().getPeerInstance(getPeerClassName(), 
TorqueTurbinePeer.class, getClassName());
+    }
+    
+    /**
+     * @return Returns the persistenceHelper.
+     */
+    public PeerManager getPeerManager()
+    {
+        if (peerManager == null)
+        {
+            peerManager = (PeerManager) resolve(PeerManager.ROLE);
+        }
+        return peerManager;
     }
 }

Modified: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbinePermissionManagerImpl.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbinePermissionManagerImpl.java?rev=1575232&r1=1575231&r2=1575232&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbinePermissionManagerImpl.java
 (original)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbinePermissionManagerImpl.java
 Fri Mar  7 10:53:14 2014
@@ -22,8 +22,12 @@ import java.util.List;
 
 import org.apache.fulcrum.security.entity.Permission;
 import org.apache.fulcrum.security.torque.TorqueAbstractPermissionManager;
-import org.apache.fulcrum.security.torque.om.TorqueTurbinePermission;
 import org.apache.fulcrum.security.torque.om.TorqueTurbinePermissionPeer;
+import org.apache.fulcrum.security.torque.peer.Peer;
+import org.apache.fulcrum.security.torque.peer.PeerManagable;
+import org.apache.fulcrum.security.torque.peer.PeerManager;
+import org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer;
+import org.apache.fulcrum.security.util.DataBackendException;
 import org.apache.torque.NoRowsException;
 import org.apache.torque.TooManyRowsException;
 import org.apache.torque.TorqueException;
@@ -34,8 +38,11 @@ import org.apache.torque.criteria.Criter
  * @author <a href="mailto:t...@apache.org";>Thomas Vandahl</a>
  * @version $Id:$
  */
-public class TorqueTurbinePermissionManagerImpl extends 
TorqueAbstractPermissionManager
+public class TorqueTurbinePermissionManagerImpl extends 
TorqueAbstractPermissionManager implements PeerManagable
 {
+    
+    PeerManager peerManager;
+    
     /**
      * @see 
org.apache.fulcrum.security.torque.TorqueAbstractPermissionManager#doSelectAllPermissions(java.sql.Connection)
      */
@@ -43,8 +50,21 @@ public class TorqueTurbinePermissionMana
        protected <T extends Permission> List<T> 
doSelectAllPermissions(Connection con) throws TorqueException
     {
         Criteria criteria = new 
Criteria(TorqueTurbinePermissionPeer.DATABASE_NAME);
+        
+        if ( (getCustomPeer())) {
+            try
+            {
+                return ((TorqueTurbinePeer<T>) getPeerInstance()).doSelect( 
criteria, con );
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            return (List<T>)TorqueTurbinePermissionPeer.doSelect(criteria, 
con);
+        }
 
-        return (List<T>)TorqueTurbinePermissionPeer.doSelect(criteria, con);
+       
     }
 
     /**
@@ -53,7 +73,18 @@ public class TorqueTurbinePermissionMana
     @SuppressWarnings("unchecked")
        protected <T extends Permission> T doSelectById(Integer id, Connection 
con) throws NoRowsException, TooManyRowsException, TorqueException
     {
-        return (T) TorqueTurbinePermissionPeer.retrieveByPK(id, con);
+        if ( (getCustomPeer())) {
+            try
+            {
+                return ((TorqueTurbinePeer<T>) 
getPeerInstance()).retrieveByPK(id, con);
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            return (T) TorqueTurbinePermissionPeer.retrieveByPK(id, con);
+        } 
     }
 
     /**
@@ -66,8 +97,20 @@ public class TorqueTurbinePermissionMana
         criteria.where(TorqueTurbinePermissionPeer.PERMISSION_NAME, name);
         criteria.setIgnoreCase(true);
         criteria.setSingleRecord(true);
-
-        List<TorqueTurbinePermission> permissions = 
TorqueTurbinePermissionPeer.doSelect(criteria, con);
+        
+        List<T> permissions = null;
+        if ( (getCustomPeer())) {
+            try
+            {
+                permissions = ((TorqueTurbinePeer<T>) 
getPeerInstance()).doSelect(criteria, con);
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            permissions = (List<T>) 
TorqueTurbinePermissionPeer.doSelect(criteria, con);
+        } 
 
         if (permissions.isEmpty())
         {
@@ -76,4 +119,20 @@ public class TorqueTurbinePermissionMana
 
         return (T) permissions.get(0);
     }
+    
+    public Peer getPeerInstance() throws DataBackendException {
+        return getPeerManager().getPeerInstance(getPeerClassName(), 
TorqueTurbinePeer.class, getClassName());
+    }
+    
+    /**
+     * @return Returns the persistenceHelper.
+     */
+    public PeerManager getPeerManager()
+    {
+        if (peerManager == null)
+        {
+            peerManager = (PeerManager) resolve(PeerManager.ROLE);
+        }
+        return peerManager;
+    }
 }

Modified: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineRoleManagerImpl.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineRoleManagerImpl.java?rev=1575232&r1=1575231&r2=1575232&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineRoleManagerImpl.java
 (original)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineRoleManagerImpl.java
 Fri Mar  7 10:53:14 2014
@@ -22,8 +22,12 @@ import java.util.List;
 
 import org.apache.fulcrum.security.entity.Role;
 import org.apache.fulcrum.security.torque.TorqueAbstractRoleManager;
-import org.apache.fulcrum.security.torque.om.TorqueTurbineRole;
 import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePeer;
+import org.apache.fulcrum.security.torque.peer.Peer;
+import org.apache.fulcrum.security.torque.peer.PeerManagable;
+import org.apache.fulcrum.security.torque.peer.PeerManager;
+import org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer;
+import org.apache.fulcrum.security.util.DataBackendException;
 import org.apache.torque.NoRowsException;
 import org.apache.torque.TooManyRowsException;
 import org.apache.torque.TorqueException;
@@ -34,8 +38,10 @@ import org.apache.torque.criteria.Criter
  * @author <a href="mailto:t...@apache.org";>Thomas Vandahl</a>
  * @version $Id:$
  */
-public class TorqueTurbineRoleManagerImpl extends TorqueAbstractRoleManager
+public class TorqueTurbineRoleManagerImpl extends TorqueAbstractRoleManager 
implements PeerManagable
 {
+    PeerManager peerManager;
+    
     /**
      * @see 
org.apache.fulcrum.security.torque.TorqueAbstractRoleManager#doSelectAllRoles(java.sql.Connection)
      */
@@ -44,7 +50,18 @@ public class TorqueTurbineRoleManagerImp
     {
         Criteria criteria = new Criteria(TorqueTurbineRolePeer.DATABASE_NAME);
 
-        return (List<T>)TorqueTurbineRolePeer.doSelect(criteria, con);
+        if ( (getCustomPeer())) {
+            try
+            {
+                return ((TorqueTurbinePeer<T>) getPeerInstance()).doSelect( 
criteria, con );
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            return (List<T>)TorqueTurbineRolePeer.doSelect(criteria, con);
+        }
     }
 
     /**
@@ -53,7 +70,18 @@ public class TorqueTurbineRoleManagerImp
     @SuppressWarnings("unchecked")
        protected <T extends Role> T doSelectById(Integer id, Connection con) 
throws NoRowsException, TooManyRowsException, TorqueException
     {
-        return (T) TorqueTurbineRolePeer.retrieveByPK(id, con);
+        if ( (getCustomPeer())) {
+            try
+            {
+                return ((TorqueTurbinePeer<T>) 
getPeerInstance()).retrieveByPK( id, con );
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            return  (T)  TorqueTurbineRolePeer.retrieveByPK(id, con);
+        }
     }
 
     /**
@@ -66,14 +94,42 @@ public class TorqueTurbineRoleManagerImp
         criteria.where(TorqueTurbineRolePeer.ROLE_NAME, name);
         criteria.setIgnoreCase(true);
         criteria.setSingleRecord(true);
-
-        List<TorqueTurbineRole> roles = 
TorqueTurbineRolePeer.doSelect(criteria, con);
+        
+        List<T> roles = null;
+        if ( (getCustomPeer())) {
+            try
+            {
+                roles = ((TorqueTurbinePeer<T>)getPeerInstance()).doSelect( 
criteria, con );
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            roles =  (List<T>) TorqueTurbineRolePeer.doSelect(criteria, con);
+        }
 
         if (roles.isEmpty())
         {
             throw new NoRowsException(name);
         }
 
-        return (T) roles.get(0);
+        return roles.get(0);
+    }
+    
+    public Peer getPeerInstance() throws DataBackendException {
+        return getPeerManager().getPeerInstance(getPeerClassName(), 
TorqueTurbinePeer.class, getClassName());
+    }
+    
+    /**
+     * @return Returns the persistenceHelper.
+     */
+    public PeerManager getPeerManager()
+    {
+        if (peerManager == null)
+        {
+            peerManager = (PeerManager) resolve(PeerManager.ROLE);
+        }
+        return peerManager;
     }
 }

Modified: 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineUserManagerImpl.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineUserManagerImpl.java?rev=1575232&r1=1575231&r2=1575232&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineUserManagerImpl.java
 (original)
+++ 
turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineUserManagerImpl.java
 Fri Mar  7 10:53:14 2014
@@ -21,21 +21,31 @@ import java.sql.Connection;
 import java.util.List;
 
 import org.apache.fulcrum.security.entity.User;
+import org.apache.fulcrum.security.model.turbine.TurbineUserManager;
 import org.apache.fulcrum.security.torque.TorqueAbstractUserManager;
-import org.apache.fulcrum.security.torque.om.TorqueTurbineUser;
 import org.apache.fulcrum.security.torque.om.TorqueTurbineUserPeer;
+import org.apache.fulcrum.security.torque.peer.Peer;
+import org.apache.fulcrum.security.torque.peer.PeerManagable;
+import org.apache.fulcrum.security.torque.peer.PeerManager;
+import org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer;
+import org.apache.fulcrum.security.util.DataBackendException;
+import org.apache.fulcrum.security.util.UnknownEntityException;
 import org.apache.torque.NoRowsException;
 import org.apache.torque.TooManyRowsException;
 import org.apache.torque.TorqueException;
 import org.apache.torque.criteria.Criteria;
 /**
  * This implementation persists to a database via Torque.
+ * 
  *
  * @author <a href="mailto:t...@apache.org";>Thomas Vandahl</a>
- * @version $Id:$
+ * @version $Id$
  */
-public class TorqueTurbineUserManagerImpl extends TorqueAbstractUserManager
+public class TorqueTurbineUserManagerImpl extends TorqueAbstractUserManager 
implements TurbineUserManager, PeerManagable
 {
+    PeerManager peerManager;
+    private static final String ANON = "anon";
+
     /**
      * @see 
org.apache.fulcrum.security.torque.TorqueAbstractUserManager#doSelectAllUsers(java.sql.Connection)
      */
@@ -43,8 +53,19 @@ public class TorqueTurbineUserManagerImp
        protected <T extends User> List<T> doSelectAllUsers(Connection con) 
throws TorqueException
     {
         Criteria criteria = new Criteria(TorqueTurbineUserPeer.DATABASE_NAME);
-
-        return (List<T>)TorqueTurbineUserPeer.doSelect(criteria, con);
+        
+        if ( (getCustomPeer())) {
+            try
+            {
+                return ((TorqueTurbinePeer<T>) getPeerInstance()).doSelect( 
criteria, con );
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            return (List<T>) TorqueTurbineUserPeer.doSelect(criteria, con);
+        }
     }
 
     /**
@@ -53,7 +74,18 @@ public class TorqueTurbineUserManagerImp
     @SuppressWarnings("unchecked")
        protected <T extends User> T doSelectById(Integer id, Connection con) 
throws NoRowsException, TooManyRowsException, TorqueException
     {
-        return (T) TorqueTurbineUserPeer.retrieveByPK(id, con);
+        if ( (getCustomPeer())) {
+            try
+            {
+                return ((TorqueTurbinePeer<T>) 
getPeerInstance()).retrieveByPK( id, con );
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            return  (T)  TorqueTurbineUserPeer.retrieveByPK(id, con);
+        }
     }
 
     /**
@@ -66,14 +98,84 @@ public class TorqueTurbineUserManagerImp
         criteria.where(TorqueTurbineUserPeer.LOGIN_NAME, name);
         criteria.setIgnoreCase(true);
         criteria.setSingleRecord(true);
+        
+        List<T> users = null;
+        if ( (getCustomPeer())) {
+            try
+            {
+                users = ((TorqueTurbinePeer<T>)getPeerInstance()).doSelect( 
criteria, con );
+            }
+            catch ( DataBackendException e )
+            {
+                throw new TorqueException( e );
+            }
+        } else {
+            users = (List<T>) TorqueTurbineUserPeer.doSelect(criteria, con);
+        }
 
-        List<TorqueTurbineUser> users = 
TorqueTurbineUserPeer.doSelect(criteria, con);
 
         if (users.isEmpty())
         {
             throw new NoRowsException(name);
         }
 
-        return (T) users.get(0);
+        return users.get(0);
+    }
+
+    /**
+     * Default implementation.
+     */
+    @Override
+    public <T extends User> T getAnonymousUser()
+        throws UnknownEntityException
+    {
+        try
+        {
+            T anonUser =  getUser( ANON );
+            // add more, if needed
+            return anonUser;
+        }
+        catch ( DataBackendException e )
+        {
+            throw new UnknownEntityException( "Failed to load anonymous 
user",e);
+        } 
+    }
+
+    /**
+     * Default implementation.
+     */
+    @Override
+    public boolean isAnonymousUser( User u )
+    {
+        try
+        {
+            User anon = getAnonymousUser();
+            if (u.equals( anon )) 
+                {
+                 return true;
+                }
+        }
+        catch ( Exception e )
+        {
+            getLogger().error( "Failed to check user:" + e.getMessage(),e);
+        }
+        return false;
+    }
+    
+    public Peer getPeerInstance() throws DataBackendException {
+        return getPeerManager().getPeerInstance(getPeerClassName(), 
TorqueTurbinePeer.class, getClassName());
+    }
+    
+    /**
+     * @return Returns the persistenceHelper.
+     */
+    @Override
+    public PeerManager getPeerManager()
+    {
+        if (peerManager == null)
+        {
+            peerManager = (PeerManager) resolve(PeerManager.ROLE);
+        }
+        return peerManager;
     }
 }

Modified: 
turbine/fulcrum/trunk/security/torque/src/test/TurbineTorqueRoleConfig.xml
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/test/TurbineTorqueRoleConfig.xml?rev=1575232&r1=1575231&r2=1575232&view=diff
==============================================================================
--- turbine/fulcrum/trunk/security/torque/src/test/TurbineTorqueRoleConfig.xml 
(original)
+++ turbine/fulcrum/trunk/security/torque/src/test/TurbineTorqueRoleConfig.xml 
Fri Mar  7 10:53:14 2014
@@ -57,5 +57,11 @@
         name="org.apache.fulcrum.security.model.ACLFactory"
         shorthand="aclFactory"
         
default-class="org.apache.fulcrum.security.model.turbine.TurbineACLFactory"/>
+    <!--  if you watn provide your own custom peer classes: -->
+   <role
+        name="org.apache.fulcrum.security.torque.peer.PeerManager"
+        shorthand="persistenceHelper"
+        
default-class="org.apache.fulcrum.security.torque.peer.PeerManagerDefaultImpl"/>
+
 </role-list>
 

Added: 
turbine/fulcrum/trunk/security/torque/src/test/TurbineTorqueWithPeersComponentConfig.xml
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/test/TurbineTorqueWithPeersComponentConfig.xml?rev=1575232&view=auto
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/test/TurbineTorqueWithPeersComponentConfig.xml
 (added)
+++ 
turbine/fulcrum/trunk/security/torque/src/test/TurbineTorqueWithPeersComponentConfig.xml
 Fri Mar  7 10:53:14 2014
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<my-system>
+    <securityService/>
+    <authenticator/>
+    <modelManager/>
+    <aclFactory/>
+
+       <!--  
+       Requires peerClassName classes implement the TorqueTurbinePeer 
interface (extension of interface org.apache.fulcrum.security.torque.peer).
+       Check the ClassCastExceptions. 
+       -->
+    <userManager>
+        
<className>org.apache.fulcrum.security.torque.om.TorqueTurbineUser</className>
+        
<peerClassName>org.apache.fulcrum.security.torque.om.TorqueTurbineUserPeerImpl</peerClassName>
+    </userManager>
+    <groupManager>
+        
<className>org.apache.fulcrum.security.torque.om.TorqueTurbineGroup</className>
+        
<peerClassName>org.apache.fulcrum.security.torque.om.TorqueTurbineGroupPeerImpl</peerClassName>
+    </groupManager>
+    <roleManager>
+        
<className>org.apache.fulcrum.security.torque.om.TorqueTurbineRole</className>
+        
<peerClassName>org.apache.fulcrum.security.torque.om.TorqueTurbineRolePeerImpl</peerClassName>
+    </roleManager>
+    <permissionManager>
+        
<className>org.apache.fulcrum.security.torque.om.TorqueTurbinePermission</className>
+        
<peerClassName>org.apache.fulcrum.security.torque.om.TorqueTurbinePermissionPeerImpl</peerClassName>
+    </permissionManager>
+    
+    <peerManager/>
+    
+     <torqueService>
+        <configfile>/src/test/Torque.properties</configfile>
+    </torqueService>
+</my-system>

Propchange: 
turbine/fulcrum/trunk/security/torque/src/test/TurbineTorqueWithPeersComponentConfig.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
turbine/fulcrum/trunk/security/torque/src/test/org/apache/fulcrum/security/torque/turbine/TorquePeerTurbineModelManagerTest.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/test/org/apache/fulcrum/security/torque/turbine/TorquePeerTurbineModelManagerTest.java?rev=1575232&view=auto
==============================================================================
--- 
turbine/fulcrum/trunk/security/torque/src/test/org/apache/fulcrum/security/torque/turbine/TorquePeerTurbineModelManagerTest.java
 (added)
+++ 
turbine/fulcrum/trunk/security/torque/src/test/org/apache/fulcrum/security/torque/turbine/TorquePeerTurbineModelManagerTest.java
 Fri Mar  7 10:53:14 2014
@@ -0,0 +1,136 @@
+package org.apache.fulcrum.security.torque.turbine;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.fulcrum.security.SecurityService;
+import 
org.apache.fulcrum.security.model.turbine.test.AbstractTurbineModelManagerTest;
+import org.apache.fulcrum.security.spi.AbstractEntityManager;
+import org.apache.fulcrum.security.torque.HsqlDB;
+import org.apache.fulcrum.security.torque.om.TorqueTurbineGroupPeer;
+import org.apache.fulcrum.security.torque.om.TorqueTurbinePermissionPeer;
+import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePeer;
+import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePermissionPeer;
+import org.apache.fulcrum.security.torque.om.TorqueTurbineUserGroupRolePeer;
+import org.apache.fulcrum.security.torque.om.TorqueTurbineUserPeer;
+import org.apache.fulcrum.security.torque.peer.PeerManagable;
+import org.apache.torque.TorqueException;
+import org.apache.torque.criteria.Criteria;
+
+/**
+ * @author <a href="mailto:t...@apache.org";>Thomas Vandahl</a>
+ * @author <a href="j...@byteaction.de">J&#252;rgen Hoffmann</a>
+ * @version $Id$
+ */
+public class TorquePeerTurbineModelManagerTest
+    extends AbstractTurbineModelManagerTest
+{
+    protected static HsqlDB hsqlDB = null;
+
+    public void setUp() throws Exception
+    {
+
+        try
+        {
+            hsqlDB = new HsqlDB("jdbc:hsqldb:.", 
"src/test/fulcrum-turbine-schema.sql");
+            hsqlDB.addSQL("src/test/id-table-schema.sql");
+            hsqlDB.addSQL("src/test/fulcrum-turbine-schema-idtable-init.sql");
+
+            this.setRoleFileName("src/test/TurbineTorqueRoleConfig.xml");      
      
+            
+            
this.setConfigurationFileName("src/test/TurbineTorqueWithPeersComponentConfig.xml");
+            
+            // The successful Test requires that the PeerImpl classes (in 
configuration file) implement the interface TorqueTurbinePeer,
+            // cft. ClassCastException messages.
+            // (interfaces could not yet automatically generated into Peers 
with Torque, cft JIRA Issue TORQUE-309).
+            
+            securityService = (SecurityService) lookup(SecurityService.ROLE);
+            super.setUp();
+        }
+        catch (Exception e)
+        {
+            fail(e.toString());
+        }
+
+    }
+    
+    public void testCustomPeerSet() {
+        if (roleManager instanceof AbstractEntityManager) {
+            assertTrue( "As a custom Peer for RoleManager should be tested, a 
peerClassName element should be set in the configuration file for 
roleManager.", ((AbstractEntityManager)roleManager).getCustomPeer() == true);
+        }
+        if (roleManager instanceof PeerManagable) {
+            assertNotNull(((PeerManagable)roleManager).getPeerManager());
+        }
+        if (userManager instanceof PeerManagable) {
+            assertNotNull(((PeerManagable)userManager).getPeerManager());
+        }
+        if (groupManager instanceof PeerManagable) {
+            assertNotNull(((PeerManagable)groupManager).getPeerManager());
+        }
+        if (permissionManager instanceof PeerManagable) {
+            assertNotNull(((PeerManagable)permissionManager).getPeerManager());
+        }
+    }
+
+    public void tearDown()
+    {
+        // cleanup tables
+        try
+        {
+            Criteria criteria = new Criteria();
+            criteria.where(TorqueTurbineUserGroupRolePeer.USER_ID, 0, 
Criteria.GREATER_THAN);
+            TorqueTurbineUserGroupRolePeer.doDelete(criteria);
+
+            criteria = new Criteria();
+            criteria.where(TorqueTurbineRolePermissionPeer.ROLE_ID, 0, 
Criteria.GREATER_THAN);
+            TorqueTurbineRolePermissionPeer.doDelete(criteria);
+
+            criteria = new Criteria();
+            criteria.where(TorqueTurbineUserPeer.USER_ID, 0, 
Criteria.GREATER_THAN);
+            TorqueTurbineUserPeer.doDelete(criteria);
+
+            criteria = new Criteria();
+            criteria.where(TorqueTurbineGroupPeer.GROUP_ID, 0, 
Criteria.GREATER_THAN);
+            TorqueTurbineGroupPeer.doDelete(criteria);
+
+            criteria = new Criteria();
+            criteria.where(TorqueTurbineRolePeer.ROLE_ID, 0, 
Criteria.GREATER_THAN);
+            TorqueTurbineRolePeer.doDelete(criteria);
+
+            criteria = new Criteria();
+            criteria.where(TorqueTurbinePermissionPeer.PERMISSION_ID, 0, 
Criteria.GREATER_THAN);
+            TorqueTurbinePermissionPeer.doDelete(criteria);
+        }
+        catch (TorqueException e)
+        {
+            fail(e.toString());
+        }
+
+        modelManager = null;
+        securityService = null;
+    }
+
+    /**
+        * Constructor for TorqueTurbineModelManagerTest.
+        * @param arg0
+        */
+    public TorquePeerTurbineModelManagerTest(String arg0)
+    {
+        super(arg0);
+    }
+}

Propchange: 
turbine/fulcrum/trunk/security/torque/src/test/org/apache/fulcrum/security/torque/turbine/TorquePeerTurbineModelManagerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to