/*
* 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.ros.internal.xmlrpc.webserver;
import org.apache.xmlrpc.common.XmlRpcHttpRequestConfigImpl;
/**
* Data from the XMLRPC request.
*
* <p>
* This code is derived from the web server which came with the Apache XMLRPC
* server.
*
* @author Apache
* @author Keith M. Hughes
*/
public class XmlRpcServerClientRequestData extends XmlRpcHttpRequestConfigImpl {
/**
* The connection for the specific XMLRPC request.
*/
private final XmlRpcServerClientConnection connection;
/**
* {@code true} if the connection should be kept open between requests.
*/
private boolean keepAlive;
/**
* The HTTP method for the call.
*/
private String method;
/**
* The HTTP version for the call.
*/
private String httpVersion;
/**
* The length of content.
*/
private long contentLength = -1;
/**
* {@code true} if the call was successful.
*/
private boolean success;
/**
* Creates a new instance.
*
* @param pConnection
* The connection, which is serving the request.
*/
public XmlRpcServerClientRequestData(XmlRpcServerClientConnection connection) {
this.connection = connection;
}
/**
* Returns the connection, which is serving the request.
*
* @return The request connection.
*/
public XmlRpcServerClientConnection getConnection() {
return connection;
}
/**
* Returns, whether HTTP keepAlive is enabled for this connection.
*
* @return True, if keepAlive is enabled, false otherwise.
*/
public boolean isKeepAlive() {
return keepAlive;
}
/**
* Set whether HTTP keepAlive is enabled for this connection.
*
* @param keepAlive
* {@code true} if keep alive is enabled
*/
public void setKeepAlive(boolean keepAlive) {
this.keepAlive = keepAlive;
}
/**
* Returns the requests HTTP version.
*
* @return HTTP version, for example {@code 1.0}.
*/
public String getHttpVersion() {
return httpVersion;
}
/**
* Sets the requests HTTP version.
*
* @param httpVersion
* HTTP version, for example {@code 1.1}
*/
public void setHttpVersion(String httpVersion) {
this.httpVersion = httpVersion;
}
/**
* Returns the requests content length.
*
* @return Content length, or {@code -1} if unknown.
*/
public long getContentLength() {
return contentLength;
}
/**
* Sets the requests content length.
*
* @param contentLength
* content length, or {@code -1} if unknown
*/
public void setContentLength(int contentLength) {
this.contentLength = contentLength;
}
/**
* Is a byte array for buffering the output required?
*
* @return {@code true} if the byte array is required, false otherwise.
*/
public boolean isByteArrayRequired() {
return isKeepAlive() || !isEnabledForExtensions() || !isContentLengthOptional();
}
/**
* Get the request method.
*
* @return The request method, should be {@code POST}.
*/
public String getMethod() {
return method;
}
/**
* Set the request HTTP method.
*
* @param method
* the request method, should be {@code POST}
*/
public void setMethod(String method) {
this.method = method;
}
/**
* Get whether the request was executed successful.
*
* @return {@code true} for success, {@code false} if an error occurred.
*/
public boolean isSuccess() {
return success;
}
/**
* Set whether the request was executed successfully or not.
*
* @param success
* {@code true} for success, {@code false} if an error occurred
*/
public void setSuccess(boolean success) {
this.success = success;
}
}