|
@@ -100,10 +100,17 @@ public class BasicAclEntryAfterInvocationProvider
|
|
|
protected MessageSourceAccessor messages = AcegiMessageSource.getAccessor();
|
|
|
private String processConfigAttribute = "AFTER_ACL_READ";
|
|
|
private int[] requirePermission = {SimpleAclEntry.READ};
|
|
|
+ private Class processDomainObjectClass = Object.class;
|
|
|
|
|
|
//~ Methods ================================================================
|
|
|
|
|
|
- public void afterPropertiesSet() throws Exception {
|
|
|
+ public void setProcessDomainObjectClass(Class processDomainObjectClass) {
|
|
|
+ Assert.notNull(processDomainObjectClass,
|
|
|
+ "processDomainObjectClass cannot be set to null");
|
|
|
+ this.processDomainObjectClass = processDomainObjectClass;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void afterPropertiesSet() throws Exception {
|
|
|
Assert.notNull(processConfigAttribute,
|
|
|
"A processConfigAttribute is mandatory");
|
|
|
Assert.notNull(aclManager, "An aclManager is mandatory");
|
|
@@ -134,6 +141,14 @@ public class BasicAclEntryAfterInvocationProvider
|
|
|
|
|
|
return null;
|
|
|
}
|
|
|
+
|
|
|
+ if (!processDomainObjectClass.isAssignableFrom(returnedObject.getClass())) {
|
|
|
+ if (logger.isDebugEnabled()) {
|
|
|
+ logger.debug("Return object is not applicable for this provider, skipping");
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
|
|
|
AclEntry[] acls = aclManager.getAcls(returnedObject,
|
|
|
authentication);
|