01: /*
02: * Copyright 2008 Outerthought bvba and Schaubroeck nv
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16: package org.outerj.daisy.repository.acl;
17:
18: import org.outerx.daisy.x10.AccessDetailsDocument;
19:
20: import java.util.Set;
21:
22: /**
23: * AccessDetails can be part of the Acl model
24: * ({@link Acl} -> {@link AclObject} -> {@link AclEntry} -> AccessDetails),
25: * and also of {@link AclResultInfo}.
26: *
27: * <p>When used as part of {@link AclResultInfo}, the {@link AclDetailPermission permissions} will
28: * all be set to either {@link AclActionType#GRANT} or {@link AclActionType#DENY}
29: */
30: public interface AccessDetails {
31: /**
32: * Returns true if these access details don't limit any access, in
33: * other words if they are equivalent to no details at all.
34: */
35: boolean isFullAccess();
36:
37: /**
38: * Returns true if these access details don't limit any access,
39: * except maybe for the live version restriction.
40: */
41: boolean isFullLiveAccess();
42:
43: void set(AclDetailPermission permission, AclActionType action);
44:
45: AclActionType get(AclDetailPermission permission);
46:
47: /**
48: * Shortcut for "accessDetails.get(permission) == AclActionType.GRANT".
49: */
50: boolean isGranted(AclDetailPermission permission);
51:
52: /**
53: * Returns true if the {@link AclDetailPermission#NON_LIVE} permission
54: * is not granted.
55: */
56: boolean liveOnly();
57:
58: boolean canAccessField(String fieldTypeName);
59:
60: void addAccessibleField(String fieldTypeName);
61:
62: /**
63: * Returns the names of the accessible fields.
64: * This is only relevant when the {@link AclDetailPermission#ALL_FIELDS} permission
65: * is denied.
66: * This method never returns null, but rather an empty set.
67: * The returned sets are unmodifiable.
68: */
69: Set<String> getAccessibleFields();
70:
71: void clearAccessibleFields();
72:
73: boolean canAccessPart(String partTypeName);
74:
75: Set<String> getAccessibleParts();
76:
77: void addAccessiblePart(String partTypeName);
78:
79: void clearAccessibleParts();
80:
81: /**
82: * Overwrites permissions in this access details object with permissions
83: * from the specified access details object, if they are not {@link org.outerj.daisy.repository.acl.AclActionType#DO_NOTHING}.
84: */
85: void overwrite(AccessDetails accessDetails);
86:
87: /**
88: * Make this AccessDetails more permissive by adding all the permissions allowed
89: * by the given AccessDetails object.
90: */
91: void makeUnion(AccessDetails accessDetails);
92:
93: AccessDetailsDocument getXml();
94:
95: void setFromXml(AccessDetailsDocument.AccessDetails detailsXml);
96: }
|