|  | @@ -9,6 +9,9 @@ import java.util.List;
 | 
	
		
			
				|  |  |  import org.aopalliance.intercept.MethodInvocation;
 | 
	
		
			
				|  |  |  import org.apache.commons.logging.Log;
 | 
	
		
			
				|  |  |  import org.apache.commons.logging.LogFactory;
 | 
	
		
			
				|  |  | +import org.springframework.beans.BeansException;
 | 
	
		
			
				|  |  | +import org.springframework.context.ApplicationContext;
 | 
	
		
			
				|  |  | +import org.springframework.context.ApplicationContextAware;
 | 
	
		
			
				|  |  |  import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
 | 
	
		
			
				|  |  |  import org.springframework.core.ParameterNameDiscoverer;
 | 
	
		
			
				|  |  |  import org.springframework.expression.EvaluationContext;
 | 
	
	
		
			
				|  | @@ -18,6 +21,7 @@ import org.springframework.expression.spel.standard.SpelExpressionParser;
 | 
	
		
			
				|  |  |  import org.springframework.security.access.PermissionCacheOptimizer;
 | 
	
		
			
				|  |  |  import org.springframework.security.access.PermissionEvaluator;
 | 
	
		
			
				|  |  |  import org.springframework.security.access.expression.ExpressionUtils;
 | 
	
		
			
				|  |  | +import org.springframework.security.access.expression.SecurityExpressionRootPropertyAccessor;
 | 
	
		
			
				|  |  |  import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
 | 
	
		
			
				|  |  |  import org.springframework.security.authentication.AuthenticationTrustResolver;
 | 
	
		
			
				|  |  |  import org.springframework.security.authentication.AuthenticationTrustResolverImpl;
 | 
	
	
		
			
				|  | @@ -31,7 +35,7 @@ import org.springframework.security.core.Authentication;
 | 
	
		
			
				|  |  |   * @author Luke Taylor
 | 
	
		
			
				|  |  |   * @since 3.0
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -public class DefaultMethodSecurityExpressionHandler implements MethodSecurityExpressionHandler {
 | 
	
		
			
				|  |  | +public class DefaultMethodSecurityExpressionHandler implements MethodSecurityExpressionHandler, ApplicationContextAware {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      protected final Log logger = LogFactory.getLog(getClass());
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -39,8 +43,10 @@ public class DefaultMethodSecurityExpressionHandler implements MethodSecurityExp
 | 
	
		
			
				|  |  |      private PermissionEvaluator permissionEvaluator = new DenyAllPermissionEvaluator();
 | 
	
		
			
				|  |  |      private PermissionCacheOptimizer permissionCacheOptimizer = null;
 | 
	
		
			
				|  |  |      private AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
 | 
	
		
			
				|  |  | +    private final SecurityExpressionRootPropertyAccessor sxrpa = new SecurityExpressionRootPropertyAccessor();
 | 
	
		
			
				|  |  |      private ExpressionParser expressionParser = new SpelExpressionParser();
 | 
	
		
			
				|  |  |      private RoleHierarchy roleHierarchy;
 | 
	
		
			
				|  |  | +    private ApplicationContext applicationContext;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public DefaultMethodSecurityExpressionHandler() {
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -55,7 +61,9 @@ public class DefaultMethodSecurityExpressionHandler implements MethodSecurityExp
 | 
	
		
			
				|  |  |          root.setTrustResolver(trustResolver);
 | 
	
		
			
				|  |  |          root.setPermissionEvaluator(permissionEvaluator);
 | 
	
		
			
				|  |  |          root.setRoleHierarchy(roleHierarchy);
 | 
	
		
			
				|  |  | +        root.setApplicationContext(applicationContext);
 | 
	
		
			
				|  |  |          ctx.setRootObject(root);
 | 
	
		
			
				|  |  | +        ctx.addPropertyAccessor(sxrpa);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return ctx;
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -170,4 +178,8 @@ public class DefaultMethodSecurityExpressionHandler implements MethodSecurityExp
 | 
	
		
			
				|  |  |      public void setRoleHierarchy(RoleHierarchy roleHierarchy) {
 | 
	
		
			
				|  |  |          this.roleHierarchy = roleHierarchy;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
 | 
	
		
			
				|  |  | +        this.applicationContext = applicationContext;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |