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<Type>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ü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