Hi Georg,

I went back to fulcrum/security revision 1849110 and turbine in SVN
builds fine.  However, this set of updates causes failures in some of
the turbine unit tests with the security service. I haven't had time to
dig further, but thought you might like to know if you have already
addressed it and just not checked in the code yet :-)

If I get some time tomorrow, I can take a look at it further, but I
won't be able to before then.


Thanks!
Jeff




On 1/11/19 5:09 AM, [email protected] wrote:
> Author: gk
> Date: Fri Jan 11 10:09:52 2019
> New Revision: 1851024
>
> URL: http://svn.apache.org/viewvc?rev=1851024&view=rev
> Log:
> - Use DatabackendException as a wrapper for TorqueException to get internal 
> (secondary) database errors stack more transparently. Othwerwise 
> TorqueTurbineUserManagerImpl may not get the error stack for attached 
> objects. 
>
> Modified:
>     
> 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/basic/TorqueAbstractBasicGroup.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/basic/TorqueAbstractBasicUser.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicGroup.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicPermission.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicRole.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicUser.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/security/TorqueAbstractSecurityEntity.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/security/turbine/TorqueAbstractTurbineTurbineSecurityEntityDefault.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineGroup.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbinePermission.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineRole.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineUser.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbineGroup.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbinePermission.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbineRole.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbineUser.java
>     
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/TorqueTurbineUserManagerImpl.java
>
> 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=1851024&r1=1851023&r2=1851024&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 Jan 11 10:09:52 2019
> @@ -198,6 +198,8 @@ public abstract class TorqueAbstractUser
>  
>       /**
>        * Retrieve a user from persistent storage using username as the key.
> +      * 
> +      * Additionally retrieves all attached objects from {@link 
> TorqueAbstractSecurityEntity#retrieveAttachedObjects(Connection, Boolean)}
>        *
>        * @param userName the name of the user.
>        * @return an User object.
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/basic/TorqueAbstractBasicGroup.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/basic/TorqueAbstractBasicGroup.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/basic/TorqueAbstractBasicGroup.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/basic/TorqueAbstractBasicGroup.java
>  Fri Jan 11 10:09:52 2019
> @@ -27,6 +27,7 @@ import org.apache.fulcrum.security.torqu
>  import org.apache.fulcrum.security.torque.om.TorqueBasicUserGroup;
>  import org.apache.fulcrum.security.torque.om.TorqueBasicUserGroupPeer;
>  import 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity;
> +import org.apache.fulcrum.security.util.DataBackendException;
>  import org.apache.fulcrum.security.util.UserSet;
>  import org.apache.torque.TorqueException;
>  import org.apache.torque.criteria.Criteria;
> @@ -133,7 +134,7 @@ public abstract class TorqueAbstractBasi
>      
>      @Override
>      public void retrieveAttachedObjects( Connection con )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          retrieveAttachedObjects( con, false );
>      }
> @@ -143,16 +144,20 @@ public abstract class TorqueAbstractBasi
>       */
>      @Override
>      public void retrieveAttachedObjects( Connection con, Boolean lazy )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          this.userSet = new UserSet();
>  
> -        List<TorqueBasicUserGroup> usergroups =
> -             getTorqueBasicUserGroupsJoinTorqueBasicUser(new Criteria(), 
> con);
> -
> -        for (TorqueBasicUserGroup tbug : usergroups)
> -        {
> -            userSet.add(tbug.getTorqueBasicUser());
> +        try {
> +            List<TorqueBasicUserGroup> usergroups =
> +             getTorqueBasicUserGroupsJoinTorqueBasicUser(new Criteria(), 
> con);
> +    
> +            for (TorqueBasicUserGroup tbug : usergroups)
> +            {
> +                userSet.add(tbug.getTorqueBasicUser());
> +            }
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
>          }
>      }
>  
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/basic/TorqueAbstractBasicUser.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/basic/TorqueAbstractBasicUser.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/basic/TorqueAbstractBasicUser.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/basic/TorqueAbstractBasicUser.java
>  Fri Jan 11 10:09:52 2019
> @@ -27,6 +27,7 @@ import org.apache.fulcrum.security.torqu
>  import org.apache.fulcrum.security.torque.om.TorqueBasicUserGroupPeer;
>  import org.apache.fulcrum.security.torque.om.TorqueBasicUserPeer;
>  import 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity;
> +import org.apache.fulcrum.security.util.DataBackendException;
>  import org.apache.fulcrum.security.util.GroupSet;
>  import org.apache.torque.TorqueException;
>  import org.apache.torque.criteria.Criteria;
> @@ -134,7 +135,7 @@ public abstract class TorqueAbstractBasi
>       */
>      @Override
>      public void retrieveAttachedObjects( Connection con )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          retrieveAttachedObjects( con, false );
>      }
> @@ -144,15 +145,19 @@ public abstract class TorqueAbstractBasi
>       */
>      @Override
>      public void retrieveAttachedObjects( Connection con, Boolean lazy )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          this.groupSet = new GroupSet();
>  
> -        List<TorqueBasicUserGroup> usergroups = 
> getTorqueBasicUserGroupsJoinTorqueBasicGroup(new Criteria(), con);
> -
> -        for (TorqueBasicUserGroup tbug : usergroups)
> -        {
> -            groupSet.add(tbug.getTorqueBasicGroup());
> +        try {
> +            List<TorqueBasicUserGroup> usergroups = 
> getTorqueBasicUserGroupsJoinTorqueBasicGroup(new Criteria(), con);
> +    
> +            for (TorqueBasicUserGroup tbug : usergroups)
> +            {
> +                groupSet.add(tbug.getTorqueBasicGroup());
> +            }
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
>          }
>      }
>  
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicGroup.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicGroup.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicGroup.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicGroup.java
>  Fri Jan 11 10:09:52 2019
> @@ -30,6 +30,7 @@ import org.apache.fulcrum.security.torqu
>  import org.apache.fulcrum.security.torque.om.TorqueDynamicUserGroup;
>  import org.apache.fulcrum.security.torque.om.TorqueDynamicUserGroupPeer;
>  import 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity;
> +import org.apache.fulcrum.security.util.DataBackendException;
>  import org.apache.fulcrum.security.util.RoleSet;
>  import org.apache.fulcrum.security.util.UserSet;
>  import org.apache.torque.TorqueException;
> @@ -234,7 +235,7 @@ public abstract class TorqueAbstractDyna
>       */
>      @Override
>      public void retrieveAttachedObjects( Connection con )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          retrieveAttachedObjects( con, false );
>      }
> @@ -244,24 +245,30 @@ public abstract class TorqueAbstractDyna
>       */
>      @Override
>      public void retrieveAttachedObjects( Connection con, Boolean lazy )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          this.userSet = new UserSet<User>();
> +        
> +        try {
>  
> -        List<TorqueDynamicUserGroup> usergroups = 
> getTorqueDynamicUserGroupsJoinTorqueDynamicUser(new Criteria(), con);
> -
> -        for (TorqueDynamicUserGroup tdug : usergroups)
> -        {
> -            userSet.add(tdug.getTorqueDynamicUser());
> -        }
> -
> -        this.roleSet = new RoleSet();
> -
> -        List<TorqueDynamicGroupRole> grouproles = 
> getTorqueDynamicGroupRolesJoinTorqueDynamicRole(new Criteria(), con);
> -
> -        for (TorqueDynamicGroupRole tdgr : grouproles)
> -        {
> -            roleSet.add(tdgr.getTorqueDynamicRole());
> +            List<TorqueDynamicUserGroup> usergroups = 
> getTorqueDynamicUserGroupsJoinTorqueDynamicUser(new Criteria(), con);
> +    
> +            for (TorqueDynamicUserGroup tdug : usergroups)
> +            {
> +                userSet.add(tdug.getTorqueDynamicUser());
> +            }
> +    
> +            this.roleSet = new RoleSet();
> +    
> +            List<TorqueDynamicGroupRole> grouproles = 
> getTorqueDynamicGroupRolesJoinTorqueDynamicRole(new Criteria(), con);
> +    
> +            for (TorqueDynamicGroupRole tdgr : grouproles)
> +            {
> +                roleSet.add(tdgr.getTorqueDynamicRole());
> +            }
> +        
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
>          }
>      }
>  
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicPermission.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicPermission.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicPermission.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicPermission.java
>  Fri Jan 11 10:09:52 2019
> @@ -27,6 +27,7 @@ import org.apache.fulcrum.security.torqu
>  import org.apache.fulcrum.security.torque.om.TorqueDynamicRolePermission;
>  import org.apache.fulcrum.security.torque.om.TorqueDynamicRolePermissionPeer;
>  import 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity;
> +import org.apache.fulcrum.security.util.DataBackendException;
>  import org.apache.fulcrum.security.util.RoleSet;
>  import org.apache.torque.TorqueException;
>  import org.apache.torque.criteria.Criteria;
> @@ -139,7 +140,7 @@ public abstract class TorqueAbstractDyna
>      
>      @Override
>      public void retrieveAttachedObjects( Connection con )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          retrieveAttachedObjects( con, false );
>      }
> @@ -149,15 +150,19 @@ public abstract class TorqueAbstractDyna
>       */
>      @Override
>      public void retrieveAttachedObjects( Connection con, Boolean lazy )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          this.roleSet = new RoleSet();
>  
> -        List<TorqueDynamicRolePermission> rolepermissions = 
> getTorqueDynamicRolePermissionsJoinTorqueDynamicRole(new Criteria(), con);
> -
> -        for (TorqueDynamicRolePermission tdrp : rolepermissions)
> -        {
> -            roleSet.add(tdrp.getTorqueDynamicRole());
> +        try {
> +            List<TorqueDynamicRolePermission> rolepermissions = 
> getTorqueDynamicRolePermissionsJoinTorqueDynamicRole(new Criteria(), con);
> +    
> +            for (TorqueDynamicRolePermission tdrp : rolepermissions)
> +            {
> +                roleSet.add(tdrp.getTorqueDynamicRole());
> +            }
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
>          }
>      }
>  
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicRole.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicRole.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicRole.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicRole.java
>  Fri Jan 11 10:09:52 2019
> @@ -31,6 +31,7 @@ import org.apache.fulcrum.security.torqu
>  import org.apache.fulcrum.security.torque.om.TorqueDynamicRolePermission;
>  import org.apache.fulcrum.security.torque.om.TorqueDynamicRolePermissionPeer;
>  import 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity;
> +import org.apache.fulcrum.security.util.DataBackendException;
>  import org.apache.fulcrum.security.util.GroupSet;
>  import org.apache.fulcrum.security.util.PermissionSet;
>  import org.apache.torque.TorqueException;
> @@ -232,7 +233,7 @@ public abstract class TorqueAbstractDyna
>      
>      @Override
>      public void retrieveAttachedObjects( Connection con )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          retrieveAttachedObjects( con, false );
>      }
> @@ -242,24 +243,28 @@ public abstract class TorqueAbstractDyna
>       */
>      @Override
>      public void retrieveAttachedObjects( Connection con, Boolean lazy )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          this.permissionSet = new PermissionSet();
> -
> -        List<TorqueDynamicRolePermission> rolepermissions = 
> getTorqueDynamicRolePermissionsJoinTorqueDynamicPermission(new Criteria(), 
> con);
> -
> -        for (TorqueDynamicRolePermission tdrp : rolepermissions)
> -        {
> -            permissionSet.add(tdrp.getTorqueDynamicPermission());
> -        }
> -
> -        this.groupSet = new GroupSet();
> -
> -        List<TorqueDynamicGroupRole> grouproles = 
> getTorqueDynamicGroupRolesJoinTorqueDynamicGroup(new Criteria(), con);
> -
> -        for (TorqueDynamicGroupRole tdgr : grouproles)
> -        {
> -            groupSet.add(tdgr.getTorqueDynamicGroup());
> +        
> +        try {
> +            List<TorqueDynamicRolePermission> rolepermissions = 
> getTorqueDynamicRolePermissionsJoinTorqueDynamicPermission(new Criteria(), 
> con);
> +    
> +            for (TorqueDynamicRolePermission tdrp : rolepermissions)
> +            {
> +                permissionSet.add(tdrp.getTorqueDynamicPermission());
> +            }
> +    
> +            this.groupSet = new GroupSet();
> +    
> +            List<TorqueDynamicGroupRole> grouproles = 
> getTorqueDynamicGroupRolesJoinTorqueDynamicGroup(new Criteria(), con);
> +    
> +            for (TorqueDynamicGroupRole tdgr : grouproles)
> +            {
> +                groupSet.add(tdgr.getTorqueDynamicGroup());
> +            }
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
>          }
>      }
>  
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicUser.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicUser.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicUser.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/dynamic/TorqueAbstractDynamicUser.java
>  Fri Jan 11 10:09:52 2019
> @@ -1,361 +1,369 @@
> -package org.apache.fulcrum.security.torque.dynamic;
> -
> -/*
> - * 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 java.sql.Connection;
> -import java.util.List;
> -import java.util.Set;
> -
> -import org.apache.fulcrum.security.entity.Group;
> -import org.apache.fulcrum.security.entity.User;
> -import org.apache.fulcrum.security.model.dynamic.entity.DynamicUser;
> -import org.apache.fulcrum.security.torque.om.TorqueDynamicUserDelegates;
> -import org.apache.fulcrum.security.torque.om.TorqueDynamicUserDelegatesPeer;
> -import org.apache.fulcrum.security.torque.om.TorqueDynamicUserGroup;
> -import org.apache.fulcrum.security.torque.om.TorqueDynamicUserGroupPeer;
> -import org.apache.fulcrum.security.torque.om.TorqueDynamicUserPeer;
> -import 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity;
> -import org.apache.fulcrum.security.util.GroupSet;
> -import org.apache.fulcrum.security.util.UserSet;
> -import org.apache.torque.TorqueException;
> -import org.apache.torque.criteria.Criteria;
> -import org.apache.torque.om.SimpleKey;
> -
> -/**
> - * This abstract class provides the SecurityInterface to the managers.
> - *
> - * @author <a href="mailto:[email protected]";>Thomas Vandahl</a>
> - * @version $Id:$
> - */
> -public abstract class TorqueAbstractDynamicUser extends 
> TorqueAbstractSecurityEntity implements DynamicUser {
> -     /** Serial version */
> -     private static final long serialVersionUID = -7307211992287876455L;
> -
> -     /** a cache of group objects */
> -     private Set<Group> groupSet = null;
> -
> -     /** a cache of delegator (user) objects */
> -     private Set<User> delegators = null;
> -
> -     /** a cache of delegatee(user) objects */
> -     private Set<User> delegatees = null;
> -
> -     /**
> -      * Forward reference to generated code
> -      *
> -      * Get a list of association objects, pre-populated with their
> -      * TorqueDynamicGroup objects.
> -      *
> -      * @param criteria Criteria to define the selection of records
> -      * @param con      a database connection
> -      * @throws TorqueException if any database error occurs
> -      *
> -      * @return a list of User/Group relations
> -      */
> -     protected List<TorqueDynamicUserGroup> 
> getTorqueDynamicUserGroupsJoinTorqueDynamicGroup(Criteria criteria,
> -                     Connection con) throws TorqueException {
> -             criteria.and(TorqueDynamicUserGroupPeer.USER_ID, getEntityId());
> -             return 
> TorqueDynamicUserGroupPeer.doSelectJoinTorqueDynamicGroup(criteria, con);
> -     }
> -
> -     /**
> -      * Forward reference to generated code
> -      *
> -      * Get a list of delegator association objects, pre-populated with their
> -      * TorqueDynamicUserDelegates objects.
> -      *
> -      * @param criteria Criteria to define the selection of records
> -      * @param con      a database connection
> -      * @throws TorqueException if any database error occurs
> -      *
> -      * @return a list of User/Delegator relations
> -      */
> -     protected List<TorqueDynamicUserDelegates> 
> getTorqueDynamicUserDelegatessRelatedByDelegateeUserIdJoinTorqueDynamicUserRelatedByDelegatorUserId(
> -                     Criteria criteria, Connection con) throws 
> TorqueException {
> -             criteria.and(TorqueDynamicUserDelegatesPeer.DELEGATEE_USER_ID, 
> getEntityId());
> -             return 
> TorqueDynamicUserDelegatesPeer.doSelectJoinTorqueDynamicUserRelatedByDelegatorUserId(criteria,
>  con);
> -     }
> -
> -     /**
> -      * Forward reference to generated code
> -      *
> -      * Get a list of delegatee association objects, pre-populated with their
> -      * TorqueDynamicUserDelegates objects.
> -      *
> -      * @param criteria Criteria to define the selection of records
> -      * @param con      a database connection
> -      * @throws TorqueException if any database error occurs
> -      *
> -      * @return a list of User/Delegator relations
> -      */
> -     protected List<TorqueDynamicUserDelegates> 
> getTorqueDynamicUserDelegatessRelatedByDelegatorUserIdJoinTorqueDynamicUserRelatedByDelegateeUserId(
> -                     Criteria criteria, Connection con) throws 
> TorqueException {
> -             criteria.and(TorqueDynamicUserDelegatesPeer.DELEGATOR_USER_ID, 
> getEntityId());
> -             return 
> TorqueDynamicUserDelegatesPeer.doSelectJoinTorqueDynamicUserRelatedByDelegateeUserId(criteria,
>  con);
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#addGroup(org.apache.
> -      * fulcrum.security.entity.Group)
> -      */
> -     public void addGroup(Group group) {
> -             getGroups().add(group);
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#getGroups()
> -      */
> -     public GroupSet getGroups() {
> -             if (groupSet == null) {
> -                     groupSet = new GroupSet();
> -             } else if (!(groupSet instanceof GroupSet)) {
> -                     groupSet = new GroupSet(groupSet);
> -             }
> -
> -             return (GroupSet) groupSet;
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#getGroupsAsSet()
> -      */
> -     @SuppressWarnings("unchecked")
> -     public <T extends Group> Set<T> getGroupsAsSet() {
> -             return (Set<T>) groupSet;
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#removeGroup(org.
> -      * apache.fulcrum.security.entity.Group)
> -      */
> -     public void removeGroup(Group group) {
> -             getGroups().remove(group);
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#setGroups(org.apache
> -      * .fulcrum.security.util.GroupSet)
> -      */
> -     public void setGroups(GroupSet groups) {
> -             if (groups != null) {
> -                     this.groupSet = groups;
> -             } else {
> -                     this.groupSet = new GroupSet();
> -             }
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#setGroupsAsSet(java.
> -      * util.Set)
> -      */
> -     public <T extends Group> void setGroupsAsSet(Set<T> groups) {
> -             setGroups(new GroupSet(groups));
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.dynamic.entity.DynamicUser#getDelegatees()
> -      */
> -     @SuppressWarnings("unchecked")
> -     public <T extends User> Set<T> getDelegatees() {
> -             if (delegatees == null) {
> -                     delegatees = new UserSet<T>();
> -             }
> -
> -             return (Set<T>) delegatees;
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.dynamic.entity.DynamicUser#getDelegators()
> -      */
> -     @SuppressWarnings("unchecked")
> -     public <T extends User> Set<T> getDelegators() {
> -             if (delegators == null) {
> -                     delegators = new UserSet<T>();
> -             }
> -
> -             return (Set<T>) delegators;
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.dynamic.entity.DynamicUser#setDelegatees(
> -      * java.util.Set)
> -      */
> -     public <T extends User> void setDelegatees(Set<T> delegatees) {
> -             if (delegatees != null) {
> -                     this.delegatees = new UserSet<T>(delegatees);
> -             } else {
> -                     this.delegatees = new UserSet<T>();
> -             }
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.dynamic.entity.DynamicUser#setDelegators(
> -      * java.util.Set)
> -      */
> -     public <T extends User> void setDelegators(Set<T> delegates) {
> -             if (delegators != null) {
> -                     this.delegators = new UserSet<T>(delegates);
> -             } else {
> -                     this.delegators = new UserSet<T>();
> -             }
> -     }
> -
> -     /**
> -      * @return the database name
> -      */
> -     public String getDatabaseName() {
> -             return TorqueDynamicUserPeer.DATABASE_NAME;
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#
> -      * retrieveAttachedObjects(java.sql.Connection)
> -      */
> -     @Override
> -     public void retrieveAttachedObjects(Connection con) throws 
> TorqueException {
> -             retrieveAttachedObjects(con, false);
> -     }
> -
> -     /**
> -      * @see 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#retrieveAttachedObjects(Connection,
> -      *      Boolean)
> -      */
> -     @Override
> -     public void retrieveAttachedObjects(Connection con, Boolean lazy) 
> throws TorqueException {
> -             this.groupSet = new GroupSet();
> -
> -             List<TorqueDynamicUserGroup> usergroups = 
> getTorqueDynamicUserGroupsJoinTorqueDynamicGroup(new Criteria(), con);
> -
> -             for (TorqueDynamicUserGroup tdug : usergroups) {
> -                     groupSet.add(tdug.getTorqueDynamicGroup());
> -             }
> -
> -             this.delegators = new UserSet<User>();
> -
> -             List<TorqueDynamicUserDelegates> delegatorlist = 
> getTorqueDynamicUserDelegatessRelatedByDelegateeUserIdJoinTorqueDynamicUserRelatedByDelegatorUserId(
> -                             new Criteria(), con);
> -
> -             for (TorqueDynamicUserDelegates tdud : delegatorlist) {
> -                     
> delegators.add(tdud.getTorqueDynamicUserRelatedByDelegatorUserId());
> -             }
> -
> -             this.delegatees = new UserSet<User>();
> -
> -             List<TorqueDynamicUserDelegates> delegateelist = 
> getTorqueDynamicUserDelegatessRelatedByDelegatorUserIdJoinTorqueDynamicUserRelatedByDelegateeUserId(
> -                             new Criteria(), con);
> -
> -             for (TorqueDynamicUserDelegates tdud : delegateelist) {
> -                     
> delegatees.add(tdud.getTorqueDynamicUserRelatedByDelegateeUserId());
> -             }
> -     }
> -
> -     /**
> -      * @see 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#update(java.sql.Connection)
> -      */
> -     public void update(Connection con) throws TorqueException {
> -             if (groupSet != null) {
> -                     Criteria criteria = new Criteria();
> -
> -                     /* remove old entries */
> -                     criteria.where(TorqueDynamicUserGroupPeer.USER_ID, 
> getEntityId());
> -                     TorqueDynamicUserGroupPeer.doDelete(criteria, con);
> -
> -                     for (Group g : groupSet) {
> -                             TorqueDynamicUserGroup ug = new 
> TorqueDynamicUserGroup();
> -                             ug.setUserId(getEntityId());
> -                             ug.setGroupId((Integer) g.getId());
> -                             ug.save(con);
> -                     }
> -             }
> -
> -             if (delegators != null) {
> -                     Criteria criteria = new Criteria();
> -
> -                     /* remove old entries */
> -                     
> criteria.where(TorqueDynamicUserDelegatesPeer.DELEGATEE_USER_ID, 
> getEntityId());
> -                     TorqueDynamicUserDelegatesPeer.doDelete(criteria, con);
> -
> -                     for (User u : delegators) {
> -                             TorqueDynamicUserDelegates ud = new 
> TorqueDynamicUserDelegates();
> -                             ud.setDelegateeUserId(getEntityId());
> -                             ud.setDelegatorUserId((Integer) u.getId());
> -                             ud.save(con);
> -                     }
> -             }
> -
> -             if (delegatees != null) {
> -                     Criteria criteria = new Criteria();
> -
> -                     /* remove old entries */
> -                     
> criteria.where(TorqueDynamicUserDelegatesPeer.DELEGATOR_USER_ID, 
> getEntityId());
> -                     TorqueDynamicUserDelegatesPeer.doDelete(criteria, con);
> -
> -                     for (User u : delegatees) {
> -                             TorqueDynamicUserDelegates ud = new 
> TorqueDynamicUserDelegates();
> -                             ud.setDelegatorUserId(getEntityId());
> -                             ud.setDelegateeUserId((Integer) u.getId());
> -                             ud.save(con);
> -                     }
> -             }
> -
> -             try {
> -                     save(con);
> -             } catch (Exception e) {
> -                     throw new TorqueException(e);
> -             }
> -     }
> -
> -     /**
> -      * @see 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#delete()
> -      */
> -     public void delete() throws TorqueException {
> -             TorqueDynamicUserPeer.doDelete(SimpleKey.keyFor(getEntityId()));
> -     }
> -}
> +package org.apache.fulcrum.security.torque.dynamic;
> +
> +/*
> + * 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 java.sql.Connection;
> +import java.util.List;
> +import java.util.Set;
> +
> +import org.apache.fulcrum.security.entity.Group;
> +import org.apache.fulcrum.security.entity.User;
> +import org.apache.fulcrum.security.model.dynamic.entity.DynamicUser;
> +import org.apache.fulcrum.security.torque.om.TorqueDynamicUserDelegates;
> +import org.apache.fulcrum.security.torque.om.TorqueDynamicUserDelegatesPeer;
> +import org.apache.fulcrum.security.torque.om.TorqueDynamicUserGroup;
> +import org.apache.fulcrum.security.torque.om.TorqueDynamicUserGroupPeer;
> +import org.apache.fulcrum.security.torque.om.TorqueDynamicUserPeer;
> +import 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity;
> +import org.apache.fulcrum.security.util.DataBackendException;
> +import org.apache.fulcrum.security.util.GroupSet;
> +import org.apache.fulcrum.security.util.UserSet;
> +import org.apache.torque.TorqueException;
> +import org.apache.torque.criteria.Criteria;
> +import org.apache.torque.om.SimpleKey;
> +
> +/**
> + * This abstract class provides the SecurityInterface to the managers.
> + *
> + * @author <a href="mailto:[email protected]";>Thomas Vandahl</a>
> + * @version $Id:$
> + */
> +public abstract class TorqueAbstractDynamicUser extends 
> TorqueAbstractSecurityEntity implements DynamicUser {
> +    /** Serial version */
> +    private static final long serialVersionUID = -7307211992287876455L;
> +
> +    /** a cache of group objects */
> +    private Set<Group> groupSet = null;
> +
> +    /** a cache of delegator (user) objects */
> +    private Set<User> delegators = null;
> +
> +    /** a cache of delegatee(user) objects */
> +    private Set<User> delegatees = null;
> +
> +    /**
> +     * Forward reference to generated code
> +     *
> +     * Get a list of association objects, pre-populated with their
> +     * TorqueDynamicGroup objects.
> +     *
> +     * @param criteria Criteria to define the selection of records
> +     * @param con      a database connection
> +     * @throws TorqueException if any database error occurs
> +     *
> +     * @return a list of User/Group relations
> +     */
> +    protected List<TorqueDynamicUserGroup> 
> getTorqueDynamicUserGroupsJoinTorqueDynamicGroup(Criteria criteria,
> +            Connection con) throws TorqueException {
> +        criteria.and(TorqueDynamicUserGroupPeer.USER_ID, getEntityId());
> +        return 
> TorqueDynamicUserGroupPeer.doSelectJoinTorqueDynamicGroup(criteria, con);
> +    }
> +
> +    /**
> +     * Forward reference to generated code
> +     *
> +     * Get a list of delegator association objects, pre-populated with their
> +     * TorqueDynamicUserDelegates objects.
> +     *
> +     * @param criteria Criteria to define the selection of records
> +     * @param con      a database connection
> +     * @throws TorqueException if any database error occurs
> +     *
> +     * @return a list of User/Delegator relations
> +     */
> +    protected List<TorqueDynamicUserDelegates> 
> getTorqueDynamicUserDelegatessRelatedByDelegateeUserIdJoinTorqueDynamicUserRelatedByDelegatorUserId(
> +            Criteria criteria, Connection con) throws TorqueException {
> +        criteria.and(TorqueDynamicUserDelegatesPeer.DELEGATEE_USER_ID, 
> getEntityId());
> +        return 
> TorqueDynamicUserDelegatesPeer.doSelectJoinTorqueDynamicUserRelatedByDelegatorUserId(criteria,
>  con);
> +    }
> +
> +    /**
> +     * Forward reference to generated code
> +     *
> +     * Get a list of delegatee association objects, pre-populated with their
> +     * TorqueDynamicUserDelegates objects.
> +     *
> +     * @param criteria Criteria to define the selection of records
> +     * @param con      a database connection
> +     * @throws TorqueException if any database error occurs
> +     *
> +     * @return a list of User/Delegator relations
> +     */
> +    protected List<TorqueDynamicUserDelegates> 
> getTorqueDynamicUserDelegatessRelatedByDelegatorUserIdJoinTorqueDynamicUserRelatedByDelegateeUserId(
> +            Criteria criteria, Connection con) throws TorqueException {
> +        criteria.and(TorqueDynamicUserDelegatesPeer.DELEGATOR_USER_ID, 
> getEntityId());
> +        return 
> TorqueDynamicUserDelegatesPeer.doSelectJoinTorqueDynamicUserRelatedByDelegateeUserId(criteria,
>  con);
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#addGroup(org.apache.
> +     * fulcrum.security.entity.Group)
> +     */
> +    public void addGroup(Group group) {
> +        getGroups().add(group);
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#getGroups()
> +     */
> +    public GroupSet getGroups() {
> +        if (groupSet == null) {
> +            groupSet = new GroupSet();
> +        } else if (!(groupSet instanceof GroupSet)) {
> +            groupSet = new GroupSet(groupSet);
> +        }
> +
> +        return (GroupSet) groupSet;
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#getGroupsAsSet()
> +     */
> +    @SuppressWarnings("unchecked")
> +    public <T extends Group> Set<T> getGroupsAsSet() {
> +        return (Set<T>) groupSet;
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#removeGroup(org.
> +     * apache.fulcrum.security.entity.Group)
> +     */
> +    public void removeGroup(Group group) {
> +        getGroups().remove(group);
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#setGroups(org.apache
> +     * .fulcrum.security.util.GroupSet)
> +     */
> +    public void setGroups(GroupSet groups) {
> +        if (groups != null) {
> +            this.groupSet = groups;
> +        } else {
> +            this.groupSet = new GroupSet();
> +        }
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.basic.entity.BasicUser#setGroupsAsSet(java.
> +     * util.Set)
> +     */
> +    public <T extends Group> void setGroupsAsSet(Set<T> groups) {
> +        setGroups(new GroupSet(groups));
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.dynamic.entity.DynamicUser#getDelegatees()
> +     */
> +    @SuppressWarnings("unchecked")
> +    public <T extends User> Set<T> getDelegatees() {
> +        if (delegatees == null) {
> +            delegatees = new UserSet<T>();
> +        }
> +
> +        return (Set<T>) delegatees;
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.dynamic.entity.DynamicUser#getDelegators()
> +     */
> +    @SuppressWarnings("unchecked")
> +    public <T extends User> Set<T> getDelegators() {
> +        if (delegators == null) {
> +            delegators = new UserSet<T>();
> +        }
> +
> +        return (Set<T>) delegators;
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.dynamic.entity.DynamicUser#setDelegatees(
> +     * java.util.Set)
> +     */
> +    public <T extends User> void setDelegatees(Set<T> delegatees) {
> +        if (delegatees != null) {
> +            this.delegatees = new UserSet<T>(delegatees);
> +        } else {
> +            this.delegatees = new UserSet<T>();
> +        }
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.dynamic.entity.DynamicUser#setDelegators(
> +     * java.util.Set)
> +     */
> +    public <T extends User> void setDelegators(Set<T> delegates) {
> +        if (delegators != null) {
> +            this.delegators = new UserSet<T>(delegates);
> +        } else {
> +            this.delegators = new UserSet<T>();
> +        }
> +    }
> +
> +    /**
> +     * @return the database name
> +     */
> +    public String getDatabaseName() {
> +        return TorqueDynamicUserPeer.DATABASE_NAME;
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#
> +     * retrieveAttachedObjects(java.sql.Connection)
> +     */
> +    @Override
> +    public void retrieveAttachedObjects(Connection con) throws 
> DataBackendException {
> +        retrieveAttachedObjects(con, false);
> +    }
> +
> +    /**
> +     * @see 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#retrieveAttachedObjects(Connection,
> +     *      Boolean)
> +     */
> +    @Override
> +    public void retrieveAttachedObjects(Connection con, Boolean lazy) throws 
> DataBackendException {
> +        
> +        this.groupSet = new GroupSet();
> +
> +        try {
> +            
> +            List<TorqueDynamicUserGroup> usergroups = 
> getTorqueDynamicUserGroupsJoinTorqueDynamicGroup(new Criteria(), con);
> +    
> +            for (TorqueDynamicUserGroup tdug : usergroups) {
> +                groupSet.add(tdug.getTorqueDynamicGroup());
> +            }
> +    
> +            this.delegators = new UserSet<User>();
> +    
> +            List<TorqueDynamicUserDelegates> delegatorlist = 
> getTorqueDynamicUserDelegatessRelatedByDelegateeUserIdJoinTorqueDynamicUserRelatedByDelegatorUserId(
> +                    new Criteria(), con);
> +    
> +            for (TorqueDynamicUserDelegates tdud : delegatorlist) {
> +                
> delegators.add(tdud.getTorqueDynamicUserRelatedByDelegatorUserId());
> +            }
> +    
> +            this.delegatees = new UserSet<User>();
> +    
> +            List<TorqueDynamicUserDelegates> delegateelist = 
> getTorqueDynamicUserDelegatessRelatedByDelegatorUserIdJoinTorqueDynamicUserRelatedByDelegateeUserId(
> +                    new Criteria(), con);
> +    
> +            for (TorqueDynamicUserDelegates tdud : delegateelist) {
> +                
> delegatees.add(tdud.getTorqueDynamicUserRelatedByDelegateeUserId());
> +            }
> +            
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
> +        }
> +    }
> +
> +    /**
> +     * @see 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#update(java.sql.Connection)
> +     */
> +    public void update(Connection con) throws TorqueException {
> +        if (groupSet != null) {
> +            Criteria criteria = new Criteria();
> +
> +            /* remove old entries */
> +            criteria.where(TorqueDynamicUserGroupPeer.USER_ID, 
> getEntityId());
> +            TorqueDynamicUserGroupPeer.doDelete(criteria, con);
> +
> +            for (Group g : groupSet) {
> +                TorqueDynamicUserGroup ug = new TorqueDynamicUserGroup();
> +                ug.setUserId(getEntityId());
> +                ug.setGroupId((Integer) g.getId());
> +                ug.save(con);
> +            }
> +        }
> +
> +        if (delegators != null) {
> +            Criteria criteria = new Criteria();
> +
> +            /* remove old entries */
> +            criteria.where(TorqueDynamicUserDelegatesPeer.DELEGATEE_USER_ID, 
> getEntityId());
> +            TorqueDynamicUserDelegatesPeer.doDelete(criteria, con);
> +
> +            for (User u : delegators) {
> +                TorqueDynamicUserDelegates ud = new 
> TorqueDynamicUserDelegates();
> +                ud.setDelegateeUserId(getEntityId());
> +                ud.setDelegatorUserId((Integer) u.getId());
> +                ud.save(con);
> +            }
> +        }
> +
> +        if (delegatees != null) {
> +            Criteria criteria = new Criteria();
> +
> +            /* remove old entries */
> +            criteria.where(TorqueDynamicUserDelegatesPeer.DELEGATOR_USER_ID, 
> getEntityId());
> +            TorqueDynamicUserDelegatesPeer.doDelete(criteria, con);
> +
> +            for (User u : delegatees) {
> +                TorqueDynamicUserDelegates ud = new 
> TorqueDynamicUserDelegates();
> +                ud.setDelegatorUserId(getEntityId());
> +                ud.setDelegateeUserId((Integer) u.getId());
> +                ud.save(con);
> +            }
> +        }
> +
> +        try {
> +            save(con);
> +        } catch (Exception e) {
> +            throw new TorqueException(e);
> +        }
> +    }
> +
> +    /**
> +     * @see 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#delete()
> +     */
> +    public void delete() throws TorqueException {
> +        TorqueDynamicUserPeer.doDelete(SimpleKey.keyFor(getEntityId()));
> +    }
> +}
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/security/TorqueAbstractSecurityEntity.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/security/TorqueAbstractSecurityEntity.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/security/TorqueAbstractSecurityEntity.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/security/TorqueAbstractSecurityEntity.java
>  Fri Jan 11 10:09:52 2019
> @@ -21,6 +21,7 @@ import java.io.Serializable;
>  import java.sql.Connection;
>  
>  import org.apache.fulcrum.security.entity.SecurityEntity;
> +import org.apache.fulcrum.security.util.DataBackendException;
>  import org.apache.torque.TorqueException;
>  import org.apache.torque.om.Persistent;
>  /**
> @@ -71,16 +72,16 @@ public abstract class TorqueAbstractSecu
>       * @param lazy if <code>true</code>, may load some or all relationships 
> later
>       * @throws TorqueException database not found exception
>       */
> -    public abstract void retrieveAttachedObjects(Connection con, Boolean 
> lazy) throws TorqueException;
> +    public abstract void retrieveAttachedObjects(Connection con, Boolean 
> lazy) throws DataBackendException;
>      
>      
>      /**
>       * old contract, lazy is set to <code>false</code>.
>       *
>       * @param con A database connection
> -     * @throws TorqueException database not found exception
> +     * @throws DataBackendException wrapper exception: user information not 
> found exception
>       */
> -    public abstract void retrieveAttachedObjects(Connection con) throws 
> TorqueException;
> +    public abstract void retrieveAttachedObjects(Connection con) throws 
> DataBackendException;
>  
>      /**
>       * Update this instance to the database with all dependent objects
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/security/turbine/TorqueAbstractTurbineTurbineSecurityEntityDefault.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/security/turbine/TorqueAbstractTurbineTurbineSecurityEntityDefault.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/security/turbine/TorqueAbstractTurbineTurbineSecurityEntityDefault.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/security/turbine/TorqueAbstractTurbineTurbineSecurityEntityDefault.java
>  Fri Jan 11 10:09:52 2019
> @@ -23,6 +23,7 @@ import java.util.List;
>  import org.apache.fulcrum.security.model.ACLFactory;
>  import 
> org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRoleEntity;
>  import 
> org.apache.fulcrum.security.torque.peer.TurbineUserGroupRoleModelPeerMapper;
> +import org.apache.fulcrum.security.util.DataBackendException;
>  import org.apache.torque.TorqueException;
>  
>  /**
> @@ -47,8 +48,8 @@ public abstract class TorqueAbstractTurb
>       * @param con A database connection
>       * @param lazy if <code>true</code>, fetches objects lazily
>       * @param ugrs The custom TurbineUserGroupRole set
> -     * @throws TorqueException if data connection not found
> +     * @throws DataBackendException if data connection or user information 
> (table objects) not found
>       */
> -    public abstract <T extends TurbineUserGroupRoleModelPeerMapper> void 
> retrieveAttachedObjects( Connection con, Boolean lazy, List<T> ugrs ) throws 
> TorqueException;
> +    public abstract <T extends TurbineUserGroupRoleModelPeerMapper> void 
> retrieveAttachedObjects( Connection con, Boolean lazy, List<T> ugrs ) throws 
> DataBackendException;
>     
>  }
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineGroup.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineGroup.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineGroup.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineGroup.java
>  Fri Jan 11 10:09:52 2019
> @@ -65,7 +65,7 @@ public abstract class DefaultAbstractTur
>      
>      @Override
>      public void retrieveAttachedObjects( Connection con )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          retrieveAttachedObjects( con, false );
>      }    
> @@ -74,23 +74,26 @@ public abstract class DefaultAbstractTur
>       * @see 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#retrieveAttachedObjects(java.sql.Connection,
>  java.lang.Boolean)
>       */
>      @Override
> -    public void retrieveAttachedObjects( Connection con, Boolean lazy ) 
> throws TorqueException
> +    public void retrieveAttachedObjects( Connection con, Boolean lazy ) 
> throws DataBackendException
>      {
> -        if (!lazy) {
> -            Set<TurbineUserGroupRole> userGroupRoleSet = new 
> HashSet<TurbineUserGroupRole>();
> -            
> -            List<org.apache.fulcrum.security.torque.om.TurbineUserGroupRole> 
> ugrs = getTurbineUserGroupRolesJoinTurbineRole(new Criteria(), con);
> -    
> -            for (org.apache.fulcrum.security.torque.om.TurbineUserGroupRole 
> ttugr : ugrs)
> -            {
> -                TurbineUserGroupRole ugr = new TurbineUserGroupRole();
> -                ugr.setGroup(this);
> -                ugr.setRole(ttugr.getTurbineRole());
> -                ugr.setUser(ttugr.getTurbineUser(con));
> -                userGroupRoleSet.add(ugr);
> +        try {
> +            if (!lazy) {
> +                Set<TurbineUserGroupRole> userGroupRoleSet = new 
> HashSet<TurbineUserGroupRole>();
> +                
> +                
> List<org.apache.fulcrum.security.torque.om.TurbineUserGroupRole> ugrs = 
> getTurbineUserGroupRolesJoinTurbineRole(new Criteria(), con);
> +        
> +                for 
> (org.apache.fulcrum.security.torque.om.TurbineUserGroupRole ttugr : ugrs)
> +                {
> +                    TurbineUserGroupRole ugr = new TurbineUserGroupRole();
> +                    ugr.setGroup(this);
> +                    ugr.setRole(ttugr.getTurbineRole());
> +                    ugr.setUser(ttugr.getTurbineUser(con));
> +                    userGroupRoleSet.add(ugr);
> +                }
> +                setUserGroupRoleSet(userGroupRoleSet);
>              }
> -    
> -            setUserGroupRoleSet(userGroupRoleSet);
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
>          }
>      }
>      
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbinePermission.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbinePermission.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbinePermission.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbinePermission.java
>  Fri Jan 11 10:09:52 2019
> @@ -27,6 +27,7 @@ import org.apache.fulcrum.security.torqu
>  import org.apache.fulcrum.security.torque.om.TurbineRolePermission;
>  import org.apache.fulcrum.security.torque.om.TurbineRolePermissionPeer;
>  import 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity;
> +import org.apache.fulcrum.security.util.DataBackendException;
>  import org.apache.fulcrum.security.util.RoleSet;
>  import org.apache.torque.TorqueException;
>  import org.apache.torque.criteria.Criteria;
> @@ -138,7 +139,7 @@ public abstract class DefaultAbstractTur
>  
>      @Override
>      public void retrieveAttachedObjects( Connection con )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          retrieveAttachedObjects( con, false );
>      }
> @@ -148,15 +149,21 @@ public abstract class DefaultAbstractTur
>       */
>      @Override
>       public void retrieveAttachedObjects( Connection con, Boolean lazy )
> -         throws TorqueException
> +         throws DataBackendException
>      {
> -        this.roleSet = new RoleSet();
> -
> -        List<TurbineRolePermission> rolepermissions = 
> getTurbineRolePermissionsJoinTurbineRole(new Criteria(), con);
> -
> -        for (TurbineRolePermission ttrp : rolepermissions)
> -        {
> -            roleSet.add(ttrp.getTurbineRole());
> +        try {
> +            
> +            this.roleSet = new RoleSet();
> +    
> +            List<TurbineRolePermission> rolepermissions = 
> getTurbineRolePermissionsJoinTurbineRole(new Criteria(), con);
> +    
> +            for (TurbineRolePermission ttrp : rolepermissions)
> +            {
> +                roleSet.add(ttrp.getTurbineRole());
> +            }
> +            
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
>          }
>      }
>  
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineRole.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineRole.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineRole.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineRole.java
>  Fri Jan 11 10:09:52 2019
> @@ -162,7 +162,7 @@ public abstract class DefaultAbstractTur
>      
>      @Override
>      public void retrieveAttachedObjects( Connection con )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          retrieveAttachedObjects( con, false );
>      }
> @@ -173,33 +173,37 @@ public abstract class DefaultAbstractTur
>       */
>      @Override
>      public void retrieveAttachedObjects( Connection con, Boolean lazy )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          this.permissionSet = new PermissionSet();
>  
> -        List<TurbineRolePermission> rolepermissions = 
> getTurbineRolePermissionsJoinTurbinePermission(new Criteria(), con);
> -
> -        for (TurbineRolePermission ttrp : rolepermissions)
> -        {
> -            permissionSet.add(ttrp.getTurbinePermission());
> -        }
> -
> -        if (!lazy) {
> -            Set<TurbineUserGroupRole> userGroupRoleSet = new 
> HashSet<TurbineUserGroupRole>();
> -    
> -            List<org.apache.fulcrum.security.torque.om.TurbineUserGroupRole> 
> ugrs = getTurbineUserGroupRolesJoinTurbineGroup(new Criteria(), con);
> +        try {
> +            List<TurbineRolePermission> rolepermissions = 
> getTurbineRolePermissionsJoinTurbinePermission(new Criteria(), con);
>      
> -            for (org.apache.fulcrum.security.torque.om.TurbineUserGroupRole 
> ttugr : ugrs)
> +            for (TurbineRolePermission ttrp : rolepermissions)
>              {
> -                TurbineUserGroupRole ugr = new TurbineUserGroupRole();
> -                ugr.setRole(this);
> -                ugr.setGroup(ttugr.getTurbineGroup());
> -                ugr.setUser(ttugr.getTurbineUser(con));
> -                userGroupRoleSet.add(ugr);
> +                permissionSet.add(ttrp.getTurbinePermission());
>              }
>      
> -            setUserGroupRoleSet(userGroupRoleSet);
> +            if (!lazy) {
> +                Set<TurbineUserGroupRole> userGroupRoleSet = new 
> HashSet<TurbineUserGroupRole>();
>          
> +                
> List<org.apache.fulcrum.security.torque.om.TurbineUserGroupRole> ugrs = 
> getTurbineUserGroupRolesJoinTurbineGroup(new Criteria(), con);
> +        
> +                for 
> (org.apache.fulcrum.security.torque.om.TurbineUserGroupRole ttugr : ugrs)
> +                {
> +                    TurbineUserGroupRole ugr = new TurbineUserGroupRole();
> +                    ugr.setRole(this);
> +                    ugr.setGroup(ttugr.getTurbineGroup());
> +                    ugr.setUser(ttugr.getTurbineUser(con));
> +                    userGroupRoleSet.add(ugr);
> +                }
> +        
> +                setUserGroupRoleSet(userGroupRoleSet);
> +            
> +            }
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
>          }
>      }
>      
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineUser.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineUser.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineUser.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/DefaultAbstractTurbineUser.java
>  Fri Jan 11 10:09:52 2019
> @@ -28,8 +28,8 @@ import org.apache.fulcrum.security.model
>  import org.apache.fulcrum.security.torque.om.TurbineUserGroupRolePeer;
>  import org.apache.fulcrum.security.torque.om.TurbineUserPeer;
>  import 
> org.apache.fulcrum.security.torque.peer.TurbineUserGroupRoleModelPeerMapper;
> -import 
> org.apache.fulcrum.security.torque.security.turbine.TorqueAbstractTurbineTurbineSecurityEntity;
>  import 
> org.apache.fulcrum.security.torque.security.turbine.TorqueAbstractTurbineTurbineSecurityEntityDefault;
> +import org.apache.fulcrum.security.util.DataBackendException;
>  import org.apache.torque.TorqueException;
>  import org.apache.torque.criteria.Criteria;
>  import org.apache.torque.om.SimpleKey;
> @@ -55,27 +55,31 @@ public abstract class DefaultAbstractTur
>       * 
>       * Does intentionally not initialize the cache collTurbineUserGroupRoles 
> for referenced objects. 
>       * 
> -     * Be careful not call any of the generated getTurbineUserGroupRoles 
> methods in derived classes,
> +     * Be careful not to call any of the generated getTurbineUserGroupRoles 
> methods in derived classes,
>       * the link {@link #save()} method otherwise might not update the right 
> relationships.
>       *
>       * @param criteria Criteria to define the selection of records
>       * @param con a database connection
> -     * @throws TorqueException  if any database error occurs
> +     * @throws DataBackendException  if any database error occurs
>       *
>       * @return a list of User/Group/Role relations
>       */
>      protected <T extends TurbineUserGroupRoleModelPeerMapper> List<T> 
> getTurbineUserGroupRolesJoinTurbineRole(Criteria criteria, Connection con)
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          criteria.and(TurbineUserGroupRolePeer.USER_ID, getEntityId() );
> -        return (List<T>) 
> TurbineUserGroupRolePeer.doSelectJoinTurbineRole(criteria, con);
> +        try {
> +            return (List<T>) 
> TurbineUserGroupRolePeer.doSelectJoinTurbineRole(criteria, con);
> +        } catch (  TorqueException e) {
> +            throw new DataBackendException( e.getMessage(), e );
> +        }
>      }
>      
>      /* (non-Javadoc)
>       * @see 
> org.apache.fulcrum.security.torque.security.turbine.TorqueAbstractTurbineTurbineSecurityEntityDefault#retrieveAttachedObjects(java.sql.Connection,
>  java.lang.Boolean, java.util.List)
>       */
>      @Override
> -    public <T extends TurbineUserGroupRoleModelPeerMapper> void 
> retrieveAttachedObjects( Connection con, Boolean lazy, List<T> ugrs ) throws 
> TorqueException
> +    public <T extends TurbineUserGroupRoleModelPeerMapper> void 
> retrieveAttachedObjects( Connection con, Boolean lazy, List<T> ugrs ) throws 
> DataBackendException
>      {
>          if (!lazy ) { // !lazy
>              Set<TurbineUserGroupRole> userGroupRoleSet = new 
> HashSet<TurbineUserGroupRole>();
> @@ -94,7 +98,7 @@ public abstract class DefaultAbstractTur
>       * @see 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#retrieveAttachedObjects(java.sql.Connection,
>  java.lang.Boolean)
>       */
>      @Override
> -    public void retrieveAttachedObjects( Connection con, Boolean lazy ) 
> throws TorqueException
> +    public void retrieveAttachedObjects( Connection con, Boolean lazy ) 
> throws DataBackendException
>      {
>          if (!lazy) {
>              Set<TurbineUserGroupRole> userGroupRoleSet = new 
> HashSet<TurbineUserGroupRole>();
> @@ -113,7 +117,7 @@ public abstract class DefaultAbstractTur
>       */
>      @Override
>      public void retrieveAttachedObjects( Connection con )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          retrieveAttachedObjects( con, false ); //false
>      }
> @@ -169,19 +173,23 @@ public abstract class DefaultAbstractTur
>       */
>      private <T extends TurbineUserGroupRoleModelPeerMapper> void maptoModel( 
> Connection con, Set<TurbineUserGroupRole> userGroupRoleSet,
>                               List<T> ugrs )
> -        throws TorqueException
> +        throws DataBackendException
>      {
> -        for (TurbineUserGroupRoleModelPeerMapper ttugr : ugrs)
> -        {
> -            TurbineUserGroupRole ugr = new TurbineUserGroupRole();
> -            ugr.setUser((User) this);
> -            ugr.setRole(ttugr.getTurbineRole(con));
> -            
> -            // org.apache.fulcrum.security.torque.om.TurbineGroup implements 
> -            // org.apache.fulcrum.security.model.turbine.entity.TurbineGroup
> -            // but may be hides it? 
> -            ugr.setGroup(ttugr.getTurbineGroup(con));
> -            userGroupRoleSet.add(ugr);
> +        try {
> +            for (TurbineUserGroupRoleModelPeerMapper ttugr : ugrs)
> +            {
> +                TurbineUserGroupRole ugr = new TurbineUserGroupRole();
> +                ugr.setUser((User) this);
> +                ugr.setRole(ttugr.getTurbineRole(con));
> +                
> +                // org.apache.fulcrum.security.torque.om.TurbineGroup 
> implements 
> +                // 
> org.apache.fulcrum.security.model.turbine.entity.TurbineGroup
> +                // but may be hides it? 
> +                ugr.setGroup(ttugr.getTurbineGroup(con));
> +                userGroupRoleSet.add(ugr);
> +            }
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
>          }
>      }
>  }
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbineGroup.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbineGroup.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbineGroup.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbineGroup.java
>  Fri Jan 11 10:09:52 2019
> @@ -66,7 +66,7 @@ public abstract class FulcrumAbstractTur
>      
>      @Override
>      public void retrieveAttachedObjects( Connection con )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          retrieveAttachedObjects( con, false );
>      }
> @@ -75,22 +75,26 @@ public abstract class FulcrumAbstractTur
>       * @see 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#retrieveAttachedObjects(Connection,
>  Boolean)
>       */
>      @Override
> -    public void retrieveAttachedObjects( Connection con, Boolean lazy ) 
> throws TorqueException
> +    public void retrieveAttachedObjects( Connection con, Boolean lazy ) 
> throws DataBackendException
>      {
> -        if (!lazy) {
> -            Set<TurbineUserGroupRole> userGroupRoleSet = new 
> HashSet<TurbineUserGroupRole>();
> -            List<TorqueTurbineUserGroupRole> ugrs = 
> getTorqueTurbineUserGroupRolesJoinTorqueTurbineRole(new Criteria(), con);
> -    
> -            for (TorqueTurbineUserGroupRole ttugr : ugrs)
> -            {
> -                TurbineUserGroupRole ugr = new TurbineUserGroupRole();
> -                ugr.setGroup(this);
> -                ugr.setRole(ttugr.getTorqueTurbineRole());
> -                ugr.setUser(ttugr.getTorqueTurbineUser(con));
> -                userGroupRoleSet.add(ugr);
> +        try {
> +            if (!lazy) {
> +                Set<TurbineUserGroupRole> userGroupRoleSet = new 
> HashSet<TurbineUserGroupRole>();
> +                List<TorqueTurbineUserGroupRole> ugrs = 
> getTorqueTurbineUserGroupRolesJoinTorqueTurbineRole(new Criteria(), con);
> +        
> +                for (TorqueTurbineUserGroupRole ttugr : ugrs)
> +                {
> +                    TurbineUserGroupRole ugr = new TurbineUserGroupRole();
> +                    ugr.setGroup(this);
> +                    ugr.setRole(ttugr.getTorqueTurbineRole());
> +                    ugr.setUser(ttugr.getTorqueTurbineUser(con));
> +                    userGroupRoleSet.add(ugr);
> +                }
> +        
> +                setUserGroupRoleSet(userGroupRoleSet);
>              }
> -    
> -            setUserGroupRoleSet(userGroupRoleSet);
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
>          }
>      }
>      
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbinePermission.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbinePermission.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbinePermission.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbinePermission.java
>  Fri Jan 11 10:09:52 2019
> @@ -27,6 +27,7 @@ import org.apache.fulcrum.security.torqu
>  import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePermission;
>  import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePermissionPeer;
>  import 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity;
> +import org.apache.fulcrum.security.util.DataBackendException;
>  import org.apache.fulcrum.security.util.RoleSet;
>  import org.apache.torque.TorqueException;
>  import org.apache.torque.criteria.Criteria;
> @@ -143,7 +144,7 @@ public abstract class FulcrumAbstractTur
>       */
>      @Override
>      public void retrieveAttachedObjects( Connection con )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          retrieveAttachedObjects( con, false );
>      }
> @@ -153,15 +154,19 @@ public abstract class FulcrumAbstractTur
>       */
>      @Override
>      public void retrieveAttachedObjects( Connection con, Boolean lazy )
> -        throws TorqueException
> +        throws DataBackendException
>      {
>          this.roleSet = new RoleSet();
>  
> -        List<TorqueTurbineRolePermission> rolepermissions = 
> getTorqueTurbineRolePermissionsJoinTorqueTurbineRole(new Criteria(), con);
> -
> -        for (TorqueTurbineRolePermission ttrp : rolepermissions)
> -        {
> -            roleSet.add(ttrp.getTorqueTurbineRole());
> +        try {
> +            List<TorqueTurbineRolePermission> rolepermissions = 
> getTorqueTurbineRolePermissionsJoinTorqueTurbineRole(new Criteria(), con);
> +    
> +            for (TorqueTurbineRolePermission ttrp : rolepermissions)
> +            {
> +                roleSet.add(ttrp.getTorqueTurbineRole());
> +            }
> +        } catch (TorqueException e ) {
> +            throw new DataBackendException( e.getMessage(),e );
>          }
>      }
>  
>
> Modified: 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbineRole.java
> URL: 
> http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbineRole.java?rev=1851024&r1=1851023&r2=1851024&view=diff
> ==============================================================================
> --- 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbineRole.java
>  (original)
> +++ 
> turbine/fulcrum/trunk/security/torque/src/java/org/apache/fulcrum/security/torque/turbine/FulcrumAbstractTurbineRole.java
>  Fri Jan 11 10:09:52 2019
> @@ -1,310 +1,314 @@
> -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 java.sql.Connection;
> -import java.util.HashSet;
> -import java.util.List;
> -import java.util.Set;
> -
> -import org.apache.fulcrum.security.entity.Permission;
> -import org.apache.fulcrum.security.model.turbine.entity.TurbineRole;
> -import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
> -import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePeer;
> -import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePermission;
> -import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePermissionPeer;
> -import org.apache.fulcrum.security.torque.om.TorqueTurbineUserGroupRole;
> -import org.apache.fulcrum.security.torque.om.TorqueTurbineUserGroupRolePeer;
> -import 
> org.apache.fulcrum.security.torque.security.turbine.TorqueAbstractTurbineTurbineSecurityEntity;
> -import org.apache.fulcrum.security.util.DataBackendException;
> -import org.apache.fulcrum.security.util.PermissionSet;
> -import org.apache.torque.TorqueException;
> -import org.apache.torque.criteria.Criteria;
> -import org.apache.torque.om.SimpleKey;
> -import org.apache.torque.util.Transaction;
> -
> -/**
> - * This abstract class provides the SecurityInterface to the managers.
> - *
> - * @author <a href="mailto:[email protected]";>Thomas Vandahl</a>
> - * @version $Id:$
> - */
> -public abstract class FulcrumAbstractTurbineRole extends 
> TorqueAbstractTurbineTurbineSecurityEntity
> -             implements TurbineRole {
> -     /** Serial version */
> -     private static final long serialVersionUID = -1782236723198646728L;
> -
> -     /** a cache of permission objects */
> -     private Set<Permission> permissionSet = null;
> -
> -     /**
> -      * Forward reference to generated code
> -      *
> -      * Get a list of association objects, pre-populated with their
> -      * TorqueTurbinePermission objects.
> -      *
> -      * @param criteria Criteria to define the selection of records
> -      * @param con      a database connection
> -      * @throws TorqueException if any database error occurs
> -      *
> -      * @return a list of Role/Permission relations
> -      */
> -     protected List<TorqueTurbineRolePermission> 
> getTorqueTurbineRolePermissionsJoinTorqueTurbinePermission(
> -                     Criteria criteria, Connection con) throws 
> TorqueException {
> -             criteria.and(TorqueTurbineRolePermissionPeer.ROLE_ID, 
> getEntityId());
> -             return 
> TorqueTurbineRolePermissionPeer.doSelectJoinTorqueTurbinePermission(criteria, 
> con);
> -     }
> -
> -     /**
> -      * Forward reference to generated code
> -      *
> -      * Get a list of association objects, pre-populated with their
> -      * TorqueTurbineGroup objects.
> -      *
> -      * @param criteria Criteria to define the selection of records
> -      * @param con      a database connection
> -      * @throws TorqueException if any database error occurs
> -      *
> -      * @return a list of User/Group/Role relations
> -      */
> -     protected List<TorqueTurbineUserGroupRole> 
> getTorqueTurbineUserGroupRolesJoinTorqueTurbineGroup(Criteria criteria,
> -                     Connection con) throws TorqueException {
> -             criteria.and(TorqueTurbineUserGroupRolePeer.ROLE_ID, 
> getEntityId());
> -             return 
> TorqueTurbineUserGroupRolePeer.doSelectJoinTorqueTurbineGroup(criteria, con);
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.turbine.entity.TurbineRole#addPermission(
> -      * org.apache.fulcrum.security.entity.Permission)
> -      */
> -     public void addPermission(Permission permission) {
> -             getPermissions().add(permission);
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.turbine.entity.TurbineRole#getPermissions()
> -      */
> -     public PermissionSet getPermissions() {
> -             if (permissionSet == null) {
> -                     permissionSet = new PermissionSet();
> -             } else if (!(permissionSet instanceof PermissionSet)) {
> -                     permissionSet = new PermissionSet(permissionSet);
> -             }
> -
> -             return (PermissionSet) permissionSet;
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole#
> -      * getPermissionsAsSet()
> -      */
> -     @SuppressWarnings("unchecked")
> -     public <T extends Permission> Set<T> getPermissionsAsSet() {
> -             return (Set<T>) permissionSet;
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.turbine.entity.TurbineRole#removePermission
> -      * (org.apache.fulcrum.security.entity.Permission)
> -      */
> -     public void removePermission(Permission permission) {
> -             getPermissions().remove(permission);
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.model.turbine.entity.TurbineRole#setPermissions(
> -      * org.apache.fulcrum.security.util.PermissionSet)
> -      */
> -     public void setPermissions(PermissionSet permissionSet) {
> -             if (permissionSet != null) {
> -                     this.permissionSet = permissionSet;
> -             } else {
> -                     this.permissionSet = new PermissionSet();
> -             }
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole#
> -      * setPermissionsAsSet(java.util.Set)
> -      */
> -     public <T extends Permission> void setPermissionsAsSet(Set<T> 
> permissions) {
> -             setPermissions(new PermissionSet(permissions));
> -     }
> -
> -     /**
> -      * @return the database name
> -      */
> -     public String getDatabaseName() {
> -             return TorqueTurbineRolePeer.DATABASE_NAME;
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#
> -      * retrieveAttachedObjects(java.sql.Connection)
> -      */
> -     @Override
> -     public void retrieveAttachedObjects(Connection con) throws 
> TorqueException {
> -             retrieveAttachedObjects(con, false);
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#
> -      * retrieveAttachedObjects(java.sql.Connection, java.lang.Boolean)
> -      */
> -     public void retrieveAttachedObjects(Connection con, Boolean lazy) 
> throws TorqueException {
> -             this.permissionSet = new PermissionSet();
> -
> -             List<TorqueTurbineRolePermission> rolepermissions = 
> getTorqueTurbineRolePermissionsJoinTorqueTurbinePermission(
> -                             new Criteria(), con);
> -
> -             for (TorqueTurbineRolePermission ttrp : rolepermissions) {
> -                     permissionSet.add(ttrp.getTorqueTurbinePermission());
> -             }
> -
> -             if (!lazy) {
> -                     Set<TurbineUserGroupRole> userGroupRoleSet = new 
> HashSet<TurbineUserGroupRole>();
> -
> -                     List<TorqueTurbineUserGroupRole> ugrs = 
> getTorqueTurbineUserGroupRolesJoinTorqueTurbineGroup(new Criteria(),
> -                                     con);
> -
> -                     for (TorqueTurbineUserGroupRole ttugr : ugrs) {
> -                             TurbineUserGroupRole ugr = new 
> TurbineUserGroupRole();
> -                             ugr.setRole(this);
> -                             ugr.setGroup(ttugr.getTorqueTurbineGroup());
> -                             ugr.setUser(ttugr.getTorqueTurbineUser(con));
> -                             userGroupRoleSet.add(ugr);
> -                     }
> -
> -                     setUserGroupRoleSet(userGroupRoleSet);
> -             }
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see org.apache.fulcrum.security.torque.security.turbine.
> -      * TorqueAbstractTurbineTurbineSecurityEntity#getUserGroupRoleSet()
> -      */
> -     @Override
> -     public <T extends TurbineUserGroupRole> Set<T> getUserGroupRoleSet() 
> throws DataBackendException {
> -             if (super.getUserGroupRoleSet() == null || 
> super.getUserGroupRoleSet().isEmpty()) {
> -                     Connection con = null;
> -                     try {
> -                             con = Transaction.begin();
> -
> -                             retrieveAttachedObjects(con, false); // not 
> configurable, we set it
> -
> -                             Transaction.commit(con);
> -                             con = null;
> -                     } catch (TorqueException e) {
> -                             throw new DataBackendException("Error 
> retrieving group information", e);
> -                     } finally {
> -                             if (con != null) {
> -                                     Transaction.safeRollback(con);
> -                             }
> -                     }
> -             }
> -
> -             return super.getUserGroupRoleSet();
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#
> -      * update(java.sql.Connection)
> -      */
> -     public void update(Connection con) throws TorqueException {
> -             if (permissionSet != null) {
> -                     Criteria criteria = new Criteria();
> -
> -                     /* remove old entries */
> -                     criteria.where(TorqueTurbineRolePermissionPeer.ROLE_ID, 
> getEntityId());
> -                     TorqueTurbineRolePermissionPeer.doDelete(criteria, con);
> -
> -                     for (Permission p : permissionSet) {
> -                             TorqueTurbineRolePermission rp = new 
> TorqueTurbineRolePermission();
> -                             rp.setPermissionId((Integer) p.getId());
> -                             rp.setRoleId(getEntityId());
> -                             rp.save(con);
> -                     }
> -             }
> -             // not needed
> -//        try
> -//        {
> -//           Set<TurbineUserGroupRole> userGroupRoleSet = 
> getUserGroupRoleSet();
> -//            if (userGroupRoleSet != null)
> -//            {
> -//                Criteria criteria = new Criteria();
> -//    
> -//                /* remove old entries */
> -//                criteria.where(TorqueTurbineUserGroupRolePeer.ROLE_ID, 
> getEntityId());
> -//                TorqueTurbineUserGroupRolePeer.doDelete(criteria, con);
> -//    
> -//                for (TurbineUserGroupRole ugr : userGroupRoleSet)
> -//                {
> -//                    TorqueTurbineUserGroupRole ttugr = new 
> TorqueTurbineUserGroupRole();
> -//                    ttugr.setGroupId((Integer)ugr.getGroup().getId());
> -//                    ttugr.setUserId((Integer)ugr.getUser().getId());
> -//                    ttugr.setRoleId((Integer)ugr.getRole().getId());
> -//                    ttugr.save(con);
> -//                }
> -//            }
> -//            save(con);
> -//        }
> -//        catch (Exception e)
> -//        {
> -//            throw new TorqueException(e);
> -//        }
> -     }
> -
> -     /*
> -      * (non-Javadoc)
> -      * 
> -      * @see
> -      * 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#
> -      * delete()
> -      */
> -     public void delete() throws TorqueException {
> -             TorqueTurbineRolePeer.doDelete(SimpleKey.keyFor(getEntityId()));
> -     }
> -}
> +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 java.sql.Connection;
> +import java.util.HashSet;
> +import java.util.List;
> +import java.util.Set;
> +
> +import org.apache.fulcrum.security.entity.Permission;
> +import org.apache.fulcrum.security.model.turbine.entity.TurbineRole;
> +import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
> +import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePeer;
> +import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePermission;
> +import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePermissionPeer;
> +import org.apache.fulcrum.security.torque.om.TorqueTurbineUserGroupRole;
> +import org.apache.fulcrum.security.torque.om.TorqueTurbineUserGroupRolePeer;
> +import 
> org.apache.fulcrum.security.torque.security.turbine.TorqueAbstractTurbineTurbineSecurityEntity;
> +import org.apache.fulcrum.security.util.DataBackendException;
> +import org.apache.fulcrum.security.util.PermissionSet;
> +import org.apache.torque.TorqueException;
> +import org.apache.torque.criteria.Criteria;
> +import org.apache.torque.om.SimpleKey;
> +import org.apache.torque.util.Transaction;
> +
> +/**
> + * This abstract class provides the SecurityInterface to the managers.
> + *
> + * @author <a href="mailto:[email protected]";>Thomas Vandahl</a>
> + * @version $Id:$
> + */
> +public abstract class FulcrumAbstractTurbineRole extends 
> TorqueAbstractTurbineTurbineSecurityEntity
> +        implements TurbineRole {
> +    /** Serial version */
> +    private static final long serialVersionUID = -1782236723198646728L;
> +
> +    /** a cache of permission objects */
> +    private Set<Permission> permissionSet = null;
> +
> +    /**
> +     * Forward reference to generated code
> +     *
> +     * Get a list of association objects, pre-populated with their
> +     * TorqueTurbinePermission objects.
> +     *
> +     * @param criteria Criteria to define the selection of records
> +     * @param con      a database connection
> +     * @throws TorqueException if any database error occurs
> +     *
> +     * @return a list of Role/Permission relations
> +     */
> +    protected List<TorqueTurbineRolePermission> 
> getTorqueTurbineRolePermissionsJoinTorqueTurbinePermission(
> +            Criteria criteria, Connection con) throws TorqueException {
> +        criteria.and(TorqueTurbineRolePermissionPeer.ROLE_ID, getEntityId());
> +        return 
> TorqueTurbineRolePermissionPeer.doSelectJoinTorqueTurbinePermission(criteria, 
> con);
> +    }
> +
> +    /**
> +     * Forward reference to generated code
> +     *
> +     * Get a list of association objects, pre-populated with their
> +     * TorqueTurbineGroup objects.
> +     *
> +     * @param criteria Criteria to define the selection of records
> +     * @param con      a database connection
> +     * @throws TorqueException if any database error occurs
> +     *
> +     * @return a list of User/Group/Role relations
> +     */
> +    protected List<TorqueTurbineUserGroupRole> 
> getTorqueTurbineUserGroupRolesJoinTorqueTurbineGroup(Criteria criteria,
> +            Connection con) throws TorqueException {
> +        criteria.and(TorqueTurbineUserGroupRolePeer.ROLE_ID, getEntityId());
> +        return 
> TorqueTurbineUserGroupRolePeer.doSelectJoinTorqueTurbineGroup(criteria, con);
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.turbine.entity.TurbineRole#addPermission(
> +     * org.apache.fulcrum.security.entity.Permission)
> +     */
> +    public void addPermission(Permission permission) {
> +        getPermissions().add(permission);
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.turbine.entity.TurbineRole#getPermissions()
> +     */
> +    public PermissionSet getPermissions() {
> +        if (permissionSet == null) {
> +            permissionSet = new PermissionSet();
> +        } else if (!(permissionSet instanceof PermissionSet)) {
> +            permissionSet = new PermissionSet(permissionSet);
> +        }
> +
> +        return (PermissionSet) permissionSet;
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole#
> +     * getPermissionsAsSet()
> +     */
> +    @SuppressWarnings("unchecked")
> +    public <T extends Permission> Set<T> getPermissionsAsSet() {
> +        return (Set<T>) permissionSet;
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.turbine.entity.TurbineRole#removePermission
> +     * (org.apache.fulcrum.security.entity.Permission)
> +     */
> +    public void removePermission(Permission permission) {
> +        getPermissions().remove(permission);
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.model.turbine.entity.TurbineRole#setPermissions(
> +     * org.apache.fulcrum.security.util.PermissionSet)
> +     */
> +    public void setPermissions(PermissionSet permissionSet) {
> +        if (permissionSet != null) {
> +            this.permissionSet = permissionSet;
> +        } else {
> +            this.permissionSet = new PermissionSet();
> +        }
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole#
> +     * setPermissionsAsSet(java.util.Set)
> +     */
> +    public <T extends Permission> void setPermissionsAsSet(Set<T> 
> permissions) {
> +        setPermissions(new PermissionSet(permissions));
> +    }
> +
> +    /**
> +     * @return the database name
> +     */
> +    public String getDatabaseName() {
> +        return TorqueTurbineRolePeer.DATABASE_NAME;
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#
> +     * retrieveAttachedObjects(java.sql.Connection)
> +     */
> +    @Override
> +    public void retrieveAttachedObjects(Connection con) throws 
> DataBackendException {
> +        retrieveAttachedObjects(con, false);
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#
> +     * retrieveAttachedObjects(java.sql.Connection, java.lang.Boolean)
> +     */
> +    public void retrieveAttachedObjects(Connection con, Boolean lazy) throws 
> DataBackendException {
> +        this.permissionSet = new PermissionSet();
> +
> +        try {
> +            List<TorqueTurbineRolePermission> rolepermissions = 
> getTorqueTurbineRolePermissionsJoinTorqueTurbinePermission(
> +                    new Criteria(), con);
> +    
> +            for (TorqueTurbineRolePermission ttrp : rolepermissions) {
> +                permissionSet.add(ttrp.getTorqueTurbinePermission());
> +            }
> +    
> +            if (!lazy) {
> +                Set<TurbineUserGroupRole> userGroupRoleSet = new 
> HashSet<TurbineUserGroupRole>();
> +    
> +                List<TorqueTurbineUserGroupRole> ugrs = 
> getTorqueTurbineUserGroupRolesJoinTorqueTurbineGroup(new Criteria(),
> +                        con);
> +    
> +                for (TorqueTurbineUserGroupRole ttugr : ugrs) {
> +                    TurbineUserGroupRole ugr = new TurbineUserGroupRole();
> +                    ugr.setRole(this);
> +                    ugr.setGroup(ttugr.getTorqueTurbineGroup());
> +                    ugr.setUser(ttugr.getTorqueTurbineUser(con));
> +                    userGroupRoleSet.add(ugr);
> +                }
> +    
> +                setUserGroupRoleSet(userGroupRoleSet);
> +            }
> +         } catch (TorqueException e ) {
> +               throw new DataBackendException( e.getMessage(),e );
> +         }
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see org.apache.fulcrum.security.torque.security.turbine.
> +     * TorqueAbstractTurbineTurbineSecurityEntity#getUserGroupRoleSet()
> +     */
> +    @Override
> +    public <T extends TurbineUserGroupRole> Set<T> getUserGroupRoleSet() 
> throws DataBackendException {
> +        if (super.getUserGroupRoleSet() == null || 
> super.getUserGroupRoleSet().isEmpty()) {
> +            Connection con = null;
> +            try {
> +                con = Transaction.begin();
> +
> +                retrieveAttachedObjects(con, false); // not configurable, we 
> set it
> +
> +                Transaction.commit(con);
> +                con = null;
> +            } catch (TorqueException e) {
> +                throw new DataBackendException("Error retrieving group 
> information", e);
> +            } finally {
> +                if (con != null) {
> +                    Transaction.safeRollback(con);
> +                }
> +            }
> +        }
> +
> +        return super.getUserGroupRoleSet();
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#
> +     * update(java.sql.Connection)
> +     */
> +    public void update(Connection con) throws TorqueException {
> +        if (permissionSet != null) {
> +            Criteria criteria = new Criteria();
> +
> +            /* remove old entries */
> +            criteria.where(TorqueTurbineRolePermissionPeer.ROLE_ID, 
> getEntityId());
> +            TorqueTurbineRolePermissionPeer.doDelete(criteria, con);
> +
> +            for (Permission p : permissionSet) {
> +                TorqueTurbineRolePermission rp = new 
> TorqueTurbineRolePermission();
> +                rp.setPermissionId((Integer) p.getId());
> +                rp.setRoleId(getEntityId());
> +                rp.save(con);
> +            }
> +        }
> +        // not needed
> +//        try
> +//        {
> +//          Set<TurbineUserGroupRole> userGroupRoleSet = 
> getUserGroupRoleSet();
> +//            if (userGroupRoleSet != null)
> +//            {
> +//                Criteria criteria = new Criteria();
> +//    
> +//                /* remove old entries */
> +//                criteria.where(TorqueTurbineUserGroupRolePeer.ROLE_ID, 
> getEntityId());
> +//                TorqueTurbineUserGroupRolePeer.doDelete(criteria, con);
> +//    
> +//                for (TurbineUserGroupRole ugr : userGroupRoleSet)
> +//                {
> +//                    TorqueTurbineUserGroupRole ttugr = new 
> TorqueTurbineUserGroupRole();
> +//                    ttugr.setGroupId((Integer)ugr.getGroup().getId());
> +//                    ttugr.setUserId((Integer)ugr.getUser().getId());
> +//                    ttugr.setRoleId((Integer)ugr.getRole().getId());
> +//                    ttugr.save(con);
> +//                }
> +//            }
> +//            save(con);
> +//        }
> +//        catch (Exception e)
> +//        {
> +//            throw new TorqueException(e);
> +//        }
> +    }
> +
> +    /*
> +     * (non-Javadoc)
> +     * 
> +     * @see
> +     * 
> org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity#
> +     * delete()
> +     */
> +    public void delete() throws TorqueException {
> +        TorqueTurbineRolePeer.doDelete(SimpleKey.keyFor(getEntityId()));
> +    }
> +}
>
>

-- 
Jeff Painter

CEO and Founder of JiveCast
Software and analytics, made together
https://jivecast.com

301 Fayetteville St. Unit 2301, Raleigh, NC 27601
(919) 533-9024



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to