Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.osee.framework.access.test/src/org/eclipse/osee/framework/access/test/internal/AccessFilterChainTest.java55
-rw-r--r--plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/AccessData.java55
-rw-r--r--plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessFilterChain.java17
-rw-r--r--plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/ArtifactAccessFilter.java18
-rw-r--r--plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AttributeTypeAccessFilter.java22
-rw-r--r--plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/BranchAccessFilter.java16
-rw-r--r--plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/IAccessFilter.java3
7 files changed, 115 insertions, 71 deletions
diff --git a/plugins/org.eclipse.osee.framework.access.test/src/org/eclipse/osee/framework/access/test/internal/AccessFilterChainTest.java b/plugins/org.eclipse.osee.framework.access.test/src/org/eclipse/osee/framework/access/test/internal/AccessFilterChainTest.java
index c32e2ed9dfc..3e78f04042d 100644
--- a/plugins/org.eclipse.osee.framework.access.test/src/org/eclipse/osee/framework/access/test/internal/AccessFilterChainTest.java
+++ b/plugins/org.eclipse.osee.framework.access.test/src/org/eclipse/osee/framework/access/test/internal/AccessFilterChainTest.java
@@ -30,55 +30,74 @@ import org.junit.Test;
public class AccessFilterChainTest {
@Test
- public void testUseCase1() {
+ public void testUseCase() {
//Can we edit this attribute on an artifact
AccessFilterChain chain = new AccessFilterChain();
IBasicArtifact<?> basicArtifact = new DefaultBasicArtifact(1, "1", "123");
- IAttributeType wordAttribute = CoreAttributeTypes.WORD_TEMPLATE_CONTENT;
+ IAttributeType attributeType = CoreAttributeTypes.WORD_TEMPLATE_CONTENT;
- BranchAccessFilter branchAccessFilter = new BranchAccessFilter(PermissionEnum.READ);
- ArtifactAccessFilter artifactAccessFilter = new ArtifactAccessFilter(PermissionEnum.WRITE, basicArtifact);
+ BranchAccessFilter branchAccessFilter = new BranchAccessFilter(basicArtifact, PermissionEnum.READ);
+ ArtifactAccessFilter artifactAccessFilter = new ArtifactAccessFilter(basicArtifact, PermissionEnum.WRITE);
AttributeTypeAccessFilter attributeTypeAccessFilter =
- new AttributeTypeAccessFilter(PermissionEnum.WRITE, basicArtifact);
+ new AttributeTypeAccessFilter(PermissionEnum.DENY, basicArtifact, attributeType);
chain.add(artifactAccessFilter);
chain.add(branchAccessFilter);
+ chain.add(attributeTypeAccessFilter);
PermissionEnum agrPermission = null;
- Assert.assertTrue(chain.doFilter(basicArtifact, PermissionEnum.READ, agrPermission));
- Assert.assertTrue(chain.doFilter(basicArtifact, PermissionEnum.WRITE, agrPermission));
+ Assert.assertFalse(chain.doFilter(basicArtifact, attributeTypeAccessFilter, PermissionEnum.WRITE, agrPermission));
+ Assert.assertTrue(chain.doFilter(basicArtifact, basicArtifact, PermissionEnum.WRITE, agrPermission));
}
@Test
- public void testChain() {
+ public void testWrongArtifactUseCase() {
AccessFilterChain chain = new AccessFilterChain();
IBasicArtifact<?> basicArtifact = new DefaultBasicArtifact(1, "1", "123");
+ IBasicArtifact<?> basicArtifact2 = new DefaultBasicArtifact(2, "2", "456");
+ IAttributeType attributeType = CoreAttributeTypes.WORD_TEMPLATE_CONTENT;
- BranchAccessFilter branchAccessFilter = new BranchAccessFilter(PermissionEnum.READ);
- ArtifactAccessFilter artifactAccessFilter = new ArtifactAccessFilter(PermissionEnum.WRITE);
+ BranchAccessFilter branchAccessFilter = new BranchAccessFilter(basicArtifact, PermissionEnum.READ);
+ ArtifactAccessFilter artifactAccessFilter = new ArtifactAccessFilter(basicArtifact, PermissionEnum.WRITE);
AttributeTypeAccessFilter attributeTypeAccessFilter =
- new AttributeTypeAccessFilter(PermissionEnum.WRITE, basicArtifact);
+ new AttributeTypeAccessFilter(PermissionEnum.DENY, basicArtifact, attributeType);
chain.add(artifactAccessFilter);
chain.add(branchAccessFilter);
+ chain.add(attributeTypeAccessFilter);
PermissionEnum agrPermission = null;
- Assert.assertTrue(chain.doFilter(basicArtifact, PermissionEnum.READ, agrPermission));
- Assert.assertTrue(chain.doFilter(basicArtifact, PermissionEnum.WRITE, agrPermission));
+ Assert.assertFalse(chain.doFilter(basicArtifact2, attributeTypeAccessFilter, PermissionEnum.WRITE, agrPermission));
}
@Test
- public void testChainDeny() {
+ public void testChain() {
AccessFilterChain chain = new AccessFilterChain();
- BranchAccessFilter branchAccessFilter = new BranchAccessFilter(PermissionEnum.DENY);
- ArtifactAccessFilter artifactAccessFilter = new ArtifactAccessFilter(PermissionEnum.WRITE);
+ IBasicArtifact<?> basicArtifact = new DefaultBasicArtifact(1, "1", "123");
+
+ BranchAccessFilter branchAccessFilter = new BranchAccessFilter(basicArtifact, PermissionEnum.READ);
+ ArtifactAccessFilter artifactAccessFilter = new ArtifactAccessFilter(basicArtifact, PermissionEnum.WRITE);
chain.add(artifactAccessFilter);
chain.add(branchAccessFilter);
+ PermissionEnum agrPermission = null;
+ Assert.assertTrue(chain.doFilter(basicArtifact, basicArtifact, PermissionEnum.READ, agrPermission));
+ Assert.assertTrue(chain.doFilter(basicArtifact, basicArtifact, PermissionEnum.WRITE, agrPermission));
+ }
+
+ @Test
+ public void testChainDeny() {
+ AccessFilterChain chain = new AccessFilterChain();
IBasicArtifact<?> basicArtifact = new DefaultBasicArtifact(1, "1", "123");
+ BranchAccessFilter branchAccessFilter = new BranchAccessFilter(basicArtifact, PermissionEnum.DENY);
+ ArtifactAccessFilter artifactAccessFilter = new ArtifactAccessFilter(basicArtifact, PermissionEnum.WRITE);
+
+ chain.add(artifactAccessFilter);
+ chain.add(branchAccessFilter);
+
PermissionEnum agrPermission = null;
- Assert.assertFalse(chain.doFilter(basicArtifact, PermissionEnum.READ, agrPermission));
- Assert.assertFalse(chain.doFilter(basicArtifact, PermissionEnum.WRITE, agrPermission));
+ Assert.assertFalse(chain.doFilter(basicArtifact, basicArtifact, PermissionEnum.READ, agrPermission));
+ Assert.assertFalse(chain.doFilter(basicArtifact, basicArtifact, PermissionEnum.WRITE, agrPermission));
}
}
diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/AccessData.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/AccessData.java
index 80afe5d7659..17c1d56cb87 100644
--- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/AccessData.java
+++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/AccessData.java
@@ -10,46 +10,35 @@
*******************************************************************************/
package org.eclipse.osee.framework.core.model;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.eclipse.osee.framework.core.data.IArtifactType;
-import org.eclipse.osee.framework.core.data.IAttributeType;
-import org.eclipse.osee.framework.core.data.IRelationType;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.osee.framework.core.data.IArtifactType;
+import org.eclipse.osee.framework.core.data.IAttributeType;
+import org.eclipse.osee.framework.core.data.IRelationType;
import org.eclipse.osee.framework.core.enums.PermissionEnum;
-import org.eclipse.osee.framework.core.model.access.ArtifactTypeFilter;
-import org.eclipse.osee.framework.core.model.access.AttributeTypeFilter;
-import org.eclipse.osee.framework.core.model.access.IAcceptFilter;
-import org.eclipse.osee.framework.core.model.access.IAccessControllable;
-import org.eclipse.osee.framework.jdk.core.type.DoubleKeyHashMap;
-import org.eclipse.osee.framework.jdk.core.type.Pair;
-
+import org.eclipse.osee.framework.core.model.access.ArtifactTypeFilter;
+import org.eclipse.osee.framework.core.model.access.AttributeTypeFilter;
+import org.eclipse.osee.framework.core.model.access.IAcceptFilter;
+import org.eclipse.osee.framework.jdk.core.type.DoubleKeyHashMap;
+import org.eclipse.osee.framework.jdk.core.type.Pair;
+
/**
* @author Jeff C. Phillips
* @author Roberto E. Escobar
*/
-public class AccessData {
-
- private final DoubleKeyHashMap<IBasicArtifact<?>, Object, PermissionEnum> artifactPermissions;
- private final Map<IAccessControllable, PermissionEnum> objectPermissions;
-
- public AccessData() {
- this.artifactPermissions = new DoubleKeyHashMap<IBasicArtifact<?>, Object, PermissionEnum>();
- this.objectPermissions = new HashMap<IAccessControllable, PermissionEnum>();
- }
-
- public void add(IAccessControllable accessObject, PermissionEnum permission) {
- objectPermissions.put(accessObject, permission);
- }
+public class AccessData {
- //////--------------------------------------------------------------------
+ private final DoubleKeyHashMap<IBasicArtifact<?>, Object, PermissionEnum> artifactPermissions;
- public void add(Object object, PermissionEnum permission) {
- artifactPermissions.put(null, object, permission);
- }
+ public AccessData() {
+ this.artifactPermissions = new DoubleKeyHashMap<IBasicArtifact<?>, Object, PermissionEnum>();
+ }
+
+ public void add(Object object, PermissionEnum permission) {
+ artifactPermissions.put(null, object, permission);
+ }
public void add(IBasicArtifact<?> artifact, Object object, PermissionEnum permission) {
artifactPermissions.put(artifact, object, permission);
diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessFilterChain.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessFilterChain.java
index 373d76d2a35..d67faf7e60d 100644
--- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessFilterChain.java
+++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessFilterChain.java
@@ -5,10 +5,12 @@
*/
package org.eclipse.osee.framework.core.model.access.exp;
+import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.osee.framework.core.enums.PermissionEnum;
+import org.eclipse.osee.framework.core.model.IBasicArtifact;
public class AccessFilterChain {
private final List<IAccessFilter> filters;
@@ -27,16 +29,25 @@ public class AccessFilterChain {
filters.add(filter);
}
- public boolean doFilter(Object object, PermissionEnum toPermission, PermissionEnum agrPermission) {
+ public boolean doFilter(IBasicArtifact<?> artifact, Object object, PermissionEnum toPermission, PermissionEnum agrPermission) {
+ boolean toReturn = false;
Collections.sort(filters);
for (IAccessFilter filter : filters) {
if (filter.acceptToObject(object)) {
- agrPermission = filter.filter(object, toPermission, agrPermission, this);
+ agrPermission = filter.filter(artifact, object, toPermission, agrPermission, this);
} else {
break;
}
}
- return agrPermission.matches(toPermission);
+
+ if (agrPermission != null) {
+ toReturn = agrPermission.matches(toPermission);
+ }
+ return toReturn;
+ }
+
+ public void addAll(Collection<IAccessFilter> filtersToAdd) {
+ filters.addAll(filtersToAdd);
}
}
diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/ArtifactAccessFilter.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/ArtifactAccessFilter.java
index 6ba2dd99c76..f9d79c92081 100644
--- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/ArtifactAccessFilter.java
+++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/ArtifactAccessFilter.java
@@ -11,10 +11,10 @@ import org.eclipse.osee.framework.core.model.IBasicArtifact;
public class ArtifactAccessFilter extends AbstractAccessFilter {
- private PermissionEnum artifactPermission;
+ private final PermissionEnum artifactPermission;
private final IBasicArtifact<?> artifact;
- public ArtifactAccessFilter(PermissionEnum artifactPermission, IBasicArtifact<?> artifact) {
+ public ArtifactAccessFilter(IBasicArtifact<?> artifact, PermissionEnum artifactPermission) {
super();
this.artifactPermission = artifactPermission;
this.artifact = artifact;
@@ -26,15 +26,21 @@ public class ArtifactAccessFilter extends AbstractAccessFilter {
}
@Override
- public PermissionEnum filter(Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) {
- if (agrPermission == PermissionEnum.DENY || artifactPermission == null) {
- artifactPermission = agrPermission;
+ public PermissionEnum filter(IBasicArtifact<?> artifact, Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) {
+ PermissionEnum toReturn = null;
+
+ if (this.artifact.equals(artifact)) {
+ if (agrPermission != PermissionEnum.DENY && artifactPermission != null) {
+ agrPermission = artifactPermission;
+ }
+ toReturn = agrPermission;
}
- return artifactPermission;
+ return toReturn;
}
@Override
public boolean acceptToObject(Object object) {
+ //Return false if the object to be checked is a branch.
return !(object instanceof IOseeBranch);
}
}
diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AttributeTypeAccessFilter.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AttributeTypeAccessFilter.java
index 521b233d240..df523311858 100644
--- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AttributeTypeAccessFilter.java
+++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AttributeTypeAccessFilter.java
@@ -7,18 +7,19 @@ package org.eclipse.osee.framework.core.model.access.exp;
import org.eclipse.osee.framework.core.data.IAttributeType;
import org.eclipse.osee.framework.core.enums.PermissionEnum;
+import org.eclipse.osee.framework.core.model.Branch;
import org.eclipse.osee.framework.core.model.IBasicArtifact;
public class AttributeTypeAccessFilter extends AbstractAccessFilter {
private final PermissionEnum permission;
private final IBasicArtifact<?> artifact;
- private final IAttributeType attribute;
+ private final IAttributeType type;
- public AttributeTypeAccessFilter(PermissionEnum permission, IBasicArtifact<?> artifact, IAttributeType attribute) {
+ public AttributeTypeAccessFilter(PermissionEnum permission, IBasicArtifact<?> artifact, IAttributeType type) {
super();
this.permission = permission;
this.artifact = artifact;
- this.attribute = attribute;
+ this.type = type;
}
@Override
@@ -28,12 +29,21 @@ public class AttributeTypeAccessFilter extends AbstractAccessFilter {
@Override
public boolean acceptToObject(Object object) {
- return true;
+ //Return false if the object to be checked is a branch or artifact.
+ return (!(object instanceof Branch) && !(object instanceof IBasicArtifact<?>));
}
@Override
- public PermissionEnum filter(Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) {
- return null;
+ public PermissionEnum filter(IBasicArtifact<?> artifact, Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) {
+ PermissionEnum toReturn = agrPermission;
+
+ if (this.artifact.equals(artifact) && type.equals(object)) {
+ if (agrPermission != PermissionEnum.DENY && permission != null) {
+ agrPermission = permission;
+ toReturn = agrPermission;
+ }
+ }
+ return toReturn;
}
}
diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/BranchAccessFilter.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/BranchAccessFilter.java
index 578020da01c..239899dd71e 100644
--- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/BranchAccessFilter.java
+++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/BranchAccessFilter.java
@@ -6,12 +6,14 @@
package org.eclipse.osee.framework.core.model.access.exp;
import org.eclipse.osee.framework.core.enums.PermissionEnum;
+import org.eclipse.osee.framework.core.model.IBasicArtifact;
public class BranchAccessFilter extends AbstractAccessFilter {
private final PermissionEnum branchPermission;
+ private final IBasicArtifact<?> artifact;
- public BranchAccessFilter(PermissionEnum branchPermission) {
- super();
+ public BranchAccessFilter(IBasicArtifact<?> artifact, PermissionEnum branchPermission) {
+ this.artifact = artifact;
this.branchPermission = branchPermission;
}
@@ -21,8 +23,14 @@ public class BranchAccessFilter extends AbstractAccessFilter {
}
@Override
- public PermissionEnum filter(Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) {
- return branchPermission;
+ public PermissionEnum filter(IBasicArtifact<?> artifact, Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain) {
+ PermissionEnum toReturn = agrPermission;
+
+ if (this.artifact.equals(artifact)) {
+ agrPermission = branchPermission;
+ }
+
+ return toReturn;
}
@Override
diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/IAccessFilter.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/IAccessFilter.java
index 29426bfa37e..b5a29d45042 100644
--- a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/IAccessFilter.java
+++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/IAccessFilter.java
@@ -6,11 +6,12 @@
package org.eclipse.osee.framework.core.model.access.exp;
import org.eclipse.osee.framework.core.enums.PermissionEnum;
+import org.eclipse.osee.framework.core.model.IBasicArtifact;
public interface IAccessFilter extends Comparable<IAccessFilter> {
int getRank();
boolean acceptToObject(Object object);
- PermissionEnum filter(Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain);
+ PermissionEnum filter(IBasicArtifact<?> artifact, Object object, PermissionEnum toPermission, PermissionEnum agrPermission, AccessFilterChain filterChain);
}

Back to the top