Java Code Examples for org.apache.catalina.connector.Request.getAttribute()

The following are Jave code examples for showing how to use getAttribute() of the org.apache.catalina.connector.Request class. You can vote up the examples you like. Your votes will be used in our system to get more good examples.
Example 1
Project: tomcat7   File: AuthenticatorBase.java   Source Code and License Vote up 7 votes
/**
 * Look for the X509 certificate chain in the Request under the key
 * <code>javax.servlet.request.X509Certificate</code>. If not found, trigger
 * extracting the certificate chain from the Coyote request.
 *
 * @param request   Request to be processed
 *
 * @return          The X509 certificate chain if found, <code>null</code>
 *                  otherwise.
 */
protected X509Certificate[] getRequestCertificates(final Request request)
        throws IllegalStateException {

    X509Certificate certs[] =
            (X509Certificate[]) request.getAttribute(Globals.CERTIFICATES_ATTR);

    if ((certs == null) || (certs.length < 1)) {
        try {
            request.getCoyoteRequest().action(ActionCode.REQ_SSL_CERTIFICATE, null);
            certs = (X509Certificate[]) request.getAttribute(Globals.CERTIFICATES_ATTR);
        } catch (IllegalStateException ise) {
            // Request body was too large for save buffer
            // Return null which will trigger an auth failure
        }
    }

    return certs;
}
 
Example 2
Project: tomcat7   File: AccessLogValve.java   Source Code and License Vote up 7 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request,
        Response response, long time) {
    if (requestAttributesEnabled && portType == PortType.LOCAL) {
        Object port = request.getAttribute(SERVER_PORT_ATTRIBUTE);
        if (port == null) {
            buf.append(request.getServerPort());
        } else {
            buf.append(port);
        }
    } else {
        if (portType == PortType.LOCAL) {
            buf.append(Integer.toString(request.getServerPort()));
        } else {
            buf.append(Integer.toString(request.getRemotePort()));
        }
    }
}
 
Example 3
Project: lazycat   File: AccessLogValve.java   Source Code and License Vote up 7 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request, Response response, long time) {
	if (requestAttributesEnabled && portType == PortType.LOCAL) {
		Object port = request.getAttribute(SERVER_PORT_ATTRIBUTE);
		if (port == null) {
			buf.append(request.getServerPort());
		} else {
			buf.append(port);
		}
	} else {
		if (portType == PortType.LOCAL) {
			buf.append(Integer.toString(request.getServerPort()));
		} else {
			buf.append(Integer.toString(request.getRemotePort()));
		}
	}
}
 
Example 4
Project: lazycat   File: AccessLogValve.java   Source Code and License Vote up 7 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request, Response response, long time) {
	// Don't need to flush since trigger for log message is after the
	// response has been committed
	long length = response.getBytesWritten(false);
	if (length <= 0) {
		// Protect against nulls and unexpected types as these values
		// may be set by untrusted applications
		Object start = request.getAttribute(Globals.SENDFILE_FILE_START_ATTR);
		if (start instanceof Long) {
			Object end = request.getAttribute(Globals.SENDFILE_FILE_END_ATTR);
			if (end instanceof Long) {
				length = ((Long) end).longValue() - ((Long) start).longValue();
			}
		}
	}
	if (length <= 0 && conversion) {
		buf.append('-');
	} else {
		buf.append(length);
	}
}
 
Example 5
Project: lams   File: AccessLogValve.java   Source Code and License Vote up 7 votes
public void addElement(StringBuffer buf, Date date, Request request,
        Response response, long time) {
    Object value = null;
    if (request != null) {
        value = request.getAttribute(header);
    } else {
        value = "??";
    }
    if (value != null) {
        if (value instanceof String) {
            buf.append((String) value);
        } else {
            buf.append(value.toString());
        }
    } else {
        buf.append('-');
    }
}
 
Example 6
Project: apache-tomcat-7.0.73-with-comment   File: AuthenticatorBase.java   Source Code and License Vote up 7 votes
/**
 * Look for the X509 certificate chain in the Request under the key
 * <code>javax.servlet.request.X509Certificate</code>. If not found, trigger
 * extracting the certificate chain from the Coyote request.
 *
 * @param request   Request to be processed
 *
 * @return          The X509 certificate chain if found, <code>null</code>
 *                  otherwise.
 */
