All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.wicket.atmosphere.config.AtmosphereParameters Maven / Gradle / Ivy

There is a newer version: 0.41
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.wicket.atmosphere.config;

import java.util.List;

import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.ajax.json.JSONException;
import org.apache.wicket.ajax.json.JSONObject;

/**
 * Contains the parameters passed to the Atmosphere JQuery plugin. See
 * {@link "https://github.com/Atmosphere/atmosphere/wiki/jQuery.atmosphere.js-API"} for details.
 * 
 * @author papegaaij
 */
public class AtmosphereParameters
{
	private Integer connectTimeout;
	private Integer reconnectInterval;
	private Integer timeout;
	private AtmosphereMethod method;
	private List headers;
	private String contentType;
	private String data;
	private Boolean suspend;
	private Integer maxRequest;
	private Long maxStreamingLength;
	private AtmosphereLogLevel logLevel;
	private AtmosphereTransport transport = AtmosphereTransport.WEBSOCKET;
	private AtmosphereTransport fallbackTransport;
	private AtmosphereMethod fallbackMethod;
	private String webSocketImpl;
	private String webSocketUrl;
	private String webSocketPathDelimiter;
	private Boolean enableXDR;
	private Boolean rewriteURL;
	private Boolean attachHeadersAsQueryString;
	private Boolean dropAtmosphereHeaders;
	private Boolean executeCallbackBeforeReconnect;
	private Boolean withCredentials;
	private Boolean trackMessageLength = true;
	private String messageDelimiter = "<|msg|>";
	private Boolean shared;
	private Boolean readResponsesHeaders;
	private Integer maxReconnectOnClose;

	/**
	 * @return The connect timeout. If the client fail to connect, the fallbackTransport will be
	 *         used.
	 */
	public Integer getConnectTimeout()
	{
		return connectTimeout;
	}

	/**
	 * The connect timeout. If the client fail to connect, the fallbackTransport will be used.
	 * 
	 * @param connectTimeout
	 */
	public void setConnectTimeout(Integer connectTimeout)
	{
		this.connectTimeout = connectTimeout;
	}

	/**
	 * @return The interval before an attempt to reconnect will be made.
	 */
	public Integer getReconnectInterval()
	{
		return reconnectInterval;
	}

	/**
	 * The interval before an attempt to reconnect will be made.
	 * 
	 * @param reconnectInterval
	 */
	public void setReconnectInterval(Integer reconnectInterval)
	{
		this.reconnectInterval = reconnectInterval;
	}

	/**
	 * @return The maximum time a connection stay opened when no message (or event) are sent or
	 *         received.
	 */
	public Integer getTimeout()
	{
		return timeout;
	}

	/**
	 * The maximum time a connection stay opened when no message (or event) are sent or received.
	 * 
	 * @param timeout
	 */
	public void setTimeout(Integer timeout)
	{
		this.timeout = timeout;
	}

	/**
	 * @return The HTTP method to use.
	 */
	public AtmosphereMethod getMethod()
	{
		return method;
	}

	/**
	 * The HTTP method to use.
	 * 
	 * @param method
	 */
	public void setMethod(AtmosphereMethod method)
	{
		this.method = method;
	}

	/**
	 * @return A list of headers to send
	 */
	public List getHeaders()
	{
		return headers;
	}

	/**
	 * A list of headers to send
	 * 
	 * @param headers
	 */
	public void setHeaders(List headers)
	{
		this.headers = headers;
	}

	/**
	 * @return The request's content-type
	 */
	public String getContentType()
	{
		return contentType;
	}

	/**
	 * The request's content-type
	 * 
	 * @param contentType
	 */
	public void setContentType(String contentType)
	{
		this.contentType = contentType;
	}

	/**
	 * @return The request body (required when doing a POST or PUT)
	 */
	public String getData()
	{
		return data;
	}

	/**
	 * The request body (required when doing a POST or PUT)
	 * 
	 * @param data
	 */
	public void setData(String data)
	{
		this.data = data;
	}

