Find target domain object argument in a manner that works if nulls are presented for the domain object argument.
This commit is contained in:
parent
e75fc613b1
commit
07e2037251
|
@ -330,22 +330,20 @@ public class BasicAclEntryVoter implements AccessDecisionVoter,
|
|||
}
|
||||
|
||||
private Object getDomainObjectInstance(Object secureObject) {
|
||||
if (secureObject instanceof MethodInvocation) {
|
||||
MethodInvocation invocation = (MethodInvocation) secureObject;
|
||||
MethodInvocation invocation = (MethodInvocation) secureObject;
|
||||
|
||||
for (int i = 0; i < invocation.getArguments().length; i++) {
|
||||
Class argClass = invocation.getArguments()[i].getClass();
|
||||
// Check if this MethodInvocation provides the required argument
|
||||
Method method = invocation.getMethod();
|
||||
Class[] params = method.getParameterTypes();
|
||||
|
||||
if (processDomainObjectClass.isAssignableFrom(argClass)) {
|
||||
return invocation.getArguments()[i];
|
||||
}
|
||||
for (int i = 0; i < params.length; i++) {
|
||||
if (processDomainObjectClass.isAssignableFrom(params[i])) {
|
||||
return invocation.getArguments()[i];
|
||||
}
|
||||
|
||||
throw new AuthorizationServiceException("MethodInvocation: "
|
||||
+ invocation + " did not provide any argument of type: "
|
||||
+ processDomainObjectClass);
|
||||
}
|
||||
|
||||
return null; // should never happen
|
||||
throw new AuthorizationServiceException("MethodInvocation: "
|
||||
+ invocation + " did not provide any argument of type: "
|
||||
+ processDomainObjectClass);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue