anchor.diff:  	 * Get the current HTTP Servlet Response being generated.
   	 * @return the current HTTP Servlet Response.
   	 */
  +	
   	public cfesapi.org.owasp.esapi.HttpServletResponse function currentResponse() {
   		return httpUtilities().getCurrentResponse();
   	}
  
positive.code:  */
  component ESAPI extends="cfesapi.org.owasp.esapi.lang.Object" {
  
  	instance.securityConfigurationImplName = newJava( "java.lang.System").getProperty("cfesapi.org.owasp.esapi.SecurityConfiguration", "cfesapi.org.owasp.esapi.reference.DefaultSecurityConfiguration");
  
      /**
  	 * Clears the current User, HttpRequest, and HttpResponse associated with the current thread. This method
  	 * MUST be called as some containers do not properly clear threadlocal variables when the execution of
  	 * a thread is complete. The suggested approach is to put this call in a finally block inside a filter.
  	 * <pre>
  		public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException {
  			try {
  				HttpServletRequest request = (HttpServletRequest) req;
  				HttpServletResponse response = (HttpServletResponse) resp;
  				ESAPI.httpUtilities().setCurrentHTTP(request, response);
  				ESAPI.authenticator().login();
  				chain.doFilter(request, response);
  			} catch (Exception e) {
  				logger.error( Logger.SECURITY_FAILURE, "Error in ESAPI security filter: " & e.getMessage(), e );
  			} finally {
  				// VERY IMPORTANT
  				// clear out ThreadLocal variables
  				ESAPI.clearCurrent();
  			}
  		}
  	 * </pre>
  	 * The advantages of having identity everywhere are worth the risk here.
  	 */
  	public void function clearCurrent() {
  		authenticator().clearCurrent();
  		httpUtilities().clearCurrent();
  	}
  
  	/**
  	 * Get the current HTTP Servlet Request being processed.
  	 * @return the current HTTP Servlet Request.
  	 */
  	public cfesapi.org.owasp.esapi.HttpServletRequest function currentRequest() {
  		return httpUtilities().getCurrentRequest();
  	}
  
negative.code: 	/**
  	 * @return the current ESAPI AccessController object being used to maintain the access control rules for this application. 
  	 */
  	
  	public cfesapi.org.owasp.esapi.AccessController function accessController() {
  		return make(securityConfiguration().getAccessControlImplementation(), "AccessController");
  	}
  	
  	/**
  	 * @return the current ESAPI Authenticator object being used to authenticate users for this application. 
  	 */
  	
  	public cfesapi.org.owasp.esapi.Authenticator function authenticator() {
  		return make(securityConfiguration().getAuthenticationImplementation(), "Authenticator");
  	}
  	
  	/**
  	 * @return the current ESAPI Encoder object being used to encode and decode data for this application. 
  	 */
  	
  	public cfesapi.org.owasp.esapi.Encoder function encoder() {
  		return make(securityConfiguration().getEncoderImplementation(), "Encoder");
  	}
  	
  	/**
  	 * @return the current ESAPI Encryptor object being used to encrypt and decrypt data for this application. 
  	 */
  	
  	public cfesapi.org.owasp.esapi.Encryptor function encryptor() {
  		return make(securityConfiguration().getEncryptionImplementation(), "Encryptor");
  	}
  	
  	/**
  	 * @return the current ESAPI Executor object being used to safely execute OS commands for this application. 
  	 */
  	
  	public cfesapi.org.owasp.esapi.Executor function executor() {
  		return make(securityConfiguration().getExecutorImplementation(), "Executor");
  	}
  	
  	/**
  	 * @return the current ESAPI HTTPUtilities object being used to safely access HTTP requests and responses 
  	 * for this application. 
  	 */
  	
  	public cfesapi.org.owasp.esapi.HTTPUtilities function httpUtilities() {
  		return make(securityConfiguration().getHTTPUtilitiesImplementation(), "HTTPUtilities");
  	}
  	
  	/**
  	 * @return the current ESAPI IntrusionDetector being used to monitor for intrusions in this application. 
  	 */
  	
  	public cfesapi.org.owasp.esapi.IntrusionDetector function intrusionDetector() {
  		return make(securityConfiguration().getIntrusionDetectionImplementation(), "IntrusionDetector");
  	}
  	
  	/**
  	 * Get the current LogFactory being used by ESAPI. If there isn't one yet, it will create one, and then 
  	 * return this same LogFactory from then on.
  	 * @return The current LogFactory being used by ESAPI.
  	 */
  	
  	private cfesapi.org.owasp.esapi.LogFactory function logFactory() {
  		return make(securityConfiguration().getLogImplementation(), "LogFactory");
  	}
  	
  	/**
  	 * @param moduleName The module to associate the logger with.
  	 * @return The current Logger associated with the specified module.
  	 */
  	
  	public cfesapi.org.owasp.esapi.Logger function getLogger(required String moduleName) {
  		return logFactory().getLogger(arguments.moduleName);
  	}
  