public class AuthorizationVarResolver extends VariableResolver { private static final String ROOT_VARIABLE = "authorize"; private VariableResolver originalResolver; public AuthorizationVarResolver(VariableResolver variableresolver) { originalResolver = variableresolver; } public Object resolveVariable(FacesContext facescontext, String s) { if (!s.equals(ROOT_VARIABLE)) { HashMap args = new HashMap(); String authorizerName = s.substring(s.indexOf(".") + 1, s.indexOf("[")); StringTokenizer tokenizer = new StringTokenizer( s.substring(s.indexOf("[") + 1, s.indexOf("]")).replaceAll(" ", ""), ","); while (tokenizer.hasMoreTokens()) { String token = tokenizer.nextToken(); int indexOfColon = token.indexOf(":"); String variableName = token.substring(1, indexOfColon); String value = token.substring(indexOfColon + 1); args.put(variableName, value); } Authorizer author = null; try { author = AuthorizerFactory.getAuthorizer(authorizerName, args); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return author; } else { return originalResolver.resolveVariable(facescontext, s); } } }