You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by cp...@apache.org on 2016/11/28 21:13:29 UTC
[02/10] directory-fortress-core git commit: updated mgr and property
p methods, added property provider to all relevant DAOs
updated mgr and property p methods, added property provider to all relevant DAOs
Project: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/commit/a0b871af
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/a0b871af
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/a0b871af
Branch: refs/heads/master
Commit: a0b871af73186b9355d8bd77fd2f194ccf2412c1
Parents: 3b7de7d
Author: clp207 <cl...@psu.edu>
Authored: Thu Oct 27 11:22:36 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Thu Oct 27 11:22:36 2016 -0400
----------------------------------------------------------------------
.../directory/fortress/core/GlobalErrIds.java | 8 ++
.../directory/fortress/core/PropertyMgr.java | 32 ++++++-
.../fortress/core/impl/AdminRoleDAO.java | 15 +++-
.../directory/fortress/core/impl/GroupDAO.java | 16 +++-
.../directory/fortress/core/impl/PermDAO.java | 6 +-
.../fortress/core/impl/PermObjDAO.java | 23 +++++
.../directory/fortress/core/impl/PermOpDAO.java | 23 +++++
.../fortress/core/impl/PropertyDAO.java | 12 +++
.../fortress/core/impl/PropertyMgrImpl.java | 90 +++++++++++++++++---
.../directory/fortress/core/impl/PropertyP.java | 39 +++++++--
10 files changed, 238 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a0b871af/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java b/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
index c392717..414bdb4 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
@@ -1724,5 +1724,13 @@ public final class GlobalErrIds
*/
public static final int RCON_NULL = 10401;
+ /**
+ * 10500's - Property Management Error Ids
+ */
+
+ /**
+ * The entity does not support properties
+ */
+ public static final int ENTITY_PROP_NOT_SUPPORTED = 10501;
}
http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a0b871af/src/main/java/org/apache/directory/fortress/core/PropertyMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/PropertyMgr.java b/src/main/java/org/apache/directory/fortress/core/PropertyMgr.java
index 9e7ba34..d244546 100644
--- a/src/main/java/org/apache/directory/fortress/core/PropertyMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/PropertyMgr.java
@@ -25,11 +25,41 @@ import org.apache.directory.fortress.core.model.FortEntity;
public interface PropertyMgr
{
+ /**
+ * Adds properties (ftProps) to a supplied fortress entity (Group, Role, AdminRole, Permission, PermObj)
+ *
+ * @param entity Entity to add properties
+ * @param props Properties to add to entity
+ * @return Updated entity
+ * @throws SecurityException
+ */
FortEntity add( FortEntity entity, Properties props ) throws SecurityException;
+ /**
+ * Update properties (ftProps) to a supplied fortress entity (Group, Role, AdminRole, Permission, PermObj)
+ *
+ * @param entity Entity to update properties
+ * @param props Properties to update to entity
+ * @return Updated entity
+ * @throws SecurityException
+ */
FortEntity update( FortEntity entity, Properties props ) throws SecurityException;
+ /**
+ * Delete properties (ftProps) from a supplied fortress entity (Group, Role, AdminRole, Permission, PermObj)
+ *
+ * @param entity Entity to delete properties from
+ * @param props Properties to delete from entity
+ * @throws SecurityException
+ */
void delete( FortEntity entity, Properties props ) throws SecurityException;
- String get( FortEntity entity, String key ) throws SecurityException;
+ /**
+ * Retrieve properties (ftProps) from a supplied fortress entity (Group, Role, AdminRole, Permission, PermObj)
+ *
+ * @param entity Entity to return properties from
+ * @return Properties for the supplied entity
+ * @throws SecurityException
+ */
+ Properties get( FortEntity entity ) throws SecurityException;
}
http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a0b871af/src/main/java/org/apache/directory/fortress/core/impl/AdminRoleDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/AdminRoleDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/AdminRoleDAO.java
index c33c029..4640f08 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/AdminRoleDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/AdminRoleDAO.java
@@ -46,6 +46,7 @@ import org.apache.directory.fortress.core.UpdateException;
import org.apache.directory.fortress.core.ldap.LdapDataProvider;
import org.apache.directory.fortress.core.model.AdminRole;
import org.apache.directory.fortress.core.model.ConstraintUtil;
+import org.apache.directory.fortress.core.model.FortEntity;
import org.apache.directory.fortress.core.model.Graphable;
import org.apache.directory.fortress.core.model.ObjectFactory;
import org.apache.directory.fortress.core.model.Role;
@@ -107,7 +108,7 @@ import org.apache.directory.ldap.client.api.LdapConnection;
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-final class AdminRoleDAO extends LdapDataProvider
+final class AdminRoleDAO extends LdapDataProvider implements PropertyProvider<AdminRole>
{
private static final String ROLE_OCCUPANT = "roleOccupant";
private static final String ROLE_OSP = "ftOSP";
@@ -686,10 +687,18 @@ final class AdminRoleDAO extends LdapDataProvider
return entity;
}
-
- private String getDn( AdminRole adminRole )
+
+ @Override
+ public String getDn( AdminRole adminRole )
{
return SchemaConstants.CN_AT + "=" + adminRole.getName() + ","
+ getRootDn( adminRole.getContextId(), GlobalIds.ADMIN_ROLE_ROOT );
}
+
+
+ @Override
+ public FortEntity getEntity( AdminRole entity ) throws FinderException
+ {
+ return this.getEntity( entity );
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a0b871af/src/main/java/org/apache/directory/fortress/core/impl/GroupDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/GroupDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/GroupDAO.java
index 08c332b..3dea0fe 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/GroupDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/GroupDAO.java
@@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory;
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-final class GroupDAO extends LdapDataProvider
+final class GroupDAO extends LdapDataProvider implements PropertyProvider<Group>
{
private static final String CLS_NM = GroupDAO.class.getName();
private static final Logger LOG = LoggerFactory.getLogger( CLS_NM );
@@ -561,4 +561,18 @@ final class GroupDAO extends LdapDataProvider
{
return SchemaConstants.CN_AT + "=" + name + "," + getRootDn( contextId, GlobalIds.GROUP_ROOT );
}
+
+
+ @Override
+ public String getDn( Group entity )
+ {
+ return getDn( entity.getName(), entity.getContextId() );
+ }
+
+
+ @Override
+ public FortEntity getEntity( Group entity ) throws FinderException
+ {
+ return this.get( entity );
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a0b871af/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
index cbe9912..9b4f4e0 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
@@ -154,7 +154,7 @@ import org.apache.directory.ldap.client.api.LdapConnection;
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-final class PermDAO extends LdapDataProvider
+class PermDAO extends LdapDataProvider
{
/*
* *************************************************************************
@@ -2098,14 +2098,14 @@ final class PermDAO extends LdapDataProvider
}
- private String getDn( Permission pOp, String contextId )
+ protected String getDn( Permission pOp, String contextId )
{
return getOpRdn( pOp.getOpName(), pOp.getObjId() ) + "," + GlobalIds.POBJ_NAME + "=" + pOp.getObjName()
+ "," + getRootDn( pOp.isAdmin(), contextId );
}
- private String getDn( PermObj pObj, String contextId )
+ protected String getDn( PermObj pObj, String contextId )
{
return GlobalIds.POBJ_NAME + "=" + pObj.getObjName() + "," + getRootDn( pObj.isAdmin(), contextId );
}
http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a0b871af/src/main/java/org/apache/directory/fortress/core/impl/PermObjDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermObjDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/PermObjDAO.java
new file mode 100644
index 0000000..05be56b
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermObjDAO.java
@@ -0,0 +1,23 @@
+
+package org.apache.directory.fortress.core.impl;
+
+import org.apache.directory.fortress.core.FinderException;
+import org.apache.directory.fortress.core.model.FortEntity;
+import org.apache.directory.fortress.core.model.PermObj;
+
+public class PermObjDAO extends PermDAO implements PropertyProvider<PermObj>
+{
+
+ @Override
+ public String getDn( PermObj entity )
+ {
+ return this.getDn( entity, entity.getContextId() );
+ }
+
+ @Override
+ public FortEntity getEntity( PermObj entity ) throws FinderException
+ {
+ return this.getPerm( entity );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a0b871af/src/main/java/org/apache/directory/fortress/core/impl/PermOpDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermOpDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/PermOpDAO.java
new file mode 100644
index 0000000..d368ffd
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermOpDAO.java
@@ -0,0 +1,23 @@
+
+package org.apache.directory.fortress.core.impl;
+
+import org.apache.directory.fortress.core.FinderException;
+import org.apache.directory.fortress.core.model.FortEntity;
+import org.apache.directory.fortress.core.model.Permission;
+
+public class PermOpDAO extends PermDAO implements PropertyProvider<Permission>
+{
+
+ @Override
+ public String getDn( Permission entity )
+ {
+ return this.getDn( entity, entity.getContextId() );
+ }
+
+ @Override
+ public FortEntity getEntity( Permission entity ) throws FinderException
+ {
+ return this.getPerm( entity );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a0b871af/src/main/java/org/apache/directory/fortress/core/impl/PropertyDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PropertyDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/PropertyDAO.java
index d8febdf..e54aa69 100644
--- a/src/main/java/org/apache/directory/fortress/core/impl/PropertyDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PropertyDAO.java
@@ -68,4 +68,16 @@ public class PropertyDAO extends LdapDataProvider
return propProvider.getEntity( entity );
}
+
+ public FortEntity updateProperties( FortEntity entity, Properties properties, PropertyProvider propProvider ) throws UpdateException, FinderException{
+ return null;
+ }
+
+ public void deleteProperties( FortEntity entity, Properties properties, PropertyProvider propProvider ) throws UpdateException, FinderException{
+
+ }
+
+ public Properties getProperties( FortEntity entity, PropertyProvider propProvider ) throws FinderException{
+ return null;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a0b871af/src/main/java/org/apache/directory/fortress/core/impl/PropertyMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PropertyMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/PropertyMgrImpl.java
index 3e55e2f..badeed2 100644
--- a/src/main/java/org/apache/directory/fortress/core/impl/PropertyMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PropertyMgrImpl.java
@@ -22,10 +22,15 @@ package org.apache.directory.fortress.core.impl;
import java.io.Serializable;
import java.util.Properties;
+import org.apache.directory.fortress.core.GlobalErrIds;
import org.apache.directory.fortress.core.PropertyMgr;
import org.apache.directory.fortress.core.ReviewMgr;
import org.apache.directory.fortress.core.SecurityException;
+import org.apache.directory.fortress.core.model.AdminRole;
import org.apache.directory.fortress.core.model.FortEntity;
+import org.apache.directory.fortress.core.model.Group;
+import org.apache.directory.fortress.core.model.PermObj;
+import org.apache.directory.fortress.core.model.Permission;
import org.apache.directory.fortress.core.model.Role;
public class PropertyMgrImpl extends Manageable implements PropertyMgr, Serializable
@@ -33,6 +38,9 @@ public class PropertyMgrImpl extends Manageable implements PropertyMgr, Serializ
private PropertyP propP = new PropertyP();
+ /**
+ * {@inheritDoc}
+ */
@Override
public FortEntity add( FortEntity entity, Properties props ) throws SecurityException
{
@@ -41,35 +49,69 @@ public class PropertyMgrImpl extends Manageable implements PropertyMgr, Serializ
return propP.addProperties( entity, props );
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public FortEntity update( FortEntity entity, Properties props ) throws SecurityException
{
- // TODO Auto-generated method stub
- return null;
+ checkPropertyUpdateAccess( entity );
+ entity.setContextId( this.contextId );
+ return propP.updateProperties( entity, props );
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public void delete( FortEntity entity, Properties props ) throws SecurityException
{
- // TODO Auto-generated method stub
-
+ checkPropertyUpdateAccess( entity );
+ entity.setContextId( this.contextId );
+ propP.deleteProperties( entity, props );
}
+ /**
+ * {@inheritDoc}
+ */
@Override
- public String get( FortEntity entity, String key ) throws SecurityException
+ public Properties get( FortEntity entity ) throws SecurityException
{
- // TODO Auto-generated method stub
- return null;
+ checkPropertyGetAccess( entity );
+ entity.setContextId( this.contextId );
+ return propP.getProperties( entity );
}
private void checkPropertyUpdateAccess( FortEntity entity ) throws SecurityException{
if( entity instanceof Role ){
checkAccess( AdminMgrImpl.class.getName(), "updateRole" );
}
- //TODO: add checks for other instances
+ else if( entity instanceof AdminRole ){
+ checkAccess( DelAdminMgrImpl.class.getName(), "updateRole" );
+ }
+ else if( entity instanceof Group ){
+ checkAccess( GroupMgrImpl.class.getName(), "update" );
+ }
+ else if( entity instanceof PermObj ){
+ PermObj pObj = (PermObj)entity;
+ if(pObj.isAdmin()){
+ checkAccess( DelAdminMgrImpl.class.getName(), "updatePermObj" );
+ }
+ else{
+ checkAccess( AdminMgrImpl.class.getName(), "updatePermObj" );
+ }
+ }
+ else if( entity instanceof Permission ){
+ Permission perm = (Permission)entity;
+ if(perm.isAdmin()){
+ checkAccess( DelAdminMgrImpl.class.getName(), "updatePermission" );
+ }
+ else{
+ checkAccess( AdminMgrImpl.class.getName(), "updatePermission" );
+ }
+ }
else{
- //TODO: valid error code
- throw new SecurityException( 1, "Properties not allowed on supplied entity" );
+ throw new SecurityException( GlobalErrIds.ENTITY_PROP_NOT_SUPPORTED, "Properties not allowed on supplied entity" );
}
}
@@ -77,10 +119,32 @@ public class PropertyMgrImpl extends Manageable implements PropertyMgr, Serializ
if( entity instanceof Role ){
checkAccess( ReviewMgrImpl.class.getName(), "readRole" );
}
- //TODO: add checks for other instances
+ else if( entity instanceof AdminRole ){
+ checkAccess( DelReviewMgrImpl.class.getName(), "readRole" );
+ }
+ else if( entity instanceof Group ){
+ checkAccess( GroupMgrImpl.class.getName(), "read" );
+ }
+ else if( entity instanceof PermObj ){
+ PermObj pObj = (PermObj)entity;
+ if(pObj.isAdmin()){
+ checkAccess( DelReviewMgrImpl.class.getName(), "readPermObj" );
+ }
+ else{
+ checkAccess( ReviewMgrImpl.class.getName(), "readPermObj" );
+ }
+ }
+ else if( entity instanceof Permission ){
+ Permission perm = (Permission)entity;
+ if(perm.isAdmin()){
+ checkAccess( DelReviewMgrImpl.class.getName(), "readPermission" );
+ }
+ else{
+ checkAccess( ReviewMgrImpl.class.getName(), "readPermission" );
+ }
+ }
else{
- //TODO: valid error code
- throw new SecurityException( 1, "Properties not allowed on supplied entity" );
+ throw new SecurityException( GlobalErrIds.ENTITY_PROP_NOT_SUPPORTED, "Properties not allowed on supplied entity" );
}
}
http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a0b871af/src/main/java/org/apache/directory/fortress/core/impl/PropertyP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PropertyP.java b/src/main/java/org/apache/directory/fortress/core/impl/PropertyP.java
index 84985dc..1b9609c 100644
--- a/src/main/java/org/apache/directory/fortress/core/impl/PropertyP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PropertyP.java
@@ -23,27 +23,56 @@ import java.util.Properties;
import org.apache.directory.fortress.core.FinderException;
import org.apache.directory.fortress.core.UpdateException;
+import org.apache.directory.fortress.core.model.AdminRole;
import org.apache.directory.fortress.core.model.FortEntity;
+import org.apache.directory.fortress.core.model.Group;
+import org.apache.directory.fortress.core.model.PermObj;
+import org.apache.directory.fortress.core.model.Permission;
import org.apache.directory.fortress.core.model.Role;
public class PropertyP
{
private PropertyDAO propDAO = new PropertyDAO();
private RoleDAO rDAO = new RoleDAO();
+ private AdminRoleDAO arDAO = new AdminRoleDAO();
+ private GroupDAO gDAO = new GroupDAO();
+ private PermOpDAO popDAO = new PermOpDAO();
+ private PermObjDAO pobjDAO = new PermObjDAO();
- public FortEntity addProperties( FortEntity entity, Properties props ) throws UpdateException, FinderException {
-
+ public FortEntity addProperties( FortEntity entity, Properties props ) throws UpdateException, FinderException {
return propDAO.addProperties( entity, props, this.getPropertyProvider( entity ) );
}
+ public FortEntity updateProperties( FortEntity entity, Properties props ) throws UpdateException, FinderException {
+ return propDAO.updateProperties( entity, props, this.getPropertyProvider( entity ) );
+ }
+
+ public void deleteProperties( FortEntity entity, Properties props ) throws UpdateException, FinderException {
+ propDAO.deleteProperties( entity, props, this.getPropertyProvider( entity ) );
+ }
+
+ public Properties getProperties( FortEntity entity ) throws FinderException {
+ return propDAO.getProperties( entity, this.getPropertyProvider( entity ) );
+ }
+
private PropertyProvider getPropertyProvider( FortEntity entity ){
if( entity instanceof Role ){
return rDAO;
}
- //TODO: add rest of DAOs
+ else if( entity instanceof AdminRole ){
+ return arDAO;
+ }
+ else if( entity instanceof Group ){
+ return gDAO;
+ }
+ else if( entity instanceof PermObj ){
+ return pobjDAO;
+ }
+ else if( entity instanceof Permission ){
+ return popDAO;
+ }
else{
- //TODO: throw exception
- return null;
+ throw new IllegalArgumentException( "Provided entity does not have an associated property provider DAO" );
}
}
}