	/**
	 * @return Suspend the request, always reconnect if the connection gets closed (for whatever
	 *         reason), independently of the transport used.
	 */
	public Boolean getSuspend()
	{
		return suspend;
	}

	/**
	 * Suspend the request, always reconnect if the connection gets closed (for whatever reason),
	 * independently of the transport used.
	 * 
	 * @param suspend
	 */
	public void setSuspend(Boolean suspend)
	{
		this.suspend = suspend;
	}

	/**
	 * @return The maximum number of requests that will be executed. Once the maximum gets reached,
	 *         the connection will be closed.
	 */
	public Integer getMaxRequest()
	{
		return maxRequest;
	}

	/**
	 * The maximum number of requests that will be executed. Once the maximum gets reached, the
	 * connection will be closed.
	 * 
	 * @param maxRequest
	 */
	public void setMaxRequest(Integer maxRequest)
	{
		this.maxRequest = maxRequest;
	}

	/**
	 * @return When the streaming transport is used, the maximum size of the body received. Once
	 *         reached the connection will be closed and re-opened
	 */
	public Long getMaxStreamingLength()
	{
		return maxStreamingLength;
	}

	/**
	 * When the streaming transport is used, the maximum size of the body received. Once reached the
	 * connection will be closed and re-opened
	 * 
	 * @param maxStreamingLength
	 */
	public void setMaxStreamingLength(Long maxStreamingLength)
	{
		this.maxStreamingLength = maxStreamingLength;
	}

	/**
	 * @return The log level. Value allowed are 'info', 'debug' and 'error'
	 */
	public AtmosphereLogLevel getLogLevel()
	{
		return logLevel;
	}

	/**
	 * The log level. Value allowed are 'info', 'debug' and 'error'
	 * 
	 * @param logLevel
	 */
	public void setLogLevel(AtmosphereLogLevel logLevel)
	{
		this.logLevel = logLevel;
	}

	/**
	 * @return The transport Atmosphere will use between the client and server. Allowed value are
	 *         polling, long-polling, streaming, jsonp, sse and websocket
	 */
	public AtmosphereTransport getTransport()
	{
		return transport;
	}

	/**
	 * The transport Atmosphere will use between the client and server. Allowed value are polling,
	 * long-polling, streaming, jsonp, sse and websocket
	 * 
	 * @param transport
	 */
	public void setTransport(AtmosphereTransport transport)
	{
		this.transport = transport;
	}

	/**
	 * @return If either the client or server isn't able to support the selected 'transport', the
	 *         fallback value will be used. Allowed value are polling, long-polling, streaming,
	 *         jsonp, sse and websocket
	 */
	public AtmosphereTransport getFallbackTransport()
	{
		return fallbackTransport;
	}

	/**
	 * If either the client or server isn't able to support the selected 'transport', the fallback
	 * value will be used. Allowed value are polling, long-polling, streaming, jsonp, sse and
	 * websocket
	 * 
	 * @param fallbackTransport
	 */
	public void setFallbackTransport(AtmosphereTransport fallbackTransport)
	{
		this.fallbackTransport = fallbackTransport;
	}

	/**
	 * @return Used when the fallbackTransport gets used.
	 */
	public AtmosphereMethod getFallbackMethod()
	{
		return fallbackMethod;
	}

	/**
	 * Used when the fallbackTransport gets used.
	 * 
	 * @param fallbackMethod
	 */
	public void setFallbackMethod(AtmosphereMethod fallbackMethod)
	{
		this.fallbackMethod = fallbackMethod;
	}

	/**
	 * @return The WebSocket API to use. As an example, you can use Flash WebSocket
	 */
	public String getWebSocketImpl()
	{
		return webSocketImpl;
	}

	/**
	 * The WebSocket API to use. As an example, you can use Flash WebSocket
	 * 
	 * @param webSocketImpl
	 */
	public void setWebSocketImpl(String webSocketImpl)
	{
		this.webSocketImpl = webSocketImpl;
	}

	/**
	 * @return The webSocketUrl appended to the request.data when defined
	 */
	public String getWebSocketUrl()
	{
		return webSocketUrl;
	}

