You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by tv...@apache.org on 2012/09/07 16:34:42 UTC
svn commit: r1382049 - in
/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security:
model/basic/ model/dynamic/ spi/
Author: tv
Date: Fri Sep 7 14:34:42 2012
New Revision: 1382049
URL: http://svn.apache.org/viewvc?rev=1382049&view=rev
Log:
Fix generic return types
Modified:
turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/BasicACLFactory.java
turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/DynamicACLFactory.java
turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/DynamicAccessControlListImpl.java
turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractGroupManager.java
turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractPermissionManager.java
turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractRoleManager.java
Modified: turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/BasicACLFactory.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/BasicACLFactory.java?rev=1382049&r1=1382048&r2=1382049&view=diff
==============================================================================
--- turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/BasicACLFactory.java (original)
+++ turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/basic/BasicACLFactory.java Fri Sep 7 14:34:42 2012
@@ -27,9 +27,9 @@ import org.apache.fulcrum.security.util.
import org.apache.fulcrum.security.util.UnknownEntityException;
/**
- *
+ *
* This factory creates instance of the DynamicAccessControlList
- *
+ *
* @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
* @version $Id$
*/
@@ -37,49 +37,44 @@ public class BasicACLFactory extends Abs
{
/**
* Construct a new ACL object.
- *
+ *
* This constructs a new ACL object from the configured class and
* initializes it with the supplied roles and permissions.
- *
+ *
* @param roles
* The roles that this ACL should contain
* @param permissions
* The permissions for this ACL
- *
+ *
* @return an object implementing ACL interface.
* @throws UnknownEntityException
* if the object could not be instantiated.
*/
- private AccessControlList getAclInstance(GroupSet groupSet) throws UnknownEntityException
+ private BasicAccessControlListImpl getAclInstance(GroupSet groupSet) throws UnknownEntityException
{
- // Object[] objects = { groupSet};
- // String[] signatures = { GroupSet.class.getName()};
- AccessControlList accessControlList;
+ BasicAccessControlListImpl accessControlList;
+
try
{
- /*
- *
- * @todo I think this is overkill for now.. accessControlList =
- * (AccessControlList)
- * aclFactoryService.getInstance(aclClass.getName(), objects,
- * signatures);
- */
accessControlList = new BasicAccessControlListImpl(groupSet);
}
catch (Exception e)
{
throw new UnknownEntityException("Failed to instantiate an ACL implementation object", e);
}
+
return accessControlList;
}
- public AccessControlList getAccessControlList(User user)
+ public <T extends AccessControlList> T getAccessControlList(User user)
{
GroupSet groupSet = ((BasicUser) user).getGroups();
try
{
- return getAclInstance(groupSet);
+ @SuppressWarnings("unchecked")
+ T aclInstance = (T) getAclInstance(groupSet);
+ return aclInstance;
}
catch (UnknownEntityException uue)
{
Modified: turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/DynamicACLFactory.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/DynamicACLFactory.java?rev=1382049&r1=1382048&r2=1382049&view=diff
==============================================================================
--- turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/DynamicACLFactory.java (original)
+++ turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/DynamicACLFactory.java Fri Sep 7 14:34:42 2012
@@ -37,9 +37,9 @@ import org.apache.fulcrum.security.util.
import org.apache.fulcrum.security.util.UnknownEntityException;
/**
- *
+ *
* This factory creates instance of the DynamicAccessControlList
- *
+ *
* @author <a href="mailto:epugh@upstate.com">Eric Pugh </a>
* @author <a href="mailto:ben@gidley.co.uk">Ben Gidley </a>
* @version $Id$
@@ -49,7 +49,7 @@ public class DynamicACLFactory extends A
/**
* @see org.apache.fulcrum.security.model.ACLFactory#getAccessControlList(org.apache.fulcrum.security.entity.User)
*/
- public AccessControlList getAccessControlList(User user)
+ public <T extends AccessControlList> T getAccessControlList(User user)
{
Map<Group, RoleSet> roleSets = new HashMap<Group, RoleSet>();
Map<Role, PermissionSet> permissionSets = new HashMap<Role, PermissionSet>();
@@ -67,7 +67,9 @@ public class DynamicACLFactory extends A
try
{
- return getAclInstance(roleSets, permissionSets);
+ @SuppressWarnings("unchecked")
+ T aclInstance = (T) getAclInstance(roleSets, permissionSets);
+ return aclInstance;
}
catch (UnknownEntityException uue)
{
@@ -77,35 +79,25 @@ public class DynamicACLFactory extends A
/**
* Construct a new ACL object.
- *
+ *
* This constructs a new ACL object from the configured class and
* initializes it with the supplied roles and permissions.
- *
+ *
* @param roles
* The roles that this ACL should contain
* @param permissions
* The permissions for this ACL
- *
+ *
* @return an object implementing ACL interface.
* @throws UnknownEntityException
* if the object could not be instantiated.
*/
- private AccessControlList getAclInstance(Map<? extends Group, ? extends RoleSet> roles,
+ private DynamicAccessControlList getAclInstance(Map<? extends Group, ? extends RoleSet> roles,
Map<? extends Role, ? extends PermissionSet> permissions) throws UnknownEntityException
{
- AccessControlList accessControlList;
+ DynamicAccessControlList accessControlList;
try
{
- // Object[] objects = { roles, permissions };
- // String[] signatures = { Map.class.getName(), Map.class.getName()
- // };
- /*
- *
- * @todo I think this is overkill for now.. accessControlList =
- * (AccessControlList)
- * aclFactoryService.getInstance(aclClass.getName(), objects,
- * signatures);
- */
accessControlList = new DynamicAccessControlListImpl(roles, permissions);
}
catch (Exception e)
@@ -117,7 +109,7 @@ public class DynamicACLFactory extends A
/**
* Add delegators to the user list
- *
+ *
* @param user
* the user to add to
* @param users
@@ -142,7 +134,7 @@ public class DynamicACLFactory extends A
* Adds the passed users roles and permissions to the sets As maps overwrite
* duplicates we just put it in an let it overwrite it is probably quicker
* than checking for duplicates
- *
+ *
* @param user
* @param roleSets
* @param permissionSets
Modified: turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/DynamicAccessControlListImpl.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/DynamicAccessControlListImpl.java?rev=1382049&r1=1382048&r2=1382049&view=diff
==============================================================================
--- turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/DynamicAccessControlListImpl.java (original)
+++ turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/model/dynamic/DynamicAccessControlListImpl.java Fri Sep 7 14:34:42 2012
@@ -30,7 +30,7 @@ import org.apache.fulcrum.security.util.
/**
* This is a control class that makes it easy to find out if a particular User
* has a given Permission. It also determines if a User has a a particular Role.
- *
+ *
* @todo Need to rethink the two maps.. Why not just a single list of groups?
* That would then cascade down to all the other roles and so on..
* @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
@@ -57,7 +57,7 @@ public class DynamicAccessControlListImp
/**
* Constructs a new AccessControlList.
- *
+ *
* This class follows 'immutable' pattern - it's objects can't be modified
* once they are created. This means that the permissions the users have are
* in effect form the moment they log in to the moment they log out, and
@@ -66,7 +66,7 @@ public class DynamicAccessControlListImp
* need to invalidate his session. <br>
* The objects that constructs an AccessControlList must supply hashtables
* of role/permission sets keyed with group objects. <br>
- *
+ *
* @param roleSets
* a hashtable containing RoleSet objects keyed with Group
* objects
@@ -97,7 +97,7 @@ public class DynamicAccessControlListImp
/**
* Retrieves a set of Roles an user is assigned in a Group.
- *
+ *
* @param group
* the Group
* @return the set of Roles this user has within the Group.
@@ -114,7 +114,7 @@ public class DynamicAccessControlListImp
/**
* Retrieves a set of Roles an user is assigned in the global Group.
- *
+ *
* @return the set of Roles this user has within the global Group.
*/
public RoleSet getRoles()
@@ -124,7 +124,7 @@ public class DynamicAccessControlListImp
/**
* Retrieves a set of Permissions an user is assigned in a Group.
- *
+ *
* @param group
* the Group
* @return the set of Permissions this user has within the Group.
@@ -147,7 +147,7 @@ public class DynamicAccessControlListImp
/**
* Retrieves a set of Permissions an user is assigned in the global Group.
- *
+ *
* @return the set of Permissions this user has within the global Group.
*/
public PermissionSet getPermissions()
@@ -157,7 +157,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Role in the Group.
- *
+ *
* @param role
* the Role
* @param group
@@ -176,7 +176,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Role in any of the given Groups
- *
+ *
* @param role
* the Role
* @param groupset
@@ -204,7 +204,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Role in the Group.
- *
+ *
* @param role
* the Role
* @param group
@@ -235,7 +235,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Role in any of the given Groups
- *
+ *
* @param rolename
* the name of the Role
* @param groupset
@@ -271,7 +271,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Role
- *
+ *
* @param role
* the Role
* @return <code>true</code> if the user is assigned the Role in the global
@@ -284,7 +284,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Role .
- *
+ *
* @param role
* the Role
* @return <code>true</code> if the user is assigned the Role .
@@ -303,7 +303,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Permission in the Group.
- *
+ *
* @param permission
* the Permission
* @param group
@@ -324,7 +324,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Permission in any of the given
* Groups
- *
+ *
* @param permission
* the Permission
* @param groupset
@@ -351,7 +351,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Permission in the Group.
- *
+ *
* @param permission
* the Permission
* @param group
@@ -373,7 +373,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Permission in the Group.
- *
+ *
* @param permission
* the Permission
* @param group
@@ -394,9 +394,9 @@ public class DynamicAccessControlListImp
}
/**
- * Checks if the user is assigned a specifie Permission in any of the given
+ * Checks if the user is assigned a specific Permission in any of the given
* Groups
- *
+ *
* @param permissionName
* the name of the Permission
* @param groupset
@@ -435,7 +435,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Permission.
- *
+ *
* @param permission
* the Permission
* @return <code>true</code> if the user is assigned the Permission .
@@ -447,7 +447,7 @@ public class DynamicAccessControlListImp
/**
* Checks if the user is assigned a specific Permission in the global Group.
- *
+ *
* @param permission
* the Permission
* @return <code>true</code> if the user is assigned the Permission in the
Modified: turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractGroupManager.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractGroupManager.java?rev=1382049&r1=1382048&r2=1382049&view=diff
==============================================================================
--- turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractGroupManager.java (original)
+++ turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractGroupManager.java Fri Sep 7 14:34:42 2012
@@ -28,63 +28,62 @@ import org.apache.fulcrum.security.util.
/**
* This implementation keeps all objects in memory. This is mostly meant to help
* with testing and prototyping of ideas.
- *
+ *
* @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
* @version $Id$
*/
public abstract class AbstractGroupManager extends AbstractEntityManager implements GroupManager
{
- protected abstract Group persistNewGroup(Group group) throws DataBackendException;
+ protected abstract <T extends Group> T persistNewGroup(T group) throws DataBackendException;
/**
* Construct a blank Group object.
- *
+ *
* This method calls getGroupClass, and then creates a new object using the
* default constructor.
- *
+ *
* @return an object implementing Group interface.
* @throws DataBackendException
* if the object could not be instantiated.
*/
- public Group getGroupInstance() throws DataBackendException
+ public <T extends Group> T getGroupInstance() throws DataBackendException
{
- Group group;
try
{
- group = (Group) Class.forName(getClassName()).newInstance();
+ @SuppressWarnings("unchecked")
+ T group = (T) Class.forName(getClassName()).newInstance();
+ return group;
}
catch (Exception e)
{
throw new DataBackendException("Problem creating instance of class " + getClassName(), e);
}
-
- return group;
}
/**
* Construct a blank Group object.
- *
+ *
* This method calls getGroupClass, and then creates a new object using the
* default constructor.
- *
+ *
* @param groupName
* The name of the Group
- *
+ *
* @return an object implementing Group interface.
- *
+ *
* @throws DataBackendException
* if the object could not be instantiated.
*/
- public Group getGroupInstance(String groupName) throws DataBackendException
+ public <T extends Group> T getGroupInstance(String groupName) throws DataBackendException
{
- Group group = getGroupInstance();
+ T group = getGroupInstance();
group.setName(groupName);
return group;
}
/**
* Retrieve a Group object with specified name.
- *
+ *
* @param name
* the name of the Group.
* @return an object representing the Group with specified name.
@@ -93,9 +92,10 @@ public abstract class AbstractGroupManag
* @throws UnknownEntityException
* if the group does not exist.
*/
- public Group getGroupByName(String name) throws DataBackendException, UnknownEntityException
+ public <T extends Group> T getGroupByName(String name) throws DataBackendException, UnknownEntityException
{
- Group group = getAllGroups().getByName(name);
+ @SuppressWarnings("unchecked")
+ T group = (T) getAllGroups().getByName(name);
if (group == null)
{
throw new UnknownEntityException("The specified group does not exist");
@@ -105,20 +105,21 @@ public abstract class AbstractGroupManag
/**
* Retrieve a Group object with specified Id.
- *
+ *
* @param name
* the name of the Group.
- *
+ *
* @return an object representing the Group with specified name.
- *
+ *
* @throws UnknownEntityException
* if the permission does not exist in the database.
* @throws DataBackendException
* if there is a problem accessing the storage.
*/
- public Group getGroupById(Object id) throws DataBackendException, UnknownEntityException
+ public <T extends Group> T getGroupById(Object id) throws DataBackendException, UnknownEntityException
{
- Group group = getAllGroups().getById(id);
+ @SuppressWarnings("unchecked")
+ T group = (T) getAllGroups().getById(id);
if (group == null)
{
throw new UnknownEntityException("The specified group does not exist");
@@ -128,7 +129,7 @@ public abstract class AbstractGroupManag
/**
* Creates a new group with specified attributes.
- *
+ *
* @param group
* the object describing the group to be created.
* @return a new Group object that has id set up properly.
@@ -137,7 +138,7 @@ public abstract class AbstractGroupManag
* @throws EntityExistsException
* if the group already exists.
*/
- public synchronized Group addGroup(Group group) throws DataBackendException, EntityExistsException
+ public synchronized <T extends Group> T addGroup(T group) throws DataBackendException, EntityExistsException
{
boolean groupExists = false;
if (StringUtils.isEmpty(group.getName()))
@@ -163,9 +164,9 @@ public abstract class AbstractGroupManag
/**
* Check whether a specified group exists.
- *
+ *
* The name is used for looking up the group
- *
+ *
* @param role
* The group to be checked.
* @return true if the specified group exists
Modified: turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractPermissionManager.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractPermissionManager.java?rev=1382049&r1=1382048&r2=1382049&view=diff
==============================================================================
--- turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractPermissionManager.java (original)
+++ turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractPermissionManager.java Fri Sep 7 14:34:42 2012
@@ -28,62 +28,62 @@ import org.apache.fulcrum.security.util.
/**
* This implementation keeps all objects in memory. This is mostly meant to help
* with testing and prototyping of ideas.
- *
+ *
* @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
* @version $Id: AbstractPermissionManager.java 1372918 2012-08-14 15:19:40Z tv
* $
*/
public abstract class AbstractPermissionManager extends AbstractEntityManager implements PermissionManager
{
- protected abstract Permission persistNewPermission(Permission permission) throws DataBackendException;
+ protected abstract <T extends Permission> T persistNewPermission(T permission) throws DataBackendException;
/**
* Construct a blank Permission object.
- *
+ *
* This method calls getPermissionClass, and then creates a new object using
* the default constructor.
- *
+ *
* @return an object implementing Permission interface.
* @throws UnknownEntityException
* if the object could not be instantiated.
*/
- public Permission getPermissionInstance() throws UnknownEntityException
+ public <T extends Permission> T getPermissionInstance() throws UnknownEntityException
{
- Permission permission;
try
{
- permission = (Permission) Class.forName(getClassName()).newInstance();
+ @SuppressWarnings("unchecked")
+ T permission = (T) Class.forName(getClassName()).newInstance();
+ return permission;
}
catch (Exception e)
{
throw new UnknownEntityException("Failed to instantiate a Permission implementation object", e);
}
- return permission;
}
/**
* Construct a blank Permission object.
- *
+ *
* This method calls getPermissionClass, and then creates a new object using
* the default constructor.
- *
+ *
* @param permName
* The name of the permission.
- *
+ *
* @return an object implementing Permission interface.
* @throws UnknownEntityException
* if the object could not be instantiated.
*/
- public Permission getPermissionInstance(String permName) throws UnknownEntityException
+ public <T extends Permission> T getPermissionInstance(String permName) throws UnknownEntityException
{
- Permission perm = getPermissionInstance();
+ T perm = getPermissionInstance();
perm.setName(permName);
return perm;
}
/**
* Retrieve a Permission object with specified name.
- *
+ *
* @param name
* the name of the Permission.
* @return an object representing the Permission with specified name.
@@ -92,9 +92,10 @@ public abstract class AbstractPermission
* @throws UnknownEntityException
* if the permission does not exist.
*/
- public Permission getPermissionByName(String name) throws DataBackendException, UnknownEntityException
+ public <T extends Permission> T getPermissionByName(String name) throws DataBackendException, UnknownEntityException
{
- Permission permission = getAllPermissions().getByName(name);
+ @SuppressWarnings("unchecked")
+ T permission = (T) getAllPermissions().getByName(name);
if (permission == null)
{
throw new UnknownEntityException("The specified permission does not exist");
@@ -104,20 +105,21 @@ public abstract class AbstractPermission
/**
* Retrieve a Permission object with specified Id.
- *
+ *
* @param name
* the name of the Permission.
- *
+ *
* @return an object representing the Permission with specified name.
- *
+ *
* @throws UnknownEntityException
* if the permission does not exist in the database.
* @throws DataBackendException
* if there is a problem accessing the storage.
*/
- public Permission getPermissionById(Object id) throws DataBackendException, UnknownEntityException
+ public <T extends Permission> T getPermissionById(Object id) throws DataBackendException, UnknownEntityException
{
- Permission permission = getAllPermissions().getById(id);
+ @SuppressWarnings("unchecked")
+ T permission = (T) getAllPermissions().getById(id);
if (permission == null)
{
throw new UnknownEntityException("The specified permission does not exist");
@@ -127,7 +129,7 @@ public abstract class AbstractPermission
/**
* Creates a new permission with specified attributes.
- *
+ *
* @param permission
* the object describing the permission to be created.
* @return a new Permission object that has id set up properly.
@@ -136,7 +138,7 @@ public abstract class AbstractPermission
* @throws EntityExistsException
* if the permission already exists.
*/
- public synchronized Permission addPermission(Permission permission) throws DataBackendException, EntityExistsException
+ public synchronized <T extends Permission> T addPermission(T permission) throws DataBackendException, EntityExistsException
{
boolean permissionExists = false;
if (StringUtils.isEmpty(permission.getName()))
@@ -165,10 +167,10 @@ public abstract class AbstractPermission
}
/**
- * Check whether a specifieds permission exists.
- *
+ * Check whether a specified permission exists.
+ *
* The name is used for looking up the permission
- *
+ *
* @param role
* The permission to be checked.
* @return true if the specified permission exists
Modified: turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractRoleManager.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractRoleManager.java?rev=1382049&r1=1382048&r2=1382049&view=diff
==============================================================================
--- turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractRoleManager.java (original)
+++ turbine/fulcrum/trunk/security/api/src/java/org/apache/fulcrum/security/spi/AbstractRoleManager.java Fri Sep 7 14:34:42 2012
@@ -26,66 +26,65 @@ import org.apache.fulcrum.security.util.
import org.apache.fulcrum.security.util.UnknownEntityException;
/**
- *
+ *
* This implementation keeps all objects in memory. This is mostly meant to help
* with testing and prototyping of ideas.
- *
+ *
* @author <a href="mailto:epugh@upstate.com">Eric Pugh</a>
* @version $Id$
*/
public abstract class AbstractRoleManager extends AbstractEntityManager implements RoleManager
{
- protected abstract Role persistNewRole(Role role) throws DataBackendException;
+ protected abstract <T extends Role> T persistNewRole(T role) throws DataBackendException;
/**
* Construct a blank Role object.
- *
+ *
* This method calls getRoleClass, and then creates a new object using the
* default constructor.
- *
+ *
* @return an object implementing Role interface.
* @throws DataBackendException
* if the object could not be instantiated.
*/
- public Role getRoleInstance() throws DataBackendException
+ public <T extends Role> T getRoleInstance() throws DataBackendException
{
- Role role;
try
{
- role = (Role) Class.forName(getClassName()).newInstance();
+ @SuppressWarnings("unchecked")
+ T role = (T) Class.forName(getClassName()).newInstance();
+ return role;
}
catch (Exception e)
{
throw new DataBackendException("Problem creating instance of class " + getClassName(), e);
}
-
- return role;
}
/**
* Construct a blank Role object.
- *
+ *
* This method calls getRoleClass, and then creates a new object using the
* default constructor.
- *
+ *
* @param roleName
* The name of the role.
- *
+ *
* @return an object implementing Role interface.
- *
+ *
* @throws DataBackendException
* if the object could not be instantiated.
*/
- public Role getRoleInstance(String roleName) throws DataBackendException
+ public <T extends Role> T getRoleInstance(String roleName) throws DataBackendException
{
- Role role = getRoleInstance();
+ T role = getRoleInstance();
role.setName(roleName);
return role;
}
/**
* Retrieve a Role object with specified name.
- *
+ *
* @param name
* the name of the Role.
* @return an object representing the Role with specified name.
@@ -94,9 +93,10 @@ public abstract class AbstractRoleManage
* @throws UnknownEntityException
* if the role does not exist.
*/
- public Role getRoleByName(String name) throws DataBackendException, UnknownEntityException
+ public <T extends Role> T getRoleByName(String name) throws DataBackendException, UnknownEntityException
{
- Role role = getAllRoles().getByName(name);
+ @SuppressWarnings("unchecked")
+ T role = (T) getAllRoles().getByName(name);
if (role == null)
{
throw new UnknownEntityException("The specified role does not exist");
@@ -106,20 +106,21 @@ public abstract class AbstractRoleManage
/**
* Retrieve a Role object with specified Id.
- *
+ *
* @param name
* the name of the Role.
- *
+ *
* @return an object representing the Role with specified name.
- *
+ *
* @throws UnknownEntityException
* if the permission does not exist in the database.
* @throws DataBackendException
* if there is a problem accessing the storage.
*/
- public Role getRoleById(Object id) throws DataBackendException, UnknownEntityException
+ public <T extends Role> T getRoleById(Object id) throws DataBackendException, UnknownEntityException
{
- Role role = getAllRoles().getById(id);
+ @SuppressWarnings("unchecked")
+ T role = (T) getAllRoles().getById(id);
if (role == null)
{
throw new UnknownEntityException("The specified role does not exist");
@@ -129,7 +130,7 @@ public abstract class AbstractRoleManage
/**
* Creates a new role with specified attributes.
- *
+ *
* @param role
* the object describing the role to be created.
* @return a new Role object that has id set up properly.
@@ -138,7 +139,7 @@ public abstract class AbstractRoleManage
* @throws EntityExistsException
* if the role already exists.
*/
- public synchronized Role addRole(Role role) throws DataBackendException, EntityExistsException
+ public synchronized <T extends Role> T addRole(T role) throws DataBackendException, EntityExistsException
{
boolean roleExists = false;
if (StringUtils.isEmpty(role.getName()))
@@ -169,9 +170,9 @@ public abstract class AbstractRoleManage
/**
* Check whether a specified role exists.
- *
+ *
* The name is used for looking up the role
- *
+ *
* @param role
* The role to be checked.
* @return true if the specified role exists
@@ -182,5 +183,4 @@ public abstract class AbstractRoleManage
{
return checkExists(role.getName());
}
-
}