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) {
|
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++) {
|
// Check if this MethodInvocation provides the required argument
|
||||||
Class argClass = invocation.getArguments()[i].getClass();
|
Method method = invocation.getMethod();
|
||||||
|
Class[] params = method.getParameterTypes();
|
||||||
|
|
||||||
if (processDomainObjectClass.isAssignableFrom(argClass)) {
|
for (int i = 0; i < params.length; i++) {
|
||||||
return invocation.getArguments()[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