	/**
	 * The webSocketUrl appended to the request.data when defined. This is useful if the Atmosphere
	 * Server Side Component is using a custom implementation of WebSocketProtocol implementation
	 * and will be appended to WebSocket messages send to the server. The message will looks like:
	 * 
	 * 
	 * data = webSocketPathDelimiter + webSocketUrl + webSocketPathDelimiter + data;
	 * 
* * @param webSocketUrl */ public void setWebSocketUrl(String webSocketUrl) { this.webSocketUrl = webSocketUrl; } /** * @return The token delimiter used to wrap request.data when websockets messages are sent. This * value is used with the webSocketUrl attribute. */ public String getWebSocketPathDelimiter() { return webSocketPathDelimiter; } /** * The token delimiter used to wrap request.data when websockets messages are sent. This value * is used with the webSocketUrl attribute. * * @param webSocketPathDelimiter */ public void setWebSocketPathDelimiter(String webSocketPathDelimiter) { this.webSocketPathDelimiter = webSocketPathDelimiter; } /** * @return Enable CORS Cross Origin Resource Sharing. */ public Boolean getEnableXDR() { return enableXDR; } /** * Enable CORS Cross Origin Resource Sharing. * * @param enableXDR */ public void setEnableXDR(Boolean enableXDR) { this.enableXDR = enableXDR; } /** * * @return When enableXDR is set to true, the rewriteURL will be used to decide if the * JSESSION_ID cookie be send to the remote server. */ public Boolean getRewriteURL() { return rewriteURL; } /** * When enableXDR is set to true, the rewriteURL will be used to decide if the JSESSION_ID * cookie be send to the remote server. * * @param rewriteURL */ public void setRewriteURL(Boolean rewriteURL) { this.rewriteURL = rewriteURL; } /** * @return Pass all headers as query string. */ public Boolean getAttachHeadersAsQueryString() { return attachHeadersAsQueryString; } /** * Pass all headers as query string. Some browser only support the GET method with some * transport and prevent setting headers. As an example, the WebSocket API doesn't allow setting * headers, and instead the headers will be passed as a query string. * * @param attachHeadersAsQueryString */ public void setAttachHeadersAsQueryString(Boolean attachHeadersAsQueryString) { this.attachHeadersAsQueryString = attachHeadersAsQueryString; } /** * @return Enable to drop the Atmosphere headers. */ public Boolean getDropAtmosphereHeaders() { return dropAtmosphereHeaders; } /** * By default Atmosphere adds headers like X-Atmosphere-Transport, X-Cache-Date etc. used by the * server to track the browser state. The same information is passed as a query string by * default (attachHeadersAsQueryString) so if you aren't planning to add any extra headers, set * that value to true and instead let the attachHeadersAsQueryString pass the same information. * Setting that value to true also facilitate CORS requests handling because no extra headers * are added. * * @param dropAtmosphereHeaders */ public void setDropAtmosphereHeaders(Boolean dropAtmosphereHeaders) { this.dropAtmosphereHeaders = dropAtmosphereHeaders; } /** * @return Execute the request's callback before or after reconnecting again to the server. */ public Boolean getExecuteCallbackBeforeReconnect() { return executeCallbackBeforeReconnect; } /** * Execute the request's callback before or after reconnecting again to the server. * * @param executeCallbackBeforeReconnect */ public void setExecuteCallbackBeforeReconnect(Boolean executeCallbackBeforeReconnect) { this.executeCallbackBeforeReconnect = executeCallbackBeforeReconnect; } /** * @return True when user credentials are to be included in a cross-origin request. False when * they are to be excluded in a cross-origin request and when cookies are to be ignored * in its response. */ public Boolean getWithCredentials() { return withCredentials; } /** * True when user credentials are to be included in a cross-origin request. False when they are * to be excluded in a cross-origin request and when cookies are to be ignored in its response. * * @param withCredentials */ public void setWithCredentials(Boolean withCredentials) { this.withCredentials = withCredentials; } /** * @return Track the size of the received request. */ public Boolean getTrackMessageLength() { return trackMessageLength; } /** * Track the size of the received request. This attribute must be used with the help of the * Atmosphere's Server Side components called TrackMessageSizeFilter. When used, the server will * use the following protocol when sending messages back to the client * *
	 * {@literal
	 *  message }
	 * 
* * This attribute is useful when your server side component send large chunked message. Using * the trackMessageLength, the client will make sure the message has been fully received before * invoking the callback. If not set, the callback might be invoked with partial message. * * @param trackMessageLength */ public void setTrackMessageLength(Boolean trackMessageLength) { this.trackMessageLength = trackMessageLength; } /** * * @return The token that delimit the message when the trackMessageLength attribute is used. */ public String getMessageDelimiter() { return messageDelimiter; } /** * The token that delimit the message when the trackMessageLength attribute is used. * * @param messageDelimiter */ public void setMessageDelimiter(String messageDelimiter) { this.messageDelimiter = messageDelimiter; } /** * @return When set to true, Atmospere will share a connection between different browser tabs * and windows. Otherwise, a new connection will be established for each tab/window. */ public Boolean getShared() { return shared; } /** * When set to true, Atmospere will share a connection between different browser tabs and * windows. Otherwise, a new connection will be established for each tab/window. * * @param shared */ public void setShared(Boolean shared) { this.shared = shared; } /** * @return *undocumented* */ public Boolean getReadResponsesHeaders() { return readResponsesHeaders; } /** * *undocumented* * * @param readResponsesHeaders */ public void setReadResponsesHeaders(Boolean readResponsesHeaders) { this.readResponsesHeaders = readResponsesHeaders; } /** * * @return *undocumented* */ public Integer getMaxReconnectOnClose() { return maxReconnectOnClose; } /** * *undocumented* * * @param maxReconnectOnClose */ public void setMaxReconnectOnClose(Integer maxReconnectOnClose) { this.maxReconnectOnClose = maxReconnectOnClose; } /** * Transforms the paramters into a JSON object. * * @return A JSON object with all set paramters. */ public JSONObject toJSON() { try { JSONObject ret = new JSONObject(); ret.put("connectTimeout", getConnectTimeout()); ret.put("reconnectInterval", getReconnectInterval()); ret.put("timeout", getTimeout()); if (getMethod() != null) ret.put("method", getMethod().toString()); if (getHeaders() != null) ret.put("headers", getHeaders()); ret.put("contentType", getContentType()); ret.put("data", getData()); ret.put("suspend", getSuspend()); ret.put("maxRequest", getMaxRequest()); ret.put("maxStreamingLength", getMaxStreamingLength()); if (getLogLevel() != null) ret.put("logLevel", getLogLevel().toString()); if (getTransport() != null) ret.put("transport", getTransport().toString()); if (getFallbackTransport() != null) ret.put("fallbackTransport", getFallbackTransport().toString()); if (getFallbackMethod() != null) ret.put("fallbackMethod", getFallbackMethod().toString()); ret.put("webSocketImpl", getWebSocketImpl()); ret.put("webSocketUrl", getWebSocketUrl()); ret.put("webSocketPathDelimiter", getWebSocketPathDelimiter()); ret.put("enableXDR", getEnableXDR()); ret.put("rewriteURL", getRewriteURL()); ret.put("attachHeadersAsQueryString", getAttachHeadersAsQueryString()); ret.put("dropAtmosphereHeaders", getDropAtmosphereHeaders()); ret.put("executeCallbackBeforeReconnect", getExecuteCallbackBeforeReconnect()); ret.put("withCredentials", getWithCredentials()); ret.put("trackMessageLength", getTrackMessageLength()); ret.put("messageDelimiter", getMessageDelimiter()); ret.put("shared", getShared()); ret.put("readResponsesHeaders", getReadResponsesHeaders()); ret.put("maxReconnectOnClose", getMaxReconnectOnClose()); return ret; } catch (JSONException e) { throw new WicketRuntimeException(e); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy