org.glassfish.grizzly.http
Class HttpServerFilter

java.lang.Object
  extended by org.glassfish.grizzly.filterchain.BaseFilter
      extended by org.glassfish.grizzly.http.HttpCodecFilter
          extended by org.glassfish.grizzly.http.HttpServerFilter
All Implemented Interfaces:
Filter, JmxMonitoringAware<HttpProbe>, MonitoringAware<HttpProbe>

public class HttpServerFilter
extends HttpCodecFilter

Server side HttpCodecFilter implementation, which is responsible for decoding HttpRequestPacket and encoding HttpResponsePacket messages. This Filter is usually used, when we build an asynchronous HTTP server connection.

Author:
Alexey Stashok
See Also:
HttpCodecFilter, HttpClientFilter

Nested Class Summary
 
Nested classes/interfaces inherited from class org.glassfish.grizzly.http.HttpCodecFilter
HttpCodecFilter.ContentParsingState, HttpCodecFilter.HeaderParsingState
 
Field Summary
static String HTTP_SERVER_REQUEST_ATTR_NAME
           
static FilterChainEvent RESPONSE_COMPLETE_EVENT
           
 
Fields inherited from class org.glassfish.grizzly.http.HttpCodecFilter
chunkingEnabled, contentEncodings, DEFAULT_MAX_HTTP_PACKET_HEADER_SIZE, FLUSH_AND_CLOSE_HANDLER, maxHeadersSize, monitoringConfig
 
Constructor Summary
HttpServerFilter()
          Deprecated. Next major release will include builders for filters requiring configuration. Constructors will be hidden.
HttpServerFilter(boolean chunkingEnabled, int maxHeadersSize, KeepAlive keepAlive, DelayedExecutor executor)
          Deprecated. Next major release will include builders for filters requiring configuration. Constructors will be hidden.
HttpServerFilter(boolean chunkingEnabled, int maxHeadersSize, String defaultResponseContentType, KeepAlive keepAlive, DelayedExecutor executor)
          Deprecated. Next major release will include builders for filters requiring configuration. Constructors will be hidden.
HttpServerFilter(boolean chunkingEnabled, int maxHeadersSize, String defaultResponseContentType, KeepAlive keepAlive, DelayedExecutor executor, int maxRequestHeaders, int maxResponseHeaders)
          Deprecated. Next major release will include builders for filters requiring configuration. Constructors will be hidden.
 
Method Summary
protected  HttpContent customizeErrorResponse(HttpResponsePacket response)
           
protected  Buffer encodeHttpPacket(FilterChainContext ctx, HttpPacket input)
           
 String getDefaultResponseContentType()
           
 NextAction handleEvent(FilterChainContext ctx, FilterChainEvent event)
          Handle custom event associated with the Connection.
 NextAction handleRead(FilterChainContext ctx)
          The method is called, once we have received a Buffer, which has to be transformed into HTTP request packet part.
protected  void onHttpContentEncoded(HttpContent content, FilterChainContext ctx)
           Invoked when a HTTP body chunk has been encoded in preparation to being transmitted to the user-agent.
protected  void onHttpContentError(HttpHeader httpHeader, FilterChainContext ctx, Throwable t)
           Callback which is invoked when parsing an HTTP message payload fails.
protected  void onHttpContentParsed(HttpContent content, FilterChainContext ctx)
           Invoked as request/response body content has been processed by this Filter.
protected  void onHttpHeaderError(HttpHeader httpHeader, FilterChainContext ctx, Throwable t)
           Callback which is invoked when parsing an HTTP message header fails.
protected  boolean onHttpHeaderParsed(HttpHeader httpHeader, Buffer buffer, FilterChainContext ctx)
          Callback invoked when the HTTP message header parsing is complete.
protected  void onHttpHeadersEncoded(HttpHeader httpHeader, FilterChainContext ctx)
           Invoked when HTTP headers have been encoded in preparation to being transmitted to the user-agent.
protected  void onHttpHeadersParsed(HttpHeader httpHeader, FilterChainContext ctx)
           Invoked when all headers of the packet have been parsed.
protected  boolean onHttpPacketParsed(HttpHeader httpHeader, FilterChainContext ctx)
          Callback method, called when HttpPacket parsing has been completed.
protected  void onInitialLineEncoded(HttpHeader header, FilterChainContext ctx)
           Invoked when the intial response line has been encoded in preparation to being transmitted to the user-agent.
protected  void onInitialLineParsed(HttpHeader httpHeader, FilterChainContext ctx)
           Invoked when either the request line or status line has been parsed.
 void setDefaultResponseContentType(String defaultResponseContentType)
           
 
Methods inherited from class org.glassfish.grizzly.http.HttpCodecFilter
addContentEncoding, addTransferEncoding, createJmxManagementObject, decodeHttpPacket, decodeHttpPacketFromBuffer, decodeHttpPacketFromBytes, encodeHttpPacket, encodeKnownHeaders, encodeMimeHeader, encodeMimeHeaders, flushAndClose, getContentEncodings, getMonitoringConfig, getTransferEncodings, handleRead, handleWrite, isChunkingEnabled, isSecure, parseHeaderFromBuffer, parseHeaderFromBytes, parseHeaderName, parseHeaderName, parseHeadersFromBuffer, parseHeadersFromBytes, parseHeaderValue, parseHeaderValue, removeContentEncoding, removeTransferEncoding
 
Methods inherited from class org.glassfish.grizzly.filterchain.BaseFilter
createContext, exceptionOccurred, getFilterChain, getIndex, handleAccept, handleClose, handleConnect, onAdded, onFilterChainChanged, onRemoved
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HTTP_SERVER_REQUEST_ATTR_NAME

public static final String HTTP_SERVER_REQUEST_ATTR_NAME

RESPONSE_COMPLETE_EVENT

public static final FilterChainEvent RESPONSE_COMPLETE_EVENT
Constructor Detail

HttpServerFilter

@Deprecated
public HttpServerFilter()
Deprecated. Next major release will include builders for filters requiring configuration. Constructors will be hidden.

Constructor, which creates HttpServerFilter instance


HttpServerFilter

@Deprecated
public HttpServerFilter(boolean chunkingEnabled,
                                   int maxHeadersSize,
                                   KeepAlive keepAlive,
                                   DelayedExecutor executor)
Deprecated. Next major release will include builders for filters requiring configuration. Constructors will be hidden.

Constructor, which creates HttpServerFilter instance, with the specific max header size parameter.

Parameters:
chunkingEnabled - flag indicating whether or not chunking should be allowed or not.
maxHeadersSize - the maximum size of an inbound HTTP message header.
keepAlive - keep-alive configuration for this filter instance.
executor - DelayedExecutor for handling keep-alive.

HttpServerFilter

@Deprecated
public HttpServerFilter(boolean chunkingEnabled,
                                   int maxHeadersSize,
                                   String defaultResponseContentType,
                                   KeepAlive keepAlive,
                                   DelayedExecutor executor)
Deprecated. Next major release will include builders for filters requiring configuration. Constructors will be hidden.

Constructor, which creates HttpServerFilter instance, with the specific max header size parameter.

Parameters:
chunkingEnabled - flag indicating whether or not chunking should be allowed or not.
maxHeadersSize - the maximum size of an inbound HTTP message header.
defaultResponseContentType - the content type that the response should use if no content had been specified at the time the response is committed.
keepAlive - keep-alive configuration for this filter instance.
executor - DelayedExecutor for handling keep-alive. If null - keep-alive idle connections should be managed outside HttpServerFilter.

HttpServerFilter

@Deprecated
public HttpServerFilter(boolean chunkingEnabled,
                                   int maxHeadersSize,
                                   String defaultResponseContentType,
                                   KeepAlive keepAlive,
                                   DelayedExecutor executor,
                                   int maxRequestHeaders,
                                   int maxResponseHeaders)
Deprecated. Next major release will include builders for filters requiring configuration. Constructors will be hidden.

Constructor, which creates HttpServerFilter instance, with the specific max header size parameter.

Parameters:
chunkingEnabled - flag indicating whether or not chunking should be allowed or not.
maxHeadersSize - the maximum size of an inbound HTTP message header.
defaultResponseContentType - the content type that the response should use if no content had been specified at the time the response is committed.
keepAlive - keep-alive configuration for this filter instance.
executor - DelayedExecutor for handling keep-alive. If null - keep-alive idle connections should be managed outside HttpServerFilter.
maxRequestHeaders - maximum number of request headers allowed for a single request.
maxResponseHeaders - maximum number of response headers allowed for a single response.
Since:
2.2.11
Method Detail

getDefaultResponseContentType

public String getDefaultResponseContentType()

setDefaultResponseContentType

public void setDefaultResponseContentType(String defaultResponseContentType)

handleRead

public NextAction handleRead(FilterChainContext ctx)
                      throws IOException
The method is called, once we have received a Buffer, which has to be transformed into HTTP request packet part. Filter gets Buffer, which represents a part or complete HTTP request message. As the result of "read" transformation - we will get HttpContent message, which will represent HTTP request packet content (might be zero length content) and reference to a HttpHeader, which contains HTTP request message header.

Specified by:
handleRead in interface Filter
Overrides:
handleRead in class BaseFilter
Parameters:
ctx - Request processing context
Returns:
NextAction
Throws:
IOException

onHttpHeaderParsed

protected boolean onHttpHeaderParsed(HttpHeader httpHeader,
                                     Buffer buffer,
                                     FilterChainContext ctx)
Description copied from class: HttpCodecFilter
Callback invoked when the HTTP message header parsing is complete.

Specified by:
onHttpHeaderParsed in class HttpCodecFilter
Parameters:
httpHeader - HttpHeader, which represents parsed HTTP packet header
buffer - Buffer the header was parsed from
ctx - processing context.
Returns:
true if an error has occurred while processing the header portion of the HTTP request, otherwise returns false.

onHttpPacketParsed

protected final boolean onHttpPacketParsed(HttpHeader httpHeader,
                                           FilterChainContext ctx)
Description copied from class: HttpCodecFilter
Callback method, called when HttpPacket parsing has been completed.

Specified by:
onHttpPacketParsed in class HttpCodecFilter
Parameters:
httpHeader - HttpHeader, which represents parsed HTTP packet header
ctx - processing context.
Returns:
true if an error has occurred while processing the header portion of the HTTP request, otherwise returns false.s

onInitialLineParsed

protected void onInitialLineParsed(HttpHeader httpHeader,
                                   FilterChainContext ctx)
Description copied from class: HttpCodecFilter

Invoked when either the request line or status line has been parsed.

Specified by:
onInitialLineParsed in class HttpCodecFilter
Parameters:
httpHeader - HttpHeader, which represents HTTP packet header
ctx - processing context.

onHttpHeadersParsed

protected void onHttpHeadersParsed(HttpHeader httpHeader,
                                   FilterChainContext ctx)
Description copied from class: HttpCodecFilter

Invoked when all headers of the packet have been parsed. Depending on the transfer encoding being used by the current request, this method may be invoked multiple times.

Specified by:
onHttpHeadersParsed in class HttpCodecFilter
Parameters:
httpHeader - HttpHeader, which represents HTTP packet header
ctx - processing context.

onHttpContentParsed

protected void onHttpContentParsed(HttpContent content,
                                   FilterChainContext ctx)
Description copied from class: HttpCodecFilter

Invoked as request/response body content has been processed by this Filter.

Specified by:
onHttpContentParsed in class HttpCodecFilter
Parameters:
content - request/response body content
ctx - processing context.

onHttpHeaderError

protected void onHttpHeaderError(HttpHeader httpHeader,
                                 FilterChainContext ctx,
                                 Throwable t)
                          throws IOException
Description copied from class: HttpCodecFilter

Callback which is invoked when parsing an HTTP message header fails. The processing logic has to take care about error handling and following connection closing.

Specified by:
onHttpHeaderError in class HttpCodecFilter
Parameters:
httpHeader - HttpHeader, which represents HTTP packet header
ctx - the FilterChainContext processing this request
t - the cause of the error
Throws:
IOException

onHttpContentError

protected void onHttpContentError(HttpHeader httpHeader,
                                  FilterChainContext ctx,
                                  Throwable t)
                           throws IOException
Description copied from class: HttpCodecFilter

Callback which is invoked when parsing an HTTP message payload fails. The processing logic has to take care about error handling and following connection closing.

Specified by:
onHttpContentError in class HttpCodecFilter
Parameters:
httpHeader - HttpHeader, which represents HTTP packet header
ctx - the FilterChainContext processing this request
t - the cause of the error
Throws:
IOException

encodeHttpPacket

protected Buffer encodeHttpPacket(FilterChainContext ctx,
                                  HttpPacket input)
Overrides:
encodeHttpPacket in class HttpCodecFilter

onInitialLineEncoded

protected void onInitialLineEncoded(HttpHeader header,
                                    FilterChainContext ctx)
Description copied from class: HttpCodecFilter

Invoked when the intial response line has been encoded in preparation to being transmitted to the user-agent.

Specified by:
onInitialLineEncoded in class HttpCodecFilter
Parameters:
header - HttpHeader, which represents HTTP packet header
ctx - processing context.

onHttpHeadersEncoded

protected void onHttpHeadersEncoded(HttpHeader httpHeader,
                                    FilterChainContext ctx)
Description copied from class: HttpCodecFilter

Invoked when HTTP headers have been encoded in preparation to being transmitted to the user-agent.

Specified by:
onHttpHeadersEncoded in class HttpCodecFilter
Parameters:
httpHeader - HttpHeader, which represents HTTP packet header
ctx - processing context.

onHttpContentEncoded

protected void onHttpContentEncoded(HttpContent content,
                                    FilterChainContext ctx)
Description copied from class: HttpCodecFilter

Invoked when a HTTP body chunk has been encoded in preparation to being transmitted to the user-agent.

Specified by:
onHttpContentEncoded in class HttpCodecFilter
Parameters:
content - HttpContent, which represents HTTP packet header
ctx - processing context.

handleEvent

public NextAction handleEvent(FilterChainContext ctx,
                              FilterChainEvent event)
                       throws IOException
Description copied from class: BaseFilter
Handle custom event associated with the Connection. This Filter may either complete the required processing and return StopAction, or delegate remaining processing to the next Filter in a FilterChain containing this Filter by returning InvokeAction.

Specified by:
handleEvent in interface Filter
Overrides:
handleEvent in class BaseFilter
Parameters:
ctx - FilterChainContext
Returns:
NextAction instruction for FilterChain, how it should continue the execution
Throws:
IOException

customizeErrorResponse

protected HttpContent customizeErrorResponse(HttpResponsePacket response)


Copyright © 2013 Oracle Corporation. All Rights Reserved.