/** * Adds a permitted action. * * @param action the permitted action * @return the builder */ public Builder addAction(AclAction action) { mActions.add(action); return this; }
/** * Sets a copy of actions for this entry. * * @param actions the actions to be copied from * @return the builder */ public Builder setActions(AclActions actions) { for (AclAction action : actions.getActions()) { mActions.add(action); } return this; }
/** * @return the set of {@link AclAction}s implied by this mode */ public AclActions toAclActions() { AclActions actions = new AclActions(); if (imply(READ)) { actions.add(AclAction.READ); } if (imply(WRITE)) { actions.add(AclAction.WRITE); } if (imply(EXECUTE)) { actions.add(AclAction.EXECUTE); } return actions; } }
/** * @param actions the protobuf representation of {@link AclActions} * @return the {@link AclActions} decoded from the protobuf representation */ public static AclActions fromProto(Acl.AclActions actions) { AclActions ret = new AclActions(); for (Acl.AclAction action : actions.getActionsList()) { ret.add(fromProto(action)); } return ret; }
/** * Update the mask to be the union of owning group entry, named user entry and named group entry. * @param groupActions the group entry to be integrated into the mask */ public void updateMask(AclActions groupActions) { AclActions result = new AclActions(groupActions); for (Map.Entry<String, AclActions> kv : mNamedUserActions.entrySet()) { AclActions userAction = kv.getValue(); result.merge(userAction); for (AclAction action : AclAction.values()) { if (result.contains(action) || userAction.contains(action)) { result.add(action); } } } for (Map.Entry<String, AclActions> kv : mNamedGroupActions.entrySet()) { AclActions userAction = kv.getValue(); result.merge(userAction); for (AclAction action : AclAction.values()) { if (result.contains(action) || userAction.contains(action)) { result.add(action); } } } mMaskActions = result; }
actions.add(AclAction.READ); Assert.assertEquals(Mode.Bits.READ, actions.toModeBits()); actions.add(AclAction.WRITE); Assert.assertEquals(Mode.Bits.WRITE, actions.toModeBits()); actions.add(AclAction.EXECUTE); Assert.assertEquals(Mode.Bits.EXECUTE, actions.toModeBits()); actions.add(AclAction.READ); actions.add(AclAction.WRITE); Assert.assertEquals(Mode.Bits.READ_WRITE, actions.toModeBits()); actions.add(AclAction.READ); actions.add(AclAction.EXECUTE); Assert.assertEquals(Mode.Bits.READ_EXECUTE, actions.toModeBits()); actions.add(AclAction.WRITE); actions.add(AclAction.EXECUTE); Assert.assertEquals(Mode.Bits.WRITE_EXECUTE, actions.toModeBits()); actions.add(AclAction.READ); actions.add(AclAction.WRITE); actions.add(AclAction.EXECUTE); Assert.assertEquals(Mode.Bits.ALL, actions.toModeBits());
/** * Tests constructor contract. */ @Test public void constructor() { AclActions actions = new AclActions(); Assert.assertTrue(actions.getActions().isEmpty()); AclActions copiedActions = new AclActions(actions); copiedActions.add(AclAction.READ); Assert.assertEquals(1, copiedActions.getActions().size()); Assert.assertEquals(0, actions.getActions().size()); }
/** * Tests {@link AclActions#contains(AclAction)}. */ @Test public void contains() { AclActions actions = new AclActions(); Assert.assertFalse(actions.contains(AclAction.READ)); Assert.assertFalse(actions.contains(AclAction.WRITE)); Assert.assertFalse(actions.contains(AclAction.EXECUTE)); actions.add(AclAction.READ); Assert.assertTrue(actions.contains(AclAction.READ)); actions.add(AclAction.WRITE); Assert.assertTrue(actions.contains(AclAction.WRITE)); actions.add(AclAction.EXECUTE); Assert.assertTrue(actions.contains(AclAction.EXECUTE)); }
/** * Tests {@link AclActions#merge(AclActions)}. */ @Test public void merge() { AclActions actions = new AclActions(); Assert.assertEquals(Mode.Bits.NONE, actions.toModeBits()); // Merge empty actions. actions.merge(new AclActions()); Assert.assertEquals(Mode.Bits.NONE, actions.toModeBits()); // Merge read and write actions. AclActions readWrite = new AclActions(); readWrite.add(AclAction.READ); readWrite.add(AclAction.WRITE); actions.merge(readWrite); Assert.assertEquals(Mode.Bits.READ_WRITE, actions.toModeBits()); // Merge execute action. AclActions execute = new AclActions(); execute.add(AclAction.EXECUTE); actions.merge(execute); Assert.assertEquals(Mode.Bits.ALL, actions.toModeBits()); } }