protected X509Certificate[] getRequestCertificates(final Request request)
        throws IllegalStateException {

    X509Certificate certs[] =
            (X509Certificate[]) request.getAttribute(Globals.CERTIFICATES_ATTR);

    if ((certs == null) || (certs.length < 1)) {
        try {
            request.getCoyoteRequest().action(ActionCode.REQ_SSL_CERTIFICATE, null);
            certs = (X509Certificate[]) request.getAttribute(Globals.CERTIFICATES_ATTR);
        } catch (IllegalStateException ise) {
            // Request body was too large for save buffer
            // Return null which will trigger an auth failure
        }
    }

    return certs;
}
 
Example 7
Project: lazycat   File: AccessLogValve.java   Source Code and License Vote up 7 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request, Response response, long time) {
	String value = null;
	if (requestAttributesEnabled) {
		Object host = request.getAttribute(REMOTE_HOST_ATTRIBUTE);
		if (host != null) {
			value = host.toString();
		}
	}
	if (value == null || value.length() == 0) {
		value = request.getRemoteHost();
	}
	if (value == null || value.length() == 0) {
		value = "-";
	}
	buf.append(value);
}
 
Example 8
Project: apache-tomcat-7.0.73-with-comment   File: AccessLogValve.java   Source Code and License Vote up 7 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request,
        Response response, long time) {
    String value = null;
    if (requestAttributesEnabled) {
        Object host = request.getAttribute(REMOTE_HOST_ATTRIBUTE);
        if (host != null) {
            value = host.toString();
        }
    }
    if (value == null || value.length() == 0) {
        value = request.getRemoteHost();
    }
    if (value == null || value.length() == 0) {
        value = "-";
    }
    buf.append(value);
}
 
Example 9
Project: apache-tomcat-7.0.73-with-comment   File: AccessLogValve.java   Source Code and License Vote up 7 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request,
        Response response, long time) {
    if (requestAttributesEnabled && portType == PortType.LOCAL) {
        Object port = request.getAttribute(SERVER_PORT_ATTRIBUTE);
        if (port == null) {
            buf.append(request.getServerPort());
        } else {
            buf.append(port);
        }
    } else {
        if (portType == PortType.LOCAL) {
            buf.append(Integer.toString(request.getServerPort()));
        } else {
            buf.append(Integer.toString(request.getRemotePort()));
        }
    }
}
 
Example 10
Project: apache-tomcat-7.0.73-with-comment   File: AccessLogValve.java   Source Code and License Vote up 7 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request,
        Response response, long time) {
    // Don't need to flush since trigger for log message is after the
    // response has been committed
    long length = response.getBytesWritten(false);
    if (length <= 0) {
        // Protect against nulls and unexpected types as these values
        // may be set by untrusted applications
        Object start = request.getAttribute(
                Globals.SENDFILE_FILE_START_ATTR);
        if (start instanceof Long) {
            Object end = request.getAttribute(
                    Globals.SENDFILE_FILE_END_ATTR);
            if (end instanceof Long) {
                length = ((Long) end).longValue() -
                        ((Long) start).longValue();
            }
        }
    }
    if (length <= 0 && conversion) {
        buf.append('-');
    } else {
        buf.append(length);
    }
}
 
Example 11
Project: lazycat   File: AccessLogValve.java   Source Code and License Vote up 7 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request, Response response, long time) {
	Object value = null;
	if (request != null) {
		value = request.getAttribute(header);
	} else {
		value = "??";
	}
	if (value != null) {
		if (value instanceof String) {
			buf.append((String) value);
		} else {
			buf.append(value.toString());
		}
	} else {
		buf.append('-');
	}
}
 
Example 12
Project: tomcat7   File: AccessLogValve.java   Source Code and License Vote up 6 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request,
        Response response, long time) {
    if (requestAttributesEnabled) {
        Object proto = request.getAttribute(PROTOCOL_ATTRIBUTE);
        if (proto == null) {
            buf.append(request.getProtocol());
        } else {
            buf.append(proto);
        }
    } else {
        buf.append(request.getProtocol());
    }
}
 
