diff options
author | jphillips | 2010-07-20 19:27:49 +0000 |
---|---|---|
committer | jphillips | 2010-07-20 19:27:49 +0000 |
commit | 34943726cea3d1599881a181c1347b7cc9890531 (patch) | |
tree | f2fe777e71a3cd12526448b68f8105151af4ceb8 /plugins | |
parent | beb3dfe0cf20b08d26f26c9ee759e76a73636854 (diff) | |
download | org.eclipse.osee-34943726cea3d1599881a181c1347b7cc9890531.tar.gz org.eclipse.osee-34943726cea3d1599881a181c1347b7cc9890531.tar.xz org.eclipse.osee-34943726cea3d1599881a181c1347b7cc9890531.zip |
Added access collector for the access control
Diffstat (limited to 'plugins')
2 files changed, 146 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.framework.access.test/src/org/eclipse/osee/framework/access/test/internal/AccessCollectorTest.java b/plugins/org.eclipse.osee.framework.access.test/src/org/eclipse/osee/framework/access/test/internal/AccessCollectorTest.java new file mode 100644 index 00000000000..fadc0a87225 --- /dev/null +++ b/plugins/org.eclipse.osee.framework.access.test/src/org/eclipse/osee/framework/access/test/internal/AccessCollectorTest.java @@ -0,0 +1,108 @@ +/* + * Created on Jul 20, 2010 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.framework.access.test.internal; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import junit.framework.Assert; +import org.eclipse.osee.framework.core.data.IAttributeType; +import org.eclipse.osee.framework.core.enums.CoreAttributeTypes; +import org.eclipse.osee.framework.core.enums.PermissionEnum; +import org.eclipse.osee.framework.core.model.DefaultBasicArtifact; +import org.eclipse.osee.framework.core.model.IBasicArtifact; +import org.eclipse.osee.framework.core.model.access.exp.AccessCollector; +import org.eclipse.osee.framework.core.model.access.exp.ArtifactAccessFilter; +import org.eclipse.osee.framework.core.model.access.exp.AttributeTypeAccessFilter; +import org.eclipse.osee.framework.core.model.access.exp.BranchAccessFilter; +import org.eclipse.osee.framework.core.model.access.exp.IAccessFilter; +import org.junit.Test; + +/** + * @author Jeff C. Phillips + */ +public class AccessCollectorTest { + + @Test + public void testAttrUseCase() { + IBasicArtifact<?> basicArtifact = new DefaultBasicArtifact(1, "1", "123"); + IAttributeType wordAttrType = CoreAttributeTypes.WORD_TEMPLATE_CONTENT; + IAttributeType phoneType = CoreAttributeTypes.PHONE; + List<IAccessFilter> filters = new ArrayList<IAccessFilter>(); + + BranchAccessFilter branchAccessFilter = new BranchAccessFilter(basicArtifact, PermissionEnum.READ); + ArtifactAccessFilter artifactAccessFilter = new ArtifactAccessFilter(basicArtifact, PermissionEnum.WRITE); + AttributeTypeAccessFilter wordTypeFilter = + new AttributeTypeAccessFilter(PermissionEnum.WRITE, basicArtifact, wordAttrType); + AttributeTypeAccessFilter phoneTypeFilter = + new AttributeTypeAccessFilter(PermissionEnum.READ, basicArtifact, phoneType); + + filters.add(artifactAccessFilter); + filters.add(branchAccessFilter); + filters.add(phoneTypeFilter); + filters.add(wordTypeFilter); + + AccessCollector collector = new AccessCollector(filters); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.WRITE).size() == 1); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.READ).size() == 2); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.DENY).isEmpty()); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.FULLACCESS).isEmpty()); + } + + @Test + public void testAttrUseCaseMissingBranchFilters() { + IBasicArtifact<?> basicArtifact = new DefaultBasicArtifact(1, "1", "123"); + IAttributeType wordAttrType = CoreAttributeTypes.WORD_TEMPLATE_CONTENT; + IAttributeType phoneType = CoreAttributeTypes.PHONE; + List<IAccessFilter> filters = new ArrayList<IAccessFilter>(); + + AttributeTypeAccessFilter wordTypeFilter = + new AttributeTypeAccessFilter(PermissionEnum.WRITE, basicArtifact, wordAttrType); + AttributeTypeAccessFilter phoneTypeFilter = + new AttributeTypeAccessFilter(PermissionEnum.READ, basicArtifact, phoneType); + + filters.add(phoneTypeFilter); + filters.add(wordTypeFilter); + + AccessCollector collector = new AccessCollector(filters); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.WRITE).size() == 1); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.READ).size() == 2); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.DENY).isEmpty()); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.FULLACCESS).isEmpty()); + } + + @Test + public void testAttrUseCaseMissingAttrFilters() { + IBasicArtifact<?> basicArtifact = new DefaultBasicArtifact(1, "1", "123"); + IAttributeType wordAttrType = CoreAttributeTypes.WORD_TEMPLATE_CONTENT; + IAttributeType phoneType = CoreAttributeTypes.PHONE; + List<IAccessFilter> filters = new ArrayList<IAccessFilter>(); + + BranchAccessFilter branchAccessFilter = new BranchAccessFilter(basicArtifact, PermissionEnum.READ); + ArtifactAccessFilter artifactAccessFilter = new ArtifactAccessFilter(basicArtifact, PermissionEnum.WRITE); + + filters.add(artifactAccessFilter); + filters.add(branchAccessFilter); + + AccessCollector collector = new AccessCollector(filters); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.WRITE).size() == 2); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.READ).size() == 2); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.DENY).isEmpty()); + Assert.assertTrue(collector.getAttributeTypes(basicArtifact, Arrays.asList(wordAttrType, phoneType), + PermissionEnum.FULLACCESS).isEmpty()); + } +} diff --git a/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessCollector.java b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessCollector.java new file mode 100644 index 00000000000..a444c0447b8 --- /dev/null +++ b/plugins/org.eclipse.osee.framework.core.model/src/org/eclipse/osee/framework/core/model/access/exp/AccessCollector.java @@ -0,0 +1,38 @@ +/* + * Created on Jul 20, 2010 + * + * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE + */ +package org.eclipse.osee.framework.core.model.access.exp; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import org.eclipse.osee.framework.core.data.IAttributeType; +import org.eclipse.osee.framework.core.enums.PermissionEnum; +import org.eclipse.osee.framework.core.model.IBasicArtifact; + +/** + * @author Jeff C. Phillips + */ +public class AccessCollector { + + private final Collection<IAccessFilter> filters; + + public AccessCollector(Collection<IAccessFilter> filters) { + this.filters = filters; + } + + public List<IAttributeType> getAttributeTypes(IBasicArtifact<?> artifact, Collection<IAttributeType> attrs, PermissionEnum permission) { + List<IAttributeType> validAttrs = new ArrayList<IAttributeType>(); + AccessFilterChain chain = new AccessFilterChain(); + chain.addAll(filters); + + for (IAttributeType type : attrs) { + if (chain.doFilter(artifact, type, permission, null)) { + validAttrs.add(type); + } + } + return validAttrs; + } +} |