/** * 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; }
/** * 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 string representation for the CLI */ public String toCliString() { return toModeBits().toString(); }
/** * @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; } }
/** * 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()); } }
/** * 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()); }
AclActions actions = new AclActions(); Assert.assertEquals(Mode.Bits.NONE, actions.toModeBits()); actions = new AclActions(); actions.add(AclAction.READ); Assert.assertEquals(Mode.Bits.READ, actions.toModeBits()); actions = new AclActions(); actions.add(AclAction.WRITE); Assert.assertEquals(Mode.Bits.WRITE, actions.toModeBits()); actions = new AclActions(); actions.add(AclAction.EXECUTE); Assert.assertEquals(Mode.Bits.EXECUTE, actions.toModeBits()); actions = new AclActions(); actions.add(AclAction.READ); actions.add(AclAction.WRITE); Assert.assertEquals(Mode.Bits.READ_WRITE, actions.toModeBits()); actions = new AclActions(); actions.add(AclAction.READ); actions.add(AclAction.EXECUTE); Assert.assertEquals(Mode.Bits.READ_EXECUTE, actions.toModeBits()); actions = new AclActions(); actions.add(AclAction.WRITE); actions.add(AclAction.EXECUTE); Assert.assertEquals(Mode.Bits.WRITE_EXECUTE, actions.toModeBits());
/** * 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#updateByModeBits(Mode.Bits)}. */ @Test public void updateByModeBits() { AclActions actions = new AclActions(); actions.updateByModeBits(Mode.Bits.NONE); Assert.assertEquals(Mode.Bits.NONE, actions.toModeBits()); actions = new AclActions(); actions.updateByModeBits(Mode.Bits.READ); Assert.assertEquals(Mode.Bits.READ, actions.toModeBits()); actions = new AclActions(); actions.updateByModeBits(Mode.Bits.WRITE); Assert.assertEquals(Mode.Bits.WRITE, actions.toModeBits()); actions = new AclActions(); actions.updateByModeBits(Mode.Bits.EXECUTE); Assert.assertEquals(Mode.Bits.EXECUTE, actions.toModeBits()); actions = new AclActions(); actions.updateByModeBits(Mode.Bits.READ_WRITE); Assert.assertEquals(Mode.Bits.READ_WRITE, actions.toModeBits()); actions = new AclActions(); actions.updateByModeBits(Mode.Bits.READ_EXECUTE); Assert.assertEquals(Mode.Bits.READ_EXECUTE, actions.toModeBits()); actions = new AclActions(); actions.updateByModeBits(Mode.Bits.WRITE_EXECUTE); Assert.assertEquals(Mode.Bits.WRITE_EXECUTE, actions.toModeBits()); actions = new AclActions(); actions.updateByModeBits(Mode.Bits.ALL); Assert.assertEquals(Mode.Bits.ALL, actions.toModeBits()); }
return new AclActions(getOwningUserActions()); AclActions result = new AclActions(actions); result.mask(mExtendedEntries.mMaskActions); return result; AclActions groupActions = new AclActions(); if (groups.contains(mOwningGroup)) { isGroupKnown = true; groupActions.merge(getOwningGroupActions()); if (actions != null) { isGroupKnown = true; groupActions.merge(actions); groupActions.mask(mExtendedEntries.mMaskActions);
/** * @return a copy of actions */ public AclActions getActions() { return new AclActions(mActions); }
/** * Tests {@link Mode.Bits#toAclActionSet()}. */ @Test public void toAclActions() { for (Mode.Bits bits : Mode.Bits.values()) { Assert.assertEquals(bits, new AclActions(bits.toAclActionSet()).toModeBits()); } } }
AclActions groupAction = new AclActions(); groupAction.updateByModeBits(defaultMode.getGroupBits()); mask.mask(groupAction);
@Override public String toString() { return MoreObjects.toStringHelper(this) .add("actions", getActions()) .toString(); }
/** * Adds a permitted action. * * @param action the permitted action * @return the builder */ public Builder addAction(AclAction action) { mActions.add(action); return this; }
/** * @return the representation of the permitted actions in the format of {@link Mode.Bits} */ public Mode.Bits toModeBits() { Mode.Bits bits = Mode.Bits.NONE; if (contains(AclAction.READ)) { bits = bits.or(Mode.Bits.READ); } if (contains(AclAction.WRITE)) { bits = bits.or(Mode.Bits.WRITE); } if (contains(AclAction.EXECUTE)) { bits = bits.or(Mode.Bits.EXECUTE); } return bits; } }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof ExtendedACLEntries)) { return false; } ExtendedACLEntries that = (ExtendedACLEntries) o; return mNamedUserActions.equals(that.mNamedUserActions) && mNamedGroupActions.equals(that.mNamedGroupActions) && mMaskActions.equals(that.mMaskActions); }
/** * @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; }
/** * Creates a new builder where type is null, subject is an empty string, and no action is * permitted. */ public Builder() { mSubject = ""; mActions = new AclActions(); }
/** * @param actions the {@link AclActions} * @return the protobuf representation of {@link AclActions} */ public static Acl.AclActions toProto(AclActions actions) { Acl.AclActions.Builder builder = Acl.AclActions.newBuilder(); for (AclAction action : actions.getActions()) { Acl.AclAction pAction = toProto(action); builder.addActions(pAction); } return builder.build(); }