Example 13
Project: lazycat   File: AccessLogValve.java   Source Code and License Vote up 6 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request, Response response, long time) {
	if (requestAttributesEnabled) {
		Object addr = request.getAttribute(REMOTE_ADDR_ATTRIBUTE);
		if (addr == null) {
			buf.append(request.getRemoteAddr());
		} else {
			buf.append(addr);
		}
	} else {
		buf.append(request.getRemoteAddr());
	}
}
 
Example 14
Project: lams   File: ErrorReportValve.java   Source Code and License Vote up 6 votes
/**
 * Invoke the next Valve in the sequence. When the invoke returns, check
 * the response state, and output an error report is necessary.
 *
 * @param request The servlet request to be processed
 * @param response The servlet response to be created
 *
 * @exception IOException if an input/output error occurs
 * @exception ServletException if a servlet error occurs
 */
public void invoke(Request request, Response response)
    throws IOException, ServletException {

    // Perform the request
    getNext().invoke(request, response);

    Throwable throwable =
        (Throwable) request.getAttribute(Globals.EXCEPTION_ATTR);

    if (response.isCommitted()) {
        return;
    }

    if (throwable != null) {

        // The response is an error
        response.setError();

        // Reset the response (if possible)
        try {
            response.reset();
        } catch (IllegalStateException e) {
            ;
        }

        response.sendError
            (HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

    }

    response.setSuspended(false);

    try {
        report(request, response, throwable);
    } catch (Throwable tt) {
        ;
    }

}
 
Example 15
Project: apache-tomcat-7.0.73-with-comment   File: AccessLogValve.java   Source Code and License Vote up 6 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request,
        Response response, long time) {
    if (requestAttributesEnabled) {
        Object addr = request.getAttribute(REMOTE_ADDR_ATTRIBUTE);
        if (addr == null) {
            buf.append(request.getRemoteAddr());
        } else {
            buf.append(addr);
        }
    } else {
        buf.append(request.getRemoteAddr());
    }
}
 
Example 16
Project: apache-tomcat-7.0.73-with-comment   File: AccessLogValve.java   Source Code and License Vote up 6 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request,
        Response response, long time) {
    if (requestAttributesEnabled) {
        Object proto = request.getAttribute(PROTOCOL_ATTRIBUTE);
        if (proto == null) {
            buf.append(request.getProtocol());
        } else {
            buf.append(proto);
        }
    } else {
        buf.append(request.getProtocol());
    }
}
 
Example 17
Project: tomcat7   File: ErrorReportValve.java   Source Code and License Vote up 5 votes
/**
 * Invoke the next Valve in the sequence. When the invoke returns, check
 * the response state. If the status code is greater than or equal to 400
 * or an uncaught exception was thrown then the error handling will be
 * triggered.
 *
 * @param request The servlet request to be processed
 * @param response The servlet response to be created
 *
 * @exception IOException if an input/output error occurs
 * @exception ServletException if a servlet error occurs
 */
@Override
public void invoke(Request request, Response response) throws IOException, ServletException {

    // Perform the request
    getNext().invoke(request, response);

    if (response.isCommitted()) {
        if (response.setErrorReported()) {
            // Error wasn't previously reported but we can't write an error
            // page because the response has already been committed. Attempt
            // to flush any data that is still to be written to the client.
            try {
                response.flushBuffer();
            } catch (Throwable t) {
                ExceptionUtils.handleThrowable(t);
            }
            // Close immediately to signal to the client that something went
            // wrong
            response.getCoyoteResponse().action(ActionCode.CLOSE_NOW, null);
        }
        return;
    }

    Throwable throwable = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);

    // If an async request is in progress and is not going to end once this
    // container thread finishes, do not process any error page here.
    if (request.isAsync() && !request.isAsyncCompleting()) {
        return;
    }

    if (throwable != null && !response.isError()) {
        // Make sure that the necessary methods have been called on the
        // response. (It is possible a component may just have set the
        // Throwable. Tomcat won't do that but other components might.)
        // These are safe to call at this point as we know that the response
        // has not been committed.
        response.reset();
        response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    }

    // One way or another, response.sendError() will have been called before
    // execution reaches this point and suspended the response. Need to
    // reverse that so this valve can write to the response.
    response.setSuspended(false);

    try {
        report(request, response, throwable);
    } catch (Throwable tt) {
        ExceptionUtils.handleThrowable(tt);
    }
}
 
