Gracefully handle null ContextHolder / Authentication etc.

This commit is contained in:
Ben Alex 2004-12-03 06:42:26 +00:00
parent 7a4a46cc7b
commit e75fc613b1
2 changed files with 33 additions and 25 deletions

View File

@ -74,30 +74,39 @@ public class AuthenticationSimpleHttpInvokerRequestExecutor
throws IOException, AuthenticationCredentialsNotFoundException {
super.prepareConnection(con, contentLength);
if ((ContextHolder.getContext() == null)
|| !(ContextHolder.getContext() instanceof SecureContext)) {
throw new AuthenticationCredentialsNotFoundException(
"ContextHolder is null or does not contain a SecureContext");
}
if ((ContextHolder.getContext() != null)
&& (ContextHolder.getContext() instanceof SecureContext)) {
Authentication auth = ((SecureContext) ContextHolder.getContext())
.getAuthentication();
Authentication auth = ((SecureContext) ContextHolder.getContext())
.getAuthentication();
if ((auth != null) && (auth.getPrincipal() != null)
&& (auth.getCredentials() != null)) {
String base64 = auth.getPrincipal().toString() + ":"
+ auth.getCredentials().toString();
con.setRequestProperty("Authorization",
"Basic "
+ new String(Base64.encodeBase64(base64.getBytes())));
if ((auth == null) || (auth.getPrincipal() == null)
|| (auth.getCredentials() == null)) {
throw new AuthenticationCredentialsNotFoundException(
"The Authentication contained in the ContextHolder is null or the principal and/or credentials properties are null");
}
String base64 = auth.getPrincipal().toString() + ":"
+ auth.getCredentials().toString();
con.setRequestProperty("Authorization",
"Basic " + new String(Base64.encodeBase64(base64.getBytes())));
if (logger.isDebugEnabled()) {
logger.debug(
"HttpInvocation now presenting via BASIC authentication ContextHolder-derived: "
+ auth.toString());
if (logger.isDebugEnabled()) {
logger.debug(
"HttpInvocation now presenting via BASIC authentication ContextHolder-derived: "
+ auth.toString());
}
} else {
if (logger.isDebugEnabled()) {
logger.debug(
"Unable to set BASIC authentication header as ContextHolder: "
+ ContextHolder.getContext()
+ "; did not provide valid Authentication: " + auth);
}
}
} else {
if (logger.isDebugEnabled()) {
logger.debug(
"Unable to set BASIC authentication header as ContextHolder: "
+ ContextHolder.getContext()
+ "; does not provide a SecureContext");
}
}
}
}

View File

@ -70,8 +70,7 @@ public class ContextPropagatingRemoteInvocation extends RemoteInvocation {
context = ContextHolder.getContext();
if (logger.isDebugEnabled()) {
logger.debug("RemoteInvocation now has context of: "
+ context.toString());
logger.debug("RemoteInvocation now has context of: " + context);
}
}
@ -95,7 +94,7 @@ public class ContextPropagatingRemoteInvocation extends RemoteInvocation {
ContextHolder.setContext(context);
if (logger.isDebugEnabled()) {
logger.debug("Set ContextHolder to contain: " + context.toString());
logger.debug("Set ContextHolder to contain: " + context);
}
Object result = super.invoke(targetObject);