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/10/06 17:49:18 UTC

[01/43] directory-fortress-core git commit: changed constaints on userrole to list

Repository: directory-fortress-core
Updated Branches:
  refs/heads/master cb34ef224 -> 33b49fe5f


changed constaints on userrole to list


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/e3a74de4
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/e3a74de4
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/e3a74de4

Branch: refs/heads/master
Commit: e3a74de4a025b010b35723da7a7f8fbdaffbfa5e
Parents: b5886da
Author: clp207 <cl...@psu.edu>
Authored: Mon Feb 1 16:56:24 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/model/RoleConstraint.java    |  3 +--
 .../apache/directory/fortress/core/model/UserRole.java   | 11 ++++++-----
 .../directory/fortress/core/impl/ReviewMgrImplTest.java  |  2 +-
 3 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e3a74de4/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
index 5b76178..b893e4a 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
@@ -38,8 +38,7 @@ public class RoleConstraint {
 
 	public void setPaSetName(String paSetName) {
 		this.paSetName = paSetName;
-	}
-	
+	}	
 	
 	//BANK_USER$seq$0type$filter$ecomm.merchant.id$AccountId=12345&WithdrawLimit=500
 	public String getRawData(UserRole uRole){

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e3a74de4/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/UserRole.java b/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
index 11e4404..52d639d 100755
--- a/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
@@ -21,7 +21,8 @@ package org.apache.directory.fortress.core.model;
 
 
 import java.io.Serializable;
-import java.util.HashSet;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Set;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -93,7 +94,7 @@ public class UserRole extends FortEntity implements Serializable, Constraint
     @XmlElement( nillable = true )
     private Set<String> parents;
     @XmlElement( nillable = true )
-    private Set<RoleConstraint> roleConstraints;
+    private List<RoleConstraint> roleConstraints;
 
     /**
      * Default constructor is used by internal Fortress classes.
@@ -644,15 +645,15 @@ public class UserRole extends FortEntity implements Serializable, Constraint
     }
 
 
-	public Set<RoleConstraint> getRoleConstraints() {
+	public List<RoleConstraint> getRoleConstraints() {
 		if(roleConstraints == null){
-			roleConstraints = new HashSet<RoleConstraint>();
+			roleConstraints = new ArrayList<RoleConstraint>();
 		}
 		return roleConstraints;
 	}
 
 
-	public void setRoleConstraints(Set<RoleConstraint> roleConstraints) {
+	public void setRoleConstraints(List<RoleConstraint> roleConstraints) {
 		this.roleConstraints = roleConstraints;
 	}
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e3a74de4/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
index b6371e5..d9a9c4d 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
@@ -1628,7 +1628,7 @@ public class ReviewMgrImplTest extends TestCase
     			if(ur.getName().equals(role.getName())){
     				uraFound = true;
     				
-    				Set<RoleConstraint> rcs = ur.getRoleConstraints();
+    				List<RoleConstraint> rcs = ur.getRoleConstraints();
     				for(RoleConstraint r : rcs){
     					if(r.getPaSetName().equals(rc.getPaSetName())){
     						urcFound = true;


[38/43] directory-fortress-core git commit: Merge branch 'master' into feature/addPermAttrAndUserRoleConstraints

Posted by cp...@apache.org.
Merge branch 'master' into feature/addPermAttrAndUserRoleConstraints


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/e1d934e3
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/e1d934e3
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/e1d934e3

Branch: refs/heads/master
Commit: e1d934e3e01adc04ec30947fa4a3b685f30b5c1a
Parents: 4561ac4 1a7d04d
Author: clp207 <cl...@psu.edu>
Authored: Thu Sep 15 08:15:44 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Thu Sep 15 08:15:44 2016 -0400

----------------------------------------------------------------------
 README-CONFIG.md                                |   5 +-
 README-QUICKSTART-APACHEDS.md                   |  32 +--
 README-QUICKSTART-SLAPD.md                      |  32 +--
 README-TEN-MINUTE-GUIDE.md                      |   2 +-
 README.md                                       |   2 +-
 config/fortress.properties.src                  |   2 +-
 docker/run-tests.sh                             |   9 +
 ldap/schema/fortress.schema                     |   5 +-
 pom.xml                                         |  25 +--
 .../directory/fortress/core/GlobalIds.java      |   5 +
 .../directory/fortress/core/RestException.java  |   2 +-
 .../fortress/core/SecurityException.java        |   5 +-
 .../fortress/core/doc-files/apache-tomcat.html  |  18 +-
 .../fortress/core/impl/AdminMgrImpl.java        |   2 -
 .../directory/fortress/core/impl/GroupDAO.java  |   4 +
 .../fortress/core/impl/GroupMgrImpl.java        |  61 +++++-
 .../directory/fortress/core/impl/HierUtil.java  |  86 --------
 .../fortress/core/impl/OrgUnitDAO.java          |  18 ++
 .../directory/fortress/core/impl/PermDAO.java   |  17 +-
 .../fortress/core/impl/ReviewMgrImpl.java       |   9 +-
 .../directory/fortress/core/impl/RoleDAO.java   |   2 +-
 .../core/ldap/LdapConnectionProvider.java       | 196 ++++++++++++-------
 .../directory/fortress/core/ldap/LdapUtil.java  | 175 ++++++++++++-----
 .../fortress/core/model/AdminRole.java          |   2 +-
 .../core/model/AdminRoleRelationship.java       |   2 +-
 .../fortress/core/model/FortRequest.java        |   2 +-
 .../fortress/core/model/FortResponse.java       |   2 +-
 .../directory/fortress/core/model/Group.java    |  81 +++++++-
 .../directory/fortress/core/model/Hier.java     |   2 +-
 .../directory/fortress/core/model/OrgUnit.java  |   2 +-
 .../core/model/OrgUnitRelationship.java         |   2 +-
 .../fortress/core/model/PermGrant.java          |   2 +-
 .../directory/fortress/core/model/PermObj.java  |   6 +-
 .../fortress/core/model/Permission.java         |   4 +-
 .../directory/fortress/core/model/Props.java    |   2 +-
 .../directory/fortress/core/model/Role.java     |  33 +++-
 .../directory/fortress/core/model/RolePerm.java |   2 +-
 .../fortress/core/model/RoleRelationship.java   |   2 +-
 .../directory/fortress/core/model/User.java     |   6 +-
 .../fortress/core/rest/AccessMgrRestImpl.java   |   2 +-
 .../fortress/core/rest/AdminMgrRestImpl.java    |   2 +-
 .../fortress/core/rest/AuditMgrRestImpl.java    |   2 +-
 .../fortress/core/rest/ConfigMgrRestImpl.java   |   2 +-
 .../core/rest/DelAccessMgrRestImpl.java         |   2 +-
 .../fortress/core/rest/DelAdminMgrRestImpl.java |   2 +-
 .../core/rest/DelReviewMgrRestImpl.java         |   2 +-
 .../directory/fortress/core/rest/HttpIds.java   |   2 +-
 .../fortress/core/rest/PwPolicyMgrRestImpl.java |   2 +-
 .../directory/fortress/core/rest/RestUtils.java |  11 +-
 .../fortress/core/rest/ReviewMgrRestImpl.java   |   2 +-
 .../directory/fortress/core/rest/package.html   |   2 +-
 .../fortress/core/GroupMgrConsole.java          |  25 ++-
 52 files changed, 580 insertions(+), 344 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e1d934e3/ldap/schema/fortress.schema
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e1d934e3/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e1d934e3/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e1d934e3/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
----------------------------------------------------------------------
diff --cc src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
index 623dbec,f2a7eeb..5788c61
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
@@@ -161,12 -158,9 +161,11 @@@ final class PermDAO extends LdapDataPro
        *  **  OpenAccessMgr PERMISSION STATICS
        *  ************************************************************************
        */
-     private static final String TYPE = "ftType";
      private static final String PERM_OBJ_OBJECT_CLASS_NAME = "ftObject";
      private static final String PERM_OP_OBJECT_CLASS_NAME = "ftOperation";
 -
 +    private static final String PERMISSION_ATTRIBUTE_SET_OBJECT_CLASS_NAME = "ftAttributeSet";
 +    private static final String PERMISSION_ATTRIBUTE_OBJECT_CLASS_NAME = "ftAttribute";
 +    
      private static final String PERM_OBJ_OBJ_CLASS[] =
          {
              SchemaConstants.TOP_OC,
@@@ -198,37 -191,17 +197,37 @@@
              SchemaConstants.DESCRIPTION_AT,
              SchemaConstants.OU_AT,
              GlobalIds.POBJ_ID,
-             TYPE,
+             GlobalIds.TYPE,
              ROLES,
              USERS,
 -            GlobalIds.PROPS
 +            GlobalIds.PROPS,
 +            PERMISSION_ATTRIBUTE_SET
      };
  
      private static final String[] PERMISION_OBJ_ATRS =
          {
-             GlobalIds.FT_IID, GlobalIds.POBJ_NAME, SchemaConstants.DESCRIPTION_AT, SchemaConstants.OU_AT, TYPE,
+             GlobalIds.FT_IID, GlobalIds.POBJ_NAME, SchemaConstants.DESCRIPTION_AT, SchemaConstants.OU_AT, GlobalIds.TYPE,
              GlobalIds.PROPS
      };
 +    
 +    private static final String[] PERMISION_ATTRIBUTE_SET_ATRS =
 +    {
 +        GlobalIds.FT_IID, SchemaConstants.DESCRIPTION_AT, SchemaConstants.CN_AT, GlobalIds.FT_PERMISSION_ATTRIBUTE_SET_TYPE
 +    };
 +    
 +    private static final String[] PERMISION_ATTRIBUTE_ATRS =
 +    {
 +        GlobalIds.FT_IID, 
 +        GlobalIds.FT_PERMISSION_ATTRIBUTE, 
 +        SchemaConstants.DESCRIPTION_AT, 
 +        SchemaConstants.CN_AT, 
 +        GlobalIds.FT_PERMISSION_ATTRIBUTE_SET,
 +        GlobalIds.FT_PERMISSION_ATTRIBUTE_DATA_TYPE,
 +        GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_OPERATOR,
 +        GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_STRATEGY,
 +        GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_VALUE,
 +        GlobalIds.FT_PERMISSION_ATTRIBUTE_VALID_VALUES
 +    };
  
      public PermDAO(){
          super();
@@@ -441,9 -414,9 +440,9 @@@
              // type is optional:
              if ( StringUtils.isNotEmpty( entity.getType() ) )
              {
-                 entry.add( TYPE, entity.getType() );
+                 entry.add( GlobalIds.TYPE, entity.getType() );
              }
 -
 +            
              // These are multi-valued attributes, use the util function to load:
              // These items are optional as well.  The utility function will return quietly if no items are loaded into collection:
              loadAttrs( entity.getRoles(), entry, ROLES );
@@@ -724,16 -482,8 +723,16 @@@
              {
  
                  mods.add( new DefaultModification(
-                     ModificationOperation.REPLACE_ATTRIBUTE, TYPE, entity.getType() ) );
+                     ModificationOperation.REPLACE_ATTRIBUTE, GlobalIds.TYPE, entity.getType() ) );
              }
 +            
 +            if ( CollectionUtils.isNotEmpty( entity.getPaSets() ) )
 +            {
 +                for(String paSetName : entity.getPaSets() ){
 +                    mods.add( new DefaultModification(
 +                        ModificationOperation.REPLACE_ATTRIBUTE, PERMISSION_ATTRIBUTE_SET, paSetName ) );
 +                }
 +            }
  
              // These are multi-valued attributes, use the util function to load:
              loadAttrs( entity.getRoles(), mods, ROLES );
@@@ -1415,11 -1025,10 +1414,11 @@@
          entity.setInternalId( getAttribute( le, GlobalIds.FT_IID ) );
          entity.setRoles( getAttributeSet( le, ROLES ) );
          entity.setUsers( getAttributeSet( le, USERS ) );
-         entity.setType( getAttribute( le, TYPE ) );
+         entity.setType( getAttribute( le, GlobalIds.TYPE ) );
          entity.setDescription( getAttribute( le, SchemaConstants.DESCRIPTION_AT ) );
 -        entity.addProperties( PropUtil.getProperties( getAttributes( le, GlobalIds.PROPS ) ) );
 +        entity.addProperties( PropUtil.getProperties( getAttributes( le, GlobalIds.PROPS ) ) );        
          entity.setAdmin( isAdmin );
 +        entity.setPaSets( getAttributeSet(le, GlobalIds.FT_PERMISSION_ATTRIBUTE_SET ) );
  
          if ( le != null )
          {

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e1d934e3/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e1d934e3/src/main/java/org/apache/directory/fortress/core/model/Permission.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e1d934e3/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e1d934e3/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
----------------------------------------------------------------------


[28/43] directory-fortress-core git commit: updated to allow many pa sets on a permission

Posted by cp...@apache.org.
updated to allow many pa sets on a permission

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/d263fe1f
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/d263fe1f
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/d263fe1f

Branch: refs/heads/master
Commit: d263fe1fe2e0d84471ca9ec479dede1fc737c2ba
Parents: b79194a
Author: clp207 <cl...@psu.edu>
Authored: Sun Apr 3 09:22:27 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Sun Apr 3 09:22:27 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/impl/PermDAO.java   | 19 ++++++-------
 .../directory/fortress/core/impl/PermP.java     |  6 +++--
 .../fortress/core/impl/ReviewMgrImpl.java       | 18 +++++++------
 .../fortress/core/model/Permission.java         | 28 +++++++++++++-------
 4 files changed, 40 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d263fe1f/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 fdce53f..aef239d 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
@@ -423,16 +423,12 @@ final class PermDAO extends ApacheDsDataProvider
                 entry.add( TYPE, entity.getType() );
             }
             
-            if ( StringUtils.isNotEmpty( entity.getPaSetName() ) )
-            {
-                entry.add( PERMISSION_ATTRIBUTE_SET, entity.getPaSetName() );
-            }
-
             // These are multi-valued attributes, use the util function to load:
             // These items are optional as well.  The utility function will return quietly if no items are loaded into collection:
             loadAttrs( entity.getRoles(), entry, ROLES );
             loadAttrs( entity.getUsers(), entry, USERS );
-
+            loadAttrs( entity.getPaSets(), entry, PERMISSION_ATTRIBUTE_SET );
+            
             // props are optional as well:
             //if the props is null don't try to load these attributes
             if ( PropUtil.isNotEmpty( entity.getProperties() ) )
@@ -583,11 +579,12 @@ final class PermDAO extends ApacheDsDataProvider
                     ModificationOperation.REPLACE_ATTRIBUTE, TYPE, entity.getType() ) );
             }
             
-            if ( StringUtils.isNotEmpty( entity.getPaSetName() ) )
+            if ( CollectionUtils.isNotEmpty( entity.getPaSets() ) )
             {
-
-                mods.add( new DefaultModification(
-                    ModificationOperation.REPLACE_ATTRIBUTE, PERMISSION_ATTRIBUTE_SET, entity.getPaSetName() ) );
+                for(String paSetName : entity.getPaSets() ){
+                    mods.add( new DefaultModification(
+                        ModificationOperation.REPLACE_ATTRIBUTE, PERMISSION_ATTRIBUTE_SET, paSetName ) );
+                }
             }
 
             // These are multi-valued attributes, use the util function to load:
@@ -1230,7 +1227,7 @@ final class PermDAO extends ApacheDsDataProvider
         entity.setDescription( getAttribute( le, SchemaConstants.DESCRIPTION_AT ) );
         entity.addProperties( PropUtil.getProperties( getAttributes( le, GlobalIds.PROPS ) ) );        
         entity.setAdmin( isAdmin );
-        entity.setPaSetName( getAttribute(le, GlobalIds.FT_PERMISSION_ATTRIBUTE_SET ) );
+        entity.setPaSets( getAttributeSet(le, GlobalIds.FT_PERMISSION_ATTRIBUTE_SET ) );
 
         if ( le != null )
         {

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d263fe1f/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
index c72c38b..ec36174 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
@@ -707,9 +707,11 @@ final class PermP
             }
         }
         // Validate Perm Attr Set Name
-        if( StringUtils.isNotEmpty( pOp.getPaSetName() ))
+        if( CollectionUtils.isNotEmpty( pOp.getPaSets() ))
         {
-        	VUtil.permAttrSetName(pOp.getPaSetName());
+            for(String paSetName : pOp.getPaSets()){
+                VUtil.permAttrSetName( paSetName );
+            }
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d263fe1f/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
index 58dc46c..7497576 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
@@ -435,15 +435,17 @@ public class ReviewMgrImpl extends Manageable implements ReviewMgr, Serializable
     	//look through all permissions in the role
     	List<Permission> permissions = this.rolePermissions(role, noInhertiance);
     	for(Permission perm : permissions){
-    		if(perm.getPaSetName() != null && !perm.getPaSetName().isEmpty()){
-    			if(!permAttributeSets.containsKey(perm.getPaSetName())){
-    				PermissionAttributeSet permAttributeSet = permP.read(new PermissionAttributeSet(perm.getPaSetName()));
-    				permAttributeSets.put(perm.getPaSetName(), permAttributeSet);
-    			}
-    		}    		
-    	}
+            if( CollectionUtils.isNotEmpty(perm.getPaSets() )){
+                for(String paSetName : perm.getPaSets()){	
+                    if(!permAttributeSets.containsKey(paSetName)){
+                        PermissionAttributeSet permAttributeSet = permP.read(new PermissionAttributeSet(paSetName));
+                        permAttributeSets.put(paSetName, permAttributeSet);
+                    }
+                }
+            }
+        }
     	
-    	return new ArrayList<PermissionAttributeSet>(permAttributeSets.values());
+        return new ArrayList<PermissionAttributeSet>(permAttributeSets.values());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d263fe1f/src/main/java/org/apache/directory/fortress/core/model/Permission.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/Permission.java b/src/main/java/org/apache/directory/fortress/core/model/Permission.java
index e96ba0d..803e113 100755
--- a/src/main/java/org/apache/directory/fortress/core/model/Permission.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/Permission.java
@@ -22,6 +22,7 @@ package org.apache.directory.fortress.core.model;
 
 import java.io.Serializable;
 import java.util.Enumeration;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
@@ -258,7 +259,7 @@ import org.apache.commons.lang.StringUtils;
         "props",
         "dn",
         "admin",
-        "paSetName"
+        "paSets"
 })
 public class Permission extends FortEntity implements Serializable
 {
@@ -280,8 +281,8 @@ public class Permission extends FortEntity implements Serializable
     @XmlElement(nillable = true)
     private Set<String> roles;
     @XmlElement(nillable = true)
-    private Set<String> users;    
-    private String paSetName;
+    private Set<String> users;
+    private Set<String> paSets;
 
     /**
      * This constructor is commonly used to create Permission that is a target for authorization API.
@@ -830,13 +831,20 @@ public class Permission extends FortEntity implements Serializable
             '}';
     }
 
+    public Set<String> getPaSets() {
+        return paSets;
+    }
 
-	public String getPaSetName() {
-		return paSetName;
-	}
-
+    public void setPaSets( Set<String> paSets ){
+        this.paSets = paSets;
+    }
+    
+    public void setPaSetName(String paSet) {
+        if ( paSets == null )
+        {
+        	paSets = new HashSet<String>();
+        }
 
-	public void setPaSetName(String paSetName) {
-		this.paSetName = paSetName;
-	}
+        this.paSets.add( paSet );
+    }
 }


[23/43] directory-fortress-core git commit: changed version

Posted by cp...@apache.org.
changed version


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/042b61d5
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/042b61d5
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/042b61d5

Branch: refs/heads/master
Commit: 042b61d57696ef3038ac7b57ad95f41e18355fbf
Parents: 4db8902
Author: clp207 <cl...@psu.edu>
Authored: Fri Mar 18 11:47:57 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:23 2016 -0400

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/042b61d5/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index d0ee04e..99d6524 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
   <artifactId>fortress-core</artifactId>
   <packaging>jar</packaging>
   <name>Apache Fortress Core</name>
-  <version>1.0-RC43-SNAPSHOT</version>
+  <version>1.0-RC42-SNAPSHOT</version>
   <inceptionYear>2007</inceptionYear>
   <description>
     Apache Fortress is a standards-based Access Management SDK that implements ANSI RBAC INCITS 359.


[13/43] directory-fortress-core git commit: added basic permission attribute creation and retrieval

Posted by cp...@apache.org.
added basic permission attribute creation and retrieval


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/51331f84
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/51331f84
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/51331f84

Branch: refs/heads/master
Commit: 51331f8440b19389d43d792f53f410c12f4ecd36
Parents: 2c69679
Author: clp207 <cl...@psu.edu>
Authored: Mon Jan 25 22:07:04 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/AdminMgr.java       |   5 +
 .../directory/fortress/core/GlobalErrIds.java   |   5 +
 .../directory/fortress/core/GlobalIds.java      |   5 +
 .../directory/fortress/core/ReviewMgr.java      |  14 +-
 .../fortress/core/impl/AdminMgrImpl.java        |  12 ++
 .../directory/fortress/core/impl/PermDAO.java   |  81 +++++--
 .../directory/fortress/core/impl/PermP.java     |   8 +
 .../fortress/core/impl/ReviewMgrImpl.java       |  18 ++
 .../fortress/core/model/ComparisonOperator.java |  48 +++++
 .../fortress/core/model/ObjectFactory.java      |   8 +
 .../fortress/core/model/Permission.java         |  34 ++-
 .../core/model/PermissionAttribute.java         | 210 +++++++++++++++++++
 .../fortress/core/rest/AdminMgrRestImpl.java    |  13 +-
 .../fortress/core/rest/ReviewMgrRestImpl.java   |  22 +-
 14 files changed, 453 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
index 2eb56c9..c81f1c6 100755
--- a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
@@ -22,6 +22,7 @@ package org.apache.directory.fortress.core;
 
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
@@ -510,6 +511,10 @@ public interface AdminMgr extends Manageable
     Permission addPermission( Permission perm )
         throws SecurityException;
 
+    
+    //TODO: fill the documentation in
+    PermissionAttribute addPermissionAttribute( PermissionAttribute permAttribute )
+    	throws SecurityException;
 
     /**
      * This method will update permission operation pre-existing in target directory under 

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/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 363bb37..a0f6f7e 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
@@ -1655,4 +1655,9 @@ public final class GlobalErrIds
      * The supplied group protocol name failed length check.
      */
     public static final int GROUP_PROTOCOL_INVLD = 10313;
+    
+    /**
+     * The supplied Permission Attribute could not be added to ldap server.
+     */
+    public static final int PERM_ATTR_ADD_FAILED = 10314;
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
index 51bb710..4ca88fe 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
@@ -528,4 +528,9 @@ public final class GlobalIds
      */
     public static final String ALL = "all";
     public static final String NULL = "null";
+    
+    /**
+     * The ftPA field contains attributes and associated metadata for permissions.
+     */
+    public static final String FT_PERMISSION_ATTRIBUTE = "ftPA";
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java b/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
index 0f73fc2..7205a86 100755
--- a/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
@@ -20,17 +20,18 @@
 package org.apache.directory.fortress.core;
 
 
+import java.util.List;
+import java.util.Set;
+
 import org.apache.directory.fortress.core.model.OrgUnit;
-import org.apache.directory.fortress.core.model.Permission;
 import org.apache.directory.fortress.core.model.PermObj;
+import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserRole;
 
-import java.util.List;
-import java.util.Set;
-
 
 /**
  * This interface prescribes the administrative review functions on already provisioned Fortress RBAC entities
@@ -439,7 +440,10 @@ public interface ReviewMgr extends Manageable
     List<Permission> rolePermissions( Role role, boolean noInheritance )
         throws SecurityException;
 
-
+    //TODO: add documentation
+    Set<PermissionAttribute> rolePermissionAttributes( Role role, boolean noInhertiance )
+    	throws SecurityException;
+    
     /**
      * This function returns the set of permissions a given user gets through his/her authorized
      * roles. The function is valid if and only if the user is a member of the USERS data set.

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
index 2326d2b..66ef1fa 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
@@ -34,6 +34,7 @@ import org.apache.directory.fortress.core.model.ConstraintUtil;
 import org.apache.directory.fortress.core.model.Hier;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.Relationship;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.SDSet;
@@ -365,6 +366,17 @@ public final class AdminMgrImpl extends Manageable implements AdminMgr, Serializ
         return permP.add( perm );
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public PermissionAttribute addPermissionAttribute( PermissionAttribute permAttribute ) throws SecurityException
+    {
+        String methodName = "addPermissionAttribute";
+        assertContext( CLS_NM, methodName, permAttribute, GlobalErrIds.PERM_OPERATION_NULL );
+        setEntitySession( CLS_NM, methodName, permAttribute );
+        return permP.add( permAttribute );
+    }    
 
     /**
      * {@inheritDoc}

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/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 31b2f3a..67ed958 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
@@ -22,6 +22,7 @@ package org.apache.directory.fortress.core.impl;
 
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -42,23 +43,24 @@ import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueEx
 import org.apache.directory.api.ldap.model.exception.LdapNoSuchAttributeException;
 import org.apache.directory.api.ldap.model.exception.LdapNoSuchObjectException;
 import org.apache.directory.api.ldap.model.message.SearchScope;
+import org.apache.directory.fortress.core.CreateException;
+import org.apache.directory.fortress.core.FinderException;
+import org.apache.directory.fortress.core.GlobalErrIds;
+import org.apache.directory.fortress.core.GlobalIds;
+import org.apache.directory.fortress.core.RemoveException;
+import org.apache.directory.fortress.core.UpdateException;
+import org.apache.directory.fortress.core.ldap.ApacheDsDataProvider;
 import org.apache.directory.fortress.core.model.AdminRole;
+import org.apache.directory.fortress.core.model.ObjectFactory;
 import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
+import org.apache.directory.fortress.core.model.PropUtil;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
-import org.apache.directory.fortress.core.model.PropUtil;
 import org.apache.directory.ldap.client.api.LdapConnection;
-import org.apache.directory.fortress.core.CreateException;
-import org.apache.directory.fortress.core.FinderException;
-import org.apache.directory.fortress.core.GlobalErrIds;
-import org.apache.directory.fortress.core.GlobalIds;
-import org.apache.directory.fortress.core.model.ObjectFactory;
-import org.apache.directory.fortress.core.RemoveException;
-import org.apache.directory.fortress.core.UpdateException;
-import org.apache.directory.fortress.core.ldap.ApacheDsDataProvider;
 
 
 /**
@@ -182,6 +184,7 @@ final class PermDAO extends ApacheDsDataProvider
     private static final String PERM_NAME = "ftPermName";
     private static final String ROLES = "ftRoles";
     private static final String USERS = "ftUsers";
+    private static final String PERMISSION_ATTRIBUTE = "ftPA";
     private static final String[] PERMISSION_OP_ATRS =
         {
             GlobalIds.FT_IID,
@@ -194,7 +197,8 @@ final class PermDAO extends ApacheDsDataProvider
             TYPE,
             ROLES,
             USERS,
-            GlobalIds.PROPS
+            GlobalIds.PROPS,
+            PERMISSION_ATTRIBUTE
     };
 
     private static final String[] PERMISION_OBJ_ATRS =
@@ -202,8 +206,7 @@ final class PermDAO extends ApacheDsDataProvider
             GlobalIds.FT_IID, GlobalIds.POBJ_NAME, SchemaConstants.DESCRIPTION_AT, SchemaConstants.OU_AT, TYPE,
             GlobalIds.PROPS
     };
-
-
+    
     /**
      * @param entity
      * @return
@@ -445,7 +448,39 @@ final class PermDAO extends ApacheDsDataProvider
         return entity;
     }
 
+    
+    //TODO: add documentation
+    PermissionAttribute createPermissionAttribute( PermissionAttribute entity ) throws CreateException
+    {
+        LdapConnection ld = null;
+        String dn = getDn( new Permission(entity.getObjName(), entity.getOpName()) , entity.getContextId() );
 
+        try
+        {
+            List<Modification> mods = new ArrayList<Modification>();
+            mods.add( new DefaultModification(
+                ModificationOperation.ADD_ATTRIBUTE, PERMISSION_ATTRIBUTE, entity.toFtPAString()) );
+            ld = getAdminConnection();
+            modify( ld, dn, mods, entity );
+            
+            //TODO: make sure not adding same attribute twice...
+        }
+        catch ( LdapException e )
+        {
+            String error = "create perm attribute [" + entity.getObjName() + "] operation ["
+                + entity.getOpName() + "] name [" + entity.getAttributeName() + "] caught LdapException="
+                + e.getMessage();
+            throw new CreateException( GlobalErrIds.PERM_ATTR_ADD_FAILED, error, e );
+        }
+        finally
+        {
+            closeAdminConnection( ld );
+        }
+        
+        //TODO: need to do anything to returned entity?
+        return entity;
+    }
+    
     /**
      * @param entity
      * @return
@@ -1024,8 +1059,9 @@ final class PermDAO extends ApacheDsDataProvider
         entity.setUsers( getAttributeSet( le, USERS ) );
         entity.setType( getAttribute( le, TYPE ) );
         entity.setDescription( getAttribute( le, SchemaConstants.DESCRIPTION_AT ) );
-        entity.addProperties( PropUtil.getProperties( getAttributes( le, GlobalIds.PROPS ) ) );
+        entity.addProperties( PropUtil.getProperties( getAttributes( le, GlobalIds.PROPS ) ) );        
         entity.setAdmin( isAdmin );
+        entity.setAttributes( unloadPermissionAttributes(le) );
 
         if ( le != null )
         {
@@ -1058,7 +1094,26 @@ final class PermDAO extends ApacheDsDataProvider
         return entity;
     }
 
+    private Set<PermissionAttribute> unloadPermissionAttributes( Entry entry )
+    {
+        Set<PermissionAttribute> permAttributes = null;
+        List<String> ftPAs = getAttributes( entry, GlobalIds.FT_PERMISSION_ATTRIBUTE );
+
+        if ( ftPAs != null )
+        {
+        	permAttributes = new HashSet<PermissionAttribute>();
 
+            for ( String raw : ftPAs )
+            {
+                PermissionAttribute permAttribute = new ObjectFactory().createPermissionAttribute();
+                permAttribute.load( raw );
+                permAttributes.add( permAttribute );
+            }
+        }
+
+        return permAttributes;
+    }
+    
     /**
      * @param permission
      * @return

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
index d806b60..c1738c7 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
@@ -33,6 +33,7 @@ import org.apache.directory.fortress.core.model.AdminRole;
 import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
@@ -366,6 +367,13 @@ final class PermP
         validate( entity, false );
         return pDao.createOperation( entity );
     }
+    
+    //TODO: add documentation
+    PermissionAttribute add( PermissionAttribute entity ) throws SecurityException
+    {
+        //TODO: add validation
+        return pDao.createPermissionAttribute( entity );
+    }
 
 
     /**

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
index 83dc671..12190c7 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
@@ -32,6 +32,7 @@ import org.apache.directory.fortress.core.SecurityException;
 import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
@@ -403,6 +404,23 @@ public class ReviewMgrImpl extends Manageable implements ReviewMgr, Serializable
         checkAccess(CLS_NM, methodName);
         return permP.search( role, noInheritance );
     }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Set<PermissionAttribute> rolePermissionAttributes( Role role, boolean noInhertiance )
+    	throws SecurityException
+    {
+    	Set<PermissionAttribute> permAttributes = new HashSet<PermissionAttribute>();
+    	
+    	List<Permission> permissions = this.rolePermissions(role, noInhertiance);
+    	for(Permission perm : permissions){
+    		permAttributes.addAll(perm.getAttributes());
+    	}
+    	
+    	return permAttributes;
+    }
 
     /**
      * {@inheritDoc}

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/model/ComparisonOperator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/ComparisonOperator.java b/src/main/java/org/apache/directory/fortress/core/model/ComparisonOperator.java
new file mode 100644
index 0000000..2cb88b4
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/core/model/ComparisonOperator.java
@@ -0,0 +1,48 @@
+package org.apache.directory.fortress.core.model;
+
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
+
+public enum ComparisonOperator {
+
+	EQUALS("eq"),
+	NOT_EQUALS("neq"),
+	GREATER_THAN("gt"),
+	GREATER_THAN_OR_EQUAL_TO("gte"),
+	LESS_THAN("lt"),
+	LESS_THAN_OR_EQUAL_TO("lte");
+
+	private final String name;       
+	private static Map<String, ComparisonOperator> reverseLookup_ = new HashMap<String, ComparisonOperator>();
+
+	static
+	{
+		EnumSet<ComparisonOperator> es = EnumSet.allOf(ComparisonOperator.class);
+
+		for (ComparisonOperator co : es)
+		{
+			reverseLookup_.put(co.toString(), co);
+		}
+	}
+
+	
+	private ComparisonOperator(String s) {
+		name = s;
+	}
+
+	public static ComparisonOperator fromName(String name)
+	{
+		if (name != null)
+		{
+			return reverseLookup_.get(name.trim());
+		}
+
+		return null;
+	}
+	
+	public String toString() {
+		return this.name;
+	}
+	
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/model/ObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/ObjectFactory.java b/src/main/java/org/apache/directory/fortress/core/model/ObjectFactory.java
index 58294da..f98f9d6 100755
--- a/src/main/java/org/apache/directory/fortress/core/model/ObjectFactory.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/ObjectFactory.java
@@ -586,4 +586,12 @@ public class ObjectFactory
     {
         return new Warning( id, msg, type, name );
     }
+    
+    /**
+     * Create an instance of {@link org.apache.directory.fortress.core.model.PermissionAttribute}
+     */
+    public PermissionAttribute createPermissionAttribute()
+    {
+        return new PermissionAttribute();
+    }
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/model/Permission.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/Permission.java b/src/main/java/org/apache/directory/fortress/core/model/Permission.java
index 53e30da..4974627 100755
--- a/src/main/java/org/apache/directory/fortress/core/model/Permission.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/Permission.java
@@ -20,10 +20,9 @@
 package org.apache.directory.fortress.core.model;
 
 
-import org.apache.commons.lang.StringUtils;
-
 import java.io.Serializable;
 import java.util.Enumeration;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
@@ -36,6 +35,8 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
+import org.apache.commons.lang.StringUtils;
+
 
 /*
 ## OC2: Fortress Permission Structural Object Class
@@ -280,7 +281,8 @@ public class Permission extends FortEntity implements Serializable
     private Set<String> roles;
     @XmlElement(nillable = true)
     private Set<String> users;
-
+    @XmlElement(nillable = true)
+    private Set<PermissionAttribute> attributes;
 
     /**
      * This constructor is commonly used to create Permission that is a target for authorization API.
@@ -674,6 +676,32 @@ public class Permission extends FortEntity implements Serializable
         this.props = value;
     }
 
+    /**
+     * Return the collection of optional Attributes that have been loaded into this entity.  This is stored as a multi-occurring
+     * attribute of ftPA entries on the 'ftOperation' object class.
+     *
+     * @return Set containing the roles which maps to 'ftRoles' attribute in 'ftOperation' object class.
+     */
+    public Set<PermissionAttribute> getAttributes()
+    {
+    	if(this.attributes == null){
+    		attributes = new HashSet<PermissionAttribute>();
+    	}
+    	
+        return this.attributes;
+    }
+
+
+    /**
+     * Set the collection of optional Attributes that have been loaded into this entity.  This is stored as a multi-occurring
+     * attribute of ftPAs on the 'ftOperation' object class.
+     *
+     * @param attributes maps to 'ftPA' attribute in 'ftOperation' object class.
+     */
+    public void setAttributes( Set<PermissionAttribute> attributes )
+    {
+        this.attributes = attributes;
+    }
 
     /**
      * Add name/value pair to list of properties associated with Permission.  These values are not constrained by Fortress.

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
new file mode 100644
index 0000000..a69d92f
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
@@ -0,0 +1,210 @@
+package org.apache.directory.fortress.core.model;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.commons.lang.StringUtils;
+
+//AccountId?dataType=int&required=true&validValues=SELF,ANY,int&comparator=equals&default=SELF
+
+@XmlRootElement(name = "ftPA")
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "permission", propOrder =
+    {
+        "opName",
+        "objName",
+        "required",
+        "operator",
+        "dataType",
+        "validValues",
+        "defaultValue"
+})
+public class PermissionAttribute extends FortEntity implements Serializable {
+
+    /** Default serialVersionUID */
+    private static final long serialVersionUID = 1L;
+    
+    private static final String REQUIRED_PARAM_NAME = "required";
+    private static final String OPERATOR_PARAM_NAME = "operator";
+    private static final String DATA_TYPE_PARAM_NAME = "dataType";
+    private static final String VALID_VALUES_PARAM_NAME = "validValues";
+    private static final String DEFAULT_VALUE_PARAM_NAME = "defaultValue";
+    
+    private String opName;
+    private String objName;
+    private String attributeName;
+    private Boolean required;
+    private ComparisonOperator operator;
+    //TODO: make this an enum?
+    private String dataType;
+    //TODO: should this be an enum?
+    private List<String> validValues;
+    private String defaultValue;
+    
+    public PermissionAttribute(String objName, String opName )
+    {
+        this.objName = objName;
+        this.opName = opName;
+    }
+    
+    public PermissionAttribute(){
+    	
+    }
+    
+    public String toFtPAString(){
+    	String ftPA = attributeName + "?";
+    	
+    	List<String> qualifiers = new ArrayList<String>();    	
+    	
+    	if(required != null){
+    		qualifiers.add(REQUIRED_PARAM_NAME + "=" + String.valueOf(required));
+    	}
+    	if(operator != null){
+    		qualifiers.add(OPERATOR_PARAM_NAME + "=" + operator);
+    	}
+    	if(dataType != null){
+    		qualifiers.add(DATA_TYPE_PARAM_NAME + "=" + dataType);
+    	}
+    	if(validValues != null && validValues.size() > 0){    		    		
+    		qualifiers.add(VALID_VALUES_PARAM_NAME + "=" + StringUtils.join(validValues, ","));
+    	}
+    	if(defaultValue != null){
+    		qualifiers.add(DEFAULT_VALUE_PARAM_NAME + "=" + defaultValue);
+    	}
+    		
+    	ftPA += StringUtils.join(qualifiers, "&");
+    	
+    	return ftPA;
+    }
+    
+	public Boolean getRequired() {
+		return required;
+	}
+	public void setRequired(Boolean required) {
+		this.required = required;
+	}
+	public ComparisonOperator getOperator() {
+		return operator;
+	}
+	public void setOperator(ComparisonOperator operator) {
+		this.operator = operator;
+	}
+	public String getDataType() {
+		return dataType;
+	}
+	public void setDataType(String dataType) {
+		this.dataType = dataType;
+	}
+	public List<String> getValidValues() {
+		return validValues;
+	}
+	public void setValidValues(List<String> validValues) {
+		this.validValues = validValues;
+	}
+	public String getDefaultValue() {
+		return defaultValue;
+	}
+	public void setDefaultValue(String defaultValue) {
+		this.defaultValue = defaultValue;
+	}
+	public String getOpName() {
+		return opName;
+	}
+	public void setOpName(String opName) {
+		this.opName = opName;
+	}
+	public String getObjName() {
+		return objName;
+	}
+	public void setObjName(String objName) {
+		this.objName = objName;
+	}
+	public String getAttributeName() {
+		return attributeName;
+	}
+	public void setAttributeName(String attributeName) {
+		this.attributeName = attributeName;
+	}
+	
+	/**
+     * This method loads PermissionAttribute entity instance variables with data that was retrieved from the
+     * 'ftPA' attribute on the 'ftOperation' object class.
+     *
+     * @param szRawData contains a raw formatted String that maps to 'ftPA' attribute on 'ftOperation' object class
+     */
+    public void load( String szRawData )
+    {    	
+        if ( ( szRawData != null ) && ( szRawData.length() > 0 ) )
+        {
+            String[] data = StringUtils.split(szRawData, "?"); 
+            attributeName = data[0];
+            		
+            String[] parameters = data[1].split("&");
+            for (String param : parameters){
+            	String[] paramSplit = param.split("=");
+            	String name = paramSplit[0];
+            	String val = paramSplit[1];
+            	
+            	if(name.equals(REQUIRED_PARAM_NAME)){
+            		required = Boolean.parseBoolean(val);
+            	}
+            	if(name.equals(OPERATOR_PARAM_NAME)){
+            		operator = ComparisonOperator.fromName(val);
+            	}
+            	if(name.equals(DATA_TYPE_PARAM_NAME)){
+            		dataType = val;
+            	}
+            	if(name.equals(VALID_VALUES_PARAM_NAME)){
+            		validValues = Arrays.asList(val.split(","));
+            	}
+            	if(name.equals(DEFAULT_VALUE_PARAM_NAME)){
+            		defaultValue = val;
+            	}
+            	
+            }
+        }
+    }
+    
+    /**
+     * Matches the objName, opName and attributeName from two Permission entities.
+     *
+     * @param o contains a PermissionAttribute entity.
+     * @return boolean indicating both PermissionAttributes contain matching objName, opName, and attributeName attributes.
+     */
+    @Override
+    public boolean equals(Object o)
+    {
+        if ( this == o )
+        {
+            return true;
+        }
+        if ( o == null || getClass() != o.getClass() )
+        {
+            return false;
+        }
+
+        PermissionAttribute that = ( PermissionAttribute ) o;
+        
+        if ( objName != null ? !objName.equalsIgnoreCase( that.objName ) : that.objName != null )
+        {
+            return false;
+        }
+        if ( opName != null ? !opName.equalsIgnoreCase( that.opName ) : that.opName != null )
+        {
+            return false;
+        }
+        if ( attributeName != null ? !attributeName.equalsIgnoreCase( that.attributeName ) : that.attributeName != null )
+        {
+            return false;
+        }
+
+        return true;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
index f22f6f5..94bb53e 100644
--- a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
@@ -21,19 +21,20 @@ package org.apache.directory.fortress.core.rest;
 
 
 import org.apache.directory.fortress.core.AdminMgr;
-import org.apache.directory.fortress.core.SecurityException;
 import org.apache.directory.fortress.core.GlobalErrIds;
+import org.apache.directory.fortress.core.SecurityException;
+import org.apache.directory.fortress.core.impl.Manageable;
 import org.apache.directory.fortress.core.model.FortRequest;
 import org.apache.directory.fortress.core.model.FortResponse;
 import org.apache.directory.fortress.core.model.PermGrant;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.RoleRelationship;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserRole;
-import org.apache.directory.fortress.core.impl.Manageable;
 import org.apache.directory.fortress.core.util.VUtil;
 
 
@@ -1239,4 +1240,12 @@ public final class AdminMgrRestImpl extends Manageable implements AdminMgr
         }
         return retSet;
     }
+
+
+	@Override
+	public PermissionAttribute addPermissionAttribute(
+			PermissionAttribute permAttribute) throws SecurityException {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/51331f84/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java b/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
index 0e7bfd5..77d8c01 100755
--- a/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
@@ -19,26 +19,27 @@
  */
 package org.apache.directory.fortress.core.rest;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+
 import org.apache.directory.fortress.core.GlobalErrIds;
 import org.apache.directory.fortress.core.ReviewMgr;
 import org.apache.directory.fortress.core.SecurityException;
+import org.apache.directory.fortress.core.impl.Manageable;
 import org.apache.directory.fortress.core.model.FortRequest;
 import org.apache.directory.fortress.core.model.FortResponse;
-import org.apache.directory.fortress.core.impl.Manageable;
 import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserRole;
 import org.apache.directory.fortress.core.util.VUtil;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
-
 /**
  * This class performs administrative review functions on already provisioned Fortress RBAC entities using HTTP access to En Masse REST server.
  * These APIs map directly to similar named APIs specified by ANSI and NIST RBAC models.
@@ -759,7 +760,13 @@ public class ReviewMgrRestImpl extends Manageable implements ReviewMgr
         return retPerms;
     }
 
-
+	@Override
+	public Set<PermissionAttribute> rolePermissionAttributes(Role role,
+			boolean noInhertiance) throws SecurityException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+    
     /**
      * {@inheritDoc}
      */
@@ -1245,4 +1252,5 @@ public class ReviewMgrRestImpl extends Manageable implements ReviewMgr
         }
         return retSet.getCardinality();
     }
+
 }
\ No newline at end of file


[29/43] directory-fortress-core git commit: Merge branch 'master' into feature/addPermAttrAndUserRoleConstraints

Posted by cp...@apache.org.
Merge branch 'master' into feature/addPermAttrAndUserRoleConstraints


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/6e9a7ddb
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/6e9a7ddb
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/6e9a7ddb

Branch: refs/heads/master
Commit: 6e9a7ddb31ca596907a38e0f1af1b0092e5d695f
Parents: d263fe1 2431eb8
Author: clp207 <cl...@psu.edu>
Authored: Thu May 5 12:45:13 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Thu May 5 12:45:13 2016 -0400

----------------------------------------------------------------------
 README-CONFIG.md                                |    4 +-
 README-QUICKSTART-APACHEDS.md                   |   98 +-
 README-QUICKSTART-SLAPD.md                      |  127 +-
 README-TEN-MINUTE-GUIDE.md                      |    5 +-
 README.md                                       |    3 +-
 build-config.xml                                |  777 +++++++++
 build.properties.example                        |    4 +-
 build.xml                                       | 1467 ----------------
 config/fortress.properties.src                  |    6 +-
 getIvy.xml                                      |   33 -
 ivy.xml                                         |   80 -
 ldap/schema/fortress.schema                     |   95 +-
 ldap/setup/DelegatedAdminManagerLoad.xml        |    2 +
 pom.xml                                         |  247 +--
 .../fortress/core/AccelMgrFactory.java          |   12 +-
 .../fortress/core/AccessMgrFactory.java         |   16 +-
 .../fortress/core/AdminMgrFactory.java          |   17 +-
 .../fortress/core/AuditMgrFactory.java          |   19 +-
 .../fortress/core/ConfigMgrFactory.java         |   19 +-
 .../fortress/core/DelAccessMgrFactory.java      |   19 +-
 .../fortress/core/DelAdminMgrFactory.java       |   17 +-
 .../fortress/core/DelReviewMgrFactory.java      |   16 +-
 .../directory/fortress/core/GlobalIds.java      |   64 +-
 .../fortress/core/GroupMgrFactory.java          |   15 +-
 .../fortress/core/PwPolicyMgrFactory.java       |   19 +-
 .../directory/fortress/core/ReviewMgr.java      |    2 +-
 .../fortress/core/ReviewMgrFactory.java         |   17 +-
 .../fortress/core/ant/FortressAntTask.java      |   38 +-
 .../core/cli/CommandLineInterpreter.java        |    1 +
 .../fortress/core/impl/AccelMgrImpl.java        |    3 +-
 .../fortress/core/impl/AcceleratorDAO.java      |   19 +-
 .../fortress/core/impl/AccessMgrImpl.java       |   34 +-
 .../fortress/core/impl/AdminMgrImpl.java        |   30 +-
 .../fortress/core/impl/AdminRoleDAO.java        |    4 +-
 .../fortress/core/impl/AdminRoleP.java          |   21 +-
 .../directory/fortress/core/impl/AuditDAO.java  |   37 +-
 .../directory/fortress/core/impl/AuditP.java    |    3 +-
 .../directory/fortress/core/impl/ConfigDAO.java |   23 +-
 .../fortress/core/impl/ConfigMgrImpl.java       |    6 +-
 .../fortress/core/impl/DSDChecker.java          |   16 +-
 .../fortress/core/impl/DelAccessMgrImpl.java    |   28 +-
 .../fortress/core/impl/DelAdminMgrImpl.java     |   61 +-
 .../fortress/core/impl/DelReviewMgrImpl.java    |   17 +-
 .../directory/fortress/core/impl/GroupDAO.java  |   60 +-
 .../fortress/core/impl/GroupMgrImpl.java        |    6 +-
 .../directory/fortress/core/impl/GroupP.java    |   19 +-
 .../fortress/core/impl/OrgUnitDAO.java          |   25 +-
 .../directory/fortress/core/impl/OrgUnitP.java  |   23 +-
 .../core/impl/OrganizationalUnitDAO.java        |    9 +-
 .../directory/fortress/core/impl/PermDAO.java   |   27 +-
 .../directory/fortress/core/impl/PermP.java     |    6 +-
 .../directory/fortress/core/impl/PolicyDAO.java |   11 +-
 .../directory/fortress/core/impl/PolicyP.java   |   17 +-
 .../directory/fortress/core/impl/PsoUtil.java   |   47 +-
 .../fortress/core/impl/PwPolicyMgrImpl.java     |   15 +-
 .../fortress/core/impl/ReviewMgrImpl.java       |   25 +-
 .../directory/fortress/core/impl/RoleDAO.java   |   19 +-
 .../directory/fortress/core/impl/RoleP.java     |    3 +-
 .../directory/fortress/core/impl/RoleUtil.java  |   55 +-
 .../directory/fortress/core/impl/SDUtil.java    |   76 +-
 .../directory/fortress/core/impl/SdDAO.java     |   15 +-
 .../directory/fortress/core/impl/SdP.java       |    3 +-
 .../directory/fortress/core/impl/SuffixDAO.java |   11 +-
 .../directory/fortress/core/impl/UserDAO.java   |   66 +-
 .../directory/fortress/core/impl/UserP.java     |   18 +-
 .../directory/fortress/core/impl/UsoUtil.java   |   45 +-
 .../core/ldap/ApacheDsDataProvider.java         | 1643 ------------------
 .../core/ldap/LdapConnectionProvider.java       |  363 ++++
 .../fortress/core/ldap/LdapDataProvider.java    | 1336 ++++++++++++++
 .../directory/fortress/core/ldap/LdapUtil.java  |   57 +
 .../directory/fortress/core/model/AuthZ.java    |    8 +-
 .../directory/fortress/core/model/Bind.java     |    8 +-
 .../fortress/core/model/ConstraintUtil.java     |   29 +-
 .../directory/fortress/core/model/PropUtil.java |    7 +-
 .../fortress/core/model/UserAdminRole.java      |   26 +-
 .../directory/fortress/core/model/UserRole.java |   21 +-
 .../directory/fortress/core/overview.html       |    2 +-
 .../fortress/core/rest/AccessMgrRestImpl.java   |   34 +-
 .../fortress/core/rest/AdminMgrRestImpl.java    |   78 +-
 .../fortress/core/rest/AuditMgrRestImpl.java    |   20 +-
 .../fortress/core/rest/ConfigMgrRestImpl.java   |   16 +-
 .../core/rest/DelAccessMgrRestImpl.java         |   38 +-
 .../fortress/core/rest/DelAdminMgrRestImpl.java |   56 +-
 .../core/rest/DelReviewMgrRestImpl.java         |   12 +-
 .../fortress/core/rest/PwPolicyMgrRestImpl.java |   20 +-
 .../directory/fortress/core/rest/RestUtils.java |   92 +-
 .../fortress/core/rest/ReviewMgrRestImpl.java   |   76 +-
 .../directory/fortress/core/util/Config.java    |  445 +++--
 .../directory/fortress/core/util/RegExUtil.java |   28 +-
 .../directory/fortress/core/util/VUtil.java     |   31 +-
 .../fortress/core/util/cache/CacheMgr.java      |   56 +-
 .../fortress/core/util/crypto/EncryptUtil.java  |   29 +-
 src/test/build.xml                              |    5 +-
 .../fortress/core/AdminMgrConsole.java          |   28 +-
 .../fortress/core/EncryptMgrConsole.java        |    4 +-
 .../fortress/core/FortressConsole.java          |    1 +
 .../core/example/ExampleAdminMgrFactory.java    |    4 +-
 .../fortress/core/example/ExampleDAO.java       |   30 +-
 .../fortress/core/impl/FortressJUnitTest.java   |   20 +-
 .../core/impl/apacheds/AdminManagerTest.java    |    4 +-
 100 files changed, 4341 insertions(+), 4428 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/ldap/schema/fortress.schema
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/ldap/setup/DelegatedAdminManagerLoad.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
----------------------------------------------------------------------
diff --cc src/main/java/org/apache/directory/fortress/core/GlobalIds.java
index f6655c7,fee3111..8994761
--- a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
@@@ -530,22 -477,7 +477,27 @@@ public final class GlobalId
      public static final String NULL = "null";
      
      /**
 +     * The ftPA field contains attributes and associated metadata for permissions.
 +     */
 +    public static final String FT_PERMISSION_ATTRIBUTE = "ftPA";
 +    
 +    /**
 +     * The ftPASet field contains the name of the ftPermissionAttributeSet for a permission
 +     */
 +    public static final String FT_PERMISSION_ATTRIBUTE_SET = "ftPASet";
 +    
 +    /**
 +     * Attribute name for storing Fortress permission attribute set object names.
 +     */
 +    public static final String PERMISSION_ATTRIBUTE_SET_NAME = "ftAttributeSet";
 +    
 +    /**
 +     * Attribute name for storing default operator of a PA set
 +     */
 +    public static final String FT_PA_SET_DEFAULT_OPERATOR = "ftPADefaultOperator";
++
++    /**
+      * When this property is set to true in fortress.properties, the userPassword field on newly created users will not be created.
+      */
+     public static final String USER_CREATION_PASSWORD_FIELD = "user.creation.field.password.disable";
  }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
----------------------------------------------------------------------
diff --cc src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
index aef239d,8b3e594..cb0c5cb
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
@@@ -48,18 -48,17 +48,29 @@@ import org.apache.directory.fortress.co
  import org.apache.directory.fortress.core.GlobalIds;
  import org.apache.directory.fortress.core.RemoveException;
  import org.apache.directory.fortress.core.UpdateException;
++<<<<<<< HEAD
 +import org.apache.directory.fortress.core.ldap.ApacheDsDataProvider;
++=======
+ import org.apache.directory.fortress.core.ldap.LdapDataProvider;
++>>>>>>> master
  import org.apache.directory.fortress.core.model.AdminRole;
  import org.apache.directory.fortress.core.model.ObjectFactory;
  import org.apache.directory.fortress.core.model.OrgUnit;
  import org.apache.directory.fortress.core.model.PermObj;
  import org.apache.directory.fortress.core.model.Permission;
++<<<<<<< HEAD
 +import org.apache.directory.fortress.core.model.PermissionAttribute;
 +import org.apache.directory.fortress.core.model.PermissionAttributeSet;
++=======
++>>>>>>> master
  import org.apache.directory.fortress.core.model.PropUtil;
  import org.apache.directory.fortress.core.model.Role;
  import org.apache.directory.fortress.core.model.Session;
  import org.apache.directory.fortress.core.model.User;
++<<<<<<< HEAD
++=======
+ import org.apache.directory.fortress.core.util.Config;
++>>>>>>> master
  import org.apache.directory.ldap.client.api.LdapConnection;
  
  
@@@ -207,11 -203,10 +218,15 @@@ final class PermDAO extends LdapDataPro
              GlobalIds.FT_IID, GlobalIds.POBJ_NAME, SchemaConstants.DESCRIPTION_AT, SchemaConstants.OU_AT, TYPE,
              GlobalIds.PROPS
      };
 +    
 +    private static final String[] PERMISION_ATTRIBUTE_SET_ATRS =
 +        {
 +            GlobalIds.FT_IID, GlobalIds.FT_PERMISSION_ATTRIBUTE, SchemaConstants.DESCRIPTION_AT, SchemaConstants.CN_AT
 +    };
+ 
+     public PermDAO(){
+         super();
+     }
      
      /**
       * @param entity

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
----------------------------------------------------------------------
diff --cc src/main/java/org/apache/directory/fortress/core/model/UserRole.java
index 52d639d,27c0d70..f1034d8
--- a/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
@@@ -155,59 -152,51 +155,59 @@@ public class UserRole extends FortEntit
      {
          if ( ( szRawData != null ) && ( szRawData.length() > 0 ) )
          {
-             String[] tokens = StringUtils.splitPreserveAllTokens( szRawData, GlobalIds.DELIMITER );
+             String[] tokens = StringUtils.splitPreserveAllTokens( szRawData, Config.getInstance().getDelimiter() );
 -            for ( int i = 0; i < tokens.length; i++ )
 -            {
 -                if ( StringUtils.isNotEmpty( tokens[i] ) )
 -                {
 -                    switch ( i )
 -                    {
 -                        case 0:
 -                            name = tokens[i];
 -                            parents = parentUtil.getParentsCB( name.toUpperCase(), contextId );
 -                            break;
 -
 -                        case 1:
 -                            timeout = Integer.parseInt( tokens[i] );
 -                            break;
 -
 -                        case 2:
 -                            beginTime = tokens[i];
 -                            break;
 -
 -                        case 3:
 -                            endTime = tokens[i];
 -                            break;
 -
 -                        case 4:
 -                            beginDate = tokens[i];
 -                            break;
 -
 -                        case 5:
 -                            endDate = tokens[i];
 -                            break;
 -
 -                        case 6:
 -                            beginLockDate = tokens[i];
 -                            break;
 -
 -                        case 7:
 -                            endLockDate = tokens[i];
 -                            break;
 -
 -                        case 8:
 -                            dayMask = tokens[i];
 -                            break;
 -                    }
 -                }
 +            
 +            //newer style constaint type
 +            if(tokens[1].equals(RoleConstraint.RC_TYPE_NAME)){
 +            	RoleConstraint rc = new RoleConstraint(tokens[4], RoleConstraintType.valueOf(tokens[2]), tokens[3]);            	            	            	
 +            	this.getRoleConstraints().add(rc);
 +            }
 +            else{
 +	            for ( int i = 0; i < tokens.length; i++ )
 +	            {
 +	                if ( StringUtils.isNotEmpty( tokens[i] ) )
 +	                {
 +	                    switch ( i )
 +	                    {
 +	                        case 0:
 +	                            name = tokens[i];
 +	                            parents = parentUtil.getParentsCB( name.toUpperCase(), contextId );
 +	                            break;
 +	
 +	                        case 1:
 +	                            timeout = Integer.parseInt( tokens[i] );
 +	                            break;
 +	
 +	                        case 2:
 +	                            beginTime = tokens[i];
 +	                            break;
 +	
 +	                        case 3:
 +	                            endTime = tokens[i];
 +	                            break;
 +	
 +	                        case 4:
 +	                            beginDate = tokens[i];
 +	                            break;
 +	
 +	                        case 5:
 +	                            endDate = tokens[i];
 +	                            break;
 +	
 +	                        case 6:
 +	                            beginLockDate = tokens[i];
 +	                            break;
 +	
 +	                        case 7:
 +	                            endLockDate = tokens[i];
 +	                            break;
 +	
 +	                        case 8:
 +	                            dayMask = tokens[i];
 +	                            break;
 +	                    }
 +	                }
 +	            }
              }
          }
      }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6e9a7ddb/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
----------------------------------------------------------------------
diff --cc src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
index fd26012,c590b68..5b692ec
--- a/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
@@@ -23,7 -23,7 +23,11 @@@ import junit.framework.Test
  import junit.framework.TestCase;
  import junit.framework.TestSuite;
  
++<<<<<<< HEAD
 +import org.apache.directory.fortress.core.GlobalIds;
++=======
+ import org.apache.directory.fortress.core.util.Config;
++>>>>>>> master
  
  /**
   * This JUnit test class drives all of the Fortress Administration APIs contained within {@link AdminMgrImplTest},


[10/43] directory-fortress-core git commit: added validation checks on pasetname and unit tests that test bad names being added to perm and roleconstraints

Posted by cp...@apache.org.
added validation checks on pasetname and unit tests that test bad names being added to perm and roleconstraints


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/074fa2a5
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/074fa2a5
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/074fa2a5

Branch: refs/heads/master
Commit: 074fa2a559a255466a429260e3b385814abf0b76
Parents: 9364604
Author: clp207 <cl...@psu.edu>
Authored: Mon Feb 1 08:51:51 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/GlobalErrIds.java   |  15 ++-
 .../directory/fortress/core/impl/PermP.java     |   5 +
 .../directory/fortress/core/impl/UserP.java     |  29 +++++-
 .../directory/fortress/core/util/VUtil.java     |  28 ++++-
 .../fortress/core/impl/AdminMgrImplTest.java    | 103 +++++++++++++------
 .../fortress/core/impl/PermTestData.java        |   1 +
 .../fortress/core/impl/URATestData.java         |   7 ++
 7 files changed, 155 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/074fa2a5/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 93ecb29..cb56ac5 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
@@ -1056,7 +1056,20 @@ public final class GlobalErrIds
      */
     public static final int DSD_VALIDATION_FAILED = 5097;
 
-
+    /**
+     * Role Constraint Errors
+     */
+    
+    /**
+     * The validation for Role Constraint type failed.
+     */
+    public static final int ROLE_CONSTRAINT_TYPE_NULL = 5100;
+    /**
+     * The validation for Role Constraint value failed.
+     */
+    public static final int ROLE_CONSTRAINT_VALUE_NULL = 5101;
+    
+    
     /**
      * 6000's - LDAP Suffix and Container Entities
      */

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/074fa2a5/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
index 871ffbf..3e5a7c7 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
@@ -687,5 +687,10 @@ final class PermP
                 up.read( user, false );
             }
         }
+        // Validate Perm Attr Set Name
+        if( StringUtils.isNotEmpty( pOp.getPaSetName() ))
+        {
+        	VUtil.permAttrSetName(pOp.getPaSetName());
+        }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/074fa2a5/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserP.java b/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
index dfe7b3c..44ce0b4 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
@@ -638,8 +638,8 @@ final class UserP
     
     //TODO: add documentation
     void assign( UserRole uRole, RoleConstraint roleConstraint ) throws SecurityException
-    {
-    	//TODO: validate role constraint points to actual ftAttributeSet?
+    {    	
+    	validate( roleConstraint );
     	
     	uDao.assign( uRole, roleConstraint );
     }
@@ -744,6 +744,31 @@ final class UserP
             throw new ValidationException( GlobalErrIds.ROLE_NM_NULL, CLS_NM + ".validate name is NULL" );
         }
     }
+    
+    /**
+     * Ensure that the passed in role constraint is valid
+     * 
+     * @param RoleConstaint
+     * @throws ValidationException
+     */
+    private void validate( RoleConstraint rc) throws ValidationException
+    {
+        if( StringUtils.isEmpty( rc.getPaSetName() ))
+        {
+        	throw new ValidationException( GlobalErrIds.PERM_ATTRIBUTE_SET_NM_NULL, CLS_NM + ".validate pa set name is NULL" );
+        }    	
+    	
+        VUtil.permAttrSetName(rc.getPaSetName());
+
+        if ( rc.getConstraintType() == null )
+        {
+            throw new ValidationException( GlobalErrIds.ROLE_CONSTRAINT_TYPE_NULL, CLS_NM + ".validate type is NULL" );
+        }
+        if( StringUtils.isEmpty( rc.getValue() ))
+        {
+        	throw new ValidationException( GlobalErrIds.ROLE_CONSTRAINT_VALUE_NULL, CLS_NM + ".validate value is NULL" );
+        }
+    }
 
 
     /**

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/074fa2a5/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/util/VUtil.java b/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
index 6dbcd66..c995f80 100755
--- a/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
+++ b/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
@@ -31,11 +31,17 @@ import java.util.Properties;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
-import org.apache.directory.fortress.core.*;
+import org.apache.directory.fortress.core.CfgException;
+import org.apache.directory.fortress.core.GlobalErrIds;
+import org.apache.directory.fortress.core.GlobalIds;
+import org.apache.directory.fortress.core.ReviewMgr;
+import org.apache.directory.fortress.core.ReviewMgrFactory;
 import org.apache.directory.fortress.core.SecurityException;
+import org.apache.directory.fortress.core.ValidationException;
 import org.apache.directory.fortress.core.model.Constraint;
 import org.apache.directory.fortress.core.model.ConstraintValidator;
 import org.apache.directory.fortress.core.model.ObjectFactory;
+import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.PropUtil;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.UserRole;
@@ -657,4 +663,24 @@ public final class VUtil implements ConstraintValidator
         }
         return validators;
     }
+    
+    /**
+     * Checks the Permission Attribute Set exists
+     * 
+     * @param value Name of the Permission Attribute Set
+     * @throws ValidationException
+     */
+    public static void permAttrSetName( String value ) throws ValidationException
+    {    	    	
+    	try{
+    		ReviewMgr reviewMgr = ReviewMgrFactory.createInstance();      		
+    		PermissionAttributeSet paSet = reviewMgr.readPermAttributeSet(new PermissionAttributeSet(value));
+    	}
+        catch(Exception e){
+            String error = "permissionAttributeSet - not found with name [" + value + "]";
+            throw new ValidationException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, error );
+        }
+
+        RegExUtil.safeText( value );
+    }
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/074fa2a5/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
index 7ba2186..5a3ae9d 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
@@ -1893,51 +1893,63 @@ public class AdminMgrImplTest extends TestCase
     
     public void testAddPASetToPermission()
     {
-    	addPASetToPermission( "ADD-PASET-TO-POP TOB_1 TOP_1", PermTestData.TPA_SET_1_NAME, "TOB1_1", PermTestData.OPS_TOP1_UPD[0] );   	
+    	addValidPASetToPermission( "ADD-PASET-TO-POP-VALID TOB_1 TOP_1", PermTestData.TPA_SET_1_NAME, "TOB1_1", PermTestData.OPS_TOP1_UPD[0] );   	
+    	addInvalidPASetToPermission( "ADD-PASET-TO-POP-INVALID TOB_1 TOP_1", PermTestData.TPA_SET_NOT_EXIST_NAME, "TOB1_1", PermTestData.OPS_TOP1_UPD[0] );   	
     }
-    
-    public static void addPASetToPermission( String msg, String paSetName, String obj, String[] op )
-    {
-    	LogUtil.logIt(msg);
-    	try
-    	{
-    		AdminMgr adminMgr = AdminMgrFactory.createInstance( TestUtils.getContext() );    		
 
-    		Permission pop = PermTestData.getOp( obj, op );
-    		pop.setPaSetName(paSetName);
+    public static void addInvalidPASetToPermission( String msg, String paSetName, String obj, String[] op )
+    {
+    	try{
+    		addPASetToPermission(msg, paSetName, obj, op);
     		
-    		adminMgr.updatePermission(pop);
-    		LOG.debug( "addPASetToPermission name [" + paSetName + "] successful" );
+    		String message = "addInvalidPASetToPermission name [" + paSetName + "] was successfull, when should ahve failed.";
+    		LOG.error( message );
+    		fail( message );
     	}
     	catch ( SecurityException ex )
     	{
-    		LOG.error( "addPASetToPermission name [" + paSetName
+    		LOG.info("Caught exception adding invalid tpa set name " + paSetName);
+    	}
+    }
+    
+    public static void addValidPASetToPermission( String msg, String paSetName, String obj, String[] op )
+    {
+    	try{
+    		addPASetToPermission(msg, paSetName, obj, op);
+    	}
+    	catch ( SecurityException ex )
+    	{
+    		LOG.error( "addValidPASetToPermission name [" + paSetName
     				+ "] caught SecurityException rc=" + ex.getErrorId() + ", msg=" + ex.getMessage(), ex );
     		fail( ex.getMessage() );
     	}
     }
     
+    public static void addPASetToPermission( String msg, String paSetName, String obj, String[] op ) throws SecurityException
+    {
+    	LogUtil.logIt(msg);
+
+    	AdminMgr adminMgr = AdminMgrFactory.createInstance( TestUtils.getContext() );    		
+
+    	Permission pop = PermTestData.getOp( obj, op );
+    	pop.setPaSetName(paSetName);
+
+    	adminMgr.updatePermission(pop);
+    	LOG.debug( "addPASetToPermission name [" + paSetName + "] successful" );    	
+    }
+    
     public void testAddUserRoleConstraint() throws SecurityException
     {
-    	assignUserRoleConstraint( "ASGN-URC TU1 TR1", UserTestData.USERS_TU1[0], RoleTestData.ROLES_TR1[1], URATestData.getRC(URATestData.URC_T1) );
+    	assignValidUserRoleConstraint( "ASGN-URC-VALID TU1 TR1", UserTestData.USERS_TU1[0], RoleTestData.ROLES_TR1[1], URATestData.getRC(URATestData.URC_T1) );
+    	
+    	assignInvalidUserRoleConstraint( "ASGN-URC-INVALID TU1 TR1", UserTestData.USERS_TU1[0], RoleTestData.ROLES_TR1[1], URATestData.getRC(URATestData.URC_T1_INVALID) );
     }
     
-    public static void assignUserRoleConstraint( String msg, String[] usr, String[] rle, RoleConstraint rc )
+    public static void assignValidUserRoleConstraint( String msg, String[] usr, String[] rle, RoleConstraint rc )
     {
-        LogUtil.logIt( msg );
-        try
-        {
-            AdminMgr adminMgr = getManagedAdminMgr();
-            ReviewMgr reviewMgr = ReviewMgrImplTest.getManagedReviewMgr();
-            
-            User user = UserTestData.getUser( usr );
-            Role role = RoleTestData.getRole( rle );
-            
-            adminMgr.addRoleConstraint(new UserRole(user.getUserId(), role.getName()), rc);
-           
-            LOG.debug("assignUserRoleConstraint user [" + user.getUserId() + "] role [" + role.getName() + "] " +
-            				" rcvalue [" + rc.getValue() + "]");
-        }
+    	try{
+    		assignUserRoleConstraint(msg, usr, rle, rc);
+    	}
         catch ( SecurityException ex )
         {
             LOG.error(
@@ -1945,6 +1957,39 @@ public class AdminMgrImplTest extends TestCase
                     + ex.getMessage(), ex );
             fail( ex.getMessage() );
         }
+    
+    }
+    
+    public static void assignInvalidUserRoleConstraint( String msg, String[] usr, String[] rle, RoleConstraint rc )
+    {
+    	try{
+    		assignUserRoleConstraint(msg, usr, rle, rc);
+    		
+    		String message = "assignInvalidUserRoleConstraint name [" + rc.getPaSetName() + "] was successfull, when should ahve failed.";
+    		LOG.error( message );
+    		fail( message );
+    	}
+    	catch ( SecurityException ex )
+    	{
+    		LOG.info("Caught exception adding invalid tpa set name " + rc.getPaSetName());
+    	}
+    
+    }
+    
+    public static void assignUserRoleConstraint( String msg, String[] usr, String[] rle, RoleConstraint rc ) throws SecurityException
+    {
+    	LogUtil.logIt( msg );
+
+    	AdminMgr adminMgr = getManagedAdminMgr();
+    	ReviewMgr reviewMgr = ReviewMgrImplTest.getManagedReviewMgr();
+
+    	User user = UserTestData.getUser( usr );
+    	Role role = RoleTestData.getRole( rle );
+
+    	adminMgr.addRoleConstraint(new UserRole(user.getUserId(), role.getName()), rc);
+
+    	LOG.debug("assignUserRoleConstraint user [" + user.getUserId() + "] role [" + role.getName() + "] " +
+    			" rcvalue [" + rc.getValue() + "]");       
     }
     
     

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/074fa2a5/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java b/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
index 05f2f18..45718a9 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
@@ -2772,6 +2772,7 @@ public class PermTestData extends TestCase
      */
     public static final String TPA_SET_1_NAME = "TPASET1";
     public static final String TPA_SET_2_NAME = "TPASET2";
+    public static final String TPA_SET_NOT_EXIST_NAME = "NOTEXISTTPASETNAME";
     
     public static final String[][] PA_TPSASET1 =
     {

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/074fa2a5/src/test/java/org/apache/directory/fortress/core/impl/URATestData.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/URATestData.java b/src/test/java/org/apache/directory/fortress/core/impl/URATestData.java
index 0f1b729..3ee76c4 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/URATestData.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/URATestData.java
@@ -953,6 +953,13 @@ public class URATestData extends TestCase
     	"TPASET1AttributeName1=testattributevalue" //CONSTAIN_VALUE
     };
     
+    public static final String[] URC_T1_INVALID =
+    {
+    	"TPASETNAMENOTEXIST", // CONSTRAINT_PASET_NM
+    	"FILTER", //CONSTAINT_TYPE
+    	"TPASET1AttributeName1=testattributevalue" //CONSTAIN_VALUE
+    };
+    
     /**
     * The Fortress test data for junit uses 2-dimensional arrays.
     */


[31/43] directory-fortress-core git commit: changed how pa sets and pas are stored in ldap

Posted by cp...@apache.org.
changed how pa sets and pas are stored in ldap


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/fd2fead1
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/fd2fead1
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/fd2fead1

Branch: refs/heads/master
Commit: fd2fead1c50f44c6087b40ba4519fe83bc0e349e
Parents: 7a8d785
Author: clp207 <cl...@psu.edu>
Authored: Tue Aug 23 13:19:31 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Tue Aug 23 13:19:31 2016 -0400

----------------------------------------------------------------------
 ldap/schema/fortress.schema                     |  80 ++++++-
 .../directory/fortress/core/GlobalIds.java      |  41 +++-
 .../directory/fortress/core/impl/PermDAO.java   | 204 +++++++++++++----
 .../core/model/PermissionAttribute.java         | 221 ++++++++-----------
 .../core/model/PermissionAttributeSet.java      |  31 ++-
 .../fortress/core/impl/PermTestData.java        |   7 +-
 6 files changed, 389 insertions(+), 195 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/fd2fead1/ldap/schema/fortress.schema
----------------------------------------------------------------------
diff --git a/ldap/schema/fortress.schema b/ldap/schema/fortress.schema
index 6cb2040..754e43b 100644
--- a/ldap/schema/fortress.schema
+++ b/ldap/schema/fortress.schema
@@ -280,7 +280,7 @@ attributetype ( ftAtId:30
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
 # A31: User Role Constraints, type STRING, MULTI VALUE
-attributetype ( 1.3.6.1.4.1.1.38088.1.31
+attributetype ( ftAtId:31
     NAME 'ftPA'
     DESC 'Fortress Permission Attribute Constraints'
     EQUALITY caseIgnoreMatch
@@ -288,19 +288,59 @@ attributetype ( 1.3.6.1.4.1.1.38088.1.31
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
 # A32: User Role Constraints, type STRING, MULTI VALUE
-attributetype ( 1.3.6.1.4.1.1.38088.1.32
+attributetype ( ftAtId:32
     NAME 'ftPASet'
     DESC 'Fortress Permission Attribute Set'
     EQUALITY caseIgnoreMatch
     SUBSTR caseIgnoreSubstringsMatch
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
-# A33: User Role Constraints, type STRING, MULTI VALUE
-attributetype ( 1.3.6.1.4.1.1.38088.1.33
+# A33: User Role Constraints, type STRING, SINGLE VALUE
+attributetype ( ftAtId:33
     NAME 'ftPADefaultOperator'
     DESC 'Fortress Permission Attribute Set Default Operator'
     EQUALITY caseIgnoreMatch
     SUBSTR caseIgnoreSubstringsMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE VALUE )
+    
+# A34: User Role Constraints, type STRING, MULTI VALUE
+attributetype ( ftAtId:34
+    NAME 'ftPASetType'
+    DESC 'Fortress Permission Attribute Set Type'
+    EQUALITY caseIgnoreMatch
+    SUBSTR caseIgnoreSubstringsMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+    
+# A35: Permission Attribute Data Type, type STRING, SINGLE VALUE
+attributetype ( ftAtId:35
+    NAME 'ftPADataType'
+    DESC 'Fortress Permission Attribute Data Type'
+    EQUALITY caseIgnoreMatch
+    SUBSTR caseIgnoreSubstringsMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE VALUE )
+    
+# A36: Permission Attribute Default Value, type STRING, SINGLE VALUE
+attributetype ( ftAtId:36
+    NAME 'ftPADefaultValue'
+    DESC 'Fortress Permission Attribute Set Default Value'
+    EQUALITY caseIgnoreMatch
+    SUBSTR caseIgnoreSubstringsMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE VALUE ) 
+    
+# A37: Permission Attribute Default Strategy, type STRING, SINGLE VALUE
+attributetype ( ftAtId:37
+    NAME 'ftPADefaultStrategy'
+    DESC 'Fortress Permission Attribute Default Strategy'
+    EQUALITY caseIgnoreMatch
+    SUBSTR caseIgnoreSubstringsMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE VALUE ) 
+    
+# A38: Permission Attribute Valid Values, type STRING, MULTI VALUE
+attributetype ( ftAtId:38
+    NAME 'ftPAValidVals'
+    DESC 'Fortress Permission Attribute Valid Values'
+    EQUALITY caseIgnoreMatch
+    SUBSTR caseIgnoreSubstringsMatch
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
 ######################################################################
@@ -432,19 +472,43 @@ objectClass ( ftObId:8
     MAY configParameter
     )
 
-## OC3: Fortress Permission Attribute Set Structural Object Class
-objectclass    ( 1.3.6.1.4.1.38088.2.9
+## OC9: Fortress Permission Attribute Set Structural Object Class
+objectclass    ( ftObId:9
     NAME 'ftAttributeSet'
     DESC 'Fortress Attribute Set Structural Object Class'
-    SUP organizationalrole
+    SUP organizationalunit
     STRUCTURAL
     MUST (
         ftId $
+        ftPASet $
         cn
         )
     MAY (
         ftPA $
-        ftPADefaultOperator
+        ftPASetType $
+        description
+        )
+    )
+    
+## OC10: Fortress Permission Attribute Structural Object Class
+objectclass    ( ftObId:10
+    NAME 'ftAttribute'
+    DESC 'Fortress Attribute Structural Object Class'
+    SUP organizationalrole
+    STRUCTURAL
+    MUST (
+        ftId $
+        ftPASet $
+        ftPA $
+        cn
+        )
+    MAY (        
+        ftPADataType $
+        ftPADefaultValue $
+        ftPADefaultStrategy $
+        ftPADefaultOperator $
+        ftPAValidVals $
+        description
         )
     )
 

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/fd2fead1/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
index 8994761..24c2972 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
@@ -490,14 +490,45 @@ public final class GlobalIds
      * Attribute name for storing Fortress permission attribute set object names.
      */
     public static final String PERMISSION_ATTRIBUTE_SET_NAME = "ftAttributeSet";
-    
-    /**
-     * Attribute name for storing default operator of a PA set
-     */
-    public static final String FT_PA_SET_DEFAULT_OPERATOR = "ftPADefaultOperator";
 
     /**
      * When this property is set to true in fortress.properties, the userPassword field on newly created users will not be created.
      */
     public static final String USER_CREATION_PASSWORD_FIELD = "user.creation.field.password.disable";
+    
+    /**
+     * The ftPASetType field contains the user defined type of a pa set
+     */
+    public static final String FT_PERMISSION_ATTRIBUTE_SET_TYPE = "ftPASetType";
+    
+    /**
+     * Attribute name for storing Fortress permission attribute set object names.
+     */
+    public static final String PERMISSION_ATTRIBUTE_NAME = "ftAttribute";
+    
+    /**
+     * Attribute name for storing Fortress permission attribute data type name.
+     */
+    public static final String FT_PERMISSION_ATTRIBUTE_DATA_TYPE = "ftPADataType";
+    
+    /**
+     * Attribute name for storing Fortress permission attribute default value name.
+     */
+    public static final String FT_PERMISSION_ATTRIBUTE_DEFAULT_VALUE = "ftPADefaultValue";
+    
+    /**
+     * Attribute name for storing Fortress permission attribute default strategy name.
+     */
+    public static final String FT_PERMISSION_ATTRIBUTE_DEFAULT_STRATEGY = "ftPADefaultStrategy";
+    
+    /**
+     * Attribute name for storing Fortress permission attribute set default operator name.
+     */
+    public static final String FT_PERMISSION_ATTRIBUTE_DEFAULT_OPERATOR = "ftPADefaultOperator";
+    
+    /**
+     * Attribute name for storing Fortress permission attribute valid vals name.
+     */
+    public static final String FT_PERMISSION_ATTRIBUTE_VALID_VALUES = "ftPAValidVals";
+    		
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/fd2fead1/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 1a7f242..838d425 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
@@ -22,6 +22,7 @@ package org.apache.directory.fortress.core.impl;
 
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -163,7 +164,8 @@ final class PermDAO extends LdapDataProvider
     private static final String TYPE = "ftType";
     private static final String PERM_OBJ_OBJECT_CLASS_NAME = "ftObject";
     private static final String PERM_OP_OBJECT_CLASS_NAME = "ftOperation";
-    private static final String PERMISSION_ATTRIBUTE_OBJECT_CLASS_NAME = "ftAttributeSet";
+    private static final String PERMISSION_ATTRIBUTE_SET_OBJECT_CLASS_NAME = "ftAttributeSet";
+    private static final String PERMISSION_ATTRIBUTE_OBJECT_CLASS_NAME = "ftAttribute";
     
     private static final String PERM_OBJ_OBJ_CLASS[] =
         {
@@ -210,8 +212,22 @@ final class PermDAO extends LdapDataProvider
     };
     
     private static final String[] PERMISION_ATTRIBUTE_SET_ATRS =
-        {
-            GlobalIds.FT_IID, GlobalIds.FT_PERMISSION_ATTRIBUTE, SchemaConstants.DESCRIPTION_AT, SchemaConstants.CN_AT
+    {
+        GlobalIds.FT_IID, SchemaConstants.DESCRIPTION_AT, SchemaConstants.CN_AT, GlobalIds.FT_PERMISSION_ATTRIBUTE_SET_TYPE
+    };
+    
+    private static final String[] PERMISION_ATTRIBUTE_ATRS =
+    {
+        GlobalIds.FT_IID, 
+        GlobalIds.FT_PERMISSION_ATTRIBUTE, 
+        SchemaConstants.DESCRIPTION_AT, 
+        SchemaConstants.CN_AT, 
+        GlobalIds.FT_PERMISSION_ATTRIBUTE_SET,
+        GlobalIds.FT_PERMISSION_ATTRIBUTE_DATA_TYPE,
+        GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_OPERATOR,
+        GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_STRATEGY,
+        GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_VALUE,
+        GlobalIds.FT_PERMISSION_ATTRIBUTE_VALID_VALUES
     };
 
     public PermDAO(){
@@ -459,20 +475,21 @@ final class PermDAO extends LdapDataProvider
 
         return entity;
     }
-
     
     //TODO: add documentation
     PermissionAttributeSet createPermissionAttributeSet( PermissionAttributeSet entity ) throws CreateException
     {
         LdapConnection ld = null;
-        String dn = getPASetDn( entity.getName() , entity.getContextId() );
+        String dn = getDn( entity , entity.getContextId() );
 
         try
         {
             Entry entry = new DefaultEntry( dn );
 
-            entry.add( SchemaConstants.OBJECT_CLASS_AT, PERMISSION_ATTRIBUTE_OBJECT_CLASS_NAME );
+            entry.add( SchemaConstants.OBJECT_CLASS_AT, PERMISSION_ATTRIBUTE_SET_OBJECT_CLASS_NAME );
 
+            entry.add( GlobalIds.FT_PERMISSION_ATTRIBUTE_SET, entity.getName() );
+            
             // this will generate a new random, unique id on this entity:
             entity.setInternalId();
 
@@ -485,15 +502,14 @@ final class PermDAO extends LdapDataProvider
                 entry.add( SchemaConstants.DESCRIPTION_AT, entity.getDescription() );
             }
 
-            // organizational name requires CN attribute:
-            entry.add( SchemaConstants.CN_AT, entity.getName() );
-                    
-            //default operator between attributes
-            if( StringUtils.isNotEmpty(entity.getDefaultOperator()) )
+            if ( StringUtils.isNotEmpty( entity.getType() ) )
             {
-                entry.add( GlobalIds.FT_PA_SET_DEFAULT_OPERATOR, entity.getDefaultOperator() );
+                entry.add( GlobalIds.FT_PERMISSION_ATTRIBUTE_SET_TYPE, entity.getType() );
             }
             
+            // organizational name requires CN attribute:
+            entry.add( SchemaConstants.CN_AT, entity.getName() );                    
+            
             // now add the new entry to directory:
             ld = getAdminConnection();
             add( ld, entry, entity );
@@ -522,22 +538,66 @@ final class PermDAO extends LdapDataProvider
     PermissionAttribute createPermissionAttribute( PermissionAttribute entity, String attributeSetName ) throws CreateException
     {
         LdapConnection ld = null;
-        String dn = getPASetDn( attributeSetName, entity.getContextId() );
+        String dn = getDn( entity, attributeSetName, entity.getContextId() );
     
-    	try
+        try
         {
-            List<Modification> mods = new ArrayList<Modification>();
-            mods.add( new DefaultModification(
-                ModificationOperation.ADD_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE, entity.toFtPAString()) );
-            ld = getAdminConnection();
-            modify( ld, dn, mods, entity );
+            Entry entry = new DefaultEntry( dn );
+
+            entry.add( SchemaConstants.OBJECT_CLASS_AT, PERMISSION_ATTRIBUTE_OBJECT_CLASS_NAME );
+
+            // this will generate a new random, unique id on this entity:
+            entity.setInternalId();            
+            
+            // create the internal id:
+            entry.add( GlobalIds.FT_IID, entity.getInternalId() );
+            
+            entry.add( GlobalIds.FT_PERMISSION_ATTRIBUTE, entity.getAttributeName() );
+            entry.add( GlobalIds.FT_PERMISSION_ATTRIBUTE_SET, attributeSetName );
+            
+            // description is optional
+            if ( StringUtils.isNotEmpty( entity.getDescription() ) )
+            {
+                entry.add( SchemaConstants.DESCRIPTION_AT, entity.getDescription() );
+            }
+
+            if ( StringUtils.isNotEmpty( entity.getDataType() ) )
+            {
+                entry.add( GlobalIds.FT_PERMISSION_ATTRIBUTE_DATA_TYPE, entity.getDataType() );
+            }
+
+            if ( StringUtils.isNotEmpty( entity.getDefaultOperator() ) )
+            {
+                entry.add( GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_OPERATOR, entity.getDefaultOperator() );
+            }
+            
+            if ( StringUtils.isNotEmpty( entity.getDefaultStrategy() ) )
+            {
+                entry.add( GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_STRATEGY, entity.getDefaultStrategy() );
+            }
+            
+            if ( StringUtils.isNotEmpty( entity.getDefaultValue() ) )
+            {
+                entry.add( GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_VALUE, entity.getDefaultValue() );
+            }
+            
+            //add one to many valid values
+            for(String validValue : entity.getValidValues()){
+            	entry.add( GlobalIds.FT_PERMISSION_ATTRIBUTE_VALID_VALUES, validValue );
+            }
+            
+            // organizational name requires CN attribute:
+            entry.add( SchemaConstants.CN_AT, entity.getAttributeName() );    
+            
             
-            //TODO: make sure not adding same attribute twice...???
+            // now add the new entry to directory:
+            ld = getAdminConnection();
+            add( ld, entry, entity );
+            entity.setDn( dn );
         }
         catch ( LdapException e )
         {
-            String error = "create perm attribute [" + entity.getAttributeName() + "] caught LdapException="
-                + e.getMessage();
+            String error = "createPermissionAttribute name [" + entity.getAttributeName() + "] caught LdapException=" + e.getMessage();
             throw new CreateException( GlobalErrIds.PERM_ATTR_ADD_FAILED, error, e );
         }
         finally
@@ -660,7 +720,7 @@ final class PermDAO extends LdapDataProvider
     void deleteAttributeSet( PermissionAttributeSet entity ) throws RemoveException
     {
         LdapConnection ld = null;
-        String dn = getPASetDn( entity.getName(), entity.getContextId() );
+        String dn = getDn( entity, entity.getContextId() );
 
         try
         {
@@ -692,19 +752,16 @@ final class PermDAO extends LdapDataProvider
     void deletePermissionAttribute( PermissionAttribute entity, String attributeSetName ) throws RemoveException
     {
         LdapConnection ld = null;
-        String dn = getPASetDn( attributeSetName, entity.getContextId() );
+        String dn = getDn( entity, attributeSetName, entity.getContextId() );
 
         try
         {
-            List<Modification> mods = new ArrayList<Modification>();
-            mods.add( new DefaultModification(
-                ModificationOperation.REMOVE_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE, entity.toFtPAString() ) );
             ld = getAdminConnection();
-            modify( ld, dn, mods, new PermissionAttributeSet(attributeSetName) );
+            delete(ld,  dn);
         }
         catch ( LdapException e )
         {
-            String error = "deletePermissionAttribute name [" + entity.getAttributeName() + "] set ["
+            String error = "deletePermission name [" + entity.getAttributeName() + "] set ["
             		+ attributeSetName + "] caught LdapException=" + e.getMessage();
             throw new RemoveException( GlobalErrIds.PERM_ATTRIBUTE_DELETE_FAILED, error, e );
         }     
@@ -992,7 +1049,7 @@ final class PermDAO extends LdapDataProvider
     {
     	PermissionAttributeSet entity = null;
     	LdapConnection ld = null;
-    	String dn = getPASetDn(permAttributeSet.getName(), permAttributeSet.getContextId());
+    	String dn = getDn(permAttributeSet, permAttributeSet.getContextId());
 
     	try
     	{
@@ -1004,6 +1061,9 @@ final class PermDAO extends LdapDataProvider
     			throw new FinderException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, warning );
     		}
     		entity = unloadPASetLdapEntry( findEntry, 0 );
+    		
+    		//find permission attributes for this set
+    		entity.setAttributes(this.findPermissionAttributes(entity));
     	}
     	catch ( LdapNoSuchObjectException e )
     	{
@@ -1023,6 +1083,50 @@ final class PermDAO extends LdapDataProvider
     	return entity;
     }
 
+    Set<PermissionAttribute> findPermissionAttributes( PermissionAttributeSet paSet )
+    		throws FinderException
+    {
+    	Set<PermissionAttribute> paList = new HashSet<PermissionAttribute>();
+    	LdapConnection ld = null;
+    	String permRoot = getRootDn( paSet.getContextId() );
+
+    	try
+    	{
+    		String paSetVal = encodeSafeText( paSet.getName(), GlobalIds.PERM_LEN );
+    		StringBuilder filterbuf = new StringBuilder();
+    		filterbuf.append( GlobalIds.FILTER_PREFIX );
+    		filterbuf.append( PERMISSION_ATTRIBUTE_OBJECT_CLASS_NAME );
+    		filterbuf.append( ")(" );
+    		filterbuf.append( GlobalIds.FT_PERMISSION_ATTRIBUTE );
+    		filterbuf.append( "=" );
+    		filterbuf.append( paSetVal );
+    		filterbuf.append(  "))" );
+    		ld = getAdminConnection();
+    		SearchCursor searchResults = search( ld, permRoot,
+    				SearchScope.SUBTREE, filterbuf.toString(), PERMISION_ATTRIBUTE_ATRS, false, GlobalIds.BATCH_SIZE );
+    		long sequence = 0;
+
+    		while ( searchResults.next() )
+    		{
+    			paList.add( unloadPALdapEntry( searchResults.getEntry(), sequence++ ) );
+    		}
+    	}
+    	catch ( LdapException e )
+    	{
+    		String error = "findPermissionAttributes caught LdapException=" + e.getMessage();
+    		throw new FinderException( GlobalErrIds.PERM_SEARCH_FAILED, error, e );
+    	}
+    	catch ( CursorException e )
+    	{
+    		String error = "findPermissionAttributes caught CursorException=" + e.getMessage();
+    		throw new FinderException( GlobalErrIds.PERM_SEARCH_FAILED, error, e );
+    	}
+    	finally
+    	{
+    		closeAdminConnection( ld );
+    	}
+    	return paList;
+    }
 
     /**
      * This method performs fortress authorization using data passed in (session) and stored on ldap server (permission).  It has been recently changed to use ldap compare operations in order to trigger slapd access log updates in directory.
@@ -1274,15 +1378,30 @@ final class PermDAO extends LdapDataProvider
     	entity.setDn( le.getDn().getName() );
     	entity.setInternalId( getAttribute( le, GlobalIds.FT_IID ) );
     	entity.setDescription( getAttribute( le, SchemaConstants.DESCRIPTION_AT ) );
+    	entity.setType( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_SET_TYPE ) );    	    	
     	
-    	List<String> ftPAs = getAttributes( le, GlobalIds.FT_PERMISSION_ATTRIBUTE );
+    	return entity;
+    }
+    
+    private PermissionAttribute unloadPALdapEntry( Entry le, long sequence )
+    		throws LdapInvalidAttributeValueException
+    {
+    	PermissionAttribute entity = new ObjectFactory().createPermissionAttribute();
+    	entity.setSequenceId( sequence );
+    	entity.setAttributeName( getAttribute( le, SchemaConstants.CN_AT ) );
+    	entity.setDn( le.getDn().getName() );
+    	entity.setInternalId( getAttribute( le, GlobalIds.FT_IID ) );
+    	entity.setDescription( getAttribute( le, SchemaConstants.DESCRIPTION_AT ) );
+    	entity.setDataType( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DATA_TYPE ) );
+    	entity.setDefaultOperator( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_OPERATOR ) );
+    	entity.setDefaultStrategy( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_STRATEGY ) );
+    	entity.setDefaultValue( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_VALUE ) );
     	
-    	if(ftPAs != null){
-    		for(String ftPARaw : ftPAs){
-    			PermissionAttribute permAttribute = new ObjectFactory().createPermissionAttribute();
-                permAttribute.load( ftPARaw );
-                
-                entity.getAttributes().add(permAttribute);
+    	List<String> validValues = getAttributes( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_VALID_VALUES );
+    	
+    	if(validValues != null){
+    		for(String value : validValues){
+    			entity.getValidValues().add(value);
     		}
     	}
     	
@@ -1905,12 +2024,17 @@ final class PermDAO extends LdapDataProvider
     }
     
 
-    private String getPASetDn( String name, String contextId )
+    private String getDn( PermissionAttributeSet paSet, String contextId )
     {
-    	//TODO: what ou to put this?
-        return SchemaConstants.CN_AT + "=" + name + "," + getRootDn( contextId, GlobalIds.SD_ROOT );
+        return GlobalIds.PERMISSION_ATTRIBUTE_SET_NAME + "=" + paSet.getName() + "," + getRootDn( contextId, GlobalIds.SD_ROOT );
     }
 
+    
+    private String getDn( PermissionAttribute pa, String paSetName, String contextId )
+    {
+        return GlobalIds.PERMISSION_ATTRIBUTE_SET_NAME + "=" + paSetName + "," + GlobalIds.PERMISSION_ATTRIBUTE_NAME  + "=" + pa.getAttributeName() + "," + getRootDn( contextId, GlobalIds.SD_ROOT );
+    }
+    
 
     private String getRootDn( boolean isAdmin, String contextId )
     {

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/fd2fead1/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
index 56105cd..1ca5e43 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
@@ -21,47 +21,39 @@ package org.apache.directory.fortress.core.model;
 
 import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.commons.lang.StringUtils;
-
-//AccountId?dataType=int&required=true&validValues=SELF,ANY,int&comparator=equals&default=SELF
-
 @XmlRootElement(name = "ftPA")
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "permission", propOrder =
-    {
-        "required",
-        "operator",
-        "dataType",
-        "validValues",
-        "defaultValue"
+{
+    "attributeName",
+    "defaultOperator",
+    "dataType",
+    "defaultValue",
+    "defaultStrategy",
+    "validValues"
 })
 public class PermissionAttribute extends FortEntity implements Serializable {
 
     /** Default serialVersionUID */
     private static final long serialVersionUID = 1L;
     
-    private static final String REQUIRED_PARAM_NAME = "required";
-    private static final String OPERATOR_PARAM_NAME = "operator";
-    private static final String DATA_TYPE_PARAM_NAME = "dataType";
-    private static final String VALID_VALUES_PARAM_NAME = "validValues";
-    private static final String DEFAULT_VALUE_PARAM_NAME = "defaultValue";
-    
     private String attributeName;
-    private Boolean required = false;
-    private ComparisonOperator operator;
-    //TODO: make this an enum?
-    private String dataType;
-    //TODO: should this be an enum?
-    private List<String> validValues;
+    private String defaultOperator;
+    private String dataType;    
     private String defaultValue;
+    private String defaultStrategy;
+    private List<String> validValues;
+    private String dn;
+    private String internalId;
+    private String description;
     
     public PermissionAttribute()
     {
@@ -71,110 +63,8 @@ public class PermissionAttribute extends FortEntity implements Serializable {
     public PermissionAttribute(String attributeName)
     {
     	this.attributeName = attributeName;
-    }
-    
-    public String toFtPAString(){
-    	String ftPA = attributeName + "?";
-    	
-    	List<String> qualifiers = new ArrayList<String>();    	
-    	
-    	if(required != null){
-    		qualifiers.add(REQUIRED_PARAM_NAME + "=" + String.valueOf(required));
-    	}
-    	if(operator != null){
-    		qualifiers.add(OPERATOR_PARAM_NAME + "=" + operator);
-    	}
-    	if(dataType != null){
-    		qualifiers.add(DATA_TYPE_PARAM_NAME + "=" + dataType);
-    	}
-    	if(validValues != null && validValues.size() > 0){    		    		
-    		qualifiers.add(VALID_VALUES_PARAM_NAME + "=" + StringUtils.join(validValues, ","));
-    	}
-    	if(defaultValue != null){
-    		qualifiers.add(DEFAULT_VALUE_PARAM_NAME + "=" + defaultValue);
-    	}
-    		
-    	ftPA += StringUtils.join(qualifiers, "&");
-    	
-    	return ftPA;
-    }
-    
-	public Boolean getRequired() {
-		return required;
-	}
-	public void setRequired(Boolean required) {
-		this.required = required;
-	}
-	public ComparisonOperator getOperator() {
-		return operator;
-	}
-	public void setOperator(ComparisonOperator operator) {
-		this.operator = operator;
-	}
-	public String getDataType() {
-		return dataType;
-	}
-	public void setDataType(String dataType) {
-		this.dataType = dataType;
-	}
-	public List<String> getValidValues() {
-		return validValues;
-	}
-	public void setValidValues(List<String> validValues) {
-		this.validValues = validValues;
-	}
-	public String getDefaultValue() {
-		return defaultValue;
-	}
-	public void setDefaultValue(String defaultValue) {
-		this.defaultValue = defaultValue;
-	}
-	public String getAttributeName() {
-		return attributeName;
-	}
-	public void setAttributeName(String attributeName) {
-		this.attributeName = attributeName;
-	}
+    }       
 	
-	/**
-     * This method loads PermissionAttribute entity instance variables with data that was retrieved from the
-     * 'ftPA' attribute on the 'ftOperation' object class.
-     *
-     * @param szRawData contains a raw formatted String that maps to 'ftPA' attribute on 'ftOperation' object class
-     */
-    public void load( String szRawData )
-    {    	
-        if ( ( szRawData != null ) && ( szRawData.length() > 0 ) )
-        {
-            String[] data = StringUtils.split(szRawData, "?"); 
-            attributeName = data[0];
-            		
-            String[] parameters = data[1].split("&");
-            for (String param : parameters){
-            	String[] paramSplit = param.split("=");
-            	String name = paramSplit[0];
-            	String val = paramSplit[1];
-            	
-            	if(name.equals(REQUIRED_PARAM_NAME)){
-            		required = Boolean.parseBoolean(val);
-            	}
-            	if(name.equals(OPERATOR_PARAM_NAME)){
-            		operator = ComparisonOperator.fromName(val);
-            	}
-            	if(name.equals(DATA_TYPE_PARAM_NAME)){
-            		dataType = val;
-            	}
-            	if(name.equals(VALID_VALUES_PARAM_NAME)){
-            		validValues = Arrays.asList(val.split(","));
-            	}
-            	if(name.equals(DEFAULT_VALUE_PARAM_NAME)){
-            		defaultValue = val;
-            	}
-            	
-            }
-        }
-    }
-    
     /**
      * Checks that attribute names are equal
      */
@@ -213,5 +103,84 @@ public class PermissionAttribute extends FortEntity implements Serializable {
         return result;
     }
 
+	public String getDefaultOperator() {
+		return defaultOperator;
+	}
+
+	public void setDefaultOperator(String defaultOperator) {
+		this.defaultOperator = defaultOperator;
+	}
+
+	public String getDataType() {
+		return dataType;
+	}
+
+	public void setDataType(String dataType) {
+		this.dataType = dataType;
+	}
+
+	public String getDefaultValue() {
+		return defaultValue;
+	}
+
+	public void setDefaultValue(String defaultValue) {
+		this.defaultValue = defaultValue;
+	}
+
+	public String getDefaultStrategy() {
+		return defaultStrategy;
+	}
+
+	public void setDefaultStrategy(String defaultStrategy) {
+		this.defaultStrategy = defaultStrategy;
+	}
+
+	public List<String> getValidValues() {
+		if(validValues == null){
+			validValues = new ArrayList<String>();
+		}
+		return validValues;
+	}
+
+	public void setValidValues(List<String> validValues) {
+		this.validValues = validValues;
+	}
+
+	public String getAttributeName() {
+		return attributeName;
+	}
+
+	public void setAttributeName(String attributeName) {
+		this.attributeName = attributeName;
+	}
+
+	public String getDn() {
+		return dn;
+	}
+
+	public void setDn(String dn) {
+		this.dn = dn;
+	}
+
+	public String getInternalId() {
+		return internalId;
+	}
+
+	public void setInternalId() {
+        UUID uuid = UUID.randomUUID();
+        this.internalId = uuid.toString();
+	}
+	
+	public void setInternalId(String internalId) {        
+        this.internalId = internalId;
+	}
+
+	public String getDescription() {
+		return description;
+	}
+
+	public void setDescription(String description) {
+		this.description = description;
+	}
     
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/fd2fead1/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
index 34ab5e7..eced0e5 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
@@ -19,6 +19,7 @@
  */
 package org.apache.directory.fortress.core.model;
 
+import java.io.Serializable;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.UUID;
@@ -27,6 +28,7 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 @XmlRootElement(name = "ftPermissionAttributeSet")
@@ -37,18 +39,23 @@ import javax.xml.bind.annotation.XmlType;
         "attributes",
         "internalId",
         "description",
-        "defaultOperator"
+        "type"
 })
-public class PermissionAttributeSet extends FortEntity {
+public class PermissionAttributeSet extends FortEntity implements Serializable {
 
+    /** Default serialVersionUID */
+    private static final long serialVersionUID = 1L;
+	
 	private String name;
 	@XmlElement(nillable = true)
 	private Set<PermissionAttribute> attributes;
     private String internalId;
     private String description;
+    private String type;
+    @XmlTransient
     private String dn;
-    private String defaultOperator;
-	
+
+    	
     public PermissionAttributeSet(String name){
     	this.name = name;
     }
@@ -113,20 +120,20 @@ public class PermissionAttributeSet extends FortEntity {
 		this.description = description;
 	}
 
-	public String getDn() {
-		return dn;
+	public String getType() {
+		return type;
 	}
 
-	public void setDn(String dn) {
-		this.dn = dn;
+	public void setType(String type) {
+		this.type = type;
 	}
 
-	public String getDefaultOperator() {
-		return defaultOperator;
+	public String getDn() {
+		return dn;
 	}
 
-	public void setDefaultOperator(String defaultOperator) {
-		this.defaultOperator = defaultOperator;
+	public void setDn(String dn) {
+		this.dn = dn;
 	}
 
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/fd2fead1/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java b/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
index 45718a9..f3cd4e2 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
@@ -23,8 +23,6 @@ package org.apache.directory.fortress.core.impl;
 import java.util.HashSet;
 import java.util.Set;
 
-import junit.framework.TestCase;
-
 import org.apache.directory.fortress.core.model.ComparisonOperator;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
@@ -32,6 +30,8 @@ import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import junit.framework.TestCase;
+
 
 /**
  * Description of the Class
@@ -2820,9 +2820,8 @@ public class PermTestData extends TestCase
     {
         PermissionAttribute permAttr = new PermissionAttribute();
         permAttr.setAttributeName(pa[0]);
-        permAttr.setRequired(Boolean.parseBoolean(pa[1]));
         permAttr.setDataType(pa[2]);
-        permAttr.setOperator(ComparisonOperator.valueOf(pa[3]));
+        permAttr.setDefaultOperator(ComparisonOperator.valueOf(pa[3]).name());
         return permAttr;
     }
     


[07/43] directory-fortress-core git commit: added more tests

Posted by cp...@apache.org.
added more tests


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/46ff1f34
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/46ff1f34
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/46ff1f34

Branch: refs/heads/master
Commit: 46ff1f34f6014efb706760fb2c2e1f758d61d609
Parents: 527cfea
Author: clp207 <cl...@psu.edu>
Authored: Sat Jan 30 19:11:08 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../fortress/core/impl/AdminMgrImplTest.java    | 58 +++++++++++++++
 .../fortress/core/impl/FortressJUnitTest.java   |  7 ++
 .../fortress/core/impl/ReviewMgrImplTest.java   | 77 ++++++++++++++++++++
 .../fortress/core/impl/URATestData.java         | 18 +++++
 4 files changed, 160 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/46ff1f34/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
index 732f12a..0624c07 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
@@ -38,6 +38,7 @@ import org.apache.directory.fortress.core.model.Permission;
 import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
+import org.apache.directory.fortress.core.model.RoleConstraint;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
@@ -1890,6 +1891,63 @@ public class AdminMgrImplTest extends TestCase
     	}
     }
     
+    public void testAddPASetToPermission()
+    {
+    	addPASetToPermission( "ADD-PASET-TO-POP TOB_1 TOP_1", PermTestData.TPA_SET_1_NAME, "TOB1_1", PermTestData.OPS_TOP1[0] );   	
+    }
+    
+    public static void addPASetToPermission( String msg, String paSetName, String obj, String[] op )
+    {
+    	LogUtil.logIt(msg);
+    	try
+    	{
+    		AdminMgr adminMgr = AdminMgrFactory.createInstance( TestUtils.getContext() );    		
+
+    		Permission pop = PermTestData.getOp( obj, op );
+    		pop.setPaSetName(paSetName);
+    		
+    		adminMgr.updatePermission(pop);
+    		LOG.debug( "addPASetToPermission name [" + paSetName + "] successful" );
+    	}
+    	catch ( SecurityException ex )
+    	{
+    		LOG.error( "addPASetToPermission name [" + paSetName
+    				+ "] caught SecurityException rc=" + ex.getErrorId() + ", msg=" + ex.getMessage(), ex );
+    		fail( ex.getMessage() );
+    	}
+    }
+    
+    public void testAddUserRoleConstraint() throws SecurityException
+    {
+    	assignUserRoleConstraint( "ASGN-URC TU1 TR1", UserTestData.USERS_TU1[0], RoleTestData.ROLES_TR1[1], URATestData.getRC(URATestData.URC_T1) );
+    }
+    
+    public static void assignUserRoleConstraint( String msg, String[] usr, String[] rle, RoleConstraint rc )
+    {
+        LogUtil.logIt( msg );
+        try
+        {
+            AdminMgr adminMgr = getManagedAdminMgr();
+            ReviewMgr reviewMgr = ReviewMgrImplTest.getManagedReviewMgr();
+            
+            User user = UserTestData.getUser( usr );
+            Role role = RoleTestData.getRole( rle );
+            
+            adminMgr.addRoleConstraint(new UserRole(user.getUserId(), role.getName()), rc);
+           
+            LOG.debug("assignUserRoleConstraint user [" + user.getUserId() + "] role [" + role.getName() + "] " +
+            				" rcvalue [" + rc.getValue() + "]");
+        }
+        catch ( SecurityException ex )
+        {
+            LOG.error(
+                "assignUserRoleConstraint caught SecurityException rc=" + ex.getErrorId() + ", msg="
+                    + ex.getMessage(), ex );
+            fail( ex.getMessage() );
+        }
+    }
+    
+    
     
     /**
      *

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/46ff1f34/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java b/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
index 8885c01..fd26012 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
@@ -203,6 +203,9 @@ public class FortressJUnitTest extends TestCase
 
         suite.addTest( new AdminMgrImplTest( "testAddPermissionAttributeSet" ) );
         suite.addTest( new AdminMgrImplTest( "testAddPermissionAttributeToSet" ) );
+        suite.addTest( new AdminMgrImplTest( "testAddPASetToPermission" ) );
+        
+        suite.addTest( new AdminMgrImplTest( "testAddUserRoleConstraint" ) );
         
         /***********************************************************/
         /* 3. Interrogation                                        */
@@ -243,8 +246,12 @@ public class FortressJUnitTest extends TestCase
         suite.addTest( new ReviewMgrImplTest( "testUserPermissions" ) );
         suite.addTest( new ReviewMgrImplTest( "testFindSsdSets" ) );
         suite.addTest( new ReviewMgrImplTest( "testFindDsdSets" ) );
+
         suite.addTest( new ReviewMgrImplTest( "testReadPermissionAttributeSets" ) );
+        suite.addTest( new ReviewMgrImplTest( "testReadPASetFromPermission" ) );
         
+        suite.addTest( new ReviewMgrImplTest( "testReadUserRoleConstraint" ) );
+
         /***********************************************************/
         /* 4. Security Checks                                      */
         /***********************************************************/

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/46ff1f34/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
index 04508f2..b6371e5 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
@@ -38,6 +38,7 @@ import org.apache.directory.fortress.core.model.Permission;
 import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
+import org.apache.directory.fortress.core.model.RoleConstraint;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
@@ -193,6 +194,33 @@ public class ReviewMgrImplTest extends TestCase
         }
     }
     
+    public void testReadPASetFromPermission()
+    {
+    	readPASetFromPermission( "RD-PASET-FROM-POP TOB_1 TOP_1", PermTestData.TPA_SET_1_NAME, "TOB1_1", PermTestData.OPS_TOP1[0] );   	
+    }
+
+    public static void readPASetFromPermission( String msg, String paSetName, String obj, String[] op )
+    {
+    	LogUtil.logIt(msg);
+    	try
+    	{
+    		ReviewMgr reviewMgr = getManagedReviewMgr();   		
+
+    		Permission pop = PermTestData.getOp( obj, op );
+
+    		Permission entity = reviewMgr.readPermission(pop);
+    		assertEquals(paSetName, entity.getPaSetName());
+    		
+    		LOG.debug( "readPASetFromPermission name [" + paSetName + "] successful" );
+    	}
+    	catch ( SecurityException ex )
+    	{
+    		LOG.error( "readPASetFromPermission name [" + paSetName
+    				+ "] caught SecurityException rc=" + ex.getErrorId() + ", msg=" + ex.getMessage(), ex );
+    		fail( ex.getMessage() );
+    	}
+    }
+    
     public void testFindPermissionOps()
     {
         // public List<Permission> findPermissions(Permission permOp)
@@ -1578,7 +1606,56 @@ public class ReviewMgrImplTest extends TestCase
         }
     }
 
+    public void testReadUserRoleConstraint()
+    {
+    	readUserRoleConstraint( "RD-URC TU1 TR1", UserTestData.USERS_TU1[0], RoleTestData.ROLES_TR1[1], URATestData.getRC(URATestData.URC_T1) );
+    }
 
+    public static void readUserRoleConstraint( String msg, String[] usr, String[] rle, RoleConstraint rc )
+    {
+    	LogUtil.logIt(msg);
+    	try
+    	{
+    		ReviewMgr reviewMgr = getManagedReviewMgr();   		
+    		User user = UserTestData.getUser( usr );
+    		Role role = RoleTestData.getRole( rle );
+    		
+    		List<UserRole> urs = reviewMgr.assignedRoles(user);
+    		boolean uraFound = false;
+    		boolean urcFound = false;
+    		
+    		for(UserRole ur : urs){
+    			if(ur.getName().equals(role.getName())){
+    				uraFound = true;
+    				
+    				Set<RoleConstraint> rcs = ur.getRoleConstraints();
+    				for(RoleConstraint r : rcs){
+    					if(r.getPaSetName().equals(rc.getPaSetName())){
+    						urcFound = true;
+    						assertEquals(rc.getConstraintType(), r.getConstraintType());
+    						assertEquals(rc.getValue(), r.getValue());
+    					}
+    				}
+    			}
+    		}
+    		
+    		if(!uraFound){
+    			fail("User Role Assignment Not Found");
+    		}
+    		if(!urcFound){
+    			fail("User Role Constraint Not Found");
+    		}
+    		
+    		LOG.debug( "readUserRoleConstraint value [" + rc.getValue() + "] successful" );
+    	}
+    	catch ( SecurityException ex )
+    	{
+    		LOG.error( "readUserRoleConstraint value [" + rc.getValue()
+    				+ "] caught SecurityException rc=" + ex.getErrorId() + ", msg=" + ex.getMessage(), ex );
+    		fail( ex.getMessage() );
+    	}
+    }
+    
     /**
      *
      * @return

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/46ff1f34/src/test/java/org/apache/directory/fortress/core/impl/URATestData.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/URATestData.java b/src/test/java/org/apache/directory/fortress/core/impl/URATestData.java
index f42a4ff..0f1b729 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/URATestData.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/URATestData.java
@@ -26,6 +26,8 @@ import java.util.Map;
 import junit.framework.TestCase;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.directory.fortress.core.model.RoleConstraint;
+import org.apache.directory.fortress.core.model.RoleConstraintType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -944,6 +946,13 @@ public class URATestData extends TestCase
 }
     };
 
+    public static final String[] URC_T1 =
+    {
+    	"TPASET1", // CONSTRAINT_PASET_NM
+    	"FILTER", //CONSTAINT_TYPE
+    	"TPASET1AttributeName1=testattributevalue" //CONSTAIN_VALUE
+    };
+    
     /**
     * The Fortress test data for junit uses 2-dimensional arrays.
     */
@@ -1034,4 +1043,13 @@ public class URATestData extends TestCase
         }
         return listUras;
     }
+    
+    public static RoleConstraint getRC( String[] rc )
+    {
+    	RoleConstraint urc = new RoleConstraint();
+    	urc.setPaSetName(rc[0]);
+    	urc.setConstraintType(RoleConstraintType.valueOf(rc[1]));
+    	urc.setValue(rc[2]);
+        return urc;
+    }
 }


[36/43] directory-fortress-core git commit: added valid value to test data

Posted by cp...@apache.org.
added valid value to test data


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/4ddd79a2
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/4ddd79a2
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/4ddd79a2

Branch: refs/heads/master
Commit: 4ddd79a28436b20a06529405fbdde65bb6adc346
Parents: 7df3235
Author: clp207 <cl...@psu.edu>
Authored: Wed Aug 24 15:31:24 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Wed Aug 24 15:31:24 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/impl/PermTestData.java  | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/4ddd79a2/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java b/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
index 8624b55..d18398c 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
@@ -2781,7 +2781,8 @@ public class PermTestData extends TestCase
     		"TPASET1AttributeName1", /* NAME */
     		"true", /* REQUIRED */
     		"string", /* DATA_TYPE */
-    		"EQUALS" /* COMPARISON_OPERATOR */
+    		"EQUALS", /* COMPARISON_OPERATOR */
+    		"literal:value" /* VALID_VALUE */
     	}
     };
 
@@ -2791,13 +2792,15 @@ public class PermTestData extends TestCase
     		"TPASET2AttributeName1", /* NAME */
     		"true", /* REQUIRED */
     		"string", /* DATA_TYPE */
-    		"EQUALS" /* COMPARISON_OPERATOR */
+    		"EQUALS", /* COMPARISON_OPERATOR */
+    		"literal:value" /* VALID_VALUE */
     	},
     	{
     		"TPASET2AttributeName2", /* NAME */
     		"false", /* REQUIRED */
     		"int", /* DATA_TYPE */
-    		"EQUALS" /* COMPARISON_OPERATOR */
+    		"EQUALS", /* COMPARISON_OPERATOR */
+    		"literal:value" /* VALID_VALUE */
     	}
     };
     
@@ -2807,13 +2810,15 @@ public class PermTestData extends TestCase
     		"TPASET2AttributeName3", /* NAME */
     		"true", /* REQUIRED */
     		"string", /* DATA_TYPE */
-    		"EQUALS" /* COMPARISON_OPERATOR */
+    		"EQUALS", /* COMPARISON_OPERATOR */
+    		"literal:value" /* VALID_VALUE */
     	},
     	{
     		"TPASET2AttributeName4", /* NAME */
     		"false", /* REQUIRED */
     		"int", /* DATA_TYPE */
-    		"EQUALS" /* COMPARISON_OPERATOR */
+    		"EQUALS", /* COMPARISON_OPERATOR */
+    		"literal:value" /* VALID_VALUE */
     	}
     };
     
@@ -2823,6 +2828,7 @@ public class PermTestData extends TestCase
         permAttr.setAttributeName(pa[0]);
         permAttr.setDataType(pa[2]);
         permAttr.setDefaultOperator(ComparisonOperator.valueOf(pa[3]).name());
+        permAttr.getValidValues().add(pa[4]);
         return permAttr;
     }
     


[03/43] directory-fortress-core git commit: fixed issue with updating permission

Posted by cp...@apache.org.
fixed issue with updating permission


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/93646041
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/93646041
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/93646041

Branch: refs/heads/master
Commit: 93646041e3a4de252297f1eaae5c55900c746ff9
Parents: 46ff1f3
Author: clp207 <cl...@psu.edu>
Authored: Sun Jan 31 15:22:25 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../org/apache/directory/fortress/core/impl/AdminMgrImplTest.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/93646041/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
index 0624c07..7ba2186 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
@@ -1893,7 +1893,7 @@ public class AdminMgrImplTest extends TestCase
     
     public void testAddPASetToPermission()
     {
-    	addPASetToPermission( "ADD-PASET-TO-POP TOB_1 TOP_1", PermTestData.TPA_SET_1_NAME, "TOB1_1", PermTestData.OPS_TOP1[0] );   	
+    	addPASetToPermission( "ADD-PASET-TO-POP TOB_1 TOP_1", PermTestData.TPA_SET_1_NAME, "TOB1_1", PermTestData.OPS_TOP1_UPD[0] );   	
     }
     
     public static void addPASetToPermission( String msg, String paSetName, String obj, String[] op )


[06/43] directory-fortress-core git commit: added ftPA to fortress schema

Posted by cp...@apache.org.
added ftPA to fortress schema


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/e50cd6ee
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/e50cd6ee
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/e50cd6ee

Branch: refs/heads/master
Commit: e50cd6ee2811e86a25038b166cc0fa7d5d8a6266
Parents: 124b2cc
Author: clp207 <cl...@psu.edu>
Authored: Mon Jan 25 08:03:29 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 ldap/schema/fortress.schema | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/e50cd6ee/ldap/schema/fortress.schema
----------------------------------------------------------------------
diff --git a/ldap/schema/fortress.schema b/ldap/schema/fortress.schema
index d739ad1..ca7a20a 100644
--- a/ldap/schema/fortress.schema
+++ b/ldap/schema/fortress.schema
@@ -270,6 +270,14 @@ attributetype ( 1.3.6.1.4.1.1.38088.1.30
     SUBSTR caseIgnoreSubstringsMatch
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
+# A31: User Role Constraints, type STRING, MULTI VALUE
+attributetype ( 1.3.6.1.4.1.1.38088.1.31
+    NAME 'ftPA'
+    DESC 'Fortress Permission Attribute Constraints'
+    EQUALITY caseIgnoreMatch
+    SUBSTR caseIgnoreSubstringsMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
 ######################################################################
 ## 2. OpenLDAP Fortress Structural object class definitions
 ######################################################################
@@ -323,6 +331,7 @@ objectclass    ( 1.3.6.1.4.1.38088.2.3
         ftRoles $
         ftUsers $
         ftType
+        ftPA
         )
     )
 
@@ -452,4 +461,4 @@ objectclass ( 1.3.6.1.4.1.38088.3.4
         ftModCode $
         ftModId
         )
-   )
\ No newline at end of file
+   )


[26/43] directory-fortress-core git commit: added efault operator value to pas set

Posted by cp...@apache.org.
added efault operator value to pas set


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/1918048c
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/1918048c
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/1918048c

Branch: refs/heads/master
Commit: 1918048c00924d724f2ffff5f76bed52ea814668
Parents: d554bfd
Author: clp207 <cl...@psu.edu>
Authored: Fri Mar 18 09:29:18 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:23 2016 -0400

----------------------------------------------------------------------
 ldap/schema/fortress.schema                            | 13 +++++++++++--
 .../org/apache/directory/fortress/core/GlobalIds.java  |  5 +++++
 .../apache/directory/fortress/core/impl/PermDAO.java   |  6 ++++++
 .../fortress/core/model/PermissionAttributeSet.java    | 12 +++++++++++-
 4 files changed, 33 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/1918048c/ldap/schema/fortress.schema
----------------------------------------------------------------------
diff --git a/ldap/schema/fortress.schema b/ldap/schema/fortress.schema
index 16b6152..2776787 100644
--- a/ldap/schema/fortress.schema
+++ b/ldap/schema/fortress.schema
@@ -278,7 +278,7 @@ attributetype ( 1.3.6.1.4.1.1.38088.1.31
     SUBSTR caseIgnoreSubstringsMatch
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
-# A31: User Role Constraints, type STRING, MULTI VALUE
+# A32: User Role Constraints, type STRING, MULTI VALUE
 attributetype ( 1.3.6.1.4.1.1.38088.1.32
     NAME 'ftPASet'
     DESC 'Fortress Permission Attribute Set'
@@ -286,6 +286,14 @@ attributetype ( 1.3.6.1.4.1.1.38088.1.32
     SUBSTR caseIgnoreSubstringsMatch
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
+# A33: User Role Constraints, type STRING, MULTI VALUE
+attributetype ( 1.3.6.1.4.1.1.38088.1.32
+    NAME 'ftPADefaultOperator'
+    DESC 'Fortress Permission Attribute Set Default Operator'
+    EQUALITY caseIgnoreMatch
+    SUBSTR caseIgnoreSubstringsMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
 ######################################################################
 ## 2. OpenLDAP Fortress Structural object class definitions
 ######################################################################
@@ -426,7 +434,8 @@ objectclass    ( 1.3.6.1.4.1.38088.2.9
         cn
         )
     MAY (
-        ftPA
+        ftPA $
+        ftPADefaultOperator
         )
     )
 

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/1918048c/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
index c6a0a66..f6655c7 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
@@ -543,4 +543,9 @@ public final class GlobalIds
      * Attribute name for storing Fortress permission attribute set object names.
      */
     public static final String PERMISSION_ATTRIBUTE_SET_NAME = "ftAttributeSet";
+    
+    /**
+     * Attribute name for storing default operator of a PA set
+     */
+    public static final String FT_PA_SET_DEFAULT_OPERATOR = "ftPADefaultOperator";
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/1918048c/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 8e58bf7..fdce53f 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
@@ -487,6 +487,12 @@ final class PermDAO extends ApacheDsDataProvider
             // organizational name requires CN attribute:
             entry.add( SchemaConstants.CN_AT, entity.getName() );
                     
+            //default operator between attributes
+            if( StringUtils.isNotEmpty(entity.getDefaultOperator()) )
+            {
+                entry.add( GlobalIds.FT_PA_SET_DEFAULT_OPERATOR, entity.getDefaultOperator() );
+            }
+            
             // now add the new entry to directory:
             ld = getAdminConnection();
             add( ld, entry, entity );

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/1918048c/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
index 90563ad..34ab5e7 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
@@ -36,7 +36,8 @@ import javax.xml.bind.annotation.XmlType;
         "name",
         "attributes",
         "internalId",
-        "description"
+        "description",
+        "defaultOperator"
 })
 public class PermissionAttributeSet extends FortEntity {
 
@@ -46,6 +47,7 @@ public class PermissionAttributeSet extends FortEntity {
     private String internalId;
     private String description;
     private String dn;
+    private String defaultOperator;
 	
     public PermissionAttributeSet(String name){
     	this.name = name;
@@ -119,4 +121,12 @@ public class PermissionAttributeSet extends FortEntity {
 		this.dn = dn;
 	}
 
+	public String getDefaultOperator() {
+		return defaultOperator;
+	}
+
+	public void setDefaultOperator(String defaultOperator) {
+		this.defaultOperator = defaultOperator;
+	}
+
 }


[37/43] directory-fortress-core git commit: added method to find roel constraints given user, permission, and type

Posted by cp...@apache.org.
added method to find roel constraints given user, permission, and type


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/4561ac48
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/4561ac48
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/4561ac48

Branch: refs/heads/master
Commit: 4561ac489560adf57e88a8f22fa519f1099fa7a9
Parents: 4ddd79a
Author: clp207 <cl...@psu.edu>
Authored: Fri Sep 2 11:00:22 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Fri Sep 2 11:00:22 2016 -0400

----------------------------------------------------------------------
 ldap/setup/DelegatedAdminManagerLoad.xml        |  4 ++-
 .../directory/fortress/core/ReviewMgr.java      | 19 +++++++++++
 .../fortress/core/impl/ReviewMgrImpl.java       | 35 ++++++++++++++++++++
 .../directory/fortress/core/impl/UserDAO.java   |  1 +
 .../directory/fortress/core/impl/UserP.java     | 21 ++++++++++++
 .../fortress/core/model/Permission.java         |  4 +++
 .../fortress/core/rest/ReviewMgrRestImpl.java   | 11 ++++++
 .../fortress/core/impl/FortressJUnitTest.java   |  7 ++--
 .../fortress/core/impl/ReviewMgrImplTest.java   | 27 +++++++++++++++
 9 files changed, 125 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/4561ac48/ldap/setup/DelegatedAdminManagerLoad.xml
----------------------------------------------------------------------
diff --git a/ldap/setup/DelegatedAdminManagerLoad.xml b/ldap/setup/DelegatedAdminManagerLoad.xml
index ecd3997..d1fe5b8 100644
--- a/ldap/setup/DelegatedAdminManagerLoad.xml
+++ b/ldap/setup/DelegatedAdminManagerLoad.xml
@@ -74,6 +74,7 @@
                 <permgrant objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="dsdSets" roleNm="fortress-core-super-admin" admin="true"/>
                 <permgrant objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="findAnyPermissions" roleNm="fortress-core-super-admin" admin="true"/>
                 <permgrant objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="readPermAttributeSet" roleNm="fortress-core-super-admin" admin="true"/>
+            	<permgrant objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="findRoleConstraints" roleNm="fortress-core-super-admin" admin="true"/>
 
                 <permgrant objName="org.apache.directory.fortress.core.impl.DelReviewMgrImpl" opName="readRole" roleNm="fortress-core-super-admin" admin="true"/>
                 <permgrant objName="org.apache.directory.fortress.core.impl.DelReviewMgrImpl" opName="findRoles" roleNm="fortress-core-super-admin" admin="true"/>
@@ -221,7 +222,8 @@
                 <permop objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="dsdSets" admin="true"/>
                 <permop objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="findAnyPermissions" admin="true"/>
                 <permop objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="readPermAttributeSet" admin="true"/>
-
+            	<permop objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="findRoleConstraints" admin="true"/>
+            	
                 <permop objName="org.apache.directory.fortress.core.impl.DelReviewMgrImpl" opName="readRole" admin="true"/>
                 <permop objName="org.apache.directory.fortress.core.impl.DelReviewMgrImpl" opName="findRoles" admin="true"/>
                 <permop objName="org.apache.directory.fortress.core.impl.DelReviewMgrImpl" opName="assignedRoles" admin="true"/>

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/4561ac48/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java b/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
index 62db2c7..56456c3 100755
--- a/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
@@ -28,6 +28,8 @@ import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
 import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
+import org.apache.directory.fortress.core.model.RoleConstraint;
+import org.apache.directory.fortress.core.model.RoleConstraintType;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserRole;
@@ -722,4 +724,21 @@ public interface ReviewMgr extends Manageable
      */
     int dsdRoleSetCardinality( SDSet dsd )
         throws SecurityException;
+
+    /**
+     * Find all of the role constraints for the given user and permission attribute set.
+     * <h3></h3>
+     * <h4>required parameters</h4>
+     * <ul>
+     *   <li>{@link User#userId} - contains the name of existing user being targeted</li>
+     *   <li>{@link PermissionAttributeSet#name} - contains the name of permission attribute set</li>
+     * </ul>
+     * 
+     * @param user The user to filter role constraints
+     * @param paSet The permission attribute set to filter role constraints
+     * @return List of the Role Constraints for the given user and pa set.   
+     * @throws SecurityException in the event of data or system error.
+     */
+    List<RoleConstraint>  findRoleConstraints(User user, Permission permission, RoleConstraintType rcType)
+        throws SecurityException;
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/4561ac48/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
index ddb1e14..e488ba1 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
@@ -36,6 +36,8 @@ import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
 import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
+import org.apache.directory.fortress.core.model.RoleConstraint;
+import org.apache.directory.fortress.core.model.RoleConstraintType;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserRole;
@@ -722,4 +724,37 @@ public class ReviewMgrImpl extends Manageable implements ReviewMgr, Serializable
         SDSet se = ssdP.read(dsd);
         return se.getCardinality();
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public List<RoleConstraint> findRoleConstraints(User user, Permission permission, RoleConstraintType rcType) throws SecurityException {
+        String methodName = "findRoleConstraints";
+        checkAccess(CLS_NM, methodName);        
+    	//find roles this permission is authorized for
+        Permission pe = permP.read(permission);
+        Set<String> authorizedRoles = authorizeRoles(pe.getRoles());
+        
+        //find role constraints for the user and the permission's pa set
+    	return userP.findRoleConstraints(authorizedRoles, user, rcType, pe.getPaSets());                
+    }
+    
+    
+    /**
+     * {@inheritDoc}
+     */
+    /*
+    @Override
+    public List<UserRole> assignedRoles(User user)
+        throws SecurityException
+    {
+        String methodName = "assignedRoles";
+        assertContext(CLS_NM, methodName, user, GlobalErrIds.USER_NULL);
+        checkAccess(CLS_NM, methodName);
+        User ue = userP.read(user, true);
+        return ue.getRoles();
+    } 
+    */
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/4561ac48/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
index 0d917a6..6493487 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
@@ -2611,4 +2611,5 @@ final class UserDAO extends LdapDataProvider
 
         return new ArrayList<UserRole>(uRoles.values());
     }
+    
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/4561ac48/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserP.java b/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
index 34a48a3..534f3ca 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
@@ -40,6 +40,7 @@ import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PwPolicy;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.RoleConstraint;
+import org.apache.directory.fortress.core.model.RoleConstraintType;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserAdminRole;
@@ -930,4 +931,24 @@ final class UserP
         trgR.setOsPSet( srcR.getOsPSet() );
         trgR.setOsUSet( srcR.getOsUSet() );
     }
+    
+    List<RoleConstraint> findRoleConstraints( Set<String> roles, User user, RoleConstraintType rcType, Set<String> paSets ) throws SecurityException    
+    {
+    	List<RoleConstraint> matchingConstraints = new ArrayList<RoleConstraint>();
+    	
+        //TODO: can we do this in a query?
+        List<UserRole> userRoles = uDao.getUser(user, true).getRoles();
+        for(UserRole ur : userRoles){
+        	//only get constraints for passed in roles
+        	if(roles.contains(ur.getName())){
+        		for(RoleConstraint rc : ur.getRoleConstraints()){
+        			if(rc.getConstraintType().equals(rcType) && paSets.contains(rc.getPaSetName())){
+        				matchingConstraints.add(rc);
+        			}
+        		}
+        	}
+        }
+        
+        return matchingConstraints;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/4561ac48/src/main/java/org/apache/directory/fortress/core/model/Permission.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/Permission.java b/src/main/java/org/apache/directory/fortress/core/model/Permission.java
index 803e113..d1d9677 100755
--- a/src/main/java/org/apache/directory/fortress/core/model/Permission.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/Permission.java
@@ -832,6 +832,10 @@ public class Permission extends FortEntity implements Serializable
     }
 
     public Set<String> getPaSets() {
+        if ( paSets == null )
+        {
+        	paSets = new HashSet<String>();
+        }
         return paSets;
     }
 

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/4561ac48/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java b/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
index 2165d00..96f9062 100755
--- a/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
@@ -35,6 +35,8 @@ import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
 import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
+import org.apache.directory.fortress.core.model.RoleConstraint;
+import org.apache.directory.fortress.core.model.RoleConstraintType;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserRole;
@@ -1261,4 +1263,13 @@ public class ReviewMgrRestImpl extends Manageable implements ReviewMgr
 		return null;
 	}
 
+
+	@Override
+	public List<RoleConstraint> findRoleConstraints(User user, Permission permission, RoleConstraintType rcType)
+			throws SecurityException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/4561ac48/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java b/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
index e495ab1..ae83b67 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
@@ -19,12 +19,12 @@
  */
 package org.apache.directory.fortress.core.impl;
 
+import org.apache.directory.fortress.core.util.Config;
+
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
-import org.apache.directory.fortress.core.util.Config;
-
 /**
  * This JUnit test class drives all of the Fortress Administration APIs contained within {@link AdminMgrImplTest},
  * {@link DelegatedMgrImplTest}, {@link org.apache.directory.fortress.core.impl.PwPolicyMgrImpl} and {@link org.apache.directory.fortress.core.impl.AuditMgrImpl}.
@@ -251,7 +251,8 @@ public class FortressJUnitTest extends TestCase
         suite.addTest( new ReviewMgrImplTest( "testReadPASetFromPermission" ) );
         
         suite.addTest( new ReviewMgrImplTest( "testReadUserRoleConstraint" ) );
-
+        suite.addTest( new ReviewMgrImplTest( "testFindRoleConstraints" ) );
+        
         /***********************************************************/
         /* 4. Security Checks                                      */
         /***********************************************************/

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/4561ac48/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
index 0dd3453..30a0f75 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
@@ -35,6 +35,7 @@ import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.RoleConstraint;
+import org.apache.directory.fortress.core.model.RoleConstraintType;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
@@ -1657,6 +1658,32 @@ public class ReviewMgrImplTest extends TestCase
     	}
     }
     
+    public void testFindRoleConstraints()
+    {
+    	findRoleConstraints( "SRCH-RCS TU1 TR1", UserTestData.USERS_TU1[0][0], PermTestData.getOp("TOB1_1", PermTestData.OPS_TOP1_UPD[0]), URATestData.getRC(URATestData.URC_T1).getConstraintType() );
+    }
+    
+    public static void findRoleConstraints( String msg, String usr, Permission permission, RoleConstraintType rcType )
+    {
+    	LogUtil.logIt(msg);
+    	try
+    	{
+    		ReviewMgr reviewMgr = getManagedReviewMgr();   		
+
+    		List<RoleConstraint> rcs = reviewMgr.findRoleConstraints(new User(usr), permission, rcType);
+    		assertTrue(rcs.size() > 0);
+    		assertTrue(rcs.get(0).getConstraintType().equals(rcType));
+   
+    		LOG.debug( "findRoleConstraints permission [" + permission.getObjName() + "." + permission.getOpName() + "] successful" );
+    	}
+    	catch ( SecurityException ex )
+    	{
+    		LOG.error( "findRoleConstraints permission [" + permission.getObjName() + "." + permission.getOpName()
+    				+ "] caught SecurityException rc=" + ex.getErrorId() + ", msg=" + ex.getMessage(), ex );
+    		fail( ex.getMessage() );
+    	}
+    }
+    
     /**
      *
      * @return


[17/43] directory-fortress-core git commit: updated schema to have ftAttributeSet and ftPASet instead of just ftPA on operation

Posted by cp...@apache.org.
updated schema to have ftAttributeSet and ftPASet instead of just ftPA on operation


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/da6c893f
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/da6c893f
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/da6c893f

Branch: refs/heads/master
Commit: da6c893f3192275ba3d106ba5ae0c7ce7ff42254
Parents: 8a47b1f
Author: clp207 <cl...@psu.edu>
Authored: Thu Jan 28 15:02:18 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 ldap/schema/fortress.schema | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/da6c893f/ldap/schema/fortress.schema
----------------------------------------------------------------------
diff --git a/ldap/schema/fortress.schema b/ldap/schema/fortress.schema
index 7775007..db06620 100644
--- a/ldap/schema/fortress.schema
+++ b/ldap/schema/fortress.schema
@@ -278,6 +278,14 @@ attributetype ( 1.3.6.1.4.1.1.38088.1.31
     SUBSTR caseIgnoreSubstringsMatch
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
+# A31: User Role Constraints, type STRING, MULTI VALUE
+attributetype ( 1.3.6.1.4.1.1.38088.1.32
+    NAME 'ftPASet'
+    DESC 'Fortress Permission Attribute Set'
+    EQUALITY caseIgnoreMatch
+    SUBSTR caseIgnoreSubstringsMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
 ######################################################################
 ## 2. OpenLDAP Fortress Structural object class definitions
 ######################################################################
@@ -407,6 +415,21 @@ objectClass ( 1.3.6.1.4.1.38088.2.8
     MAY configParameter
     )
 
+## OC3: Fortress Permission Attribute Set Structural Object Class
+objectclass    ( 1.3.6.1.4.1.38088.2.9
+    NAME 'ftAttributeSet'
+    DESC 'Fortress Permission Operation Structural Object Class'
+    SUP organizationalrole
+    STRUCTURAL
+    MUST (
+        ftId $
+        cn
+        )
+    MAY (
+        ftPA
+        )
+    )
+
 ######################################################################
 ## 3. OpenLDAP Fortress Auxiliary object class definitions
 ######################################################################


[05/43] directory-fortress-core git commit: added tests for creating and reading permission attribute sets

Posted by cp...@apache.org.
added tests for creating and reading permission attribute sets


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/9dee0b11
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/9dee0b11
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/9dee0b11

Branch: refs/heads/master
Commit: 9dee0b11026e67d8cc52ae2f24ca3217d87a216d
Parents: ab95a17
Author: clp207 <cl...@psu.edu>
Authored: Sat Jan 30 08:57:13 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 ldap/setup/DelegatedAdminManagerLoad.xml        |  5 +-
 .../core/model/PermissionAttribute.java         | 39 ++++++++
 .../fortress/core/impl/AdminMgrImplTest.java    | 96 ++++++++++++++++++--
 .../fortress/core/impl/FortressJUnitTest.java   | 10 +-
 .../fortress/core/impl/PermTestData.java        | 77 ++++++++++++++++
 .../fortress/core/impl/ReviewMgrImplTest.java   | 47 ++++++++--
 6 files changed, 256 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/9dee0b11/ldap/setup/DelegatedAdminManagerLoad.xml
----------------------------------------------------------------------
diff --git a/ldap/setup/DelegatedAdminManagerLoad.xml b/ldap/setup/DelegatedAdminManagerLoad.xml
index ea47a79..a6ffa7e 100644
--- a/ldap/setup/DelegatedAdminManagerLoad.xml
+++ b/ldap/setup/DelegatedAdminManagerLoad.xml
@@ -71,7 +71,8 @@
                 <permgrant objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="dsdRoleSetRoles" roleNm="fortress-core-super-admin" admin="true"/>
                 <permgrant objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="dsdRoleSetCardinality" roleNm="fortress-core-super-admin" admin="true"/>
                 <permgrant objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="dsdSets" roleNm="fortress-core-super-admin" admin="true"/>
-            	<permgrant objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="findAnyPermissions" roleNm="fortress-core-super-admin" admin="true"/>
+                <permgrant objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="findAnyPermissions" roleNm="fortress-core-super-admin" admin="true"/>
+                <permgrant objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="readPermAttributeSet" roleNm="fortress-core-super-admin" admin="true"/>
 
                 <permgrant objName="org.apache.directory.fortress.core.impl.DelReviewMgrImpl" opName="readRole" roleNm="fortress-core-super-admin" admin="true"/>
                 <permgrant objName="org.apache.directory.fortress.core.impl.DelReviewMgrImpl" opName="findRoles" roleNm="fortress-core-super-admin" admin="true"/>
@@ -313,4 +314,4 @@
 
          </FortressAdmin>
     </target>
-</project>
\ No newline at end of file
+</project>

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/9dee0b11/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
index eba8522..62c27d8 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
@@ -152,4 +152,43 @@ public class PermissionAttribute extends FortEntity implements Serializable {
         }
     }
     
+    /**
+     * Checks that attribute names are equal
+     */
+    @Override
+    public boolean equals( Object thatObj )
+    {
+        if ( this == thatObj )
+        {
+            return true;
+        }
+
+        if ( this.getAttributeName() == null )
+        {
+            return false;
+        }
+
+        if ( !( thatObj instanceof PermissionAttribute ) )
+        {
+            return false;
+        }
+
+        PermissionAttribute thatPermObj = ( PermissionAttribute ) thatObj;
+
+        if ( thatPermObj.getAttributeName() == null )
+        {
+            return false;
+        }
+
+        return thatPermObj.getAttributeName().equalsIgnoreCase( this.getAttributeName() );
+    }
+    
+    @Override
+    public int hashCode()
+    {
+        int result = 31 * ( attributeName != null ? attributeName.hashCode() : 0 );
+        return result;
+    }
+
+    
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/9dee0b11/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
index fe4d99c..732f12a 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
@@ -27,24 +27,25 @@ import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
+import org.apache.directory.fortress.core.AdminMgr;
+import org.apache.directory.fortress.core.AdminMgrFactory;
+import org.apache.directory.fortress.core.GlobalErrIds;
+import org.apache.directory.fortress.core.ReviewMgr;
+import org.apache.directory.fortress.core.SecurityException;
 import org.apache.directory.fortress.core.model.ConstraintUtil;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
+import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserRole;
+import org.apache.directory.fortress.core.util.LogUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.directory.fortress.core.AdminMgr;
-import org.apache.directory.fortress.core.AdminMgrFactory;
-import org.apache.directory.fortress.core.GlobalErrIds;
-import org.apache.directory.fortress.core.ReviewMgr;
-import org.apache.directory.fortress.core.SecurityException;
-import org.apache.directory.fortress.core.util.LogUtil;
-
 
 /**
  * AdminMgrImpl Tester.
@@ -1810,7 +1811,86 @@ public class AdminMgrImplTest extends TestCase
         }
     }
 
-
+    public void testAddPermissionAttributeSet() throws SecurityException
+    {    	    	
+    	addPermissionAttributeSet( "ADD-PA-SET TPASET1", PermTestData.TPA_SET_1_NAME, PermTestData.loadPermissionAttributes(PermTestData.PA_TPSASET1));
+    	addPermissionAttributeSet( "ADD-PA-SET TPASET2", PermTestData.TPA_SET_2_NAME, PermTestData.loadPermissionAttributes(PermTestData.PA_TPSASET2));
+    }
+    
+    public static void addPermissionAttributeSet( String msg, String name, Set<PermissionAttribute> permAttr )
+    {
+    	LogUtil.logIt(msg);
+    	PermissionAttributeSet paSet = new PermissionAttributeSet(name);  
+    	try
+    	{
+    		paSet.setAttributes(permAttr);
+    		AdminMgr adminMgr = AdminMgrFactory.createInstance( TestUtils.getContext() );    		
+
+    		adminMgr.addPermissionAttributeSet(paSet);
+    		LOG.debug( "addPermissionAttributeSet name [" + paSet.getName() + "] successful" );
+    	}
+    	catch ( SecurityException ex )
+    	{
+    		LOG.error( "addPermissionAttributeSet name [" + paSet.getName()
+    				+ "] caught SecurityException rc=" + ex.getErrorId() + ", msg=" + ex.getMessage(), ex );
+    		fail( ex.getMessage() );
+    	}
+    }
+    
+    public void testAddPermissionAttributeToSet() throws SecurityException
+    {    	    	
+    	Set<PermissionAttribute> pas = PermTestData.loadPermissionAttributes(PermTestData.PA_TPSASET2_ADDITIONAL);
+    	
+    	for(PermissionAttribute pa : pas){
+    		addPermissionAttributeToSet( "ADD-PA-TO-SET TPASET2", PermTestData.TPA_SET_2_NAME, pa);
+    	}
+    }
+    
+    public static void addPermissionAttributeToSet( String msg, String name, PermissionAttribute permAttr )
+    {
+    	LogUtil.logIt(msg);
+    	PermissionAttributeSet paSet = new PermissionAttributeSet(name);  
+    	try
+    	{
+    		AdminMgr adminMgr = AdminMgrFactory.createInstance( TestUtils.getContext() );    		
+
+    		adminMgr.addPermissionAttributeToSet(permAttr, name);
+    		LOG.debug( "addPermissionAttributeToSet name [" + paSet.getName() + "] successful" );
+    	}
+    	catch ( SecurityException ex )
+    	{
+    		LOG.error( "addPermissionAttributeToSet name [" + paSet.getName()
+    				+ "] caught SecurityException rc=" + ex.getErrorId() + ", msg=" + ex.getMessage(), ex );
+    		fail( ex.getMessage() );
+    	}
+    }
+    
+    public void testDeletePermissionAttributeSets() throws SecurityException
+    {
+    	delPermAttrSet( "DEL-PA-SET TPASET1" , PermTestData.TPA_SET_1_NAME );
+    	delPermAttrSet( "DEL-PA-SET TPASET2" , PermTestData.TPA_SET_2_NAME );
+    }
+    
+    public static void delPermAttrSet( String msg, String name )
+    {
+    	LogUtil.logIt(msg);
+    	PermissionAttributeSet paSet = new PermissionAttributeSet(name);  
+    	try
+    	{
+    		AdminMgr adminMgr = AdminMgrFactory.createInstance( TestUtils.getContext() );    		
+
+    		adminMgr.deletePermissionAttributeSet(paSet);
+    		LOG.debug( "delPermAttrSet name [" + paSet.getName() + "] successful" );
+    	}
+    	catch ( SecurityException ex )
+    	{
+    		LOG.error( "delPermAttrSet name [" + paSet.getName()
+    				+ "] caught SecurityException rc=" + ex.getErrorId() + ", msg=" + ex.getMessage(), ex );
+    		fail( ex.getMessage() );
+    	}
+    }
+    
+    
     /**
      *
      * @throws SecurityException

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/9dee0b11/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java b/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
index 9b2469b..8885c01 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
@@ -20,8 +20,9 @@
 package org.apache.directory.fortress.core.impl;
 
 import junit.framework.Test;
-import junit.framework.TestSuite;
 import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
 import org.apache.directory.fortress.core.GlobalIds;
 
 /**
@@ -114,6 +115,7 @@ public class FortressJUnitTest extends TestCase
             suite.addTest( new AdminMgrImplTest( "testRevokePermissionRole" ) );
             suite.addTest( new AdminMgrImplTest( "testDeletePermissionOp" ) );
             suite.addTest( new AdminMgrImplTest( "testDeletePermissionObj" ) );
+            suite.addTest( new AdminMgrImplTest( "testDeletePermissionAttributeSets" ) );
             suite.addTest( new AdminMgrImplTest( "testDeassignUser" ) );
             suite.addTest( new AdminMgrImplTest( "testDeleteUser" ) );
             suite.addTest( new AdminMgrImplTest( "testForceDeleteUser" ) );
@@ -199,6 +201,9 @@ public class FortressJUnitTest extends TestCase
         suite.addTest( new AdminMgrImplTest( "testGrantPermissionRole" ) );
         suite.addTest( new AdminMgrImplTest( "testGrantPermissionUser" ) );
 
+        suite.addTest( new AdminMgrImplTest( "testAddPermissionAttributeSet" ) );
+        suite.addTest( new AdminMgrImplTest( "testAddPermissionAttributeToSet" ) );
+        
         /***********************************************************/
         /* 3. Interrogation                                        */
         /***********************************************************/
@@ -238,7 +243,8 @@ public class FortressJUnitTest extends TestCase
         suite.addTest( new ReviewMgrImplTest( "testUserPermissions" ) );
         suite.addTest( new ReviewMgrImplTest( "testFindSsdSets" ) );
         suite.addTest( new ReviewMgrImplTest( "testFindDsdSets" ) );
-
+        suite.addTest( new ReviewMgrImplTest( "testReadPermissionAttributeSets" ) );
+        
         /***********************************************************/
         /* 4. Security Checks                                      */
         /***********************************************************/

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/9dee0b11/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java b/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
index 113cea6..05f2f18 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
@@ -20,10 +20,15 @@
 package org.apache.directory.fortress.core.impl;
 
 
+import java.util.HashSet;
+import java.util.Set;
+
 import junit.framework.TestCase;
 
+import org.apache.directory.fortress.core.model.ComparisonOperator;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -2761,6 +2766,65 @@ public class PermTestData extends TestCase
     private final static int OP_ADMIN_COL = 8;
 
 
+    //Fortress Permission Attribute Set Test Data
+    /**
+     * Test Case TPASET1:
+     */
+    public static final String TPA_SET_1_NAME = "TPASET1";
+    public static final String TPA_SET_2_NAME = "TPASET2";
+    
+    public static final String[][] PA_TPSASET1 =
+    {
+    	{
+    		"TPASET1AttributeName1", /* NAME */
+    		"true", /* REQUIRED */
+    		"string", /* DATA_TYPE */
+    		"EQUALS" /* COMPARISON_OPERATOR */
+    	}
+    };
+
+    public static final String[][] PA_TPSASET2 =
+    {
+    	{
+    		"TPASET2AttributeName1", /* NAME */
+    		"true", /* REQUIRED */
+    		"string", /* DATA_TYPE */
+    		"EQUALS" /* COMPARISON_OPERATOR */
+    	},
+    	{
+    		"TPASET2AttributeName2", /* NAME */
+    		"false", /* REQUIRED */
+    		"int", /* DATA_TYPE */
+    		"EQUALS" /* COMPARISON_OPERATOR */
+    	}
+    };
+    
+    public static final String[][] PA_TPSASET2_ADDITIONAL =
+    {
+    	{
+    		"TPASET2AttributeName3", /* NAME */
+    		"true", /* REQUIRED */
+    		"string", /* DATA_TYPE */
+    		"EQUALS" /* COMPARISON_OPERATOR */
+    	},
+    	{
+    		"TPASET2AttributeName4", /* NAME */
+    		"false", /* REQUIRED */
+    		"int", /* DATA_TYPE */
+    		"EQUALS" /* COMPARISON_OPERATOR */
+    	}
+    };
+    
+    public static PermissionAttribute getPA( String[] pa )
+    {
+        PermissionAttribute permAttr = new PermissionAttribute();
+        permAttr.setAttributeName(pa[0]);
+        permAttr.setRequired(Boolean.parseBoolean(pa[1]));
+        permAttr.setDataType(pa[2]);
+        permAttr.setOperator(ComparisonOperator.valueOf(pa[3]));
+        return permAttr;
+    }
+    
     /**
      * @param op
      * @return
@@ -2898,4 +2962,17 @@ public class PermTestData extends TestCase
     {
         return obj[OP_ADMIN_COL].equalsIgnoreCase( "T" );
     }
+    
+    public static Set<PermissionAttribute> loadPermissionAttributes(String[][] objArray){
+    	Set<PermissionAttribute> permAttrs = new HashSet<PermissionAttribute>();
+    	
+    	for ( String[] obj : objArray )
+        {
+    		PermissionAttribute pa = PermTestData.getPA(obj);
+    		permAttrs.add(pa);
+        }
+    	
+    	return permAttrs;
+    }
+    
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/9dee0b11/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
index f5efc25..04508f2 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
@@ -29,22 +29,23 @@ import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
+import org.apache.directory.fortress.core.GlobalErrIds;
+import org.apache.directory.fortress.core.ReviewMgr;
+import org.apache.directory.fortress.core.ReviewMgrFactory;
+import org.apache.directory.fortress.core.SecurityException;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
+import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserRole;
+import org.apache.directory.fortress.core.util.LogUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.directory.fortress.core.GlobalErrIds;
-import org.apache.directory.fortress.core.ReviewMgr;
-import org.apache.directory.fortress.core.ReviewMgrFactory;
-import org.apache.directory.fortress.core.SecurityException;
-import org.apache.directory.fortress.core.util.LogUtil;
-
 
 /**
  * ReviewMgrImpl Tester.
@@ -157,7 +158,41 @@ public class ReviewMgrImplTest extends TestCase
         }
     }
 
+    public void testReadPermissionAttributeSets()
+    {
+    	readPermissionAttributeSet( "RD-PA-SET TPASET1", PermTestData.TPA_SET_1_NAME, PermTestData.loadPermissionAttributes(PermTestData.PA_TPSASET1) );
+
+    	Set<PermissionAttribute> paSetTwoPas = PermTestData.loadPermissionAttributes(PermTestData.PA_TPSASET2);
+    	paSetTwoPas.addAll(PermTestData.loadPermissionAttributes(PermTestData.PA_TPSASET2_ADDITIONAL));
+    	readPermissionAttributeSet( "RD-PA-SET TPASET2", PermTestData.TPA_SET_2_NAME, paSetTwoPas);
+    }
 
+    public static void readPermissionAttributeSet( String msg, String name, Set<PermissionAttribute> permAttributes )
+    {
+        LogUtil.logIt( msg );
+        try
+        {
+            ReviewMgr reviewMgr = getManagedReviewMgr();
+            
+            PermissionAttributeSet entity = reviewMgr.readPermAttributeSet(new PermissionAttributeSet(name));
+            assertNotNull(entity);
+            assertEquals(name, entity.getName());
+            
+            for(PermissionAttribute pa : permAttributes){
+            	assertTrue(entity.getAttributes().contains(pa));
+            }
+            
+            LOG.debug( "readPermissionAttributeSet name [" + name + "] successful" );
+            
+        }
+        catch ( SecurityException ex )
+        {
+            LOG.error( "readPermissionAttributeSet name [" + name + "] caught SecurityException rc="
+                + ex.getErrorId() + ", msg=" + ex.getMessage() + ex );
+            fail( ex.getMessage() );
+        }
+    }
+    
     public void testFindPermissionOps()
     {
         // public List<Permission> findPermissions(Permission permOp)


[04/43] directory-fortress-core git commit: add new permop

Posted by cp...@apache.org.
add new permop


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/527cfeaf
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/527cfeaf
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/527cfeaf

Branch: refs/heads/master
Commit: 527cfeaf1d7b2eeafb603910eb908c2f52343d9b
Parents: 9dee0b1
Author: clp207 <cl...@psu.edu>
Authored: Sat Jan 30 09:38:08 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 ldap/setup/DelegatedAdminManagerLoad.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/527cfeaf/ldap/setup/DelegatedAdminManagerLoad.xml
----------------------------------------------------------------------
diff --git a/ldap/setup/DelegatedAdminManagerLoad.xml b/ldap/setup/DelegatedAdminManagerLoad.xml
index a6ffa7e..69f674b 100644
--- a/ldap/setup/DelegatedAdminManagerLoad.xml
+++ b/ldap/setup/DelegatedAdminManagerLoad.xml
@@ -217,7 +217,8 @@
                 <permop objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="dsdRoleSetRoles" admin="true"/>
                 <permop objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="dsdRoleSetCardinality" admin="true"/>
                 <permop objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="dsdSets" admin="true"/>
-            	<permop objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="findAnyPermissions" admin="true"/>
+                <permop objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="findAnyPermissions" admin="true"/>
+                <permop objName="org.apache.directory.fortress.core.impl.ReviewMgrImpl" opName="readPermAttributeSet" admin="true"/>
 
                 <permop objName="org.apache.directory.fortress.core.impl.DelReviewMgrImpl" opName="readRole" admin="true"/>
                 <permop objName="org.apache.directory.fortress.core.impl.DelReviewMgrImpl" opName="findRoles" admin="true"/>


[11/43] directory-fortress-core git commit: added documentation

Posted by cp...@apache.org.
added documentation


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/ab95a17b
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/ab95a17b
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/ab95a17b

Branch: refs/heads/master
Commit: ab95a17b9e2a3493d0892a7dbcfabcd9a0e7bfbc
Parents: 6c68e41
Author: clp207 <cl...@psu.edu>
Authored: Fri Jan 29 14:14:11 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/AdminMgr.java       | 95 ++++++++++++++++++--
 .../directory/fortress/core/ReviewMgr.java      | 29 +++++-
 .../directory/fortress/core/impl/UserDAO.java   | 14 ++-
 .../core/model/PermissionAttribute.java         |  2 +-
 4 files changed, 130 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/ab95a17b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
index 93b6e18..f46703a 100755
--- a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
@@ -450,11 +450,40 @@ public interface AdminMgr extends Manageable
     void assignUser( UserRole uRole )
         throws SecurityException;
 
-    //TODO: add documentation
+    /**
+     * This method adds a roleConstraint (ftRC) to the user ldap entry. (ftRC=ROLE_NAME$type$CONSTRAINT_TYPE$CONSTRAINT_PASETNAME$CONSTRAINT_VALUE)
+     * <h4>required parameters</h4>
+     * <ul>
+     *   <li>{@link UserRole#name} - contains the name for already existing Role to be assigned</li>
+     *   <li>{@link UserRole#userId} - contains the userId for existing User</li>
+     *   <li>{@link RoleConstraint#type} - contains the type of role constraint (filter, other)</li>
+     *   <li>{@link RoleConstraint#value} - contains the value of the role constraint which is currently not validated in any way</li>
+     *   <li>{@link RoleConstraint#paSetName} - contains the userId for existing User, contains the name of the permission attribute set this constraint is applicable for</li>
+     * </ul>
+     * 
+     * @param uRole must contain {@link UserRole#userId} and {@link UserRole#name}
+     * @param roleConstraint must contain {@link RoleConstraint#type} and {@link RoleConstraint#value} and {@link RoleConstraint#paSetName}
+     * @return RoleConstraint that was added to user role assignment
+     * @throws SecurityException in the event of validation or system error.
+     */
     RoleConstraint addRoleConstraint( UserRole uRole, RoleConstraint roleConstraint )
     	throws SecurityException;
     
-    //TODO: remove documentation
+    /**
+     * Thie method removes a roleConstraint (ftRC) from the user ldap entry.
+     * <h4>required parameters</h4>
+     * <ul>
+     *   <li>{@link UserRole#name} - contains the name for already existing Role to be assigned</li>
+     *   <li>{@link UserRole#userId} - contains the userId for existing User</li>
+     *   <li>{@link RoleConstraint#type} - contains the type of role constraint (filter, other)</li>
+     *   <li>{@link RoleConstraint#value} - contains the value of the role constraint which is currently not validated in any way</li>
+     *   <li>{@link RoleConstraint#paSetName} - contains the userId for existing User, contains the name of the permission attribute set this constraint is applicable for</li>
+     * </ul>
+     * 
+     * @param uRole must contain {@link UserRole#userId} and {@link UserRole#name}
+     * @param roleConstraint must contain {@link RoleConstraint#type} and {@link RoleConstraint#value} and {@link RoleConstraint#paSetName}   
+     * @throws SecurityException in the event of validation or system error.
+     */
     void removeRoleConstraint( UserRole uRole, RoleConstraint roleConstraint )
     	throws SecurityException;
     
@@ -521,19 +550,73 @@ public interface AdminMgr extends Manageable
         throws SecurityException;
 
     
-    //TODO: add documentation
+    /**
+     * This method will create a new permission attribute set object with resides under the 
+     * {@code ou=Constraints,ou=RBAC,dc=yourHostName,dc=com} container in directory information tree.
+     * The attribute set may contain 0 to many {@link org.apache.directory.fortress.core.model.PermissionAttribute}
+     * <h4>required parameters</h4>
+     * <ul>
+     *   <li>{@link PermissionAttributeSet#name} - contains the name of the permission attribute set</li>
+     * </ul>
+     * 
+     * @param permAttributeSet must contain {@link PermissionAttributeSet#name}
+     * @return PermissionAttributeSet that was created
+     * @throws SecurityException - thrown in the event of perm attribute set data or system error.
+     */
     PermissionAttributeSet addPermissionAttributeSet( PermissionAttributeSet permAttributeSet )
     	throws SecurityException;
     
-    //TODO: add documentation
+    /**
+     * This method will delete a permission attribute set object.
+     * <h4>required parameters</h4>
+     * <ul>
+     *   <li>{@link PermissionAttributeSet#name} - contains the name of the permission attribute set</li>
+     * </ul>
+     * 
+     * @param permAttributeSet must contain {@link PermissionAttributeSet#name}
+     * @throws SecurityException - thrown in the event of perm attribute set data or system error.
+     */
     void deletePermissionAttributeSet( PermissionAttributeSet permAttributeSet )
         throws SecurityException;
     
-    //TODO: add documentation
+    /**
+     * This method adds a permission attribute (ftPA) to a permission attribute set.
+     * <h3></h3>
+     * <h4>required parameters</h4>
+     * <ul>
+     *   <li>{@link PermissionAttribute#attributeName} - contains the name of existing object being targeted for the permission update</li>
+     *   <li>{@link PermissionAttribute#dataType} - contains the data type of the permission attribute values (string,int,long,float)</li>   
+     *   <li>attributeSetName - contains the name of existing permission attribute set being modified</li>
+     * </ul>  
+     * <h4>optional parameters</h4>
+     * <ul>
+     *   <li>{@link PermissionAttribute#required} - Flag to specify this attribute is required, defaults to false.</li>
+     *   <li>{@link PermissionAttribute#operator} - Can specify an operator this attribute must use.</li>
+     *   <li>{@link PermissionAttribute#validValues} - CSV of valid values. Currently up to interpreting application to understand these.</li>
+     *   <li>{@link PermissionAttribute#defaultValue} - A default value for the attribute value if none is specified.</li>
+     * </ul>
+     *   
+     * @param permAttribute must contain {@link PermissionAttribute#attributeName} and {@link PermissionAttribute#dataType}
+     * @param attributeSetName The name of the permission attribute set this ftPA should be added.
+     * @return PermissionAttribute entity created
+     * @throws SecurityException - thrown in the event of data or system error
+     */
     PermissionAttribute addPermissionAttributeToSet( PermissionAttribute permAttribute, String attributeSetName )
     	throws SecurityException;
     
-    //TODO: add documentation
+    /**
+     * This method removed a permission attribute (ftPA) from an existing permission attribute set.
+     * <h3></h3>
+     * <h4>required parameters</h4>
+     * <ul>
+     *   <li>{@link PermissionAttribute#attributeName} - contains the name of existing object being targeted for the permission update</li>
+     *   <li>attributeSetName - contains the name of existing permission attribute set being modified</li>
+     * </ul>     
+	 *
+     * @param permAttribute must contain {@link PermissionAttribute#attributeName}
+     * @param attributeSetName The name of the permission attribute set this ftPA should be removed from
+     * @throws SecurityException - thrown in the event of data or system error
+     */
     void removePermissionAttributeFromSet( PermissionAttribute permAttribute, String attributeSetName )
     	throws SecurityException;    
     

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/ab95a17b/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java b/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
index 2f8dffe..5271b99 100755
--- a/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
@@ -110,7 +110,18 @@ public interface ReviewMgr extends Manageable
     PermObj readPermObj( PermObj permObj )
         throws SecurityException;
 
-    //TODO: add documentation
+    /**
+     * Method read permission attribute set in directory
+     * <h3></h3>
+     * <h4>required parameters</h4>
+     * <ul>
+     *   <li>{@link PermissionAttributeSet#name} - contains the name of existing object being targeted</li>
+     * </ul>
+     * 
+     * @param permAttributeSet  entity contains the {@link PermissionAttributeSet#name} of target record.
+     * @return PermissionAttributeSet loaded with perm attribute set data.
+     * @throws SecurityException is thrown if object not found or system error.
+     */
     PermissionAttributeSet readPermAttributeSet( PermissionAttributeSet permAttributeSet )
             throws SecurityException;
         
@@ -444,7 +455,21 @@ public interface ReviewMgr extends Manageable
     List<Permission> rolePermissions( Role role, boolean noInheritance )
         throws SecurityException;
 
-    //TODO: add documentation
+    /**
+     * This function returns all the permission attribute set (which contain 0 to many permission attributes)
+     * for a given role. The function is valid if and only if the role is a member of the ROLES data
+     * set.
+     *      * <h3></h3>
+     * <h4>required parameters</h4>
+     * <ul>
+     *   <li>{@link Role#name} - contains the name to use for the Role targeted for search.</li>
+     * </ul>
+     * 
+     * @param role contains role name, {@link Role#name} of Role entity Permission is granted to.
+     * @param noInheritance if true will NOT include inherited roles in the search.
+     * @return List of type PermissionAttributeSet that contains all Permission Attribute valid for the role.
+     * @throws SecurityException In the event system error occurs.
+     */
     List<PermissionAttributeSet> rolePermissionAttributeSets( Role role, boolean noInhertiance )
     	throws SecurityException;
     

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/ab95a17b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
index f2edc47..b1a0c9e 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
@@ -1824,6 +1824,12 @@ final class UserDAO extends ApacheDsDataProvider
         return userDn;
     }
 
+    /**
+     * @param uRole
+     * @param roleConstraint
+     * @throws UpdateException
+     * @throws FinderException
+     */
     void assign( UserRole uRole, RoleConstraint roleConstraint ) throws UpdateException, FinderException
     {
     	LdapConnection ld = null;
@@ -1854,6 +1860,12 @@ final class UserDAO extends ApacheDsDataProvider
         }
     }
     
+    /**
+     * @param uRole
+     * @param roleConstraint
+     * @throws UpdateException
+     * @throws FinderException
+     */
     void deassign( UserRole uRole, RoleConstraint roleConstraint ) throws UpdateException, FinderException
     {
     	LdapConnection ld = null;
@@ -1863,7 +1875,7 @@ final class UserDAO extends ApacheDsDataProvider
         try
         {
             List<Modification> mods = new ArrayList<Modification>();
-            szRoleConstraint = roleConstraint.gerRawData(uRole);
+            szRoleConstraint = roleConstraint.getRawData(uRole);
 
             mods.add( new DefaultModification( ModificationOperation.REMOVE_ATTRIBUTE, GlobalIds.USER_ROLE_DATA,
             		szRoleConstraint ) );

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/ab95a17b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
index 453a784..eba8522 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
@@ -38,7 +38,7 @@ public class PermissionAttribute extends FortEntity implements Serializable {
     private static final String DEFAULT_VALUE_PARAM_NAME = "defaultValue";
     
     private String attributeName;
-    private Boolean required;
+    private Boolean required = false;
     private ComparisonOperator operator;
     //TODO: make this an enum?
     private String dataType;


[39/43] directory-fortress-core git commit: fixed indentation and added some comments

Posted by cp...@apache.org.
fixed indentation and added some comments


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/887530a9
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/887530a9
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/887530a9

Branch: refs/heads/master
Commit: 887530a91048244836abf0a225c9034af73a013c
Parents: e1d934e
Author: clp207 <cl...@psu.edu>
Authored: Thu Sep 15 13:37:59 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Thu Sep 15 13:37:59 2016 -0400

----------------------------------------------------------------------
 .../core/model/PermissionAttribute.java         | 144 ++++++++++---------
 .../core/model/PermissionAttributeSet.java      | 115 ++++++++-------
 .../fortress/core/model/RoleConstraint.java     |  86 +++++------
 .../fortress/core/model/RoleConstraintType.java |   9 +-
 4 files changed, 189 insertions(+), 165 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/887530a9/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
index 1ca5e43..3fa41a2 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
@@ -29,6 +29,14 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
+/**
+ * A Permission Attribute is defines an attribute about a permission used for 
+ * attribute type permission filtering. Fortress merely stores this data, does
+ * not enforce the attribute filtering. It is up to the client to do the attribute
+ * checks.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
 @XmlRootElement(name = "ftPA")
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "permission", propOrder =
@@ -44,7 +52,7 @@ public class PermissionAttribute extends FortEntity implements Serializable {
 
     /** Default serialVersionUID */
     private static final long serialVersionUID = 1L;
-    
+
     private String attributeName;
     private String defaultOperator;
     private String dataType;    
@@ -54,17 +62,17 @@ public class PermissionAttribute extends FortEntity implements Serializable {
     private String dn;
     private String internalId;
     private String description;
-    
+
     public PermissionAttribute()
     {
-    	
+
     }
-    
+
     public PermissionAttribute(String attributeName)
     {
-    	this.attributeName = attributeName;
+        this.attributeName = attributeName;
     }       
-	
+
     /**
      * Checks that attribute names are equal
      */
@@ -95,7 +103,7 @@ public class PermissionAttribute extends FortEntity implements Serializable {
 
         return thatPermObj.getAttributeName().equalsIgnoreCase( this.getAttributeName() );
     }
-    
+
     @Override
     public int hashCode()
     {
@@ -103,84 +111,84 @@ public class PermissionAttribute extends FortEntity implements Serializable {
         return result;
     }
 
-	public String getDefaultOperator() {
-		return defaultOperator;
-	}
+    public String getDefaultOperator() {
+        return defaultOperator;
+    }
 
-	public void setDefaultOperator(String defaultOperator) {
-		this.defaultOperator = defaultOperator;
-	}
+    public void setDefaultOperator(String defaultOperator) {
+        this.defaultOperator = defaultOperator;
+    }
 
-	public String getDataType() {
-		return dataType;
-	}
+    public String getDataType() {
+        return dataType;
+    }
 
-	public void setDataType(String dataType) {
-		this.dataType = dataType;
-	}
+    public void setDataType(String dataType) {
+        this.dataType = dataType;
+    }
 
-	public String getDefaultValue() {
-		return defaultValue;
-	}
+    public String getDefaultValue() {
+        return defaultValue;
+    }
 
-	public void setDefaultValue(String defaultValue) {
-		this.defaultValue = defaultValue;
-	}
+    public void setDefaultValue(String defaultValue) {
+        this.defaultValue = defaultValue;
+    }
 
-	public String getDefaultStrategy() {
-		return defaultStrategy;
-	}
+    public String getDefaultStrategy() {
+        return defaultStrategy;
+    }
 
-	public void setDefaultStrategy(String defaultStrategy) {
-		this.defaultStrategy = defaultStrategy;
-	}
+    public void setDefaultStrategy(String defaultStrategy) {
+        this.defaultStrategy = defaultStrategy;
+    }
 
-	public List<String> getValidValues() {
-		if(validValues == null){
-			validValues = new ArrayList<String>();
-		}
-		return validValues;
-	}
+    public List<String> getValidValues() {
+        if(validValues == null){
+            validValues = new ArrayList<String>();
+        }
+        return validValues;
+    }
 
-	public void setValidValues(List<String> validValues) {
-		this.validValues = validValues;
-	}
+    public void setValidValues(List<String> validValues) {
+        this.validValues = validValues;
+    }
 
-	public String getAttributeName() {
-		return attributeName;
-	}
+    public String getAttributeName() {
+        return attributeName;
+    }
 
-	public void setAttributeName(String attributeName) {
-		this.attributeName = attributeName;
-	}
+    public void setAttributeName(String attributeName) {
+        this.attributeName = attributeName;
+    }
 
-	public String getDn() {
-		return dn;
-	}
+    public String getDn() {
+        return dn;
+    }
 
-	public void setDn(String dn) {
-		this.dn = dn;
-	}
+    public void setDn(String dn) {
+        this.dn = dn;
+    }
 
-	public String getInternalId() {
-		return internalId;
-	}
+    public String getInternalId() {
+        return internalId;
+    }
 
-	public void setInternalId() {
+    public void setInternalId() {
         UUID uuid = UUID.randomUUID();
         this.internalId = uuid.toString();
-	}
-	
-	public void setInternalId(String internalId) {        
+    }
+
+    public void setInternalId(String internalId) {        
         this.internalId = internalId;
-	}
+    }
 
-	public String getDescription() {
-		return description;
-	}
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
 
-	public void setDescription(String description) {
-		this.description = description;
-	}
-    
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/887530a9/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
index eced0e5..84822fc 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
@@ -31,47 +31,54 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
+/**
+ * This a grouping of {@link org.apache.directory.fortress.core.model.PermissionAttribute}. 
+ * A {@link org.apache.directory.fortress.core.model.Permission} can link to 0 to many Permission
+ * Attribute Sets. 
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
 @XmlRootElement(name = "ftPermissionAttributeSet")
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "permission", propOrder =
-    {
-        "name",
-        "attributes",
-        "internalId",
-        "description",
-        "type"
+{
+    "name",
+    "attributes",
+    "internalId",
+    "description",
+    "type"
 })
 public class PermissionAttributeSet extends FortEntity implements Serializable {
 
     /** Default serialVersionUID */
     private static final long serialVersionUID = 1L;
-	
-	private String name;
-	@XmlElement(nillable = true)
-	private Set<PermissionAttribute> attributes;
+
+    private String name;
+    @XmlElement(nillable = true)
+    private Set<PermissionAttribute> attributes;
     private String internalId;
     private String description;
     private String type;
     @XmlTransient
     private String dn;
 
-    	
+
     public PermissionAttributeSet(String name){
-    	this.name = name;
+        this.name = name;
     }
-    
-	public PermissionAttributeSet(){
-		
-	}
-	
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}	
-	
+
+    public PermissionAttributeSet(){
+
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }	
+
     /**
      * Return the collection of optional Attributes that have been loaded into this entity.  This is stored as a multi-occurring
      * attribute of ftPA entries on the 'ftAttributeSet' object class.
@@ -80,10 +87,10 @@ public class PermissionAttributeSet extends FortEntity implements Serializable {
      */
     public Set<PermissionAttribute> getAttributes()
     {
-    	if(this.attributes == null){
-    		attributes = new HashSet<PermissionAttribute>();
-    	}
-    	
+        if(this.attributes == null){
+            attributes = new HashSet<PermissionAttribute>();
+        }
+
         return this.attributes;
     }
 
@@ -98,42 +105,42 @@ public class PermissionAttributeSet extends FortEntity implements Serializable {
     {
         this.attributes = attributes;
     }
-    
+
     public void setInternalId(String internalId){
-    	this.internalId = internalId;
+        this.internalId = internalId;
     }
 
-	public String getInternalId() {
-		return internalId;
-	}
+    public String getInternalId() {
+        return internalId;
+    }
 
-	public void setInternalId() {
+    public void setInternalId() {
         UUID uuid = UUID.randomUUID();
         this.internalId = uuid.toString();
-	}
+    }
 
-	public String getDescription() {
-		return description;
-	}
+    public String getDescription() {
+        return description;
+    }
 
-	public void setDescription(String description) {
-		this.description = description;
-	}
+    public void setDescription(String description) {
+        this.description = description;
+    }
 
-	public String getType() {
-		return type;
-	}
+    public String getType() {
+        return type;
+    }
 
-	public void setType(String type) {
-		this.type = type;
-	}
+    public void setType(String type) {
+        this.type = type;
+    }
 
-	public String getDn() {
-		return dn;
-	}
+    public String getDn() {
+        return dn;
+    }
 
-	public void setDn(String dn) {
-		this.dn = dn;
-	}
+    public void setDn(String dn) {
+        this.dn = dn;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/887530a9/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
index 77df7db..13db9a9 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
@@ -23,51 +23,55 @@ import java.io.Serializable;
 
 import org.apache.directory.fortress.core.util.Config;
 
+/**
+ * The role constraint object holds non date time constraints on user to role relationships.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
 public class RoleConstraint implements Serializable {
 
     private static final long serialVersionUID = 1L;
-	
-	public static final String RC_TYPE_NAME = "type";
-	
-	private RoleConstraintType constraintType;
-	private String value;
-	private String paSetName;
-	
-	public RoleConstraint(){
-		
-	}
-	
-	public RoleConstraint(String value, RoleConstraintType constraintType, String paSetName){
-		this.constraintType = constraintType;
-		this.value = value;
-		this.paSetName = paSetName;
-	}	
-	
-	public RoleConstraintType getConstraintType() {
-		return constraintType;
-	}
-	public void setConstraintType(RoleConstraintType constraintType) {
-		this.constraintType = constraintType;
-	}
-	public String getValue() {
-		return value;
-	}
-	public void setValue(String value) {
-		this.value = value;
-	}
-	public String getPaSetName() {
-		return paSetName;
-	}
 
-	public void setPaSetName(String paSetName) {
-		this.paSetName = paSetName;
-	}	
-	
-	//BANK_USER$seq$0type$filter$ecomm.merchant.id$AccountId=12345&WithdrawLimit=500
-	public String getRawData(UserRole uRole){
+    public static final String RC_TYPE_NAME = "type";
+
+    private RoleConstraintType constraintType;
+    private String value;
+    private String paSetName;
+
+    public RoleConstraint(){
+
+    }
+
+    public RoleConstraint(String value, RoleConstraintType constraintType, String paSetName){
+        this.constraintType = constraintType;
+        this.value = value;
+        this.paSetName = paSetName;
+    }	
+
+    public RoleConstraintType getConstraintType() {
+        return constraintType;
+    }
+    public void setConstraintType(RoleConstraintType constraintType) {
+        this.constraintType = constraintType;
+    }
+    public String getValue() {
+        return value;
+    }
+    public void setValue(String value) {
+        this.value = value;
+    }
+    public String getPaSetName() {
+        return paSetName;
+    }
+
+    public void setPaSetName(String paSetName) {
+        this.paSetName = paSetName;
+    }	
+
+    public String getRawData(UserRole uRole){
         StringBuilder sb = new StringBuilder();        
         String delimeter = Config.getInstance().getDelimiter();
-        
+
         sb.append(uRole.getName());        
         sb.append( delimeter );
         sb.append(RC_TYPE_NAME);
@@ -77,8 +81,8 @@ public class RoleConstraint implements Serializable {
         sb.append(paSetName);
         sb.append( delimeter );
         sb.append(value);
-        
+
         return sb.toString();
-	}
+    }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/887530a9/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java
index 4f79df0..0d24e81 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java
@@ -19,7 +19,12 @@
  */
 package org.apache.directory.fortress.core.model;
 
+/**
+ * The type of role constraint.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
 public enum RoleConstraintType {
-	FILTER,
-	OTHER
+    FILTER,
+    OTHER
 }


[33/43] directory-fortress-core git commit: have junit tests working again

Posted by cp...@apache.org.
have junit tests working again


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/c70d237c
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/c70d237c
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/c70d237c

Branch: refs/heads/master
Commit: c70d237c52108365823b02b85b19fdebed535695
Parents: c4614be
Author: clp207 <cl...@psu.edu>
Authored: Wed Aug 24 09:10:52 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Wed Aug 24 09:10:52 2016 -0400

----------------------------------------------------------------------
 ldap/schema/fortress.schema                                    | 4 ++--
 .../java/org/apache/directory/fortress/core/impl/PermDAO.java  | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/c70d237c/ldap/schema/fortress.schema
----------------------------------------------------------------------
diff --git a/ldap/schema/fortress.schema b/ldap/schema/fortress.schema
index a8a492b..c56a6b9 100644
--- a/ldap/schema/fortress.schema
+++ b/ldap/schema/fortress.schema
@@ -473,7 +473,7 @@ objectClass ( ftObId:8
     )
 
 ## OC9: Fortress Permission Attribute Set Structural Object Class
-objectclass    ( ftObId:9
+objectclass ( ftObId:9
     NAME 'ftAttributeSet'
     DESC 'Fortress Attribute Set Structural Object Class'
     SUP organizationalunit
@@ -491,7 +491,7 @@ objectclass    ( ftObId:9
     )
     
 ## OC10: Fortress Permission Attribute Structural Object Class
-objectclass    ( ftObId:10
+objectclass ( ftObId:10
     NAME 'ftAttribute'
     DESC 'Fortress Attribute Structural Object Class'
     SUP organizationalrole

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/c70d237c/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 838d425..1a2a599 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
@@ -1097,7 +1097,7 @@ final class PermDAO extends LdapDataProvider
     		filterbuf.append( GlobalIds.FILTER_PREFIX );
     		filterbuf.append( PERMISSION_ATTRIBUTE_OBJECT_CLASS_NAME );
     		filterbuf.append( ")(" );
-    		filterbuf.append( GlobalIds.FT_PERMISSION_ATTRIBUTE );
+    		filterbuf.append( GlobalIds.FT_PERMISSION_ATTRIBUTE_SET );
     		filterbuf.append( "=" );
     		filterbuf.append( paSetVal );
     		filterbuf.append(  "))" );
@@ -2026,13 +2026,13 @@ final class PermDAO extends LdapDataProvider
 
     private String getDn( PermissionAttributeSet paSet, String contextId )
     {
-        return GlobalIds.PERMISSION_ATTRIBUTE_SET_NAME + "=" + paSet.getName() + "," + getRootDn( contextId, GlobalIds.SD_ROOT );
+        return SchemaConstants.OU_AT + "=" + paSet.getName() + "," + getRootDn( contextId, GlobalIds.SD_ROOT );
     }
 
     
     private String getDn( PermissionAttribute pa, String paSetName, String contextId )
     {
-        return GlobalIds.PERMISSION_ATTRIBUTE_SET_NAME + "=" + paSetName + "," + GlobalIds.PERMISSION_ATTRIBUTE_NAME  + "=" + pa.getAttributeName() + "," + getRootDn( contextId, GlobalIds.SD_ROOT );
+        return GlobalIds.FT_PERMISSION_ATTRIBUTE  + "=" + pa.getAttributeName() + "," + SchemaConstants.OU_AT + "=" + paSetName + "," + getRootDn( contextId, GlobalIds.SD_ROOT );
     }
     
 


[40/43] directory-fortress-core git commit: fixed more indentation

Posted by cp...@apache.org.
fixed more indentation


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/0a6a44da
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/0a6a44da
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/0a6a44da

Branch: refs/heads/master
Commit: 0a6a44dabea74d5168081fb80618dd5dd7d0d5b7
Parents: 887530a
Author: clp207 <cl...@psu.edu>
Authored: Thu Sep 15 13:42:17 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Thu Sep 15 13:42:17 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/impl/PermDAO.java   | 216 +++++++++----------
 .../fortress/core/impl/ReviewMgrImpl.java       |  37 +---
 2 files changed, 118 insertions(+), 135 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/0a6a44da/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 5788c61..b8ea568 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
@@ -1127,87 +1127,87 @@ final class PermDAO extends LdapDataProvider
     }
     
     PermissionAttributeSet getPermAttributeSet( PermissionAttributeSet permAttributeSet )
-    		throws FinderException
+        throws FinderException
     {
-    	PermissionAttributeSet entity = null;
-    	LdapConnection ld = null;
-    	String dn = getDn(permAttributeSet, permAttributeSet.getContextId());
-
-    	try
-    	{
-    		ld = getAdminConnection();
-    		Entry findEntry = read( ld, dn, PERMISION_ATTRIBUTE_SET_ATRS );
-    		if ( findEntry == null )
-    		{
-    			String warning = "getPermAttributeSet no entry found dn [" + dn + "]";
-    			throw new FinderException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, warning );
-    		}
-    		entity = unloadPASetLdapEntry( findEntry, 0 );
-    		
-    		//find permission attributes for this set
-    		entity.setAttributes(this.findPermissionAttributes(entity));
-    	}
-    	catch ( LdapNoSuchObjectException e )
-    	{
-    		String warning = "getPermAttributeSet COULD NOT FIND ENTRY for dn [" + dn + "]";
-    		throw new FinderException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, warning );
-    	}
-    	catch ( LdapException e )
-    	{
-    		String error = "getPermAttributeSet dn [" + dn + "] caught LdapException=" + e.getMessage();
-    		throw new FinderException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, error, e );
-    	}
-    	finally
-    	{
-    		closeAdminConnection( ld );
-    	}
-
-    	return entity;
+        PermissionAttributeSet entity = null;
+        LdapConnection ld = null;
+        String dn = getDn(permAttributeSet, permAttributeSet.getContextId());
+
+        try
+        {
+            ld = getAdminConnection();
+            Entry findEntry = read( ld, dn, PERMISION_ATTRIBUTE_SET_ATRS );
+            if ( findEntry == null )
+            {
+                String warning = "getPermAttributeSet no entry found dn [" + dn + "]";
+                throw new FinderException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, warning );
+            }
+            entity = unloadPASetLdapEntry( findEntry, 0 );
+
+            //find permission attributes for this set
+            entity.setAttributes(this.findPermissionAttributes(entity));
+        }
+        catch ( LdapNoSuchObjectException e )
+        {
+            String warning = "getPermAttributeSet COULD NOT FIND ENTRY for dn [" + dn + "]";
+            throw new FinderException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, warning );
+        }
+        catch ( LdapException e )
+        {
+            String error = "getPermAttributeSet dn [" + dn + "] caught LdapException=" + e.getMessage();
+            throw new FinderException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, error, e );
+        }
+        finally
+        {
+            closeAdminConnection( ld );
+        }
+
+        return entity;
     }
 
     Set<PermissionAttribute> findPermissionAttributes( PermissionAttributeSet paSet )
-    		throws FinderException
+        throws FinderException
     {
-    	Set<PermissionAttribute> paList = new HashSet<PermissionAttribute>();
-    	LdapConnection ld = null;
-    	String permRoot = getRootDn( paSet.getContextId() );
-
-    	try
-    	{
-    		String paSetVal = encodeSafeText( paSet.getName(), GlobalIds.PERM_LEN );
-    		StringBuilder filterbuf = new StringBuilder();
-    		filterbuf.append( GlobalIds.FILTER_PREFIX );
-    		filterbuf.append( PERMISSION_ATTRIBUTE_OBJECT_CLASS_NAME );
-    		filterbuf.append( ")(" );
-    		filterbuf.append( GlobalIds.FT_PERMISSION_ATTRIBUTE_SET );
-    		filterbuf.append( "=" );
-    		filterbuf.append( paSetVal );
-    		filterbuf.append(  "))" );
-    		ld = getAdminConnection();
-    		SearchCursor searchResults = search( ld, permRoot,
-    				SearchScope.SUBTREE, filterbuf.toString(), PERMISION_ATTRIBUTE_ATRS, false, GlobalIds.BATCH_SIZE );
-    		long sequence = 0;
-
-    		while ( searchResults.next() )
-    		{
-    			paList.add( unloadPALdapEntry( searchResults.getEntry(), sequence++ ) );
-    		}
-    	}
-    	catch ( LdapException e )
-    	{
-    		String error = "findPermissionAttributes caught LdapException=" + e.getMessage();
-    		throw new FinderException( GlobalErrIds.PERM_SEARCH_FAILED, error, e );
-    	}
-    	catch ( CursorException e )
-    	{
-    		String error = "findPermissionAttributes caught CursorException=" + e.getMessage();
-    		throw new FinderException( GlobalErrIds.PERM_SEARCH_FAILED, error, e );
-    	}
-    	finally
-    	{
-    		closeAdminConnection( ld );
-    	}
-    	return paList;
+        Set<PermissionAttribute> paList = new HashSet<PermissionAttribute>();
+        LdapConnection ld = null;
+        String permRoot = getRootDn( paSet.getContextId() );
+
+        try
+        {
+            String paSetVal = encodeSafeText( paSet.getName(), GlobalIds.PERM_LEN );
+            StringBuilder filterbuf = new StringBuilder();
+            filterbuf.append( GlobalIds.FILTER_PREFIX );
+            filterbuf.append( PERMISSION_ATTRIBUTE_OBJECT_CLASS_NAME );
+            filterbuf.append( ")(" );
+            filterbuf.append( GlobalIds.FT_PERMISSION_ATTRIBUTE_SET );
+            filterbuf.append( "=" );
+            filterbuf.append( paSetVal );
+            filterbuf.append(  "))" );
+            ld = getAdminConnection();
+            SearchCursor searchResults = search( ld, permRoot,
+                SearchScope.SUBTREE, filterbuf.toString(), PERMISION_ATTRIBUTE_ATRS, false, GlobalIds.BATCH_SIZE );
+            long sequence = 0;
+
+            while ( searchResults.next() )
+            {
+                paList.add( unloadPALdapEntry( searchResults.getEntry(), sequence++ ) );
+            }
+        }
+        catch ( LdapException e )
+        {
+            String error = "findPermissionAttributes caught LdapException=" + e.getMessage();
+            throw new FinderException( GlobalErrIds.PERM_SEARCH_FAILED, error, e );
+        }
+        catch ( CursorException e )
+        {
+            String error = "findPermissionAttributes caught CursorException=" + e.getMessage();
+            throw new FinderException( GlobalErrIds.PERM_SEARCH_FAILED, error, e );
+        }
+        finally
+        {
+            closeAdminConnection( ld );
+        }
+        return paList;
     }
 
     /**
@@ -1452,42 +1452,42 @@ final class PermDAO extends LdapDataProvider
     }
     
     private PermissionAttributeSet unloadPASetLdapEntry( Entry le, long sequence )
-    		throws LdapInvalidAttributeValueException
+        throws LdapInvalidAttributeValueException
     {
-    	PermissionAttributeSet entity = new ObjectFactory().createPermAttributeSet();
-    	entity.setSequenceId( sequence );
-    	entity.setName( getAttribute( le, SchemaConstants.CN_AT ) );
-    	entity.setDn( le.getDn().getName() );
-    	entity.setInternalId( getAttribute( le, GlobalIds.FT_IID ) );
-    	entity.setDescription( getAttribute( le, SchemaConstants.DESCRIPTION_AT ) );
-    	entity.setType( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_SET_TYPE ) );    	    	
-    	
-    	return entity;
+        PermissionAttributeSet entity = new ObjectFactory().createPermAttributeSet();
+        entity.setSequenceId( sequence );
+        entity.setName( getAttribute( le, SchemaConstants.CN_AT ) );
+        entity.setDn( le.getDn().getName() );
+        entity.setInternalId( getAttribute( le, GlobalIds.FT_IID ) );
+        entity.setDescription( getAttribute( le, SchemaConstants.DESCRIPTION_AT ) );
+        entity.setType( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_SET_TYPE ) );    	    	
+
+        return entity;
     }
-    
+
     private PermissionAttribute unloadPALdapEntry( Entry le, long sequence )
-    		throws LdapInvalidAttributeValueException
+        throws LdapInvalidAttributeValueException
     {
-    	PermissionAttribute entity = new ObjectFactory().createPermissionAttribute();
-    	entity.setSequenceId( sequence );
-    	entity.setAttributeName( getAttribute( le, SchemaConstants.CN_AT ) );
-    	entity.setDn( le.getDn().getName() );
-    	entity.setInternalId( getAttribute( le, GlobalIds.FT_IID ) );
-    	entity.setDescription( getAttribute( le, SchemaConstants.DESCRIPTION_AT ) );
-    	entity.setDataType( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DATA_TYPE ) );
-    	entity.setDefaultOperator( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_OPERATOR ) );
-    	entity.setDefaultStrategy( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_STRATEGY ) );
-    	entity.setDefaultValue( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_VALUE ) );
-    	
-    	List<String> validValues = getAttributes( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_VALID_VALUES );
-    	
-    	if(validValues != null){
-    		for(String value : validValues){
-    			entity.getValidValues().add(value);
-    		}
-    	}
-    	
-    	return entity;
+        PermissionAttribute entity = new ObjectFactory().createPermissionAttribute();
+        entity.setSequenceId( sequence );
+        entity.setAttributeName( getAttribute( le, SchemaConstants.CN_AT ) );
+        entity.setDn( le.getDn().getName() );
+        entity.setInternalId( getAttribute( le, GlobalIds.FT_IID ) );
+        entity.setDescription( getAttribute( le, SchemaConstants.DESCRIPTION_AT ) );
+        entity.setDataType( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DATA_TYPE ) );
+        entity.setDefaultOperator( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_OPERATOR ) );
+        entity.setDefaultStrategy( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_STRATEGY ) );
+        entity.setDefaultValue( getAttribute( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_VALUE ) );
+
+        List<String> validValues = getAttributes( le, GlobalIds.FT_PERMISSION_ATTRIBUTE_VALID_VALUES );
+
+        if(validValues != null){
+            for(String value : validValues){
+                entity.getValidValues().add(value);
+            }
+        }
+
+        return entity;
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/0a6a44da/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
index fa10de8..4aae5b8 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
@@ -430,13 +430,13 @@ public class ReviewMgrImpl extends Manageable implements ReviewMgr, Serializable
      */
     @Override
     public List<PermissionAttributeSet> rolePermissionAttributeSets( Role role, boolean noInhertiance )    
-    	throws SecurityException
+        throws SecurityException
     {
-    	Map<String, PermissionAttributeSet> permAttributeSets = new HashMap<String, PermissionAttributeSet>();
-    	
-    	//look through all permissions in the role
-    	List<Permission> permissions = this.rolePermissions(role, noInhertiance);
-    	for(Permission perm : permissions){
+        Map<String, PermissionAttributeSet> permAttributeSets = new HashMap<String, PermissionAttributeSet>();
+
+        //look through all permissions in the role
+        List<Permission> permissions = this.rolePermissions(role, noInhertiance);
+        for(Permission perm : permissions){
             if( CollectionUtils.isNotEmpty(perm.getPaSets() )){
                 for(String paSetName : perm.getPaSets()){	
                     if(!permAttributeSets.containsKey(paSetName)){
@@ -446,7 +446,7 @@ public class ReviewMgrImpl extends Manageable implements ReviewMgr, Serializable
                 }
             }
         }
-    	
+
         return new ArrayList<PermissionAttributeSet>(permAttributeSets.values());
     }
 
@@ -725,29 +725,12 @@ public class ReviewMgrImpl extends Manageable implements ReviewMgr, Serializable
     public List<RoleConstraint> findRoleConstraints(User user, Permission permission, RoleConstraintType rcType) throws SecurityException {
         String methodName = "findRoleConstraints";
         checkAccess(CLS_NM, methodName);        
-    	//find roles this permission is authorized for
+        //find roles this permission is authorized for
         Permission pe = permP.read(permission);
         Set<String> authorizedRoles = authorizeRoles(pe.getRoles());
-        
+
         //find role constraints for the user and the permission's pa set
-    	return userP.findRoleConstraints(authorizedRoles, user, rcType, pe.getPaSets());                
+        return userP.findRoleConstraints(authorizedRoles, user, rcType, pe.getPaSets());                
     }
-    
-    
-    /**
-     * {@inheritDoc}
-     */
-    /*
-    @Override
-    public List<UserRole> assignedRoles(User user)
-        throws SecurityException
-    {
-        String methodName = "assignedRoles";
-        assertContext(CLS_NM, methodName, user, GlobalErrIds.USER_NULL);
-        checkAccess(CLS_NM, methodName);
-        User ue = userP.read(user, true);
-        return ue.getRoles();
-    } 
-    */
 
 }
\ No newline at end of file


[08/43] directory-fortress-core git commit: added remove constraint method

Posted by cp...@apache.org.
added remove constraint method


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/8a47b1fc
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/8a47b1fc
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/8a47b1fc

Branch: refs/heads/master
Commit: 8a47b1fcd9dd7c47dc343b0ee7cf9bca88cf3385
Parents: 2f3045b
Author: clp207 <cl...@psu.edu>
Authored: Tue Jan 26 16:29:52 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/AdminMgr.java       |  6 +++-
 .../fortress/core/impl/AdminMgrImpl.java        | 19 ++++++++++--
 .../directory/fortress/core/impl/UserDAO.java   | 31 ++++++++++++++++++++
 .../directory/fortress/core/impl/UserP.java     |  8 +++++
 .../fortress/core/rest/AdminMgrRestImpl.java    |  8 +++++
 5 files changed, 68 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/8a47b1fc/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
index 4c49e5f..4131d2b 100755
--- a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
@@ -451,8 +451,12 @@ public interface AdminMgr extends Manageable
 
     //TODO: add documentation
     RoleConstraint addRoleConstraint( UserRole uRole, RoleConstraint roleConstraint )
-   	  throws SecurityException;
+    	throws SecurityException;
 
+    //TODO: remove documentation
+    void removeRoleConstraint( UserRole uRole, RoleConstraint roleConstraint )
+    	throws SecurityException;
+    
     /**
      * This command deletes the assignment of the User from the Role entities. The command is
      * valid if and only if the user is a member of the USERS data set, the role is a member of

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/8a47b1fc/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
index 166558a..ab4aea9 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
@@ -341,7 +341,7 @@ public final class AdminMgrImpl extends Manageable implements AdminMgr, Serializ
     	   	throws SecurityException
     {
         //TODO: need new arbac perm and/or add security check
-    	 	String methodName = "assignUser";
+    	String methodName = "assignUser";
         assertContext( CLS_NM, methodName, uRole, GlobalErrIds.URLE_NULL );
         
         userP.assign( uRole, roleConstraint );
@@ -353,6 +353,20 @@ public final class AdminMgrImpl extends Manageable implements AdminMgr, Serializ
      * {@inheritDoc}
      */
     @Override
+    public void removeRoleConstraint( UserRole uRole, RoleConstraint roleConstraint )
+        	throws SecurityException
+    {
+        //TODO: need new arbac perm and/or add security check
+    	String methodName = "assignUser";
+        assertContext( CLS_NM, methodName, uRole, GlobalErrIds.URLE_NULL );
+        
+        userP.deassign( uRole, roleConstraint );    	
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public void deassignUser( UserRole uRole ) throws SecurityException
     {
         String methodName = "deassignUser";
@@ -367,8 +381,7 @@ public final class AdminMgrImpl extends Manageable implements AdminMgr, Serializ
         // Now "deassign" user dn attribute, this will remove a single, standard attribute value,
         // called "roleOccupant", from the node:
         roleP.deassign( role, dn );
-    }
-
+    }    
 
     /**
      * {@inheritDoc}

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/8a47b1fc/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
index 6ffb8e0..47da5ac 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
@@ -1856,6 +1856,37 @@ final class UserDAO extends ApacheDsDataProvider
         }
     }
     
+    void deassign( UserRole uRole, RoleConstraint roleConstraint ) throws UpdateException, FinderException
+    {
+    	LdapConnection ld = null;
+    	String szRoleConstraint = "";
+        String userDn = getDn( uRole.getUserId(), uRole.getContextId() );
+
+        try
+        {
+            List<Modification> mods = new ArrayList<Modification>();
+            szRoleConstraint = roleConstraint.gerRawData(uRole);
+
+            mods.add( new DefaultModification( ModificationOperation.REMOVE_ATTRIBUTE, GlobalIds.USER_ROLE_DATA,
+            		szRoleConstraint ) );
+
+            ld = getAdminConnection();
+            modify( ld, userDn, mods, uRole );
+            
+            //TODO: make sure not adding same RC twice
+        }
+        catch ( LdapException e )
+        {
+            String warning = "deassign userId [" + uRole.getUserId() + "] role constraint [" + szRoleConstraint + "] ";
+
+            warning += "caught LDAPException=" + e.getMessage();
+            throw new UpdateException( GlobalErrIds.URLE_ASSIGN_FAILED, warning, e );
+        }
+        finally
+        {
+            closeAdminConnection( ld );
+        }
+    }
     
     /**
      * @param uRole

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/8a47b1fc/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserP.java b/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
index 979bcd4..940ca63 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
@@ -643,6 +643,14 @@ final class UserP
     	
     	uDao.assign( uRole, roleConstraint );
     }
+    
+    //TODO: add documentation, maybe change method name?
+    void deassign( UserRole uRole, RoleConstraint roleConstraint ) throws SecurityException
+    {
+    	//TODO: validate?
+    	
+    	uDao.deassign( uRole, roleConstraint );
+    }
 
 
     /**

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/8a47b1fc/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
index b9b45e5..c3e61ac 100644
--- a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
@@ -1257,4 +1257,12 @@ public final class AdminMgrRestImpl extends Manageable implements AdminMgr
 		// TODO Auto-generated method stub
 		return null;
 	}
+
+
+	@Override
+	public void removeRoleConstraint(UserRole uRole,
+			RoleConstraint roleConstraint) throws SecurityException {
+		// TODO Auto-generated method stub
+		
+	}
 }
\ No newline at end of file


[32/43] directory-fortress-core git commit: fixed issue with space instaed of - between SINGLE VALUE in schema

Posted by cp...@apache.org.
fixed issue with space instaed of - between SINGLE VALUE in schema


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/c4614bee
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/c4614bee
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/c4614bee

Branch: refs/heads/master
Commit: c4614bee7bf07e665ecc16bd40c7f75cc8fecfb4
Parents: fd2fead
Author: clp207 <cl...@psu.edu>
Authored: Tue Aug 23 14:14:55 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Tue Aug 23 14:14:55 2016 -0400

----------------------------------------------------------------------
 ldap/schema/fortress.schema | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/c4614bee/ldap/schema/fortress.schema
----------------------------------------------------------------------
diff --git a/ldap/schema/fortress.schema b/ldap/schema/fortress.schema
index 754e43b..a8a492b 100644
--- a/ldap/schema/fortress.schema
+++ b/ldap/schema/fortress.schema
@@ -301,15 +301,15 @@ attributetype ( ftAtId:33
     DESC 'Fortress Permission Attribute Set Default Operator'
     EQUALITY caseIgnoreMatch
     SUBSTR caseIgnoreSubstringsMatch
-    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE VALUE )
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
     
-# A34: User Role Constraints, type STRING, MULTI VALUE
+# A34: User Role Constraints, type STRING, SINGLE VALUE
 attributetype ( ftAtId:34
     NAME 'ftPASetType'
     DESC 'Fortress Permission Attribute Set Type'
     EQUALITY caseIgnoreMatch
     SUBSTR caseIgnoreSubstringsMatch
-    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
     
 # A35: Permission Attribute Data Type, type STRING, SINGLE VALUE
 attributetype ( ftAtId:35
@@ -317,7 +317,7 @@ attributetype ( ftAtId:35
     DESC 'Fortress Permission Attribute Data Type'
     EQUALITY caseIgnoreMatch
     SUBSTR caseIgnoreSubstringsMatch
-    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE VALUE )
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
     
 # A36: Permission Attribute Default Value, type STRING, SINGLE VALUE
 attributetype ( ftAtId:36
@@ -325,7 +325,7 @@ attributetype ( ftAtId:36
     DESC 'Fortress Permission Attribute Set Default Value'
     EQUALITY caseIgnoreMatch
     SUBSTR caseIgnoreSubstringsMatch
-    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE VALUE ) 
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) 
     
 # A37: Permission Attribute Default Strategy, type STRING, SINGLE VALUE
 attributetype ( ftAtId:37
@@ -333,7 +333,7 @@ attributetype ( ftAtId:37
     DESC 'Fortress Permission Attribute Default Strategy'
     EQUALITY caseIgnoreMatch
     SUBSTR caseIgnoreSubstringsMatch
-    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE VALUE ) 
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) 
     
 # A38: Permission Attribute Valid Values, type STRING, MULTI VALUE
 attributetype ( ftAtId:38


[35/43] directory-fortress-core git commit: added perm attr update method

Posted by cp...@apache.org.
added perm attr update method


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/7df32358
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/7df32358
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/7df32358

Branch: refs/heads/master
Commit: 7df323584adfcbeae7d13fed05b67a85e38f2612
Parents: 1eebcfc
Author: clp207 <cl...@psu.edu>
Authored: Wed Aug 24 15:16:01 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Wed Aug 24 15:16:01 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/AdminMgr.java       | 14 ++-
 .../directory/fortress/core/GlobalErrIds.java   |  5 +-
 .../fortress/core/impl/AdminMgrImpl.java        | 13 +++
 .../directory/fortress/core/impl/PermDAO.java   | 93 ++++++++++++++++++--
 .../directory/fortress/core/impl/PermP.java     | 14 +++
 .../fortress/core/rest/AdminMgrRestImpl.java    |  7 ++
 6 files changed, 138 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7df32358/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
index f46703a..42fa15a 100755
--- a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
@@ -614,11 +614,21 @@ public interface AdminMgr extends Manageable
      * </ul>     
 	 *
      * @param permAttribute must contain {@link PermissionAttribute#attributeName}
-     * @param attributeSetName The name of the permission attribute set this ftPA should be removed from
+     * @param attributeSetName The name of the permission attribute set this pa should be removed from
      * @throws SecurityException - thrown in the event of data or system error
      */
     void removePermissionAttributeFromSet( PermissionAttribute permAttribute, String attributeSetName )
-    	throws SecurityException;    
+    	throws SecurityException;
+    
+    /**
+     * 
+     * @param permAttribute must contain {@link PermissionAttribute#attributeName}
+     * @param attributeSetName The name of the permission attribute set this pa should be removed from
+     * @param replaceValidValues Set to true to replace all of the valid values and set to false to add to the existing valid values
+     * @throws SecurityException - thrown in the event of data or system error
+     */
+    void updatePermissionAttributeInSet( PermissionAttribute permAttribute, String attributeSetName, boolean replaceValidValues )
+        throws SecurityException;        
     
     /**
      * This method will update permission operation pre-existing in target directory under 

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7df32358/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 7704d89..4a0fbfa 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
@@ -677,7 +677,10 @@ public final class GlobalErrIds
      * The supplied Permission Attribute was not found
      */
     public static final int PERM_ATTRIBUTE_NOT_FOUND = 3037;
-    
+    /**
+     * The supplied Permission Attribute update failed
+     */
+    public static final int PERM_ATTRIBUTE_UPDATE_FAILED = 3038;
     
     /**
      * 4000's - Password Policy Entity

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7df32358/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
index 0662c0d..50f8ea2 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
@@ -450,6 +450,19 @@ public final class AdminMgrImpl extends Manageable implements AdminMgr, Serializ
     /**
      * {@inheritDoc}
      */
+    @Override    
+    public void updatePermissionAttributeInSet(PermissionAttribute permAttribute, String attributeSetName, boolean replaceValidValues) 
+        throws SecurityException 
+    {
+    	String methodName = "updatePermissionAttributeInSet"; 
+    	assertContext( CLS_NM, methodName, permAttribute, GlobalErrIds.PERM_ATTRIBUTE_NULL );
+        //TODO: verify with Shawn we don't need to set entity session here...        
+        permP.update( permAttribute, attributeSetName, replaceValidValues );       	
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public Permission updatePermission( Permission perm ) throws SecurityException
     {

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7df32358/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 1a2a599..623dbec 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
@@ -476,7 +476,12 @@ final class PermDAO extends LdapDataProvider
         return entity;
     }
     
-    //TODO: add documentation
+    /**
+     * 
+     * @param entity
+     * @return
+     * @throws CreateException
+     */
     PermissionAttributeSet createPermissionAttributeSet( PermissionAttributeSet entity ) throws CreateException
     {
         LdapConnection ld = null;
@@ -529,12 +534,17 @@ final class PermDAO extends LdapDataProvider
         for(PermissionAttribute pa : entity.getAttributes()){        
 	        this.createPermissionAttribute(pa, entity.getName());
         }
-        
-        //TODO: need to do anything to returned entity?
+
         return entity;
     }
     
-    //TODO: add documentation
+    /**
+     * 
+     * @param entity
+     * @param attributeSetName
+     * @return
+     * @throws CreateException
+     */
     PermissionAttribute createPermissionAttribute( PermissionAttribute entity, String attributeSetName ) throws CreateException
     {
         LdapConnection ld = null;
@@ -607,7 +617,80 @@ final class PermDAO extends LdapDataProvider
     	
     	return entity;    	
     }
-        
+       
+    PermissionAttribute updatePermissionAttribute( PermissionAttribute entity, String paSetName, boolean replaceValidValues ) throws UpdateException
+    {
+        LdapConnection ld = null;
+        String dn = getDn( entity, paSetName, entity.getContextId() );
+
+        try
+        {
+            List<Modification> mods = new ArrayList<Modification>();
+
+            if ( StringUtils.isNotEmpty( entity.getDataType() ) )
+            {
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE_DATA_TYPE, entity.getDataType() ) );
+            }
+
+            if ( StringUtils.isNotEmpty( entity.getDescription() ) )
+            {
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE, SchemaConstants.DESCRIPTION_AT, entity.getDescription() ) );
+            }
+
+            if ( StringUtils.isNotEmpty( entity.getDefaultOperator() ) )
+            {
+
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_OPERATOR, entity.getDefaultOperator() ) );
+            }
+            
+            if ( StringUtils.isNotEmpty( entity.getDefaultStrategy() ) )
+            {
+
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_STRATEGY, entity.getDefaultStrategy() ) );
+            }
+            
+            if ( StringUtils.isNotEmpty( entity.getDefaultValue() ) )
+            {
+
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE_DEFAULT_VALUE, entity.getDefaultValue() ) );
+            }
+            
+            //if replace, then remove first
+            if(replaceValidValues){
+            	mods.add( new DefaultModification(
+                    ModificationOperation.REMOVE_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE_VALID_VALUES ) );
+            }
+                        
+            for(String validValue : entity.getValidValues()){
+                mods.add( new DefaultModification(
+                    ModificationOperation.ADD_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE_VALID_VALUES, validValue ) );		
+            }
+            	           
+            if ( mods.size() > 0 )
+            {
+                ld = getAdminConnection();
+                modify( ld, dn, mods, entity );
+                entity.setDn( dn );
+            }
+        }
+        catch ( LdapException e )
+        {
+            String error = "updatePermissionAttribute name [" + entity.getAttributeName() + "] caught LdapException=" + e.getMessage();
+            throw new UpdateException( GlobalErrIds.PERM_ATTRIBUTE_UPDATE_FAILED, error, e );
+        }
+        finally
+        {
+            closeAdminConnection( ld );
+        }
+
+        return entity;
+    }
+    
     /**
      * @param entity
      * @return

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7df32358/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
index 47415de..e87bb33 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
@@ -417,6 +417,20 @@ final class PermP
     }
 
     /**
+     * Updates a Permission Attribute entity 
+     * 
+     * @param entity
+     * @param paSetName
+     * @param replaceValidValues
+     * @throws SecurityException
+     */
+    void update( PermissionAttribute entity, String paSetName, boolean replaceValidValues ) throws SecurityException
+    {
+        validate( entity );
+        pDao.updatePermissionAttribute( entity, paSetName, replaceValidValues );
+    }	
+    	
+    /**
      * Update existing Permission Object attributes with the input entity.  Null or empty attributes will be ignored.
      * The Permission Object entity input will be validated to ensure that:
      * object name is present, orgUnitId is valid, reasonability checks on all of the other populated values.

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7df32358/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
index eb41427..1d641c2 100644
--- a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
@@ -1292,4 +1292,11 @@ public final class AdminMgrRestImpl extends Manageable implements AdminMgr
 		// TODO Auto-generated method stub
 		
 	}
+
+	@Override
+	public void updatePermissionAttributeInSet(PermissionAttribute permAttribute, String attributeSetName,
+			boolean replaceValidValues) throws SecurityException {
+		// TODO Auto-generated method stub
+		
+	}
 }
\ No newline at end of file


[34/43] directory-fortress-core git commit: added some documentatino and basic validate methods

Posted by cp...@apache.org.
added some documentatino and basic validate methods


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/1eebcfc6
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/1eebcfc6
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/1eebcfc6

Branch: refs/heads/master
Commit: 1eebcfc60d5434421a068db6891c43f1d9174f1b
Parents: c70d237
Author: clp207 <cl...@psu.edu>
Authored: Wed Aug 24 14:32:34 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Wed Aug 24 14:32:34 2016 -0400

----------------------------------------------------------------------
 .../fortress/core/impl/AdminMgrImpl.java        |  3 +-
 .../directory/fortress/core/impl/PermP.java     | 94 +++++++++++++-------
 .../fortress/core/impl/AdminMgrImplTest.java    | 10 ++-
 .../fortress/core/impl/PermTestData.java        |  1 +
 .../fortress/core/impl/ReviewMgrImplTest.java   |  9 +-
 5 files changed, 78 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/1eebcfc6/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
index 3697bd2..0662c0d 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
@@ -404,7 +404,8 @@ public final class AdminMgrImpl extends Manageable implements AdminMgr, Serializ
     {
         String methodName = "addPermissionAttributeSet";         
         assertContext( CLS_NM, methodName, permAttributeSet, GlobalErrIds.PERM_ATTRIBUTE_SET_NULL );
-        //TODO: verify with Shawn we don't need to set entity session here...        
+        //TODO: setup ARBAC permissions
+        //setEntitySession( CLS_NM, methodName, permAttributeSet );    
         return permP.add( permAttributeSet );
     }          
     

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/1eebcfc6/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
index 8012f0b..47415de 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
@@ -27,8 +27,6 @@ import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.directory.fortress.core.FinderException;
 import org.apache.directory.fortress.core.GlobalErrIds;
-import org.apache.directory.fortress.core.ReviewMgr;
-import org.apache.directory.fortress.core.ReviewMgrFactory;
 import org.apache.directory.fortress.core.SecurityException;
 import org.apache.directory.fortress.core.ValidationException;
 import org.apache.directory.fortress.core.model.AdminRole;
@@ -378,42 +376,44 @@ final class PermP
         return pDao.createOperation( entity );
     }
     
-    //TODO: add documentation
+    /**
+     * Adds a new Permission Attribute Set entity to the directory. 
+     * 
+     * @param entity Permission Attribute Set entity contains data targeted for insertion
+     * @return Permission Attribute Set entity copy of input + additional attributes that were added
+     * @throws SecurityException in the event of data validation or DAO system error.
+     */
     PermissionAttributeSet add( PermissionAttributeSet entity ) throws SecurityException
     {
-        //TODO: add validation
+        validate( entity );
         return pDao.createPermissionAttributeSet( entity );
     }
     
-    //TODO: add documentation
-    PermissionAttribute add( PermissionAttribute entity, String attributeSetName ) throws SecurityException
+    /**
+     * Adds a new Permission Attribute entity to an existing Permission Attribute Set
+     * 
+     * @param entity Permissino Attribute entity contains data targeted for insertion
+     * @param paSetName The name of the Permission Attribute Set this entity is being added to
+     * @return Permission Attribute entity copy of input + additional attributes that were added
+     * @throws SecurityException in the event of data validation or DAO system error. 
+     */
+    PermissionAttribute add( PermissionAttribute entity, String paSetName ) throws SecurityException
     {
-        //TODO: add validation
-        return pDao.createPermissionAttribute( entity, attributeSetName );
+        validate( entity );
+        return pDao.createPermissionAttribute( entity, paSetName );
     }
 
-    //TODO: add documentation
-    void delete( PermissionAttribute entity, String attributeSetName ) throws SecurityException
-    {
-        //TODO: add validation
-    	
-    	//want to remove by attribute name, not full ftPA value, so find existing and delete that
-    	PermissionAttribute existingPa = null;
-    	
-    	ReviewMgr reviewMgr = ReviewMgrFactory.createInstance();
-    	PermissionAttributeSet paSet = reviewMgr.readPermAttributeSet(new PermissionAttributeSet(attributeSetName));
-    	for(PermissionAttribute pa : paSet.getAttributes()){
-    		if(pa.getAttributeName().equals(entity.getAttributeName())){
-    			existingPa = pa;
-    			break;
-    		}
-    	}
-    	
-    	if(existingPa == null){
-    		throw new ValidationException(GlobalErrIds.PERM_ATTRIBUTE_NOT_FOUND, "Could not find permission attribute with name [" + entity.getAttributeName() + "] on attribute set [" + attributeSetName + "]");
-    	}
-    	
-        pDao.deletePermissionAttribute( existingPa, attributeSetName );
+    /**
+     * Deletes a Permission Attribute entity from an existing Permission Attribute Set
+     * 
+     * @param entity
+     * @param attributeSetName
+     * @throws SecurityException
+     */     
+    void delete( PermissionAttribute entity, String paSetName ) throws SecurityException
+    {
+        validate( entity );            	
+        pDao.deletePermissionAttribute( entity, paSetName );
     }
 
     /**
@@ -716,4 +716,38 @@ final class PermP
             }
         }
     }
+    
+    private void validate( PermissionAttributeSet paSet )
+            throws SecurityException
+    {
+        if( StringUtils.isNotEmpty(paSet.getType()) ){
+            VUtil.description( paSet.getType() );
+        }
+        if( StringUtils.isNotEmpty(paSet.getDescription()) ){
+            VUtil.description( paSet.getDescription() );
+        }
+    }
+    
+    private void validate( PermissionAttribute pa )
+            throws SecurityException
+    {
+        if( StringUtils.isNotEmpty(pa.getAttributeName()) ){
+            VUtil.description( pa.getAttributeName() );
+        }
+        if( StringUtils.isNotEmpty(pa.getDataType()) ){
+            VUtil.description( pa.getDataType() );
+        }
+        if( StringUtils.isNotEmpty(pa.getDefaultOperator()) ){
+            VUtil.description( pa.getDefaultOperator() );
+        }
+        if( StringUtils.isNotEmpty(pa.getDefaultStrategy()) ){
+            VUtil.description( pa.getDefaultStrategy() );
+        }
+        if( StringUtils.isNotEmpty(pa.getDefaultValue()) ){
+            VUtil.description( pa.getDefaultValue() );
+        }
+        if( StringUtils.isNotEmpty(pa.getDescription()) ){
+            VUtil.description( pa.getDescription() );
+        }        
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/1eebcfc6/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
index 5a3ae9d..7699943 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/AdminMgrImplTest.java
@@ -23,10 +23,6 @@ package org.apache.directory.fortress.core.impl;
 import java.util.List;
 import java.util.Set;
 
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
 import org.apache.directory.fortress.core.AdminMgr;
 import org.apache.directory.fortress.core.AdminMgrFactory;
 import org.apache.directory.fortress.core.GlobalErrIds;
@@ -47,6 +43,10 @@ import org.apache.directory.fortress.core.util.LogUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
 
 /**
  * AdminMgrImpl Tester.
@@ -1822,6 +1822,8 @@ public class AdminMgrImplTest extends TestCase
     {
     	LogUtil.logIt(msg);
     	PermissionAttributeSet paSet = new PermissionAttributeSet(name);  
+    	paSet.setType(PermTestData.TPA_SET_TYPE);
+    	
     	try
     	{
     		paSet.setAttributes(permAttr);

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/1eebcfc6/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java b/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
index f3cd4e2..8624b55 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/PermTestData.java
@@ -2772,6 +2772,7 @@ public class PermTestData extends TestCase
      */
     public static final String TPA_SET_1_NAME = "TPASET1";
     public static final String TPA_SET_2_NAME = "TPASET2";
+    public static final String TPA_SET_TYPE = "paSetType";
     public static final String TPA_SET_NOT_EXIST_NAME = "NOTEXISTTPASETNAME";
     
     public static final String[][] PA_TPSASET1 =

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/1eebcfc6/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
index 7ecd7b1..0dd3453 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
@@ -25,10 +25,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
 import org.apache.directory.fortress.core.GlobalErrIds;
 import org.apache.directory.fortress.core.ReviewMgr;
 import org.apache.directory.fortress.core.ReviewMgrFactory;
@@ -47,6 +43,10 @@ import org.apache.directory.fortress.core.util.LogUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
 
 /**
  * ReviewMgrImpl Tester.
@@ -178,6 +178,7 @@ public class ReviewMgrImplTest extends TestCase
             PermissionAttributeSet entity = reviewMgr.readPermAttributeSet(new PermissionAttributeSet(name));
             assertNotNull(entity);
             assertEquals(name, entity.getName());
+            assertEquals(PermTestData.TPA_SET_TYPE, entity.getType());
             
             for(PermissionAttribute pa : permAttributes){
             	assertTrue(entity.getAttributes().contains(pa));


[42/43] directory-fortress-core git commit: Merge branch 'master' into feature/addPermAttrAndUserRoleConstraints

Posted by cp...@apache.org.
Merge branch 'master' into feature/addPermAttrAndUserRoleConstraints


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/84e82718
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/84e82718
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/84e82718

Branch: refs/heads/master
Commit: 84e827180ada97ad1308ef9c3b82b203b7153893
Parents: 6fa1c9d cb34ef2
Author: clp207 <cl...@psu.edu>
Authored: Thu Oct 6 08:32:55 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Thu Oct 6 08:32:55 2016 -0400

----------------------------------------------------------------------
 README-QUICKSTART-APACHEDS.md                   |   2 +-
 README-QUICKSTART-SLAPD.md                      |   2 +-
 README-TEN-MINUTE-GUIDE.md                      |   2 +-
 README.md                                       |   2 +-
 .../directory/fortress/core/AccessMgr.java      |  77 ++++-
 .../directory/fortress/core/GlobalErrIds.java   |   7 +-
 .../directory/fortress/core/GroupMgr.java       |  20 ++
 .../fortress/core/impl/AccessMgrImpl.java       |  80 ++++--
 .../fortress/core/impl/AdminMgrImpl.java        |  14 +-
 .../fortress/core/impl/DSDChecker.java          |  21 +-
 .../directory/fortress/core/impl/GroupDAO.java  |  59 +++-
 .../fortress/core/impl/GroupMgrImpl.java        |  38 +++
 .../directory/fortress/core/impl/GroupP.java    | 135 ++++++++-
 .../directory/fortress/core/impl/PermDAO.java   |  33 ++-
 .../directory/fortress/core/impl/SDUtil.java    |  66 +++--
 .../directory/fortress/core/impl/UserP.java     |   1 +
 .../directory/fortress/core/model/Group.java    |  34 ++-
 .../directory/fortress/core/model/Session.java  | 136 ++++++++-
 .../directory/fortress/core/model/UserRole.java |  35 ++-
 .../fortress/core/rest/AccessMgrRestImpl.java   |  29 +-
 .../directory/fortress/core/rest/HttpIds.java   |   9 +
 .../directory/fortress/core/util/VUtil.java     | 180 ++++++++++--
 .../fortress/core/AccessMgrConsole.java         |  14 +-
 .../fortress/core/impl/FortressJUnitTest.java   |  12 +
 .../fortress/core/impl/GroupMgrImplTest.java    | 279 +++++++++++++++++++
 .../fortress/core/impl/GroupTestData.java       |  94 +++++++
 26 files changed, 1241 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/84e82718/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
----------------------------------------------------------------------
diff --cc src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
index 4a0fbfa,1fb4ef2..64b77cd
--- a/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
@@@ -1704,5 -1655,11 +1704,10 @@@ public final class GlobalErrId
       * The supplied group protocol name failed length check.
       */
      public static final int GROUP_PROTOCOL_INVLD = 10313;
-     
+ 
+     /**
+      * The supplied group type is invalid for operation
+      */
+     public static final int GROUP_TYPE_INVLD = 10314;
+ 
 -
  }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/84e82718/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
----------------------------------------------------------------------
diff --cc src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
index f5fa29c,895969a..7852255
--- a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
@@@ -29,20 -29,8 +29,23 @@@ import org.apache.directory.fortress.co
  import org.apache.directory.fortress.core.GlobalErrIds;
  import org.apache.directory.fortress.core.GlobalIds;
  import org.apache.directory.fortress.core.SecurityException;
 -import org.apache.directory.fortress.core.model.*;
++
 +import org.apache.directory.fortress.core.model.AdminRole;
 +import org.apache.directory.fortress.core.model.ConstraintUtil;
++import org.apache.directory.fortress.core.model.Group;
 +import org.apache.directory.fortress.core.model.Hier;
 +import org.apache.directory.fortress.core.model.PermObj;
 +import org.apache.directory.fortress.core.model.Permission;
 +import org.apache.directory.fortress.core.model.PermissionAttribute;
 +import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 +import org.apache.directory.fortress.core.model.Relationship;
 +import org.apache.directory.fortress.core.model.Role;
 +import org.apache.directory.fortress.core.model.RoleConstraint;
 +import org.apache.directory.fortress.core.model.SDSet;
 +import org.apache.directory.fortress.core.model.User;
 +import org.apache.directory.fortress.core.model.UserRole;
  import org.apache.directory.fortress.core.util.VUtil;
++
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/84e82718/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/84e82718/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
----------------------------------------------------------------------
diff --cc src/main/java/org/apache/directory/fortress/core/impl/UserP.java
index 534f3ca,34a4999..32bb665
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
@@@ -32,20 -32,8 +32,21 @@@ import org.apache.directory.fortress.co
  import org.apache.directory.fortress.core.PasswordException;
  import org.apache.directory.fortress.core.SecurityException;
  import org.apache.directory.fortress.core.ValidationException;
 -import org.apache.directory.fortress.core.model.*;
 +import org.apache.directory.fortress.core.model.AdminRole;
 +import org.apache.directory.fortress.core.model.Administrator;
 +import org.apache.directory.fortress.core.model.ConstraintUtil;
 +import org.apache.directory.fortress.core.model.ObjectFactory;
 +import org.apache.directory.fortress.core.model.OrgUnit;
 +import org.apache.directory.fortress.core.model.PwPolicy;
 +import org.apache.directory.fortress.core.model.Role;
 +import org.apache.directory.fortress.core.model.RoleConstraint;
 +import org.apache.directory.fortress.core.model.RoleConstraintType;
 +import org.apache.directory.fortress.core.model.Session;
 +import org.apache.directory.fortress.core.model.User;
 +import org.apache.directory.fortress.core.model.UserAdminRole;
 +import org.apache.directory.fortress.core.model.UserRole;
  import org.apache.directory.fortress.core.util.VUtil;
++
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/84e82718/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
----------------------------------------------------------------------
diff --cc src/main/java/org/apache/directory/fortress/core/model/UserRole.java
index f1034d8,44bc3d1..b3e3960
--- a/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
@@@ -74,8 -72,8 +74,8 @@@ import org.apache.directory.fortress.co
   */
  @XmlRootElement( name = "fortUserRole" )
  @XmlAccessorType( XmlAccessType.FIELD )
- @XmlType( name = "userRole", propOrder = {"name", "userId", "parents", "beginDate", "beginLockDate", "beginTime",
-     "dayMask", "endDate", "endLockDate", "endTime", "timeout", "roleConstraints"} )
+ @XmlType( name = "userRole", propOrder = {"name", "userId", "isGroupRole", "parents", "beginDate", "beginLockDate",
 -        "beginTime", "dayMask", "endDate", "endLockDate", "endTime", "timeout"} )
++        "beginTime", "dayMask", "endDate", "endLockDate", "endTime", "timeout", "roleConstraints"} )
  @XmlSeeAlso( {UserAdminRole.class} )
  public class UserRole extends FortEntity implements Serializable, Constraint
  {

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/84e82718/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
----------------------------------------------------------------------
diff --cc src/main/java/org/apache/directory/fortress/core/util/VUtil.java
index a6c684a,622cf9d..9c76b78
--- a/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
+++ b/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
@@@ -34,21 -34,12 +34,23 @@@ import org.apache.commons.lang.StringUt
  import org.apache.directory.fortress.core.CfgException;
  import org.apache.directory.fortress.core.GlobalErrIds;
  import org.apache.directory.fortress.core.GlobalIds;
 +import org.apache.directory.fortress.core.ReviewMgr;
 +import org.apache.directory.fortress.core.ReviewMgrFactory;
  import org.apache.directory.fortress.core.SecurityException;
  import org.apache.directory.fortress.core.ValidationException;
 -import org.apache.directory.fortress.core.model.*;
 +import org.apache.directory.fortress.core.model.Constraint;
 +import org.apache.directory.fortress.core.model.ConstraintValidator;
++import org.apache.directory.fortress.core.model.Group;
 +import org.apache.directory.fortress.core.model.ObjectFactory;
 +import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 +import org.apache.directory.fortress.core.model.PropUtil;
 +import org.apache.directory.fortress.core.model.Session;
 +import org.apache.directory.fortress.core.model.UserRole;
 +import org.apache.directory.fortress.core.model.Warning;
  import org.apache.directory.fortress.core.util.time.TUtil;
  import org.apache.directory.fortress.core.util.time.Time;
  import org.apache.directory.fortress.core.util.time.Validator;
++
  import org.slf4j.LoggerFactory;
  
  
@@@ -678,24 -680,120 +691,141 @@@ public final class VUtil implements Con
          }
          return validators;
      }
 +    
 +    /**
 +     * Checks the Permission Attribute Set exists
 +     * 
 +     * @param value Name of the Permission Attribute Set
 +     * @throws ValidationException
 +     */
 +    public static void permAttrSetName( String value ) throws ValidationException
 +    {    	    	
 +    	try{
 +    		ReviewMgr reviewMgr = ReviewMgrFactory.createInstance();      		
 +    		PermissionAttributeSet paSet = reviewMgr.readPermAttributeSet(new PermissionAttributeSet(value));
 +    	}
 +        catch(Exception e){
 +            String error = "permissionAttributeSet - not found with name [" + value + "]";
 +            throw new ValidationException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, error );
 +        }
 +
 +        RegExUtil.getInstance().safeText( value );
 +    }
+ 
+     /**
+      * A class to wrap the group into constrainted interface to pass to DSD validator.
+      * Group itself doesn't have temporal contraints.
+      */
+     private class ConstraintedGroup implements Constraint {
+         private Group group;
+ 
+         public ConstraintedGroup(Group group) {
+             this.group = group;
+         }
+ 
+         public Group getGroup() {
+             return group;
+         }
+ 
+         @Override
+         public boolean isTemporalSet() {
+             return false;
+         }
+ 
+         @Override
+         public void setTimeout(Integer timeout) {
+ 
+         }
+ 
+         @Override
+         public void setBeginTime(String beginTime) {
+ 
+         }
+ 
+         @Override
+         public void setEndTime(String endTime) {
+ 
+         }
+ 
+         @Override
+         public void setBeginDate(String beginDate) {
+ 
+         }
+ 
+         @Override
+         public void setEndDate(String endDate) {
+ 
+         }
+ 
+         @Override
+         public void setDayMask(String dayMask) {
+ 
+         }
+ 
+         @Override
+         public void setBeginLockDate(String beginLockDate) {
+ 
+         }
+ 
+         @Override
+         public void setEndLockDate(String endLockDate) {
+ 
+         }
+ 
+         @Override
+         public void setName(String name) {
+ 
+         }
+ 
+         @Override
+         public String getRawData() {
+             return null;
+         }
+ 
+         @Override
+         public Integer getTimeout() {
+             return null;
+         }
+ 
+         @Override
+         public String getBeginTime() {
+             return null;
+         }
+ 
+         @Override
+         public String getEndTime() {
+             return null;
+         }
+ 
+         @Override
+         public String getBeginDate() {
+             return null;
+         }
+ 
+         @Override
+         public String getEndDate() {
+             return null;
+         }
+ 
+         @Override
+         public String getBeginLockDate() {
+             return null;
+         }
+ 
+         @Override
+         public String getEndLockDate() {
+             return null;
+         }
+ 
+         @Override
+         public String getDayMask() {
+             return null;
+         }
+ 
+         @Override
+         public String getName() {
+             return group.getName();
+         }
+     }
++    
  }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/84e82718/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
----------------------------------------------------------------------
diff --cc src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
index ae83b67,b7e6166..bad85dd
--- a/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
@@@ -201,12 -205,13 +206,19 @@@ public class FortressJUnitTest extends 
          suite.addTest( new AdminMgrImplTest( "testGrantPermissionRole" ) );
          suite.addTest( new AdminMgrImplTest( "testGrantPermissionUser" ) );
  
 +        suite.addTest( new AdminMgrImplTest( "testAddPermissionAttributeSet" ) );
 +        suite.addTest( new AdminMgrImplTest( "testAddPermissionAttributeToSet" ) );
 +        suite.addTest( new AdminMgrImplTest( "testAddPASetToPermission" ) );
 +        
 +        suite.addTest( new AdminMgrImplTest( "testAddUserRoleConstraint" ) );
 +        
+         // GroupMgr APIs
+         suite.addTest( new GroupMgrImplTest( "testAddGroup" ) );
+         suite.addTest( new GroupMgrImplTest( "testAssignGroupUserMember" ) );
+         suite.addTest( new GroupMgrImplTest( "testAssignGroupRoleMember" ) );
+         suite.addTest( new GroupMgrImplTest( "testGroupRoles" ) );
+         suite.addTest( new GroupMgrImplTest( "testRoleGroups" ) );
+ 
          /***********************************************************/
          /* 3. Interrogation                                        */
          /***********************************************************/


[41/43] directory-fortress-core git commit: Merge branch 'master' into feature/addPermAttrAndUserRoleConstraints

Posted by cp...@apache.org.
Merge branch 'master' into feature/addPermAttrAndUserRoleConstraints


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/6fa1c9df
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/6fa1c9df
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/6fa1c9df

Branch: refs/heads/master
Commit: 6fa1c9dfb4e0dd986beeec41028ee966381299a8
Parents: 0a6a44d 9271edf
Author: clp207 <cl...@psu.edu>
Authored: Fri Sep 23 07:29:57 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Fri Sep 23 07:29:57 2016 -0400

----------------------------------------------------------------------
 README-QUICKSTART-APACHEDS.md                   |  13 +-
 README-QUICKSTART-SLAPD.md                      |  13 +-
 ldap/schema/apacheds-fortress.ldif              | 168 +++++++++----------
 ldap/schema/fortress.schema                     |  12 +-
 .../fortress/core/impl/AdminMgrImpl.java        |   4 +-
 .../fortress/core/impl/AdminRoleP.java          |   4 +-
 .../fortress/core/impl/Manageable.java          |  10 +-
 7 files changed, 120 insertions(+), 104 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6fa1c9df/ldap/schema/fortress.schema
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6fa1c9df/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
----------------------------------------------------------------------


[02/43] directory-fortress-core git commit: delete pa from set now deletes by name, not full value

Posted by cp...@apache.org.
delete pa from set now deletes by name, not full value


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/b5886dac
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/b5886dac
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/b5886dac

Branch: refs/heads/master
Commit: b5886dac7cf03d86debc0e2d8c668247a05f8795
Parents: 9d11f77
Author: clp207 <cl...@psu.edu>
Authored: Mon Feb 1 10:35:31 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/GlobalErrIds.java   |  5 +++++
 .../directory/fortress/core/impl/PermP.java     | 21 +++++++++++++++++++-
 2 files changed, 25 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b5886dac/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 cb56ac5..7704d89 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
@@ -673,6 +673,11 @@ public final class GlobalErrIds
      * The supplied Permission Attribute Set name is required but was passed as null.
      */
     public static final int PERM_ATTRIBUTE_SET_NM_NULL = 3036;
+    /**
+     * The supplied Permission Attribute was not found
+     */
+    public static final int PERM_ATTRIBUTE_NOT_FOUND = 3037;
+    
     
     /**
      * 4000's - Password Policy Entity

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b5886dac/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
index 3e5a7c7..c72c38b 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
@@ -27,6 +27,8 @@ import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.directory.fortress.core.FinderException;
 import org.apache.directory.fortress.core.GlobalErrIds;
+import org.apache.directory.fortress.core.ReviewMgr;
+import org.apache.directory.fortress.core.ReviewMgrFactory;
 import org.apache.directory.fortress.core.SecurityException;
 import org.apache.directory.fortress.core.ValidationException;
 import org.apache.directory.fortress.core.model.AdminRole;
@@ -392,7 +394,24 @@ final class PermP
     void delete( PermissionAttribute entity, String attributeSetName ) throws SecurityException
     {
         //TODO: add validation
-        pDao.deletePermissionAttribute( entity, attributeSetName );
+    	
+    	//want to remove by attribute name, not full ftPA value, so find existing and delete that
+    	PermissionAttribute existingPa = null;
+    	
+    	ReviewMgr reviewMgr = ReviewMgrFactory.createInstance();
+    	PermissionAttributeSet paSet = reviewMgr.readPermAttributeSet(new PermissionAttributeSet(attributeSetName));
+    	for(PermissionAttribute pa : paSet.getAttributes()){
+    		if(pa.getAttributeName().equals(entity.getAttributeName())){
+    			existingPa = pa;
+    			break;
+    		}
+    	}
+    	
+    	if(existingPa == null){
+    		throw new ValidationException(GlobalErrIds.PERM_ATTRIBUTE_NOT_FOUND, "Could not find permission attribute with name [" + entity.getAttributeName() + "] on attribute set [" + attributeSetName + "]");
+    	}
+    	
+        pDao.deletePermissionAttribute( existingPa, attributeSetName );
     }
 
     /**


[12/43] directory-fortress-core git commit: added based role constraint set to retrieved user roles

Posted by cp...@apache.org.
added based role constraint set to retrieved user roles


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/2f3045ba
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/2f3045ba
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/2f3045ba

Branch: refs/heads/master
Commit: 2f3045ba71069f14ea95bb0dc7b0bd76733dc48d
Parents: 51331f8
Author: clp207 <cl...@psu.edu>
Authored: Tue Jan 26 16:16:08 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/AdminMgr.java       |   4 +
 .../fortress/core/impl/AdminMgrImpl.java        |  16 +++
 .../directory/fortress/core/impl/UserDAO.java   |  91 +++++++++++----
 .../directory/fortress/core/impl/UserP.java     |   9 ++
 .../fortress/core/model/RoleConstraint.java     |  48 ++++++++
 .../fortress/core/model/RoleConstraintType.java |   6 +
 .../directory/fortress/core/model/UserRole.java | 115 +++++++++++--------
 .../fortress/core/rest/AdminMgrRestImpl.java    |   9 ++
 8 files changed, 229 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/2f3045ba/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
index c81f1c6..4c49e5f 100755
--- a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
@@ -24,6 +24,7 @@ import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
 import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.Role;
+import org.apache.directory.fortress.core.model.RoleConstraint;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserRole;
@@ -448,6 +449,9 @@ public interface AdminMgr extends Manageable
     void assignUser( UserRole uRole )
         throws SecurityException;
 
+    //TODO: add documentation
+    RoleConstraint addRoleConstraint( UserRole uRole, RoleConstraint roleConstraint )
+   	  throws SecurityException;
 
     /**
      * This command deletes the assignment of the User from the Role entities. The command is

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/2f3045ba/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
index 66ef1fa..166558a 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
@@ -37,6 +37,7 @@ import org.apache.directory.fortress.core.model.Permission;
 import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.Relationship;
 import org.apache.directory.fortress.core.model.Role;
+import org.apache.directory.fortress.core.model.RoleConstraint;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserRole;
@@ -332,6 +333,21 @@ public final class AdminMgrImpl extends Manageable implements AdminMgr, Serializ
         roleP.assign( role, dn );
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public RoleConstraint addRoleConstraint( UserRole uRole, RoleConstraint roleConstraint )
+    	   	throws SecurityException
+    {
+        //TODO: need new arbac perm and/or add security check
+    	 	String methodName = "assignUser";
+        assertContext( CLS_NM, methodName, uRole, GlobalErrIds.URLE_NULL );
+        
+        userP.assign( uRole, roleConstraint );
+        
+        return roleConstraint;
+    }
 
     /**
      * {@inheritDoc}

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/2f3045ba/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
index c5b7bc3..6ffb8e0 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
@@ -21,8 +21,10 @@ package org.apache.directory.fortress.core.impl;
 
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.collections.CollectionUtils;
@@ -49,32 +51,33 @@ import org.apache.directory.api.ldap.model.exception.LdapNoSuchObjectException;
 import org.apache.directory.api.ldap.model.message.BindResponse;
 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
 import org.apache.directory.api.ldap.model.message.SearchScope;
+import org.apache.directory.fortress.core.CreateException;
+import org.apache.directory.fortress.core.FinderException;
+import org.apache.directory.fortress.core.GlobalErrIds;
+import org.apache.directory.fortress.core.GlobalIds;
+import org.apache.directory.fortress.core.PasswordException;
+import org.apache.directory.fortress.core.RemoveException;
+import org.apache.directory.fortress.core.SecurityException;
+import org.apache.directory.fortress.core.UpdateException;
+import org.apache.directory.fortress.core.ldap.ApacheDsDataProvider;
 import org.apache.directory.fortress.core.model.Address;
 import org.apache.directory.fortress.core.model.AdminRole;
 import org.apache.directory.fortress.core.model.ConstraintUtil;
+import org.apache.directory.fortress.core.model.ObjectFactory;
 import org.apache.directory.fortress.core.model.OrgUnit;
+import org.apache.directory.fortress.core.model.PropUtil;
 import org.apache.directory.fortress.core.model.PwMessage;
 import org.apache.directory.fortress.core.model.Role;
+import org.apache.directory.fortress.core.model.RoleConstraint;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserAdminRole;
 import org.apache.directory.fortress.core.model.UserRole;
 import org.apache.directory.fortress.core.model.Warning;
-import org.apache.directory.fortress.core.model.PropUtil;
+import org.apache.directory.fortress.core.util.Config;
 import org.apache.directory.ldap.client.api.LdapConnection;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.directory.fortress.core.CreateException;
-import org.apache.directory.fortress.core.FinderException;
-import org.apache.directory.fortress.core.GlobalErrIds;
-import org.apache.directory.fortress.core.GlobalIds;
-import org.apache.directory.fortress.core.model.ObjectFactory;
-import org.apache.directory.fortress.core.PasswordException;
-import org.apache.directory.fortress.core.RemoveException;
-import org.apache.directory.fortress.core.SecurityException;
-import org.apache.directory.fortress.core.UpdateException;
-import org.apache.directory.fortress.core.util.Config;
-import org.apache.directory.fortress.core.ldap.ApacheDsDataProvider;
 
 
 /**
@@ -1821,7 +1824,39 @@ final class UserDAO extends ApacheDsDataProvider
         return userDn;
     }
 
+    void assign( UserRole uRole, RoleConstraint roleConstraint ) throws UpdateException, FinderException
+    {
+    	LdapConnection ld = null;
+    	String szRoleConstraint = "";
+        String userDn = getDn( uRole.getUserId(), uRole.getContextId() );
 
+        try
+        {
+            List<Modification> mods = new ArrayList<Modification>();
+            szRoleConstraint = roleConstraint.gerRawData(uRole);
+
+            mods.add( new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, GlobalIds.USER_ROLE_DATA,
+            		szRoleConstraint ) );
+
+            ld = getAdminConnection();
+            modify( ld, userDn, mods, uRole );
+            
+            //TODO: make sure not adding same RC twice
+        }
+        catch ( LdapException e )
+        {
+            String warning = "assign userId [" + uRole.getUserId() + "] role constraint [" + szRoleConstraint + "] ";
+
+            warning += "caught LDAPException=" + e.getMessage();
+            throw new UpdateException( GlobalErrIds.URLE_ASSIGN_FAILED, warning, e );
+        }
+        finally
+        {
+            closeAdminConnection( ld );
+        }
+    }
+    
+    
     /**
      * @param uRole
      * @return
@@ -2491,24 +2526,34 @@ final class UserDAO extends ApacheDsDataProvider
      */
     private List<UserRole> unloadUserRoles( Entry entry, String userId, String contextId )
     {
-        List<UserRole> uRoles = null;
+    	Map<String, UserRole> uRoles = new HashMap<String, UserRole>();    	
         List<String> roles = getAttributes( entry, GlobalIds.USER_ROLE_DATA );
 
         if ( roles != null )
         {
             long sequence = 0;
-            uRoles = new ArrayList<>();
 
             for ( String raw : roles )
             {
-                UserRole ure = new ObjectFactory().createUserRole();
-                ure.load( raw, contextId, new RoleUtil() );
-                ure.setUserId( userId );
-                ure.setSequenceId( sequence++ );
-                uRoles.add( ure );
-            }
-        }
-
-        return uRoles;
+            	//get role name
+            	String roleName = raw.substring(0, raw.indexOf( GlobalIds.DELIMITER ));
+            	
+            	//if already found, add to user role
+            	if(uRoles.containsKey(roleName)){
+            		UserRole ure = uRoles.get(roleName);
+            		ure.load( raw, contextId, new RoleUtil() );
+            	}
+            	//else create new
+            	else{            	
+	                UserRole ure = new ObjectFactory().createUserRole();
+	                ure.load( raw, contextId, new RoleUtil() );
+	                ure.setUserId( userId );
+	                ure.setSequenceId( sequence++ );
+	                uRoles.put(roleName, ure );
+            	}
+            }
+        }
+
+        return new ArrayList<UserRole>(uRoles.values());
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/2f3045ba/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserP.java b/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
index f5be195..979bcd4 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
@@ -39,6 +39,7 @@ import org.apache.directory.fortress.core.model.ObjectFactory;
 import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PwPolicy;
 import org.apache.directory.fortress.core.model.Role;
+import org.apache.directory.fortress.core.model.RoleConstraint;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
 import org.apache.directory.fortress.core.model.UserAdminRole;
@@ -634,6 +635,14 @@ final class UserP
         // "assign" custom Fortress role data, i.e. temporal constraints, onto the user node:
         return uDao.assign( uRole );
     }
+    
+    //TODO: add documentation
+    void assign( UserRole uRole, RoleConstraint roleConstraint ) throws SecurityException
+    {
+    	//TODO: validate?
+    	
+    	uDao.assign( uRole, roleConstraint );
+    }
 
 
     /**

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/2f3045ba/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
new file mode 100644
index 0000000..86e55d6
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
@@ -0,0 +1,48 @@
+package org.apache.directory.fortress.core.model;
+
+import org.apache.directory.fortress.core.GlobalIds;
+
+public class RoleConstraint {
+
+	public static final String RC_TYPE_NAME = "type";
+	
+	private RoleConstraintType constraintType;
+	private String value;
+	
+	public RoleConstraint(){
+		
+	}
+	
+	public RoleConstraint(String value, RoleConstraintType constraintType){
+		this.constraintType = constraintType;
+		this.value = value;
+	}	
+	
+	public RoleConstraintType getConstraintType() {
+		return constraintType;
+	}
+	public void setConstraintType(RoleConstraintType constraintType) {
+		this.constraintType = constraintType;
+	}
+	public String getValue() {
+		return value;
+	}
+	public void setValue(String value) {
+		this.value = value;
+	}
+	
+	//BANK_USER$seq$0type$filter$AccountId=12345&WithdrawLimit=500
+	public String gerRawData(UserRole uRole){
+        StringBuilder sb = new StringBuilder();
+        
+        sb.append(uRole.getName());        
+        sb.append( GlobalIds.DELIMITER );
+        sb.append(RC_TYPE_NAME);
+        sb.append( GlobalIds.DELIMITER );
+        sb.append(constraintType);
+        sb.append( GlobalIds.DELIMITER );
+        sb.append(value);
+        
+        return sb.toString();
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/2f3045ba/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java
new file mode 100644
index 0000000..6eb4b57
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java
@@ -0,0 +1,6 @@
+package org.apache.directory.fortress.core.model;
+
+public enum RoleConstraintType {
+	FILTER,
+	OTHER
+}

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/2f3045ba/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/UserRole.java b/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
index 86d277d..b5eccd4 100755
--- a/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
@@ -21,6 +21,7 @@ package org.apache.directory.fortress.core.model;
 
 
 import java.io.Serializable;
+import java.util.HashSet;
 import java.util.Set;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -73,7 +74,7 @@ import org.apache.directory.fortress.core.GlobalIds;
 @XmlRootElement( name = "fortUserRole" )
 @XmlAccessorType( XmlAccessType.FIELD )
 @XmlType( name = "userRole", propOrder = {"name", "userId", "parents", "beginDate", "beginLockDate", "beginTime",
-    "dayMask", "endDate", "endLockDate", "endTime", "timeout"} )
+    "dayMask", "endDate", "endLockDate", "endTime", "timeout", "roleConstraints"} )
 @XmlSeeAlso( {UserAdminRole.class} )
 public class UserRole extends FortEntity implements Serializable, Constraint
 {
@@ -91,7 +92,8 @@ public class UserRole extends FortEntity implements Serializable, Constraint
     private String dayMask;
     @XmlElement( nillable = true )
     private Set<String> parents;
-
+    @XmlElement( nillable = true )
+    private Set<RoleConstraint> roleConstraints;
 
     /**
      * Default constructor is used by internal Fortress classes.
@@ -153,50 +155,58 @@ public class UserRole extends FortEntity implements Serializable, Constraint
         if ( ( szRawData != null ) && ( szRawData.length() > 0 ) )
         {
             String[] tokens = StringUtils.splitPreserveAllTokens( szRawData, GlobalIds.DELIMITER );
-            for ( int i = 0; i < tokens.length; i++ )
-            {
-                if ( StringUtils.isNotEmpty( tokens[i] ) )
-                {
-                    switch ( i )
-                    {
-                        case 0:
-                            name = tokens[i];
-                            parents = parentUtil.getParentsCB( name.toUpperCase(), contextId );
-                            break;
-
-                        case 1:
-                            timeout = Integer.parseInt( tokens[i] );
-                            break;
-
-                        case 2:
-                            beginTime = tokens[i];
-                            break;
-
-                        case 3:
-                            endTime = tokens[i];
-                            break;
-
-                        case 4:
-                            beginDate = tokens[i];
-                            break;
-
-                        case 5:
-                            endDate = tokens[i];
-                            break;
-
-                        case 6:
-                            beginLockDate = tokens[i];
-                            break;
-
-                        case 7:
-                            endLockDate = tokens[i];
-                            break;
-
-                        case 8:
-                            dayMask = tokens[i];
-                            break;
-                    }
-                }
+            
+            //newer style constaint type
+            if(tokens[1].equals(RoleConstraint.RC_TYPE_NAME)){
+            	RoleConstraint rc = new RoleConstraint(tokens[3], RoleConstraintType.valueOf(tokens[2]));            	            	            	
+            	this.getRoleConstraints().add(rc);
+            }
+            else{
+	            for ( int i = 0; i < tokens.length; i++ )
+	            {
+	                if ( StringUtils.isNotEmpty( tokens[i] ) )
+	                {
+	                    switch ( i )
+	                    {
+	                        case 0:
+	                            name = tokens[i];
+	                            parents = parentUtil.getParentsCB( name.toUpperCase(), contextId );
+	                            break;
+	
+	                        case 1:
+	                            timeout = Integer.parseInt( tokens[i] );
+	                            break;
+	
+	                        case 2:
+	                            beginTime = tokens[i];
+	                            break;
+	
+	                        case 3:
+	                            endTime = tokens[i];
+	                            break;
+	
+	                        case 4:
+	                            beginDate = tokens[i];
+	                            break;
+	
+	                        case 5:
+	                            endDate = tokens[i];
+	                            break;
+	
+	                        case 6:
+	                            beginLockDate = tokens[i];
+	                            break;
+	
+	                        case 7:
+	                            endLockDate = tokens[i];
+	                            break;
+	
+	                        case 8:
+	                            dayMask = tokens[i];
+	                            break;
+	                    }
+	                }
+	            }
             }
         }
     }
@@ -632,4 +642,17 @@ public class UserRole extends FortEntity implements Serializable, Constraint
     {
         return name;
     }
+
+
+	public Set<RoleConstraint> getRoleConstraints() {
+		if(roleConstraints == null){
+			roleConstraints = new HashSet<RoleConstraint>();
+		}
+		return roleConstraints;
+	}
+
+
+	public void setRoleConstraints(Set<RoleConstraint> roleConstraints) {
+		this.roleConstraints = roleConstraints;
+	}
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/2f3045ba/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
index 94bb53e..b9b45e5 100644
--- a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
@@ -31,6 +31,7 @@ import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
 import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.Role;
+import org.apache.directory.fortress.core.model.RoleConstraint;
 import org.apache.directory.fortress.core.model.RoleRelationship;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
@@ -1248,4 +1249,12 @@ public final class AdminMgrRestImpl extends Manageable implements AdminMgr
 		// TODO Auto-generated method stub
 		return null;
 	}
+
+
+	@Override
+	public RoleConstraint addRoleConstraint(UserRole uRole,
+			RoleConstraint roleConstraint) throws SecurityException {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }
\ No newline at end of file


[19/43] directory-fortress-core git commit: changed rolePermissionAttribute to return sets isntead of permattribute

Posted by cp...@apache.org.
changed rolePermissionAttribute to return sets isntead of permattribute


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/d7fb80ba
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/d7fb80ba
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/d7fb80ba

Branch: refs/heads/master
Commit: d7fb80ba9ada60effd78ae0cc6858026ebf39cde
Parents: 8dd536c
Author: clp207 <cl...@psu.edu>
Authored: Fri Jan 29 11:29:50 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/AdminMgr.java       |  2 +-
 .../directory/fortress/core/GlobalErrIds.java   |  5 ++
 .../directory/fortress/core/ReviewMgr.java      |  4 +-
 .../directory/fortress/core/impl/PermDAO.java   | 65 ++++++++++++++++++++
 .../directory/fortress/core/impl/PermP.java     |  7 ++-
 .../fortress/core/impl/ReviewMgrImpl.java       | 19 ++++--
 .../directory/fortress/core/impl/UserDAO.java   |  6 +-
 .../fortress/core/model/ObjectFactory.java      |  7 +++
 .../core/model/PermissionAttributeSet.java      | 26 ++------
 .../fortress/core/rest/AdminMgrRestImpl.java    | 27 ++++++++
 .../fortress/core/rest/ReviewMgrRestImpl.java   |  4 +-
 11 files changed, 133 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d7fb80ba/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
index de3639a..93b6e18 100755
--- a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
@@ -453,7 +453,7 @@ public interface AdminMgr extends Manageable
     //TODO: add documentation
     RoleConstraint addRoleConstraint( UserRole uRole, RoleConstraint roleConstraint )
     	throws SecurityException;
-
+    
     //TODO: remove documentation
     void removeRoleConstraint( UserRole uRole, RoleConstraint roleConstraint )
     	throws SecurityException;

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d7fb80ba/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 a170274..cbda366 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
@@ -665,6 +665,11 @@ public final class GlobalErrIds
      * The supplied Permission Attribute could not be added to ldap server.
      */
     public static final int PERM_ATTR_ADD_FAILED = 3034;
+    /**
+     * The supplied Permission Attribute Set could not be found on ldap server.
+     */
+    public static final int PERM_ATTRIBUTE_SET_NOT_FOUND = 3035;
+    
     
     /**
      * 4000's - Password Policy Entity

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d7fb80ba/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java b/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
index 7205a86..0a4f15a 100755
--- a/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
@@ -26,7 +26,7 @@ import java.util.Set;
 import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
-import org.apache.directory.fortress.core.model.PermissionAttribute;
+import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
@@ -441,7 +441,7 @@ public interface ReviewMgr extends Manageable
         throws SecurityException;
 
     //TODO: add documentation
-    Set<PermissionAttribute> rolePermissionAttributes( Role role, boolean noInhertiance )
+    List<PermissionAttributeSet> rolePermissionAttributeSets( Role role, boolean noInhertiance )
     	throws SecurityException;
     
     /**

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d7fb80ba/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 a8f5373..8e58bf7 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
@@ -208,6 +208,11 @@ final class PermDAO extends ApacheDsDataProvider
             GlobalIds.PROPS
     };
     
+    private static final String[] PERMISION_ATTRIBUTE_SET_ATRS =
+        {
+            GlobalIds.FT_IID, GlobalIds.FT_PERMISSION_ATTRIBUTE, SchemaConstants.DESCRIPTION_AT, SchemaConstants.CN_AT
+    };
+    
     /**
      * @param entity
      * @return
@@ -973,6 +978,42 @@ final class PermDAO extends ApacheDsDataProvider
 
         return entity;
     }
+    
+    PermissionAttributeSet getPermAttributeSet( PermissionAttributeSet permAttributeSet )
+    		throws FinderException
+    {
+    	PermissionAttributeSet entity = null;
+    	LdapConnection ld = null;
+    	String dn = getPASetDn(permAttributeSet.getName(), permAttributeSet.getContextId());
+
+    	try
+    	{
+    		ld = getAdminConnection();
+    		Entry findEntry = read( ld, dn, PERMISION_ATTRIBUTE_SET_ATRS );
+    		if ( findEntry == null )
+    		{
+    			String warning = "getPermAttributeSet no entry found dn [" + dn + "]";
+    			throw new FinderException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, warning );
+    		}
+    		entity = unloadPASetLdapEntry( findEntry, 0 );
+    	}
+    	catch ( LdapNoSuchObjectException e )
+    	{
+    		String warning = "getPermAttributeSet COULD NOT FIND ENTRY for dn [" + dn + "]";
+    		throw new FinderException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, warning );
+    	}
+    	catch ( LdapException e )
+    	{
+    		String error = "getPermAttributeSet dn [" + dn + "] caught LdapException=" + e.getMessage();
+    		throw new FinderException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, error, e );
+    	}
+    	finally
+    	{
+    		closeAdminConnection( ld );
+    	}
+
+    	return entity;
+    }
 
 
     /**
@@ -1216,6 +1257,30 @@ final class PermDAO extends ApacheDsDataProvider
         return entity;
     }
     
+    private PermissionAttributeSet unloadPASetLdapEntry( Entry le, long sequence )
+    		throws LdapInvalidAttributeValueException
+    {
+    	PermissionAttributeSet entity = new ObjectFactory().createPermAttributeSet();
+    	entity.setSequenceId( sequence );
+    	entity.setName( getAttribute( le, SchemaConstants.CN_AT ) );
+    	entity.setDn( le.getDn().getName() );
+    	entity.setInternalId( getAttribute( le, GlobalIds.FT_IID ) );
+    	entity.setDescription( getAttribute( le, SchemaConstants.DESCRIPTION_AT ) );
+    	
+    	List<String> ftPAs = getAttributes( le, GlobalIds.FT_PERMISSION_ATTRIBUTE );
+    	
+    	if(ftPAs != null){
+    		for(String ftPARaw : ftPAs){
+    			PermissionAttribute permAttribute = new ObjectFactory().createPermissionAttribute();
+                permAttribute.load( ftPARaw );
+                
+                entity.getAttributes().add(permAttribute);
+    		}
+    	}
+    	
+    	return entity;
+    }
+    
     /**
      * @param permission
      * @return

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d7fb80ba/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
index 4284c47..871ffbf 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
@@ -336,7 +336,12 @@ final class PermP
     {
         return pDao.getPerm( permObj );
     }
-
+    
+    //TODO: add documentation
+    PermissionAttributeSet read( PermissionAttributeSet permAttributeSet ) throws SecurityException
+    {
+        return pDao.getPermAttributeSet( permAttributeSet );
+    }
 
     /**
      * Adds a new Permission Object entity to directory.  The Permission Object entity input will be validated to ensure that:

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d7fb80ba/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
index 463572c..8f4e6bb 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
@@ -21,8 +21,10 @@ package org.apache.directory.fortress.core.impl;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.collections.CollectionUtils;
@@ -32,7 +34,7 @@ import org.apache.directory.fortress.core.SecurityException;
 import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
-import org.apache.directory.fortress.core.model.PermissionAttribute;
+import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
@@ -409,18 +411,23 @@ public class ReviewMgrImpl extends Manageable implements ReviewMgr, Serializable
      * {@inheritDoc}
      */
     @Override
-    public Set<PermissionAttribute> rolePermissionAttributes( Role role, boolean noInhertiance )
+    public List<PermissionAttributeSet> rolePermissionAttributeSets( Role role, boolean noInhertiance )    
     	throws SecurityException
     {
-    	Set<PermissionAttribute> permAttributes = new HashSet<PermissionAttribute>();
+    	Map<String, PermissionAttributeSet> permAttributeSets = new HashMap<String, PermissionAttributeSet>();
     	
+    	//look through all permissions in the role
     	List<Permission> permissions = this.rolePermissions(role, noInhertiance);
     	for(Permission perm : permissions){
-    		//TODO: need to get ftPA entries now...
-    		//permAttributes.addAll(perm.getAttributes());
+    		if(perm.getPaSetName() != null && !perm.getPaSetName().isEmpty()){
+    			if(!permAttributeSets.containsKey(perm.getPaSetName())){
+    				PermissionAttributeSet permAttributeSet = permP.read(new PermissionAttributeSet(perm.getPaSetName()));
+    				permAttributeSets.put(perm.getPaSetName(), permAttributeSet);
+    			}
+    		}    		
     	}
     	
-    	return permAttributes;
+    	return new ArrayList<PermissionAttributeSet>(permAttributeSets.values());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d7fb80ba/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
index 47da5ac..871362f 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
@@ -1840,8 +1840,6 @@ final class UserDAO extends ApacheDsDataProvider
 
             ld = getAdminConnection();
             modify( ld, userDn, mods, uRole );
-            
-            //TODO: make sure not adding same RC twice
         }
         catch ( LdapException e )
         {
@@ -1871,9 +1869,7 @@ final class UserDAO extends ApacheDsDataProvider
             		szRoleConstraint ) );
 
             ld = getAdminConnection();
-            modify( ld, userDn, mods, uRole );
-            
-            //TODO: make sure not adding same RC twice
+            modify( ld, userDn, mods, uRole );            
         }
         catch ( LdapException e )
         {

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d7fb80ba/src/main/java/org/apache/directory/fortress/core/model/ObjectFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/ObjectFactory.java b/src/main/java/org/apache/directory/fortress/core/model/ObjectFactory.java
index f98f9d6..7b27a87 100755
--- a/src/main/java/org/apache/directory/fortress/core/model/ObjectFactory.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/ObjectFactory.java
@@ -443,6 +443,13 @@ public class ObjectFactory
         return new PermObj();
     }
 
+    /**
+     * Create an instance of {@link PermissionAttributeSet}
+     */
+    public PermissionAttributeSet createPermAttributeSet()
+    {
+        return new PermissionAttributeSet();
+    }
 
     /**
      * Create an instance of {@link Permission}

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d7fb80ba/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
index 070c278..3bf25d1 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
@@ -70,6 +70,10 @@ public class PermissionAttributeSet extends FortEntity {
     {
         this.attributes = attributes;
     }
+    
+    public void setInternalId(String internalId){
+    	this.internalId = internalId;
+    }
 
 	public String getInternalId() {
 		return internalId;
@@ -95,27 +99,5 @@ public class PermissionAttributeSet extends FortEntity {
 	public void setDn(String dn) {
 		this.dn = dn;
 	}
-    
-    /*
-    private Set<PermissionAttribute> unloadPermissionAttributes( Entry entry )
-    {
-        Set<PermissionAttribute> permAttributes = null;
-        List<String> ftPAs = getAttributes( entry, GlobalIds.FT_PERMISSION_ATTRIBUTE );
-
-        if ( ftPAs != null )
-        {
-        	permAttributes = new HashSet<PermissionAttribute>();
-
-            for ( String raw : ftPAs )
-            {
-                PermissionAttribute permAttribute = new ObjectFactory().createPermissionAttribute();
-                permAttribute.load( raw );
-                permAttributes.add( permAttribute );
-            }
-        }
-
-        return permAttributes;
-    }
-    */
 
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d7fb80ba/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
index eaa25be..9d50730 100644
--- a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
@@ -29,6 +29,7 @@ import org.apache.directory.fortress.core.model.FortResponse;
 import org.apache.directory.fortress.core.model.PermGrant;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.RoleConstraint;
@@ -1265,4 +1266,30 @@ public final class AdminMgrRestImpl extends Manageable implements AdminMgr
 		// TODO Auto-generated method stub
 		return null;
 	}
+
+
+	@Override
+	public void deletePermissionAttributeSet(
+			PermissionAttributeSet permAttributeSet) throws SecurityException {
+		// TODO Auto-generated method stub
+		
+	}
+
+
+	@Override
+	public PermissionAttribute addPermissionAttributeToSet(
+			PermissionAttribute permAttribute, String attributeSetName)
+			throws SecurityException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+
+	@Override
+	public void removePermissionAttributeFromSet(
+			PermissionAttribute permAttribute, String attributeSetName)
+			throws SecurityException {
+		// TODO Auto-generated method stub
+		
+	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d7fb80ba/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java b/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
index 77d8c01..32dfa0b 100755
--- a/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
@@ -33,7 +33,7 @@ import org.apache.directory.fortress.core.model.FortResponse;
 import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
-import org.apache.directory.fortress.core.model.PermissionAttribute;
+import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.SDSet;
 import org.apache.directory.fortress.core.model.User;
@@ -761,7 +761,7 @@ public class ReviewMgrRestImpl extends Manageable implements ReviewMgr
     }
 
 	@Override
-	public Set<PermissionAttribute> rolePermissionAttributes(Role role,
+	public List<PermissionAttributeSet> rolePermissionAttributeSets(Role role,
 			boolean noInhertiance) throws SecurityException {
 		// TODO Auto-generated method stub
 		return null;


[24/43] directory-fortress-core git commit: made role constraint serializable

Posted by cp...@apache.org.
 made role constraint serializable


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/d161f417
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/d161f417
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/d161f417

Branch: refs/heads/master
Commit: d161f41743f45d580368155dee3422eb249c9b5a
Parents: 0403277
Author: clp207 <cl...@psu.edu>
Authored: Tue Feb 9 11:41:49 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:23 2016 -0400

----------------------------------------------------------------------
 .../apache/directory/fortress/core/model/RoleConstraint.java   | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d161f417/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
index b893e4a..e343223 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
@@ -1,9 +1,13 @@
 package org.apache.directory.fortress.core.model;
 
+import java.io.Serializable;
+
 import org.apache.directory.fortress.core.GlobalIds;
 
-public class RoleConstraint {
+public class RoleConstraint implements Serializable {
 
+    private static final long serialVersionUID = 1L;
+	
 	public static final String RC_TYPE_NAME = "type";
 	
 	private RoleConstraintType constraintType;


[14/43] directory-fortress-core git commit: added missing delimiter

Posted by cp...@apache.org.
added missing delimiter


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/2c696793
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/2c696793
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/2c696793

Branch: refs/heads/master
Commit: 2c6967930c859a7ba22ba96477f12e0762f22e0f
Parents: e50cd6e
Author: clp207 <cl...@psu.edu>
Authored: Mon Jan 25 08:19:04 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 ldap/schema/fortress.schema | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/2c696793/ldap/schema/fortress.schema
----------------------------------------------------------------------
diff --git a/ldap/schema/fortress.schema b/ldap/schema/fortress.schema
index ca7a20a..7775007 100644
--- a/ldap/schema/fortress.schema
+++ b/ldap/schema/fortress.schema
@@ -330,7 +330,7 @@ objectclass    ( 1.3.6.1.4.1.38088.2.3
         ftObjId $
         ftRoles $
         ftUsers $
-        ftType
+        ftType $
         ftPA
         )
     )


[30/43] directory-fortress-core git commit: fixing issues from merge

Posted by cp...@apache.org.
fixing issues from merge


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/7a8d7852
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/7a8d7852
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/7a8d7852

Branch: refs/heads/master
Commit: 7a8d78526659c80737e4b721c20d45d0671e25f5
Parents: 6e9a7dd
Author: clp207 <cl...@psu.edu>
Authored: Thu May 5 12:56:09 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Thu May 5 12:56:09 2016 -0400

----------------------------------------------------------------------
 .../apache/directory/fortress/core/impl/PermDAO.java   | 10 ----------
 .../apache/directory/fortress/core/impl/UserDAO.java   |  2 +-
 .../directory/fortress/core/model/RoleConstraint.java  | 13 +++++++------
 .../org/apache/directory/fortress/core/util/VUtil.java |  2 +-
 .../fortress/core/impl/FortressJUnitTest.java          |  4 ----
 .../fortress/core/impl/ReviewMgrImplTest.java          |  2 +-
 6 files changed, 10 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7a8d7852/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 cb0c5cb..1a7f242 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
@@ -48,29 +48,19 @@ import org.apache.directory.fortress.core.GlobalErrIds;
 import org.apache.directory.fortress.core.GlobalIds;
 import org.apache.directory.fortress.core.RemoveException;
 import org.apache.directory.fortress.core.UpdateException;
-<<<<<<< HEAD
-import org.apache.directory.fortress.core.ldap.ApacheDsDataProvider;
-=======
 import org.apache.directory.fortress.core.ldap.LdapDataProvider;
->>>>>>> master
 import org.apache.directory.fortress.core.model.AdminRole;
 import org.apache.directory.fortress.core.model.ObjectFactory;
 import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
-<<<<<<< HEAD
 import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.PermissionAttributeSet;
-=======
->>>>>>> master
 import org.apache.directory.fortress.core.model.PropUtil;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
-<<<<<<< HEAD
-=======
 import org.apache.directory.fortress.core.util.Config;
->>>>>>> master
 import org.apache.directory.ldap.client.api.LdapConnection;
 
 

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7a8d7852/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
index 926a1a7..0d917a6 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
@@ -2591,7 +2591,7 @@ final class UserDAO extends LdapDataProvider
             for ( String raw : roles )
             {
             	//get role name
-            	String roleName = raw.substring(0, raw.indexOf( GlobalIds.DELIMITER )).toUpperCase();
+            	String roleName = raw.substring(0, raw.indexOf( Config.getInstance().getDelimiter() )).toUpperCase();
             	
             	//if already found, add to user role
             	if(uRoles.containsKey(roleName)){

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7a8d7852/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
index 96f9984..77df7db 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
@@ -21,7 +21,7 @@ package org.apache.directory.fortress.core.model;
 
 import java.io.Serializable;
 
-import org.apache.directory.fortress.core.GlobalIds;
+import org.apache.directory.fortress.core.util.Config;
 
 public class RoleConstraint implements Serializable {
 
@@ -65,16 +65,17 @@ public class RoleConstraint implements Serializable {
 	
 	//BANK_USER$seq$0type$filter$ecomm.merchant.id$AccountId=12345&WithdrawLimit=500
 	public String getRawData(UserRole uRole){
-        StringBuilder sb = new StringBuilder();
+        StringBuilder sb = new StringBuilder();        
+        String delimeter = Config.getInstance().getDelimiter();
         
         sb.append(uRole.getName());        
-        sb.append( GlobalIds.DELIMITER );
+        sb.append( delimeter );
         sb.append(RC_TYPE_NAME);
-        sb.append( GlobalIds.DELIMITER );
+        sb.append( delimeter );
         sb.append(constraintType);
-        sb.append( GlobalIds.DELIMITER );
+        sb.append( delimeter );
         sb.append(paSetName);
-        sb.append( GlobalIds.DELIMITER );
+        sb.append( delimeter );
         sb.append(value);
         
         return sb.toString();

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7a8d7852/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/util/VUtil.java b/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
index 31c4315..a6c684a 100755
--- a/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
+++ b/src/main/java/org/apache/directory/fortress/core/util/VUtil.java
@@ -696,6 +696,6 @@ public final class VUtil implements ConstraintValidator
             throw new ValidationException( GlobalErrIds.PERM_ATTRIBUTE_SET_NOT_FOUND, error );
         }
 
-        RegExUtil.safeText( value );
+        RegExUtil.getInstance().safeText( value );
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7a8d7852/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java b/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
index 5b692ec..e495ab1 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/FortressJUnitTest.java
@@ -23,11 +23,7 @@ import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
-<<<<<<< HEAD
-import org.apache.directory.fortress.core.GlobalIds;
-=======
 import org.apache.directory.fortress.core.util.Config;
->>>>>>> master
 
 /**
  * This JUnit test class drives all of the Fortress Administration APIs contained within {@link AdminMgrImplTest},

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7a8d7852/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
index d9a9c4d..7ecd7b1 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/ReviewMgrImplTest.java
@@ -209,7 +209,7 @@ public class ReviewMgrImplTest extends TestCase
     		Permission pop = PermTestData.getOp( obj, op );
 
     		Permission entity = reviewMgr.readPermission(pop);
-    		assertEquals(paSetName, entity.getPaSetName());
+    		assertTrue(paSetName, entity.getPaSets().contains(paSetName));
     		
     		LOG.debug( "readPASetFromPermission name [" + paSetName + "] successful" );
     	}


[27/43] directory-fortress-core git commit: updated version

Posted by cp...@apache.org.
updated version


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/b79194a9
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/b79194a9
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/b79194a9

Branch: refs/heads/master
Commit: b79194a9c65bb9f8cedf05dfed46f0a79b716ab8
Parents: 042b61d
Author: clp207 <cl...@psu.edu>
Authored: Wed Mar 30 15:46:17 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:46:17 2016 -0400

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b79194a9/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 99d6524..d0ee04e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
   <artifactId>fortress-core</artifactId>
   <packaging>jar</packaging>
   <name>Apache Fortress Core</name>
-  <version>1.0-RC42-SNAPSHOT</version>
+  <version>1.0-RC43-SNAPSHOT</version>
   <inceptionYear>2007</inceptionYear>
   <description>
     Apache Fortress is a standards-based Access Management SDK that implements ANSI RBAC INCITS 359.


[15/43] directory-fortress-core git commit: updated ftRCs to include paSetName

Posted by cp...@apache.org.
updated ftRCs to include paSetName


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/6c68e413
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/6c68e413
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/6c68e413

Branch: refs/heads/master
Commit: 6c68e413d3b7cbb2a5b657d0378dd48ed344b5ce
Parents: d7fb80b
Author: clp207 <cl...@psu.edu>
Authored: Fri Jan 29 11:53:30 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/GlobalErrIds.java    |  5 ++++-
 .../directory/fortress/core/ReviewMgr.java       |  6 +++++-
 .../fortress/core/impl/ReviewMgrImpl.java        | 16 ++++++++++++++++
 .../directory/fortress/core/impl/UserDAO.java    |  2 +-
 .../fortress/core/model/RoleConstraint.java      | 19 ++++++++++++++++---
 .../directory/fortress/core/model/UserRole.java  |  2 +-
 .../fortress/core/rest/ReviewMgrRestImpl.java    |  8 ++++++++
 7 files changed, 51 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6c68e413/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 cbda366..93ecb29 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
@@ -669,7 +669,10 @@ public final class GlobalErrIds
      * The supplied Permission Attribute Set could not be found on ldap server.
      */
     public static final int PERM_ATTRIBUTE_SET_NOT_FOUND = 3035;
-    
+    /**
+     * The supplied Permission Attribute Set name is required but was passed as null.
+     */
+    public static final int PERM_ATTRIBUTE_SET_NM_NULL = 3036;
     
     /**
      * 4000's - Password Policy Entity

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6c68e413/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java b/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
index 0a4f15a..2f8dffe 100755
--- a/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/ReviewMgr.java
@@ -110,7 +110,11 @@ public interface ReviewMgr extends Manageable
     PermObj readPermObj( PermObj permObj )
         throws SecurityException;
 
-
+    //TODO: add documentation
+    PermissionAttributeSet readPermAttributeSet( PermissionAttributeSet permAttributeSet )
+            throws SecurityException;
+        
+    
     /**
      * Method returns a list of type Permission that match the perm object search string.
      * <h3></h3>

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6c68e413/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
index 8f4e6bb..58dc46c 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
@@ -116,6 +116,22 @@ public class ReviewMgrImpl extends Manageable implements ReviewMgr, Serializable
         checkAccess(CLS_NM, methodName);
         return permP.read(permObj);
     }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public PermissionAttributeSet readPermAttributeSet( PermissionAttributeSet permAttributeSet )
+    		throws SecurityException
+    {
+    	String methodName = "readPermAttributeSet";
+    	assertContext( CLS_NM, methodName, permAttributeSet, GlobalErrIds.PERM_ATTRIBUTE_SET_NULL );
+    	VUtil.assertNotNull( permAttributeSet.getName(), GlobalErrIds.PERM_ATTRIBUTE_SET_NM_NULL, CLS_NM + "." + methodName );
+    	checkAccess(CLS_NM, methodName);
+    	
+    	return permP.read(permAttributeSet);
+    }
+
 
     /**
      * {@inheritDoc}

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6c68e413/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
index 871362f..f2edc47 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
@@ -1833,7 +1833,7 @@ final class UserDAO extends ApacheDsDataProvider
         try
         {
             List<Modification> mods = new ArrayList<Modification>();
-            szRoleConstraint = roleConstraint.gerRawData(uRole);
+            szRoleConstraint = roleConstraint.getRawData(uRole);
 
             mods.add( new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, GlobalIds.USER_ROLE_DATA,
             		szRoleConstraint ) );

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6c68e413/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
index 86e55d6..5b76178 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
@@ -8,14 +8,16 @@ public class RoleConstraint {
 	
 	private RoleConstraintType constraintType;
 	private String value;
+	private String paSetName;
 	
 	public RoleConstraint(){
 		
 	}
 	
-	public RoleConstraint(String value, RoleConstraintType constraintType){
+	public RoleConstraint(String value, RoleConstraintType constraintType, String paSetName){
 		this.constraintType = constraintType;
 		this.value = value;
+		this.paSetName = paSetName;
 	}	
 	
 	public RoleConstraintType getConstraintType() {
@@ -30,9 +32,17 @@ public class RoleConstraint {
 	public void setValue(String value) {
 		this.value = value;
 	}
+	public String getPaSetName() {
+		return paSetName;
+	}
+
+	public void setPaSetName(String paSetName) {
+		this.paSetName = paSetName;
+	}
 	
-	//BANK_USER$seq$0type$filter$AccountId=12345&WithdrawLimit=500
-	public String gerRawData(UserRole uRole){
+	
+	//BANK_USER$seq$0type$filter$ecomm.merchant.id$AccountId=12345&WithdrawLimit=500
+	public String getRawData(UserRole uRole){
         StringBuilder sb = new StringBuilder();
         
         sb.append(uRole.getName());        
@@ -41,8 +51,11 @@ public class RoleConstraint {
         sb.append( GlobalIds.DELIMITER );
         sb.append(constraintType);
         sb.append( GlobalIds.DELIMITER );
+        sb.append(paSetName);
+        sb.append( GlobalIds.DELIMITER );
         sb.append(value);
         
         return sb.toString();
 	}
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6c68e413/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/UserRole.java b/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
index b5eccd4..11e4404 100755
--- a/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/UserRole.java
@@ -158,7 +158,7 @@ public class UserRole extends FortEntity implements Serializable, Constraint
             
             //newer style constaint type
             if(tokens[1].equals(RoleConstraint.RC_TYPE_NAME)){
-            	RoleConstraint rc = new RoleConstraint(tokens[3], RoleConstraintType.valueOf(tokens[2]));            	            	            	
+            	RoleConstraint rc = new RoleConstraint(tokens[4], RoleConstraintType.valueOf(tokens[2]), tokens[3]);            	            	            	
             	this.getRoleConstraints().add(rc);
             }
             else{

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/6c68e413/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java b/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
index 32dfa0b..8d84318 100755
--- a/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/rest/ReviewMgrRestImpl.java
@@ -1253,4 +1253,12 @@ public class ReviewMgrRestImpl extends Manageable implements ReviewMgr
         return retSet.getCardinality();
     }
 
+
+	@Override
+	public PermissionAttributeSet readPermAttributeSet(
+			PermissionAttributeSet permAttributeSet) throws SecurityException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
 }
\ No newline at end of file


[20/43] directory-fortress-core git commit: added method to delete PASet and add/remove PAs from a set

Posted by cp...@apache.org.
added method to delete PASet and add/remove PAs from a set


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/8dd536cd
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/8dd536cd
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/8dd536cd

Branch: refs/heads/master
Commit: 8dd536cd7bf2c42515b4779e790f7ef8c80bb1ac
Parents: b6f3fef
Author: clp207 <cl...@psu.edu>
Authored: Fri Jan 29 10:13:53 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/AdminMgr.java       |  15 ++-
 .../directory/fortress/core/GlobalErrIds.java   |  26 +++-
 .../fortress/core/impl/AdminMgrImpl.java        |  47 +++++++-
 .../directory/fortress/core/impl/PermDAO.java   | 120 +++++++++++++++----
 .../directory/fortress/core/impl/PermP.java     |  21 +++-
 .../core/model/PermissionAttributeSet.java      |   4 +
 6 files changed, 196 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/8dd536cd/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
index 30a77b4..de3639a 100755
--- a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
@@ -22,6 +22,7 @@ package org.apache.directory.fortress.core;
 
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.RoleConstraint;
@@ -520,10 +521,22 @@ public interface AdminMgr extends Manageable
         throws SecurityException;
 
     
-    //TODO: fill the documentation in
+    //TODO: add documentation
     PermissionAttributeSet addPermissionAttributeSet( PermissionAttributeSet permAttributeSet )
     	throws SecurityException;
     
+    //TODO: add documentation
+    void deletePermissionAttributeSet( PermissionAttributeSet permAttributeSet )
+        throws SecurityException;
+    
+    //TODO: add documentation
+    PermissionAttribute addPermissionAttributeToSet( PermissionAttribute permAttribute, String attributeSetName )
+    	throws SecurityException;
+    
+    //TODO: add documentation
+    void removePermissionAttributeFromSet( PermissionAttribute permAttribute, String attributeSetName )
+    	throws SecurityException;    
+    
     /**
      * This method will update permission operation pre-existing in target directory under 
      * {@code ou=Permissions,ou=RBAC,dc=yourHostName,dc=com} container in directory information tree.

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/8dd536cd/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 a0f6f7e..a170274 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalErrIds.java
@@ -645,7 +645,27 @@ public final class GlobalErrIds
      * The supplied Permission does not exist in LDAP DIT.
      */
     public static final int PERM_NOT_EXIST = 3029;
-
+    /**
+     * The supplied Permission Attribute Set is required but was passed as null.
+     */
+    public static final int PERM_ATTRIBUTE_SET_NULL = 3030;
+    /**
+     * The supplied Permission Attribute Set could not be removed from ldap server.
+     */
+    public static final int PERM_ATTRIBUTE_SET_DELETE_FAILED = 3031;
+    /**
+     * The supplied Permission Attribute is required but was passed as null.
+     */
+    public static final int PERM_ATTRIBUTE_NULL = 3032;
+    /**
+     * The supplied Permission Attribute could not be removed from ldap server.
+     */
+    public static final int PERM_ATTRIBUTE_DELETE_FAILED = 3033;
+    /**
+     * The supplied Permission Attribute could not be added to ldap server.
+     */
+    public static final int PERM_ATTR_ADD_FAILED = 3034;
+    
     /**
      * 4000's - Password Policy Entity
      */
@@ -1656,8 +1676,4 @@ public final class GlobalErrIds
      */
     public static final int GROUP_PROTOCOL_INVLD = 10313;
     
-    /**
-     * The supplied Permission Attribute could not be added to ldap server.
-     */
-    public static final int PERM_ATTR_ADD_FAILED = 10314;
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/8dd536cd/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
index 61f090d..2248b73 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
@@ -34,6 +34,7 @@ import org.apache.directory.fortress.core.model.ConstraintUtil;
 import org.apache.directory.fortress.core.model.Hier;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Relationship;
 import org.apache.directory.fortress.core.model.Role;
@@ -402,12 +403,48 @@ public final class AdminMgrImpl extends Manageable implements AdminMgr, Serializ
     public PermissionAttributeSet addPermissionAttributeSet( PermissionAttributeSet permAttributeSet ) throws SecurityException
     {
         String methodName = "addPermissionAttributeSet";         
-        //TODO: add better global err ids
-        assertContext( CLS_NM, methodName, permAttributeSet, GlobalErrIds.PERM_OPERATION_NULL );
-        //TODO: set entity session...
-        //setEntitySession( CLS_NM, methodName, permAttribute );
+        assertContext( CLS_NM, methodName, permAttributeSet, GlobalErrIds.PERM_ATTRIBUTE_SET_NULL );
+        //TODO: verify with Shawn we don't need to set entity session here...        
         return permP.add( permAttributeSet );
-    }    
+    }          
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void deletePermissionAttributeSet( PermissionAttributeSet permAttributeSet ) throws SecurityException
+    {
+        String methodName = "deletePermissionAttributeSet";         
+        assertContext( CLS_NM, methodName, permAttributeSet, GlobalErrIds.PERM_ATTRIBUTE_SET_NULL );
+        //TODO: verify with Shawn we don't need to set entity session here...        
+        permP.delete( permAttributeSet );
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public PermissionAttribute addPermissionAttributeToSet( PermissionAttribute permAttribute, String attributeSetName )
+    	throws SecurityException
+    {
+    	String methodName = "addPermissionAttributeToSet";         
+        assertContext( CLS_NM, methodName, permAttribute, GlobalErrIds.PERM_ATTRIBUTE_NULL );
+        //TODO: verify with Shawn we don't need to set entity session here...        
+        return permP.add( permAttribute, attributeSetName );    	
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void removePermissionAttributeFromSet( PermissionAttribute permAttribute, String attributeSetName )
+    	throws SecurityException
+    {
+    	String methodName = "removePermissionAttributeFromSet";         
+        assertContext( CLS_NM, methodName, permAttribute, GlobalErrIds.PERM_ATTRIBUTE_NULL );
+        //TODO: verify with Shawn we don't need to set entity session here...        
+        permP.delete( permAttribute, attributeSetName );       	
+    }
     
     /**
      * {@inheritDoc}

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/8dd536cd/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 e4d334c..a8f5373 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
@@ -459,7 +459,7 @@ final class PermDAO extends ApacheDsDataProvider
     PermissionAttributeSet createPermissionAttributeSet( PermissionAttributeSet entity ) throws CreateException
     {
         LdapConnection ld = null;
-        String dn = getDn( entity , entity.getContextId() );
+        String dn = getPASetDn( entity.getName() , entity.getContextId() );
 
         try
         {
@@ -496,36 +496,46 @@ final class PermDAO extends ApacheDsDataProvider
         {
             closeAdminConnection( ld );
         }
-        
-        
+                
         //add each ftPA
         for(PermissionAttribute pa : entity.getAttributes()){        
-	        try
-	        {
-	            List<Modification> mods = new ArrayList<Modification>();
-	            mods.add( new DefaultModification(
-	                ModificationOperation.ADD_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE, pa.toFtPAString()) );
-	            ld = getAdminConnection();
-	            modify( ld, dn, mods, entity );
-	            
-	            //TODO: make sure not adding same attribute twice...???
-	        }
-	        catch ( LdapException e )
-	        {
-	            String error = "create perm attribute [" + pa.getAttributeName() + "] caught LdapException="
-	                + e.getMessage();
-	            throw new CreateException( GlobalErrIds.PERM_ATTR_ADD_FAILED, error, e );
-	        }
-	        finally
-	        {
-	            closeAdminConnection( ld );
-	        }
+	        this.createPermissionAttribute(pa, entity.getName());
         }
         
         //TODO: need to do anything to returned entity?
         return entity;
     }
     
+    //TODO: add documentation
+    PermissionAttribute createPermissionAttribute( PermissionAttribute entity, String attributeSetName ) throws CreateException
+    {
+        LdapConnection ld = null;
+        String dn = getPASetDn( attributeSetName, entity.getContextId() );
+    
+    	try
+        {
+            List<Modification> mods = new ArrayList<Modification>();
+            mods.add( new DefaultModification(
+                ModificationOperation.ADD_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE, entity.toFtPAString()) );
+            ld = getAdminConnection();
+            modify( ld, dn, mods, entity );
+            
+            //TODO: make sure not adding same attribute twice...???
+        }
+        catch ( LdapException e )
+        {
+            String error = "create perm attribute [" + entity.getAttributeName() + "] caught LdapException="
+                + e.getMessage();
+            throw new CreateException( GlobalErrIds.PERM_ATTR_ADD_FAILED, error, e );
+        }
+        finally
+        {
+            closeAdminConnection( ld );
+        }
+    	
+    	return entity;    	
+    }
+        
     /**
      * @param entity
      * @return
@@ -630,6 +640,66 @@ final class PermDAO extends ApacheDsDataProvider
         }
     }
 
+    /**     
+     * @param entity
+     * @throws RemoveException
+     */
+    void deleteAttributeSet( PermissionAttributeSet entity ) throws RemoveException
+    {
+        LdapConnection ld = null;
+        String dn = getPASetDn( entity.getName(), entity.getContextId() );
+
+        try
+        {
+            ld = getAdminConnection();
+            deleteRecursive( ld, dn, entity );
+        }
+        catch ( LdapException e )
+        {
+            String error = "deleteAttributeSet name [" + entity.getName() + "]"
+            		+ " caught LdapException=" + e.getMessage();
+            throw new RemoveException( GlobalErrIds.PERM_ATTRIBUTE_SET_DELETE_FAILED, error, e );
+        }
+        catch ( CursorException e )
+        {
+            String error = "deleteAttributeSet name [" + entity.getName() + "] "
+            		+ " caught LdapException=" + e.getMessage();
+            throw new RemoveException( GlobalErrIds.PERM_ATTRIBUTE_SET_DELETE_FAILED, error, e );
+        }
+        finally
+        {
+            closeAdminConnection( ld );
+        }
+    }
+    
+    /**     
+     * @param entity
+     * @throws RemoveException
+     */
+    void deletePermissionAttribute( PermissionAttribute entity, String attributeSetName ) throws RemoveException
+    {
+        LdapConnection ld = null;
+        String dn = getPASetDn( attributeSetName, entity.getContextId() );
+
+        try
+        {
+            List<Modification> mods = new ArrayList<Modification>();
+            mods.add( new DefaultModification(
+                ModificationOperation.REMOVE_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE, entity.toFtPAString() ) );
+            ld = getAdminConnection();
+            modify( ld, dn, mods, new PermissionAttributeSet(attributeSetName) );
+        }
+        catch ( LdapException e )
+        {
+            String error = "deletePermissionAttribute name [" + entity.getAttributeName() + "] set ["
+            		+ attributeSetName + "] caught LdapException=" + e.getMessage();
+            throw new RemoveException( GlobalErrIds.PERM_ATTRIBUTE_DELETE_FAILED, error, e );
+        }     
+        finally
+        {
+            closeAdminConnection( ld );
+        }
+    }
 
     /**
      * @param pOp
@@ -1762,10 +1832,10 @@ final class PermDAO extends ApacheDsDataProvider
     }
     
 
-    private String getDn( PermissionAttributeSet paSet, String contextId )
+    private String getPASetDn( String name, String contextId )
     {
     	//TODO: what ou to put this?
-        return SchemaConstants.CN_AT + "=" + paSet.getName() + "," + getRootDn( contextId, GlobalIds.SD_ROOT );
+        return SchemaConstants.CN_AT + "=" + name + "," + getRootDn( contextId, GlobalIds.SD_ROOT );
     }
 
 

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/8dd536cd/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
index 585323e..4284c47 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
@@ -33,6 +33,7 @@ import org.apache.directory.fortress.core.model.AdminRole;
 import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
+import org.apache.directory.fortress.core.model.PermissionAttribute;
 import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.Session;
@@ -374,7 +375,20 @@ final class PermP
         //TODO: add validation
         return pDao.createPermissionAttributeSet( entity );
     }
+    
+    //TODO: add documentation
+    PermissionAttribute add( PermissionAttribute entity, String attributeSetName ) throws SecurityException
+    {
+        //TODO: add validation
+        return pDao.createPermissionAttribute( entity, attributeSetName );
+    }
 
+    //TODO: add documentation
+    void delete( PermissionAttribute entity, String attributeSetName ) throws SecurityException
+    {
+        //TODO: add validation
+        pDao.deletePermissionAttribute( entity, attributeSetName );
+    }
 
     /**
      * Update existing Permission Object attributes with the input entity.  Null or empty attributes will be ignored.
@@ -476,7 +490,12 @@ final class PermP
         pDao.deleteOperation( entity );
     }
 
-
+    //TODO: add documentation
+    void delete( PermissionAttributeSet entity ) throws SecurityException
+    {
+        pDao.deleteAttributeSet( entity );
+    }
+    
     /**
      * This command grants a role the permission to perform an operation on an object to a role.
      * The command is implemented by granting permission by setting the access control list of

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/8dd536cd/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
index 46fb95a..070c278 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
@@ -28,6 +28,10 @@ public class PermissionAttributeSet extends FortEntity {
     private String description;
     private String dn;
 	
+    public PermissionAttributeSet(String name){
+    	this.name = name;
+    }
+    
 	public PermissionAttributeSet(){
 		
 	}


[43/43] directory-fortress-core git commit: ran tests for FC-116

Posted by cp...@apache.org.
ran tests for FC-116


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/33b49fe5
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/33b49fe5
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/33b49fe5

Branch: refs/heads/master
Commit: 33b49fe5f5a1018008ec213af160beb24699f5f0
Parents: 84e8271
Author: clp207 <cl...@psu.edu>
Authored: Thu Oct 6 13:48:22 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Thu Oct 6 13:48:22 2016 -0400

----------------------------------------------------------------------

----------------------------------------------------------------------



[25/43] directory-fortress-core git commit: updates to support perm attrs

Posted by cp...@apache.org.
updates to support perm attrs


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/0403277b
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/0403277b
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/0403277b

Branch: refs/heads/master
Commit: 0403277bac6287549a060682bd0c34a1ad552285
Parents: e3a74de
Author: clp207 <cl...@psu.edu>
Authored: Fri Feb 5 15:07:00 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:23 2016 -0400

----------------------------------------------------------------------
 src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java | 2 +-
 .../apache/directory/fortress/core/model/PermissionAttribute.java  | 2 --
 2 files changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/0403277b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
index b1a0c9e..50aaec2 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
@@ -2575,7 +2575,7 @@ final class UserDAO extends ApacheDsDataProvider
             for ( String raw : roles )
             {
             	//get role name
-            	String roleName = raw.substring(0, raw.indexOf( GlobalIds.DELIMITER ));
+            	String roleName = raw.substring(0, raw.indexOf( GlobalIds.DELIMITER )).toUpperCase();
             	
             	//if already found, add to user role
             	if(uRoles.containsKey(roleName)){

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/0403277b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
index c374df0..d585efd 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
@@ -18,8 +18,6 @@ import org.apache.commons.lang.StringUtils;
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "permission", propOrder =
     {
-        "opName",
-        "objName",
         "required",
         "operator",
         "dataType",


[21/43] directory-fortress-core git commit: adding missing headers in new files

Posted by cp...@apache.org.
adding missing headers in new files


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/d554bfde
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/d554bfde
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/d554bfde

Branch: refs/heads/master
Commit: d554bfde23f3e883ca3da4089c5f74434c89af3d
Parents: d161f41
Author: clp207 <cl...@psu.edu>
Authored: Tue Feb 9 14:01:23 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:23 2016 -0400

----------------------------------------------------------------------
 .../fortress/core/model/PermissionAttribute.java | 19 +++++++++++++++++++
 .../core/model/PermissionAttributeSet.java       | 19 +++++++++++++++++++
 .../fortress/core/model/RoleConstraint.java      | 19 +++++++++++++++++++
 .../fortress/core/model/RoleConstraintType.java  | 19 +++++++++++++++++++
 4 files changed, 76 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d554bfde/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
index d585efd..56105cd 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
@@ -1,3 +1,22 @@
+/*
+ *  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.
+ *
+ */
 package org.apache.directory.fortress.core.model;
 
 import java.io.Serializable;

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d554bfde/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
index 3bf25d1..90563ad 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
@@ -1,3 +1,22 @@
+/*
+ *  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.
+ *
+ */
 package org.apache.directory.fortress.core.model;
 
 import java.util.HashSet;

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d554bfde/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
index e343223..96f9984 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraint.java
@@ -1,3 +1,22 @@
+/*
+ *  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.
+ *
+ */
 package org.apache.directory.fortress.core.model;
 
 import java.io.Serializable;

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d554bfde/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java
index 6eb4b57..4f79df0 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/RoleConstraintType.java
@@ -1,3 +1,22 @@
+/*
+ *  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.
+ *
+ */
 package org.apache.directory.fortress.core.model;
 
 public enum RoleConstraintType {


[16/43] directory-fortress-core git commit: started change to ftAttributeSet

Posted by cp...@apache.org.
started change to ftAttributeSet


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/b6f3fef8
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/b6f3fef8
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/b6f3fef8

Branch: refs/heads/master
Commit: b6f3fef8b212e49664f2ee66ddd7fdfd8956e61c
Parents: d5a5d5a
Author: clp207 <cl...@psu.edu>
Authored: Thu Jan 28 17:25:37 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/AdminMgr.java       |   6 +-
 .../directory/fortress/core/GlobalIds.java      |  14 ++-
 .../fortress/core/impl/AdminMgrImpl.java        |  16 +--
 .../directory/fortress/core/impl/PermDAO.java   | 113 ++++++++++++------
 .../directory/fortress/core/impl/PermP.java     |   6 +-
 .../fortress/core/impl/ReviewMgrImpl.java       |   3 +-
 .../directory/fortress/core/impl/UserP.java     |   2 +-
 .../fortress/core/model/Permission.java         |  44 +++----
 .../core/model/PermissionAttribute.java         |  55 ---------
 .../core/model/PermissionAttributeSet.java      | 117 +++++++++++++++++++
 .../fortress/core/rest/AdminMgrRestImpl.java    |  16 +--
 11 files changed, 245 insertions(+), 147 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b6f3fef8/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
index 4131d2b..30a77b4 100755
--- a/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
+++ b/src/main/java/org/apache/directory/fortress/core/AdminMgr.java
@@ -22,7 +22,7 @@ package org.apache.directory.fortress.core;
 
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
-import org.apache.directory.fortress.core.model.PermissionAttribute;
+import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.RoleConstraint;
 import org.apache.directory.fortress.core.model.SDSet;
@@ -521,9 +521,9 @@ public interface AdminMgr extends Manageable
 
     
     //TODO: fill the documentation in
-    PermissionAttribute addPermissionAttribute( PermissionAttribute permAttribute )
+    PermissionAttributeSet addPermissionAttributeSet( PermissionAttributeSet permAttributeSet )
     	throws SecurityException;
-
+    
     /**
      * This method will update permission operation pre-existing in target directory under 
      * {@code ou=Permissions,ou=RBAC,dc=yourHostName,dc=com} container in directory information tree.

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b6f3fef8/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
index 4ca88fe..c6a0a66 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
@@ -345,8 +345,8 @@ public final class GlobalIds
     /**
      * Attribute name for storing Fortress permission object names.
      */
-    public static final String POBJ_NAME = "ftObjNm";
-
+    public static final String POBJ_NAME = "ftObjNm";    
+    
     /**
      * Attribute name for storing Fortress permission object id.
      */
@@ -533,4 +533,14 @@ public final class GlobalIds
      * The ftPA field contains attributes and associated metadata for permissions.
      */
     public static final String FT_PERMISSION_ATTRIBUTE = "ftPA";
+    
+    /**
+     * The ftPASet field contains the name of the ftPermissionAttributeSet for a permission
+     */
+    public static final String FT_PERMISSION_ATTRIBUTE_SET = "ftPASet";
+    
+    /**
+     * Attribute name for storing Fortress permission attribute set object names.
+     */
+    public static final String PERMISSION_ATTRIBUTE_SET_NAME = "ftAttributeSet";
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b6f3fef8/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
index ab4aea9..61f090d 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/AdminMgrImpl.java
@@ -34,7 +34,7 @@ import org.apache.directory.fortress.core.model.ConstraintUtil;
 import org.apache.directory.fortress.core.model.Hier;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
-import org.apache.directory.fortress.core.model.PermissionAttribute;
+import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Relationship;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.RoleConstraint;
@@ -399,14 +399,16 @@ public final class AdminMgrImpl extends Manageable implements AdminMgr, Serializ
      * {@inheritDoc}
      */
     @Override
-    public PermissionAttribute addPermissionAttribute( PermissionAttribute permAttribute ) throws SecurityException
+    public PermissionAttributeSet addPermissionAttributeSet( PermissionAttributeSet permAttributeSet ) throws SecurityException
     {
-        String methodName = "addPermissionAttribute";
-        assertContext( CLS_NM, methodName, permAttribute, GlobalErrIds.PERM_OPERATION_NULL );
-        setEntitySession( CLS_NM, methodName, permAttribute );
-        return permP.add( permAttribute );
+        String methodName = "addPermissionAttributeSet";         
+        //TODO: add better global err ids
+        assertContext( CLS_NM, methodName, permAttributeSet, GlobalErrIds.PERM_OPERATION_NULL );
+        //TODO: set entity session...
+        //setEntitySession( CLS_NM, methodName, permAttribute );
+        return permP.add( permAttributeSet );
     }    
-
+    
     /**
      * {@inheritDoc}
      */

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b6f3fef8/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 67ed958..e4d334c 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
@@ -22,7 +22,6 @@ package org.apache.directory.fortress.core.impl;
 
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -56,6 +55,7 @@ import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
 import org.apache.directory.fortress.core.model.PermissionAttribute;
+import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.PropUtil;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.Session;
@@ -162,7 +162,8 @@ final class PermDAO extends ApacheDsDataProvider
     private static final String TYPE = "ftType";
     private static final String PERM_OBJ_OBJECT_CLASS_NAME = "ftObject";
     private static final String PERM_OP_OBJECT_CLASS_NAME = "ftOperation";
-
+    private static final String PERMISSION_ATTRIBUTE_OBJECT_CLASS_NAME = "ftAttributeSet";
+    
     private static final String PERM_OBJ_OBJ_CLASS[] =
         {
             SchemaConstants.TOP_OC,
@@ -184,7 +185,7 @@ final class PermDAO extends ApacheDsDataProvider
     private static final String PERM_NAME = "ftPermName";
     private static final String ROLES = "ftRoles";
     private static final String USERS = "ftUsers";
-    private static final String PERMISSION_ATTRIBUTE = "ftPA";
+    private static final String PERMISSION_ATTRIBUTE_SET = "ftPASet";
     private static final String[] PERMISSION_OP_ATRS =
         {
             GlobalIds.FT_IID,
@@ -198,7 +199,7 @@ final class PermDAO extends ApacheDsDataProvider
             ROLES,
             USERS,
             GlobalIds.PROPS,
-            PERMISSION_ATTRIBUTE
+            PERMISSION_ATTRIBUTE_SET
     };
 
     private static final String[] PERMISION_OBJ_ATRS =
@@ -416,6 +417,11 @@ final class PermDAO extends ApacheDsDataProvider
             {
                 entry.add( TYPE, entity.getType() );
             }
+            
+            if ( StringUtils.isNotEmpty( entity.getPaSetName() ) )
+            {
+                entry.add( PERMISSION_ATTRIBUTE_SET, entity.getPaSetName() );
+            }
 
             // These are multi-valued attributes, use the util function to load:
             // These items are optional as well.  The utility function will return quietly if no items are loaded into collection:
@@ -450,33 +456,72 @@ final class PermDAO extends ApacheDsDataProvider
 
     
     //TODO: add documentation
-    PermissionAttribute createPermissionAttribute( PermissionAttribute entity ) throws CreateException
+    PermissionAttributeSet createPermissionAttributeSet( PermissionAttributeSet entity ) throws CreateException
     {
         LdapConnection ld = null;
-        String dn = getDn( new Permission(entity.getObjName(), entity.getOpName()) , entity.getContextId() );
+        String dn = getDn( entity , entity.getContextId() );
 
         try
         {
-            List<Modification> mods = new ArrayList<Modification>();
-            mods.add( new DefaultModification(
-                ModificationOperation.ADD_ATTRIBUTE, PERMISSION_ATTRIBUTE, entity.toFtPAString()) );
+            Entry entry = new DefaultEntry( dn );
+
+            entry.add( SchemaConstants.OBJECT_CLASS_AT, PERMISSION_ATTRIBUTE_OBJECT_CLASS_NAME );
+
+            // this will generate a new random, unique id on this entity:
+            entity.setInternalId();
+
+            // create the internal id:
+            entry.add( GlobalIds.FT_IID, entity.getInternalId() );
+
+            // description is optional:
+            if ( StringUtils.isNotEmpty( entity.getDescription() ) )
+            {
+                entry.add( SchemaConstants.DESCRIPTION_AT, entity.getDescription() );
+            }
+
+            // organizational name requires CN attribute:
+            entry.add( SchemaConstants.CN_AT, entity.getName() );
+                    
+            // now add the new entry to directory:
             ld = getAdminConnection();
-            modify( ld, dn, mods, entity );
-            
-            //TODO: make sure not adding same attribute twice...
+            add( ld, entry, entity );
+            entity.setDn( dn );
         }
         catch ( LdapException e )
         {
-            String error = "create perm attribute [" + entity.getObjName() + "] operation ["
-                + entity.getOpName() + "] name [" + entity.getAttributeName() + "] caught LdapException="
-                + e.getMessage();
-            throw new CreateException( GlobalErrIds.PERM_ATTR_ADD_FAILED, error, e );
+            String error = "createPermissionAttributeSet name [" + entity.getName() + "] caught LdapException=" + e.getMessage();
+            throw new CreateException( GlobalErrIds.PERM_ADD_FAILED, error, e );
         }
         finally
         {
             closeAdminConnection( ld );
         }
         
+        
+        //add each ftPA
+        for(PermissionAttribute pa : entity.getAttributes()){        
+	        try
+	        {
+	            List<Modification> mods = new ArrayList<Modification>();
+	            mods.add( new DefaultModification(
+	                ModificationOperation.ADD_ATTRIBUTE, GlobalIds.FT_PERMISSION_ATTRIBUTE, pa.toFtPAString()) );
+	            ld = getAdminConnection();
+	            modify( ld, dn, mods, entity );
+	            
+	            //TODO: make sure not adding same attribute twice...???
+	        }
+	        catch ( LdapException e )
+	        {
+	            String error = "create perm attribute [" + pa.getAttributeName() + "] caught LdapException="
+	                + e.getMessage();
+	            throw new CreateException( GlobalErrIds.PERM_ATTR_ADD_FAILED, error, e );
+	        }
+	        finally
+	        {
+	            closeAdminConnection( ld );
+	        }
+        }
+        
         //TODO: need to do anything to returned entity?
         return entity;
     }
@@ -516,6 +561,13 @@ final class PermDAO extends ApacheDsDataProvider
                 mods.add( new DefaultModification(
                     ModificationOperation.REPLACE_ATTRIBUTE, TYPE, entity.getType() ) );
             }
+            
+            if ( StringUtils.isNotEmpty( entity.getPaSetName() ) )
+            {
+
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE, PERMISSION_ATTRIBUTE_SET, entity.getPaSetName() ) );
+            }
 
             // These are multi-valued attributes, use the util function to load:
             loadAttrs( entity.getRoles(), mods, ROLES );
@@ -1061,7 +1113,7 @@ final class PermDAO extends ApacheDsDataProvider
         entity.setDescription( getAttribute( le, SchemaConstants.DESCRIPTION_AT ) );
         entity.addProperties( PropUtil.getProperties( getAttributes( le, GlobalIds.PROPS ) ) );        
         entity.setAdmin( isAdmin );
-        entity.setAttributes( unloadPermissionAttributes(le) );
+        entity.setPaSetName( getAttribute(le, GlobalIds.FT_PERMISSION_ATTRIBUTE_SET ) );
 
         if ( le != null )
         {
@@ -1093,26 +1145,6 @@ final class PermDAO extends ApacheDsDataProvider
         entity.setAdmin( isAdmin );
         return entity;
     }
-
-    private Set<PermissionAttribute> unloadPermissionAttributes( Entry entry )
-    {
-        Set<PermissionAttribute> permAttributes = null;
-        List<String> ftPAs = getAttributes( entry, GlobalIds.FT_PERMISSION_ATTRIBUTE );
-
-        if ( ftPAs != null )
-        {
-        	permAttributes = new HashSet<PermissionAttribute>();
-
-            for ( String raw : ftPAs )
-            {
-                PermissionAttribute permAttribute = new ObjectFactory().createPermissionAttribute();
-                permAttribute.load( raw );
-                permAttributes.add( permAttribute );
-            }
-        }
-
-        return permAttributes;
-    }
     
     /**
      * @param permission
@@ -1728,6 +1760,13 @@ final class PermDAO extends ApacheDsDataProvider
     {
         return GlobalIds.POBJ_NAME + "=" + pObj.getObjName() + "," + getRootDn( pObj.isAdmin(), contextId );
     }
+    
+
+    private String getDn( PermissionAttributeSet paSet, String contextId )
+    {
+    	//TODO: what ou to put this?
+        return SchemaConstants.CN_AT + "=" + paSet.getName() + "," + getRootDn( contextId, GlobalIds.SD_ROOT );
+    }
 
 
     private String getRootDn( boolean isAdmin, String contextId )

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b6f3fef8/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
index c1738c7..585323e 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermP.java
@@ -33,7 +33,7 @@ import org.apache.directory.fortress.core.model.AdminRole;
 import org.apache.directory.fortress.core.model.OrgUnit;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
-import org.apache.directory.fortress.core.model.PermissionAttribute;
+import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.Session;
 import org.apache.directory.fortress.core.model.User;
@@ -369,10 +369,10 @@ final class PermP
     }
     
     //TODO: add documentation
-    PermissionAttribute add( PermissionAttribute entity ) throws SecurityException
+    PermissionAttributeSet add( PermissionAttributeSet entity ) throws SecurityException
     {
         //TODO: add validation
-        return pDao.createPermissionAttribute( entity );
+        return pDao.createPermissionAttributeSet( entity );
     }
 
 

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b6f3fef8/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
index 12190c7..463572c 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/ReviewMgrImpl.java
@@ -416,7 +416,8 @@ public class ReviewMgrImpl extends Manageable implements ReviewMgr, Serializable
     	
     	List<Permission> permissions = this.rolePermissions(role, noInhertiance);
     	for(Permission perm : permissions){
-    		permAttributes.addAll(perm.getAttributes());
+    		//TODO: need to get ftPA entries now...
+    		//permAttributes.addAll(perm.getAttributes());
     	}
     	
     	return permAttributes;

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b6f3fef8/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserP.java b/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
index 940ca63..dfe7b3c 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserP.java
@@ -639,7 +639,7 @@ final class UserP
     //TODO: add documentation
     void assign( UserRole uRole, RoleConstraint roleConstraint ) throws SecurityException
     {
-    	//TODO: validate?
+    	//TODO: validate role constraint points to actual ftAttributeSet?
     	
     	uDao.assign( uRole, roleConstraint );
     }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b6f3fef8/src/main/java/org/apache/directory/fortress/core/model/Permission.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/Permission.java b/src/main/java/org/apache/directory/fortress/core/model/Permission.java
index 4974627..e96ba0d 100755
--- a/src/main/java/org/apache/directory/fortress/core/model/Permission.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/Permission.java
@@ -22,7 +22,6 @@ package org.apache.directory.fortress.core.model;
 
 import java.io.Serializable;
 import java.util.Enumeration;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
@@ -258,7 +257,8 @@ import org.apache.commons.lang.StringUtils;
         "roles",
         "props",
         "dn",
-        "admin"
+        "admin",
+        "paSetName"
 })
 public class Permission extends FortEntity implements Serializable
 {
@@ -280,9 +280,8 @@ public class Permission extends FortEntity implements Serializable
     @XmlElement(nillable = true)
     private Set<String> roles;
     @XmlElement(nillable = true)
-    private Set<String> users;
-    @XmlElement(nillable = true)
-    private Set<PermissionAttribute> attributes;
+    private Set<String> users;    
+    private String paSetName;
 
     /**
      * This constructor is commonly used to create Permission that is a target for authorization API.
@@ -676,34 +675,9 @@ public class Permission extends FortEntity implements Serializable
         this.props = value;
     }
 
-    /**
-     * Return the collection of optional Attributes that have been loaded into this entity.  This is stored as a multi-occurring
-     * attribute of ftPA entries on the 'ftOperation' object class.
-     *
-     * @return Set containing the roles which maps to 'ftRoles' attribute in 'ftOperation' object class.
-     */
-    public Set<PermissionAttribute> getAttributes()
-    {
-    	if(this.attributes == null){
-    		attributes = new HashSet<PermissionAttribute>();
-    	}
-    	
-        return this.attributes;
-    }
 
 
     /**
-     * Set the collection of optional Attributes that have been loaded into this entity.  This is stored as a multi-occurring
-     * attribute of ftPAs on the 'ftOperation' object class.
-     *
-     * @param attributes maps to 'ftPA' attribute in 'ftOperation' object class.
-     */
-    public void setAttributes( Set<PermissionAttribute> attributes )
-    {
-        this.attributes = attributes;
-    }
-
-    /**
      * Add name/value pair to list of properties associated with Permission.  These values are not constrained by Fortress.
      * Properties are optional.
      *
@@ -855,4 +829,14 @@ public class Permission extends FortEntity implements Serializable
             ", objId='" + objId + '\'' +
             '}';
     }
+
+
+	public String getPaSetName() {
+		return paSetName;
+	}
+
+
+	public void setPaSetName(String paSetName) {
+		this.paSetName = paSetName;
+	}
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b6f3fef8/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
index a69d92f..453a784 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
@@ -37,8 +37,6 @@ public class PermissionAttribute extends FortEntity implements Serializable {
     private static final String VALID_VALUES_PARAM_NAME = "validValues";
     private static final String DEFAULT_VALUE_PARAM_NAME = "defaultValue";
     
-    private String opName;
-    private String objName;
     private String attributeName;
     private Boolean required;
     private ComparisonOperator operator;
@@ -48,12 +46,6 @@ public class PermissionAttribute extends FortEntity implements Serializable {
     private List<String> validValues;
     private String defaultValue;
     
-    public PermissionAttribute(String objName, String opName )
-    {
-        this.objName = objName;
-        this.opName = opName;
-    }
-    
     public PermissionAttribute(){
     	
     }
@@ -114,18 +106,6 @@ public class PermissionAttribute extends FortEntity implements Serializable {
 	public void setDefaultValue(String defaultValue) {
 		this.defaultValue = defaultValue;
 	}
-	public String getOpName() {
-		return opName;
-	}
-	public void setOpName(String opName) {
-		this.opName = opName;
-	}
-	public String getObjName() {
-		return objName;
-	}
-	public void setObjName(String objName) {
-		this.objName = objName;
-	}
 	public String getAttributeName() {
 		return attributeName;
 	}
@@ -172,39 +152,4 @@ public class PermissionAttribute extends FortEntity implements Serializable {
         }
     }
     
-    /**
-     * Matches the objName, opName and attributeName from two Permission entities.
-     *
-     * @param o contains a PermissionAttribute entity.
-     * @return boolean indicating both PermissionAttributes contain matching objName, opName, and attributeName attributes.
-     */
-    @Override
-    public boolean equals(Object o)
-    {
-        if ( this == o )
-        {
-            return true;
-        }
-        if ( o == null || getClass() != o.getClass() )
-        {
-            return false;
-        }
-
-        PermissionAttribute that = ( PermissionAttribute ) o;
-        
-        if ( objName != null ? !objName.equalsIgnoreCase( that.objName ) : that.objName != null )
-        {
-            return false;
-        }
-        if ( opName != null ? !opName.equalsIgnoreCase( that.opName ) : that.opName != null )
-        {
-            return false;
-        }
-        if ( attributeName != null ? !attributeName.equalsIgnoreCase( that.attributeName ) : that.attributeName != null )
-        {
-            return false;
-        }
-
-        return true;
-    }
 }

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b6f3fef8/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
new file mode 100644
index 0000000..46fb95a
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttributeSet.java
@@ -0,0 +1,117 @@
+package org.apache.directory.fortress.core.model;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.UUID;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(name = "ftPermissionAttributeSet")
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "permission", propOrder =
+    {
+        "name",
+        "attributes",
+        "internalId",
+        "description"
+})
+public class PermissionAttributeSet extends FortEntity {
+
+	private String name;
+	@XmlElement(nillable = true)
+	private Set<PermissionAttribute> attributes;
+    private String internalId;
+    private String description;
+    private String dn;
+	
+	public PermissionAttributeSet(){
+		
+	}
+	
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}	
+	
+    /**
+     * Return the collection of optional Attributes that have been loaded into this entity.  This is stored as a multi-occurring
+     * attribute of ftPA entries on the 'ftAttributeSet' object class.
+     *
+     * @return Set containing the roles which maps to 'ftRoles' attribute in 'ftOperation' object class.
+     */
+    public Set<PermissionAttribute> getAttributes()
+    {
+    	if(this.attributes == null){
+    		attributes = new HashSet<PermissionAttribute>();
+    	}
+    	
+        return this.attributes;
+    }
+
+
+    /**
+     * Set the collection of optional Attributes that have been loaded into this entity.  This is stored as a multi-occurring
+     * attribute of ftPAs on the 'ftOperation' object class.
+     *
+     * @param attributes maps to 'ftPA' attribute in 'ftOperation' object class.
+     */
+    public void setAttributes( Set<PermissionAttribute> attributes )
+    {
+        this.attributes = attributes;
+    }
+
+	public String getInternalId() {
+		return internalId;
+	}
+
+	public void setInternalId() {
+        UUID uuid = UUID.randomUUID();
+        this.internalId = uuid.toString();
+	}
+
+	public String getDescription() {
+		return description;
+	}
+
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	public String getDn() {
+		return dn;
+	}
+
+	public void setDn(String dn) {
+		this.dn = dn;
+	}
+    
+    /*
+    private Set<PermissionAttribute> unloadPermissionAttributes( Entry entry )
+    {
+        Set<PermissionAttribute> permAttributes = null;
+        List<String> ftPAs = getAttributes( entry, GlobalIds.FT_PERMISSION_ATTRIBUTE );
+
+        if ( ftPAs != null )
+        {
+        	permAttributes = new HashSet<PermissionAttribute>();
+
+            for ( String raw : ftPAs )
+            {
+                PermissionAttribute permAttribute = new ObjectFactory().createPermissionAttribute();
+                permAttribute.load( raw );
+                permAttributes.add( permAttribute );
+            }
+        }
+
+        return permAttributes;
+    }
+    */
+
+}

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/b6f3fef8/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
index c3e61ac..eaa25be 100644
--- a/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
+++ b/src/main/java/org/apache/directory/fortress/core/rest/AdminMgrRestImpl.java
@@ -29,7 +29,7 @@ import org.apache.directory.fortress.core.model.FortResponse;
 import org.apache.directory.fortress.core.model.PermGrant;
 import org.apache.directory.fortress.core.model.PermObj;
 import org.apache.directory.fortress.core.model.Permission;
-import org.apache.directory.fortress.core.model.PermissionAttribute;
+import org.apache.directory.fortress.core.model.PermissionAttributeSet;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.RoleConstraint;
 import org.apache.directory.fortress.core.model.RoleRelationship;
@@ -1244,25 +1244,25 @@ public final class AdminMgrRestImpl extends Manageable implements AdminMgr
 
 
 	@Override
-	public PermissionAttribute addPermissionAttribute(
-			PermissionAttribute permAttribute) throws SecurityException {
+	public RoleConstraint addRoleConstraint(UserRole uRole,
+			RoleConstraint roleConstraint) throws SecurityException {
 		// TODO Auto-generated method stub
 		return null;
 	}
 
 
 	@Override
-	public RoleConstraint addRoleConstraint(UserRole uRole,
+	public void removeRoleConstraint(UserRole uRole,
 			RoleConstraint roleConstraint) throws SecurityException {
 		// TODO Auto-generated method stub
-		return null;
+		
 	}
 
 
 	@Override
-	public void removeRoleConstraint(UserRole uRole,
-			RoleConstraint roleConstraint) throws SecurityException {
+	public PermissionAttributeSet addPermissionAttributeSet(
+			PermissionAttributeSet permAttributeSet) throws SecurityException {
 		// TODO Auto-generated method stub
-		
+		return null;
 	}
 }
\ No newline at end of file


[09/43] directory-fortress-core git commit: added constructor with attribute name

Posted by cp...@apache.org.
added constructor with attribute name


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/9d11f773
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/9d11f773
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/9d11f773

Branch: refs/heads/master
Commit: 9d11f773c6ea233dc5ce3cc28979e6c40bf47cbb
Parents: 074fa2a
Author: clp207 <cl...@psu.edu>
Authored: Mon Feb 1 10:01:18 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 .../directory/fortress/core/model/PermissionAttribute.java   | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/9d11f773/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
index 62c27d8..c374df0 100644
--- a/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
+++ b/src/main/java/org/apache/directory/fortress/core/model/PermissionAttribute.java
@@ -46,10 +46,16 @@ public class PermissionAttribute extends FortEntity implements Serializable {
     private List<String> validValues;
     private String defaultValue;
     
-    public PermissionAttribute(){
+    public PermissionAttribute()
+    {
     	
     }
     
+    public PermissionAttribute(String attributeName)
+    {
+    	this.attributeName = attributeName;
+    }
+    
     public String toFtPAString(){
     	String ftPA = attributeName + "?";
     	


[22/43] directory-fortress-core git commit: fixed schema version issue

Posted by cp...@apache.org.
fixed schema version issue


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/4db89025
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/4db89025
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/4db89025

Branch: refs/heads/master
Commit: 4db89025d6b6abd14a7e206c857af3df74e9340c
Parents: 1918048
Author: clp207 <cl...@psu.edu>
Authored: Fri Mar 18 11:32:23 2016 -0400
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:23 2016 -0400

----------------------------------------------------------------------
 ldap/schema/fortress.schema | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/4db89025/ldap/schema/fortress.schema
----------------------------------------------------------------------
diff --git a/ldap/schema/fortress.schema b/ldap/schema/fortress.schema
index 2776787..7b6a5ed 100644
--- a/ldap/schema/fortress.schema
+++ b/ldap/schema/fortress.schema
@@ -287,7 +287,7 @@ attributetype ( 1.3.6.1.4.1.1.38088.1.32
     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
 # A33: User Role Constraints, type STRING, MULTI VALUE
-attributetype ( 1.3.6.1.4.1.1.38088.1.32
+attributetype ( 1.3.6.1.4.1.1.38088.1.33
     NAME 'ftPADefaultOperator'
     DESC 'Fortress Permission Attribute Set Default Operator'
     EQUALITY caseIgnoreMatch


[18/43] directory-fortress-core git commit: fixed issue in schema

Posted by cp...@apache.org.
fixed issue in schema


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/d5a5d5aa
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/d5a5d5aa
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/d5a5d5aa

Branch: refs/heads/master
Commit: d5a5d5aa43cef3851feeee0e9a5eb5bc9da29c71
Parents: da6c893
Author: clp207 <cl...@psu.edu>
Authored: Thu Jan 28 15:26:39 2016 -0500
Committer: clp207 <cl...@psu.edu>
Committed: Wed Mar 30 15:44:22 2016 -0400

----------------------------------------------------------------------
 ldap/schema/fortress.schema | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/d5a5d5aa/ldap/schema/fortress.schema
----------------------------------------------------------------------
diff --git a/ldap/schema/fortress.schema b/ldap/schema/fortress.schema
index db06620..16b6152 100644
--- a/ldap/schema/fortress.schema
+++ b/ldap/schema/fortress.schema
@@ -339,7 +339,7 @@ objectclass    ( 1.3.6.1.4.1.38088.2.3
         ftRoles $
         ftUsers $
         ftType $
-        ftPA
+        ftPASet
         )
     )
 
@@ -418,7 +418,7 @@ objectClass ( 1.3.6.1.4.1.38088.2.8
 ## OC3: Fortress Permission Attribute Set Structural Object Class
 objectclass    ( 1.3.6.1.4.1.38088.2.9
     NAME 'ftAttributeSet'
-    DESC 'Fortress Permission Operation Structural Object Class'
+    DESC 'Fortress Attribute Set Structural Object Class'
     SUP organizationalrole
     STRUCTURAL
     MUST (