/** * Creates a Permissions view on top of the document. */ public static DocumentBasedRoles create(final ObservableMutableDocument<?, ?, ?> document) { return document.with(new Method<DocumentBasedRoles>() { @Override public <N, E extends N, T extends N> DocumentBasedRoles exec( ObservableMutableDocument<N, E, T> doc) { return new DocumentBasedRoles( DocumentBasedElementList.create(DefaultDocumentEventRouter.create(doc), doc.getDocumentElement(), ASSIGN_TAG, DocumentBasedAssignment.<E>factory())); } }); }
@Override public Role getRole(ParticipantId participant) { Assignment assignment = getAssignment(participant); if (assignment != null) { Role role = assignment.getRole(); if (role != null) { return role; } } return Policies.DEFAULT_ROLE; }
@Override public boolean isPermitted(ParticipantId participant, Capability capability) { return getRole(participant).isPermitted(capability); }
public void testOnlyPersistsChangedRole() { ObservableDocument doc = BasicFactories.observableDocumentProvider().parse(""); DocumentBasedRoles permissions = DocumentBasedRoles.create(doc); permissions.assign(p("public@a.gwave.com"), Role.READ_ONLY); assertEquals("<assign address=\"public@a.gwave.com\" role=\"READ_ONLY\"/>", doc.toXmlString()); }
@Override protected ObservableRoles getRoles() { ObservableDocument doc = BasicFactories.observableDocumentProvider().parse(""); DocumentBasedRoles permissions = DocumentBasedRoles.create(doc); return permissions; } }
@Override protected ObservableRoles getRoles() { ObservableDocument doc = BasicFactories.observableDocumentProvider().parse(""); DocumentBasedRoles permissions = DocumentBasedRoles.create(doc); return permissions; } }
public void testOnlyPersistsChangedRole() { ObservableDocument doc = BasicFactories.observableDocumentProvider().parse(""); DocumentBasedRoles permissions = DocumentBasedRoles.create(doc); permissions.assign(p("public@a.gwave.com"), Role.READ_ONLY); assertEquals("<assign address=\"public@a.gwave.com\" role=\"READ_ONLY\"/>", doc.toXmlString()); }