Example 18
Project: tomcat7   File: AccessLogValve.java   Source Code and License Vote up 5 votes
@Override
public void addElement(StringBuilder buf, Date date, Request request,
        Response response, long time) {
    if (requestAttributesEnabled) {
        Object addr = request.getAttribute(REMOTE_ADDR_ATTRIBUTE);
        if (addr == null) {
            buf.append(request.getRemoteAddr());
        } else {
            buf.append(addr);
        }
    } else {
        buf.append(request.getRemoteAddr());
    }
}
 
Example 19
Project: lazycat   File: ErrorReportValve.java   Source Code and License Vote up 5 votes
/**
 * Invoke the next Valve in the sequence. When the invoke returns, check the
 * response state. If the status code is greater than or equal to 400 or an
 * uncaught exception was thrown then the error handling will be triggered.
 *
 * @param request
 *            The servlet request to be processed
 * @param response
 *            The servlet response to be created
 *
 * @exception IOException
 *                if an input/output error occurs
 * @exception ServletException
 *                if a servlet error occurs
 */
@Override
public void invoke(Request request, Response response) throws IOException, ServletException {

	// Perform the request
	getNext().invoke(request, response);

	if (response.isCommitted()) {
		if (response.setErrorReported()) {
			// Error wasn't previously reported but we can't write an error
			// page because the response has already been committed. Attempt
			// to flush any data that is still to be written to the client.
			try {
				response.flushBuffer();
			} catch (Throwable t) {
				ExceptionUtils.handleThrowable(t);
			}
			// Close immediately to signal to the client that something went
			// wrong
			response.getCoyoteResponse().action(ActionCode.CLOSE_NOW, null);
		}
		return;
	}

	Throwable throwable = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);

	// If an async request is in progress and is not going to end once this
	// container thread finishes, do not process any error page here.
	if (request.isAsync() && !request.isAsyncCompleting()) {
		return;
	}

	if (throwable != null && !response.isError()) {
		// Make sure that the necessary methods have been called on the
		// response. (It is possible a component may just have set the
		// Throwable. Tomcat won't do that but other components might.)
		// These are safe to call at this point as we know that the response
		// has not been committed.
		response.reset();
		response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
	}

	// One way or another, response.sendError() will have been called before
	// execution reaches this point and suspended the response. Need to
	// reverse that so this valve can write to the response.
	response.setSuspended(false);

	try {
		report(request, response, throwable);
	} catch (Throwable tt) {
		ExceptionUtils.handleThrowable(tt);
	}
}
 
Example 20
Project: lams   File: StandardHostValve.java   Source Code and License Vote up 5 votes
/**
 * Select the appropriate child Context to process this request,
 * based on the specified request URI.  If no matching Context can
 * be found, return an appropriate HTTP error.
 *
 * @param request Request to be processed
 * @param response Response to be produced
 * @param valveContext Valve context used to forward to the next Valve
 *
 * @exception IOException if an input/output error occurred
 * @exception ServletException if a servlet error occurred
 */
public final void invoke(Request request, Response response)
    throws IOException, ServletException {

    // Select the Context to be used for this Request
    Context context = request.getContext();
    if (context == null) {
        response.sendError
            (HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
             sm.getString("standardHost.noContext"));
        return;
    }

    // Bind the context CL to the current thread
    if( context.getLoader() != null ) {
        // Not started - it should check for availability first
        // This should eventually move to Engine, it's generic.
        Thread.currentThread().setContextClassLoader
                (context.getLoader().getClassLoader());
    }

    // Ask this Context to process this request
    context.getPipeline().getFirst().invoke(request, response);

    // Access a session (if present) to update last accessed time, based on a
    // strict interpretation of the specification
    if (Globals.STRICT_SERVLET_COMPLIANCE) {
        request.getSession(false);
    }

    // Error page processing
    response.setSuspended(false);

    Throwable t = (Throwable) request.getAttribute(Globals.EXCEPTION_ATTR);

    if (t != null) {
        throwable(request, response, t);
    } else {
        status(request, response);
    }

    // Restore the context classloader
    Thread.currentThread().setContextClassLoader
        (StandardHostValve.class.getClassLoader());

}