You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2016/12/10 10:22:25 UTC
mina git commit: o Added the missing Javadoc O Fixed some SonarLint
warnings
Repository: mina
Updated Branches:
refs/heads/2.0 86085a3da -> 591fccb71
o Added the missing Javadoc
O Fixed some SonarLint warnings
Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/591fccb7
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/591fccb7
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/591fccb7
Branch: refs/heads/2.0
Commit: 591fccb7187d6b3a583756910f645f4b9273e487
Parents: 86085a3
Author: Emmanuel L�charny <el...@symas.com>
Authored: Sat Dec 10 11:21:58 2016 +0100
Committer: Emmanuel L�charny <el...@symas.com>
Committed: Sat Dec 10 11:21:58 2016 +0100
----------------------------------------------------------------------
.../java/org/apache/mina/http/ArrayUtil.java | 20 +-
.../java/org/apache/mina/http/DateUtil.java | 41 ++--
.../java/org/apache/mina/http/DecoderState.java | 16 +-
.../org/apache/mina/http/HttpClientCodec.java | 11 +-
.../org/apache/mina/http/HttpClientDecoder.java | 212 +++++++++++--------
.../org/apache/mina/http/HttpClientEncoder.java | 25 ++-
.../org/apache/mina/http/HttpException.java | 39 +++-
.../org/apache/mina/http/HttpRequestImpl.java | 110 ++++++++--
.../org/apache/mina/http/HttpServerCodec.java | 12 +-
.../org/apache/mina/http/HttpServerDecoder.java | 175 ++++++++-------
.../org/apache/mina/http/HttpServerEncoder.java | 26 ++-
.../mina/http/api/DefaultHttpResponse.java | 40 ++++
.../apache/mina/http/api/HttpContentChunk.java | 9 +-
.../apache/mina/http/api/HttpEndOfContent.java | 9 +-
.../org/apache/mina/http/api/HttpMessage.java | 2 +-
.../org/apache/mina/http/api/HttpMethod.java | 29 ++-
.../org/apache/mina/http/api/HttpRequest.java | 8 +-
.../org/apache/mina/http/api/HttpResponse.java | 3 +-
.../org/apache/mina/http/api/HttpStatus.java | 2 +
.../java/org/apache/mina/http/api/HttpVerb.java | 30 ++-
.../org/apache/mina/http/api/HttpVersion.java | 2 +-
21 files changed, 568 insertions(+), 253 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/ArrayUtil.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/ArrayUtil.java b/mina-http/src/main/java/org/apache/mina/http/ArrayUtil.java
index 19d88e3..1b262c5 100644
--- a/mina-http/src/main/java/org/apache/mina/http/ArrayUtil.java
+++ b/mina-http/src/main/java/org/apache/mina/http/ArrayUtil.java
@@ -19,18 +19,32 @@
*/
package org.apache.mina.http;
+/**
+ * An utility class for Array manipulations.
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public class ArrayUtil {
+ private ArrayUtil() {
+ }
+ /**
+ * Process an array of String and get rid of every Strings after an empty on.
+ *
+ * @param array The String[] array to process
+ * @param regex unused
+ * @return The resulting String[] which only contains non-empty Strings up to the first emtpy one
+ */
public static String[] dropFromEndWhile(String[] array, String regex) {
for (int i = array.length - 1; i >= 0; i--) {
- if (!array[i].trim().equals("")) {
+ if (!"".equals(array[i].trim())) {
String[] trimmedArray = new String[i + 1];
System.arraycopy(array, 0, trimmedArray, 0, i + 1);
+
return trimmedArray;
}
}
+
return null;
-
}
-
}
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/DateUtil.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/DateUtil.java b/mina-http/src/main/java/org/apache/mina/http/DateUtil.java
index 8822e95..87c6f22 100644
--- a/mina-http/src/main/java/org/apache/mina/http/DateUtil.java
+++ b/mina-http/src/main/java/org/apache/mina/http/DateUtil.java
@@ -28,15 +28,19 @@ import java.util.Locale;
import java.util.TimeZone;
import java.util.regex.Pattern;
+/**
+ * An utility class for Dates manipulations
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public class DateUtil {
-
- private final static Locale LOCALE = Locale.US;
- private final static TimeZone GMT_ZONE;
- private final static String RFC_1123_PATTERN = "EEE, dd MMM yyyy HH:mm:ss zzz";
- private final static DateFormat RFC_1123_FORMAT;
+ private static final Locale LOCALE = Locale.US;
+ private static final TimeZone GMT_ZONE;
+ private static final String RFC_1123_PATTERN = "EEE, dd MMM yyyy HH:mm:ss zzz";
+ private static final DateFormat RFC_1123_FORMAT;
/** Pattern to find digits only. */
- private final static Pattern DIGIT_PATTERN = Pattern.compile("^\\d+$");
+ private static final Pattern DIGIT_PATTERN = Pattern.compile("^\\d+$");
static {
RFC_1123_FORMAT = new SimpleDateFormat(DateUtil.RFC_1123_PATTERN, DateUtil.LOCALE);
@@ -44,6 +48,12 @@ public class DateUtil {
DateUtil.RFC_1123_FORMAT.setTimeZone(DateUtil.GMT_ZONE);
}
+ private DateUtil() {
+ }
+
+ /**
+ * @return The current date as a string
+ */
public static String getCurrentAsString() {
synchronized(DateUtil.RFC_1123_FORMAT) {
return DateUtil.RFC_1123_FORMAT.format(new Date()); //NOPMD
@@ -59,13 +69,13 @@ public class DateUtil {
* format.
* @return the parsed <code>Date</code> in milliseconds.
*/
- private static long parseDateStringToMilliseconds(final String dateString) {
+ private static long parseDateStringToMilliseconds(String dateString) {
try {
synchronized (DateUtil.RFC_1123_FORMAT) {
return DateUtil.RFC_1123_FORMAT.parse(dateString).getTime(); //NOPMD
}
- } catch (final ParseException e) {
+ } catch (ParseException e) {
return 0;
}
}
@@ -80,17 +90,12 @@ public class DateUtil {
* @return the <code>long</code> value following parse, or zero where not
* successful.
*/
- public static long parseToMilliseconds(final String dateValue) {
-
- long ms = 0;
-
+ public static long parseToMilliseconds(String dateValue) {
if (DateUtil.DIGIT_PATTERN.matcher(dateValue).matches()) {
- ms = Long.parseLong(dateValue);
+ return Long.parseLong(dateValue);
} else {
- ms = parseDateStringToMilliseconds(dateValue);
+ return parseDateStringToMilliseconds(dateValue);
}
-
- return ms;
}
/**
@@ -100,9 +105,9 @@ public class DateUtil {
* @param dateValue the <code>Date</code> represented as milliseconds.
* @return a <code>String</code> representation of the date.
*/
- public static String parseToRFC1123(final long dateValue) {
+ public static String parseToRFC1123(long dateValue) {
- final Calendar calendar = Calendar.getInstance();
+ Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(dateValue);
synchronized (DateUtil.RFC_1123_FORMAT) {
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/DecoderState.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/DecoderState.java b/mina-http/src/main/java/org/apache/mina/http/DecoderState.java
index 8782ca4..8fd757b 100644
--- a/mina-http/src/main/java/org/apache/mina/http/DecoderState.java
+++ b/mina-http/src/main/java/org/apache/mina/http/DecoderState.java
@@ -19,8 +19,18 @@
*/
package org.apache.mina.http;
+/**
+ * The HTTP decoder states
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public enum DecoderState {
- NEW, // waiting for a new HTTP requests, the session is new of last request was completed
- HEAD, // accumulating the HTTP request head (everything before the body)
- BODY // receiving HTTP body slices
+ /** waiting for a new HTTP requests, the session is new of last request was completed */
+ NEW,
+
+ /** accumulating the HTTP request head (everything before the body) */
+ HEAD,
+
+ /** receiving HTTP body slices */
+ BODY
}
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/HttpClientCodec.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/HttpClientCodec.java b/mina-http/src/main/java/org/apache/mina/http/HttpClientCodec.java
index c1c1f57..8f5d86f 100644
--- a/mina-http/src/main/java/org/apache/mina/http/HttpClientCodec.java
+++ b/mina-http/src/main/java/org/apache/mina/http/HttpClientCodec.java
@@ -25,6 +25,10 @@ import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolEncoder;
+/**
+ * The HTTP client codec
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public class HttpClientCodec extends ProtocolCodecFilter {
/** Key for decoder current state */
@@ -36,15 +40,20 @@ public class HttpClientCodec extends ProtocolCodecFilter {
private static ProtocolEncoder encoder = new HttpClientEncoder();
private static ProtocolDecoder decoder = new HttpClientDecoder();
+ /**
+ * Creates a new HttpClientCodec instance
+ */
public HttpClientCodec() {
super(encoder, decoder);
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public void sessionClosed(IoFilter.NextFilter nextFilter, IoSession session) throws Exception {
super.sessionClosed(nextFilter, session);
session.removeAttribute(DECODER_STATE_ATT);
session.removeAttribute(PARTIAL_HEAD_ATT);
}
-
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/HttpClientDecoder.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/HttpClientDecoder.java b/mina-http/src/main/java/org/apache/mina/http/HttpClientDecoder.java
index c042970..069d6e2 100644
--- a/mina-http/src/main/java/org/apache/mina/http/HttpClientDecoder.java
+++ b/mina-http/src/main/java/org/apache/mina/http/HttpClientDecoder.java
@@ -35,6 +35,11 @@ import org.apache.mina.http.api.HttpVersion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+/**
+ * An HTTP decoder
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public class HttpClientDecoder implements ProtocolDecoder {
private static final Logger LOG = LoggerFactory.getLogger(HttpClientCodec.class);
@@ -77,111 +82,129 @@ public class HttpClientDecoder implements ProtocolDecoder {
/** Regex to split cookie header following RFC6265 Section 5.4 */
public static final Pattern COOKIE_SEPARATOR_PATTERN = Pattern.compile(";");
- public void decode(final IoSession session, final IoBuffer msg, final ProtocolDecoderOutput out) {
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void decode(IoSession session, IoBuffer msg, ProtocolDecoderOutput out) {
DecoderState state = (DecoderState)session.getAttribute(DECODER_STATE_ATT);
+
if (null == state) {
session.setAttribute(DECODER_STATE_ATT, DecoderState.NEW);
state = (DecoderState)session.getAttribute(DECODER_STATE_ATT);
}
+
switch (state) {
- case HEAD:
- LOG.debug("decoding HEAD");
- // grab the stored a partial HEAD request
- final ByteBuffer oldBuffer = (ByteBuffer)session.getAttribute(PARTIAL_HEAD_ATT);
- // concat the old buffer and the new incoming one
- IoBuffer.allocate(oldBuffer.remaining() + msg.remaining()).put(oldBuffer).put(msg).flip();
- // now let's decode like it was a new message
-
- case NEW:
- LOG.debug("decoding NEW");
- final DefaultHttpResponse rp = parseHttpReponseHead(msg.buf());
-
- if (rp == null) {
- // we copy the incoming BB because it's going to be recycled by the inner IoProcessor for next reads
- final ByteBuffer partial = ByteBuffer.allocate(msg.remaining());
- partial.put(msg.buf());
- partial.flip();
- // no request decoded, we accumulate
- session.setAttribute(PARTIAL_HEAD_ATT, partial);
- session.setAttribute(DECODER_STATE_ATT, DecoderState.HEAD);
- } else {
- out.write(rp);
- // is it a response with some body content ?
- LOG.debug("response with content");
- session.setAttribute(DECODER_STATE_ATT, DecoderState.BODY);
-
- final String contentLen = rp.getHeader("content-length");
-
- if (contentLen != null) {
- LOG.debug("found content len : {}", contentLen);
- session.setAttribute(BODY_REMAINING_BYTES, Integer.valueOf(contentLen));
- } else if ("chunked".equalsIgnoreCase(rp.getHeader("transfer-encoding"))) {
- LOG.debug("no content len but chunked");
- session.setAttribute(BODY_CHUNKED, Boolean.TRUE);
- } else if ("close".equalsIgnoreCase(rp.getHeader("connection"))) {
- session.closeNow();
+ case HEAD:
+ LOG.debug("decoding HEAD");
+ // grab the stored a partial HEAD request
+ ByteBuffer oldBuffer = (ByteBuffer)session.getAttribute(PARTIAL_HEAD_ATT);
+ // concat the old buffer and the new incoming one
+ IoBuffer.allocate(oldBuffer.remaining() + msg.remaining()).put(oldBuffer).put(msg).flip();
+ // now let's decode like it was a new message
+
+ case NEW:
+ LOG.debug("decoding NEW");
+ DefaultHttpResponse rp = parseHttpReponseHead(msg.buf());
+
+ if (rp == null) {
+ // we copy the incoming BB because it's going to be recycled by the inner IoProcessor for next reads
+ ByteBuffer partial = ByteBuffer.allocate(msg.remaining());
+ partial.put(msg.buf());
+ partial.flip();
+ // no request decoded, we accumulate
+ session.setAttribute(PARTIAL_HEAD_ATT, partial);
+ session.setAttribute(DECODER_STATE_ATT, DecoderState.HEAD);
} else {
- throw new HttpException(HttpStatus.CLIENT_ERROR_LENGTH_REQUIRED, "no content length !");
+ out.write(rp);
+ // is it a response with some body content ?
+ LOG.debug("response with content");
+ session.setAttribute(DECODER_STATE_ATT, DecoderState.BODY);
+
+ String contentLen = rp.getHeader("content-length");
+
+ if (contentLen != null) {
+ LOG.debug("found content len : {}", contentLen);
+ session.setAttribute(BODY_REMAINING_BYTES, Integer.valueOf(contentLen));
+ } else if ("chunked".equalsIgnoreCase(rp.getHeader("transfer-encoding"))) {
+ LOG.debug("no content len but chunked");
+ session.setAttribute(BODY_CHUNKED, Boolean.TRUE);
+ } else if ("close".equalsIgnoreCase(rp.getHeader("connection"))) {
+ session.closeNow();
+ } else {
+ throw new HttpException(HttpStatus.CLIENT_ERROR_LENGTH_REQUIRED, "no content length !");
+ }
}
- }
-
- break;
-
- case BODY:
- LOG.debug("decoding BODY: {} bytes", msg.remaining());
- final int chunkSize = msg.remaining();
- // send the chunk of body
- if (chunkSize != 0) {
- final IoBuffer wb = IoBuffer.allocate(msg.remaining());
- wb.put(msg);
- wb.flip();
- out.write(wb);
- }
- msg.position(msg.limit());
-
- // do we have reach end of body ?
- int remaining = 0;
-
- // if chunked, remaining is the msg.remaining()
- if( session.getAttribute(BODY_CHUNKED) != null ) {
- remaining = chunkSize;
- } else {
- // otherwise, manage with content-length
- remaining = (Integer) session.getAttribute(BODY_REMAINING_BYTES);
- remaining -= chunkSize;
- }
-
- if (remaining <= 0 ) {
- LOG.debug("end of HTTP body");
- session.setAttribute(DECODER_STATE_ATT, DecoderState.NEW);
- session.removeAttribute(BODY_REMAINING_BYTES);
+
+ break;
+
+ case BODY:
+ LOG.debug("decoding BODY: {} bytes", msg.remaining());
+ int chunkSize = msg.remaining();
+
+ // send the chunk of body
+ if (chunkSize != 0) {
+ IoBuffer wb = IoBuffer.allocate(msg.remaining());
+ wb.put(msg);
+ wb.flip();
+ out.write(wb);
+ }
+
+ msg.position(msg.limit());
+
+ // do we have reach end of body ?
+ int remaining;
+
+ // if chunked, remaining is the msg.remaining()
if( session.getAttribute(BODY_CHUNKED) != null ) {
- session.removeAttribute(BODY_CHUNKED);
+ remaining = chunkSize;
+ } else {
+ // otherwise, manage with content-length
+ remaining = (Integer) session.getAttribute(BODY_REMAINING_BYTES);
+ remaining -= chunkSize;
}
- out.write(new HttpEndOfContent());
- } else {
- if( session.getAttribute(BODY_CHUNKED) == null ) {
- session.setAttribute(BODY_REMAINING_BYTES, Integer.valueOf(remaining));
+
+ if (remaining <= 0 ) {
+ LOG.debug("end of HTTP body");
+ session.setAttribute(DECODER_STATE_ATT, DecoderState.NEW);
+ session.removeAttribute(BODY_REMAINING_BYTES);
+
+ if( session.getAttribute(BODY_CHUNKED) != null ) {
+ session.removeAttribute(BODY_CHUNKED);
+ }
+
+ out.write(new HttpEndOfContent());
+ } else {
+ if( session.getAttribute(BODY_CHUNKED) == null ) {
+ session.setAttribute(BODY_REMAINING_BYTES, Integer.valueOf(remaining));
+ }
}
- }
-
- break;
-
- default:
- throw new HttpException(HttpStatus.SERVER_ERROR_INTERNAL_SERVER_ERROR, "Unknonwn decoder state : " + state);
+
+ break;
+
+ default:
+ throw new HttpException(HttpStatus.SERVER_ERROR_INTERNAL_SERVER_ERROR, "Unknonwn decoder state : " + state);
}
}
- public void finishDecode(final IoSession session, final ProtocolDecoderOutput out) throws Exception {
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws Exception {
}
- public void dispose(final IoSession session) throws Exception {
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void dispose(IoSession session) throws Exception {
}
- private DefaultHttpResponse parseHttpReponseHead(final ByteBuffer buffer) {
- // Java 6 >> String raw = new String(buffer.array(), 0, buffer.limit(), Charset.forName("UTF-8"));
- final String raw = new String(buffer.array(), 0, buffer.limit());
- final String[] headersAndBody = RAW_VALUE_PATTERN.split(raw, -1);
+ private DefaultHttpResponse parseHttpReponseHead(ByteBuffer buffer) {
+ String raw = new String(buffer.array(), 0, buffer.limit());
+ String[] headersAndBody = RAW_VALUE_PATTERN.split(raw, -1);
+
if (headersAndBody.length <= 1) {
// we didn't receive the full HTTP head
return null;
@@ -190,24 +213,27 @@ public class HttpClientDecoder implements ProtocolDecoder {
String[] headerFields = HEADERS_BODY_PATTERN.split(headersAndBody[0]);
headerFields = ArrayUtil.dropFromEndWhile(headerFields, "");
- final String requestLine = headerFields[0];
- final Map<String, String> generalHeaders = new HashMap<String, String>();
+ String requestLine = headerFields[0];
+ Map<String, String> generalHeaders = new HashMap<>();
for (int i = 1; i < headerFields.length; i++) {
- final String[] header = HEADER_VALUE_PATTERN.split(headerFields[i]);
+ String[] header = HEADER_VALUE_PATTERN.split(headerFields[i]);
generalHeaders.put(header[0].toLowerCase(), header[1]);
}
- final String[] elements = RESPONSE_LINE_PATTERN.split(requestLine);
+ String[] elements = RESPONSE_LINE_PATTERN.split(requestLine);
HttpStatus status = null;
- final int statusCode = Integer.valueOf(elements[1]);
+ int statusCode = Integer.parseInt(elements[1]);
+
for (int i = 0; i < HttpStatus.values().length; i++) {
status = HttpStatus.values()[i];
if (statusCode == status.code()) {
+
break;
}
}
- final HttpVersion version = HttpVersion.fromString(elements[0]);
+
+ HttpVersion version = HttpVersion.fromString(elements[0]);
// we put the buffer position where we found the beginning of the HTTP body
buffer.position(headersAndBody[0].length() + 4);
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/HttpClientEncoder.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/HttpClientEncoder.java b/mina-http/src/main/java/org/apache/mina/http/HttpClientEncoder.java
index 26f7994..40b1981 100644
--- a/mina-http/src/main/java/org/apache/mina/http/HttpClientEncoder.java
+++ b/mina-http/src/main/java/org/apache/mina/http/HttpClientEncoder.java
@@ -33,23 +33,33 @@ import org.apache.mina.http.api.HttpRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+/**
+ * An encoder for the HTTP client
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public class HttpClientEncoder implements ProtocolEncoder {
private static final Logger LOG = LoggerFactory.getLogger(HttpClientCodec.class);
private static final CharsetEncoder ENCODER = Charset.forName("UTF-8").newEncoder();
- public void encode(IoSession session, Object message, ProtocolEncoderOutput out)
- throws Exception {
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception {
LOG.debug("encode {}", message.getClass().getCanonicalName());
+
if (message instanceof HttpRequest) {
LOG.debug("HttpRequest");
HttpRequest msg = (HttpRequest)message;
StringBuilder sb = new StringBuilder(msg.getMethod().toString());
sb.append(" ");
sb.append(msg.getRequestPath());
+
if (!"".equals(msg.getQueryString())) {
sb.append("?");
sb.append(msg.getQueryString());
}
+
sb.append(" ");
sb.append(msg.getProtocolVersion());
sb.append("\r\n");
@@ -60,10 +70,8 @@ public class HttpClientEncoder implements ProtocolEncoder {
sb.append(header.getValue());
sb.append("\r\n");
}
+
sb.append("\r\n");
- // Java 6 >> byte[] bytes = sb.toString().getBytes(Charset.forName("UTF-8"));
- // byte[] bytes = sb.toString().getBytes();
- // out.write(ByteBuffer.wrap(bytes));
IoBuffer buf = IoBuffer.allocate(sb.length()).setAutoExpand(true);
buf.putString(sb.toString(), ENCODER);
buf.flip();
@@ -76,12 +84,13 @@ public class HttpClientEncoder implements ProtocolEncoder {
// end of HTTP content
// keep alive ?
}
-
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public void dispose(IoSession arg0) throws Exception {
// TODO Auto-generated method stub
-
}
-
}
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/HttpException.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/HttpException.java b/mina-http/src/main/java/org/apache/mina/http/HttpException.java
index db5d78c..b89c11f 100644
--- a/mina-http/src/main/java/org/apache/mina/http/HttpException.java
+++ b/mina-http/src/main/java/org/apache/mina/http/HttpException.java
@@ -21,31 +21,58 @@ package org.apache.mina.http;
import org.apache.mina.http.api.HttpStatus;
+/**
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
@SuppressWarnings("serial")
public class HttpException extends RuntimeException {
-
private final int statusCode;
- public HttpException(final int statusCode) {
+ /**
+ * Creates a new HttpException instance
+ *
+ * @param statusCode The associated status code
+ */
+ public HttpException(int statusCode) {
this(statusCode, "");
}
- public HttpException(final HttpStatus statusCode) {
+ /**
+ * Creates a new HttpException instance
+ *
+ * @param statusCode The associated status code
+ */
+ public HttpException(HttpStatus statusCode) {
this(statusCode, "");
}
- public HttpException(final int statusCode, final String message) {
+ /**
+ * Creates a new HttpException instance
+ *
+ * @param statusCode The associated status code
+ * @param message The error message
+ */
+ public HttpException(int statusCode, String message) {
super(message);
this.statusCode = statusCode;
}
- public HttpException(final HttpStatus statusCode, final String message) {
+ /**
+ * Creates a new HttpException instance
+ *
+ * @param statusCode The associated status code
+ * @param message The error message
+ */
+ public HttpException(HttpStatus statusCode, String message) {
super(message);
this.statusCode = statusCode.code();
}
+ /**
+ * @return The statusCode
+ */
public int getStatusCode() {
return statusCode;
}
-
}
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/HttpRequestImpl.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/HttpRequestImpl.java b/mina-http/src/main/java/org/apache/mina/http/HttpRequestImpl.java
index bfba3e7..2585a36 100644
--- a/mina-http/src/main/java/org/apache/mina/http/HttpRequestImpl.java
+++ b/mina-http/src/main/java/org/apache/mina/http/HttpRequestImpl.java
@@ -30,8 +30,13 @@ import org.apache.mina.http.api.HttpMethod;
import org.apache.mina.http.api.HttpRequest;
import org.apache.mina.http.api.HttpVersion;
+/**
+ * A HTTP Request implementation
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public class HttpRequestImpl implements HttpRequest {
-
+
private final HttpVersion version;
private final HttpMethod method;
@@ -42,6 +47,15 @@ public class HttpRequestImpl implements HttpRequest {
private final Map<String, String> headers;
+ /**
+ * Creates a new HttpRequestImpl instance
+ *
+ * @param version The HTTP version
+ * @param method The HTTP method
+ * @param requestedPath The request path
+ * @param queryString The query string
+ * @param headers The headers
+ */
public HttpRequestImpl(HttpVersion version, HttpMethod method, String requestedPath, String queryString, Map<String, String> headers) {
this.version = version;
this.method = method;
@@ -50,78 +64,130 @@ public class HttpRequestImpl implements HttpRequest {
this.headers = headers;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public HttpVersion getProtocolVersion() {
return version;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public String getContentType() {
return headers.get("content-type");
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public boolean isKeepAlive() {
return false;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public String getHeader(String name) {
return headers.get(name);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public boolean containsHeader(String name) {
return headers.containsKey(name);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public Map<String, String> getHeaders() {
return headers;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public boolean containsParameter(String name) {
- Matcher m = parameterPattern(name);
- return m.find();
+ Matcher m = parameterPattern(name);
+ return m.find();
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public String getParameter(String name) {
- Matcher m = parameterPattern(name);
- if (m.find()) {
- return m.group(1);
- } else {
- return null;
- }
+ Matcher m = parameterPattern(name);
+ if (m.find()) {
+ return m.group(1);
+ } else {
+ return null;
+ }
}
protected Matcher parameterPattern(String name) {
- return Pattern.compile("[&]"+name+"=([^&]*)").matcher("&"+queryString);
+ return Pattern.compile("[&]"+name+"=([^&]*)").matcher("&"+queryString);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public Map<String, List<String>> getParameters() {
- Map<String, List<String>> parameters = new HashMap<String, List<String>>();
+ Map<String, List<String>> parameters = new HashMap<>();
String[] params = queryString.split("&");
if (params.length == 1) {
- return parameters;
+ return parameters;
}
for (int i = 0; i < params.length; i++) {
- String[] param = params[i].split("=");
- String name = param[0];
- String value = param.length == 2 ? param[1] : "";
- if (!parameters.containsKey(name)) {
- parameters.put(name, new ArrayList<String>());
- }
- parameters.get(name).add(value);
- }
+ String[] param = params[i].split("=");
+ String name = param[0];
+ String value = param.length == 2 ? param[1] : "";
+ if (!parameters.containsKey(name)) {
+ parameters.put(name, new ArrayList<String>());
+ }
+ parameters.get(name).add(value);
+ }
return parameters;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public String getQueryString() {
- return queryString;
+ return queryString;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public HttpMethod getMethod() {
return method;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public String getRequestPath() {
- return requestedPath;
+ return requestedPath;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("HTTP REQUEST METHOD: ").append(method).append('\n');
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/HttpServerCodec.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/HttpServerCodec.java b/mina-http/src/main/java/org/apache/mina/http/HttpServerCodec.java
index 0d7173c..45d43ac 100644
--- a/mina-http/src/main/java/org/apache/mina/http/HttpServerCodec.java
+++ b/mina-http/src/main/java/org/apache/mina/http/HttpServerCodec.java
@@ -25,6 +25,11 @@ import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolEncoder;
+/**
+ * The HTTP server codec
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public class HttpServerCodec extends ProtocolCodecFilter {
/** Key for decoder current state */
@@ -36,15 +41,20 @@ public class HttpServerCodec extends ProtocolCodecFilter {
private static ProtocolEncoder encoder = new HttpServerEncoder();
private static ProtocolDecoder decoder = new HttpServerDecoder();
+ /**
+ * Creates a new HttpServerCodec instance
+ */
public HttpServerCodec() {
super(encoder, decoder);
}
+ /**
+ * {@inheritDoc}
+ */
@Override
public void sessionClosed(IoFilter.NextFilter nextFilter, IoSession session) throws Exception {
super.sessionClosed(nextFilter, session);
session.removeAttribute(DECODER_STATE_ATT);
session.removeAttribute(PARTIAL_HEAD_ATT);
}
-
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/HttpServerDecoder.java b/mina-http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
index 56f2e6f..f3b3803 100644
--- a/mina-http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
+++ b/mina-http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
@@ -35,6 +35,11 @@ import org.apache.mina.http.api.HttpVersion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+/**
+ * The HTTP decoder
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public class HttpServerDecoder implements ProtocolDecoder {
private static final Logger LOG = LoggerFactory.getLogger(HttpServerCodec.class);
@@ -71,92 +76,108 @@ public class HttpServerDecoder implements ProtocolDecoder {
/** Regex to split cookie header following RFC6265 Section 5.4 */
public static final Pattern COOKIE_SEPARATOR_PATTERN = Pattern.compile(";");
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public void decode(IoSession session, IoBuffer msg, ProtocolDecoderOutput out) {
DecoderState state = (DecoderState) session.getAttribute(DECODER_STATE_ATT);
+
if (null == state) {
session.setAttribute(DECODER_STATE_ATT, DecoderState.NEW);
state = (DecoderState) session.getAttribute(DECODER_STATE_ATT);
}
+
switch (state) {
- case HEAD:
- LOG.debug("decoding HEAD");
- // grab the stored a partial HEAD request
- final ByteBuffer oldBuffer = (ByteBuffer) session.getAttribute(PARTIAL_HEAD_ATT);
- // concat the old buffer and the new incoming one
- // now let's decode like it was a new message
- msg = IoBuffer.allocate(oldBuffer.remaining() + msg.remaining()).put(oldBuffer).put(msg).flip();
- case NEW:
- LOG.debug("decoding NEW");
- HttpRequestImpl rq = parseHttpRequestHead(msg.buf());
-
- if (rq == null) {
- // we copy the incoming BB because it's going to be recycled by the inner IoProcessor for next reads
- ByteBuffer partial = ByteBuffer.allocate(msg.remaining());
- partial.put(msg.buf());
- partial.flip();
- // no request decoded, we accumulate
- session.setAttribute(PARTIAL_HEAD_ATT, partial);
- session.setAttribute(DECODER_STATE_ATT, DecoderState.HEAD);
- break;
- } else {
- out.write(rq);
- // is it a request with some body content ?
- String contentLen = rq.getHeader("content-length");
-
- if (contentLen != null) {
- LOG.debug("found content len : {}", contentLen);
- session.setAttribute(BODY_REMAINING_BYTES, Integer.valueOf(contentLen));
- session.setAttribute(DECODER_STATE_ATT, DecoderState.BODY);
- // fallthrough, process body immediately
+ case HEAD:
+ LOG.debug("decoding HEAD");
+ // grab the stored a partial HEAD request
+ ByteBuffer oldBuffer = (ByteBuffer) session.getAttribute(PARTIAL_HEAD_ATT);
+ // concat the old buffer and the new incoming one
+ // now let's decode like it was a new message
+ msg = IoBuffer.allocate(oldBuffer.remaining() + msg.remaining()).put(oldBuffer).put(msg).flip();
+
+ case NEW:
+ LOG.debug("decoding NEW");
+ HttpRequestImpl rq = parseHttpRequestHead(msg.buf());
+
+ if (rq == null) {
+ // we copy the incoming BB because it's going to be recycled by the inner IoProcessor for next reads
+ ByteBuffer partial = ByteBuffer.allocate(msg.remaining());
+ partial.put(msg.buf());
+ partial.flip();
+ // no request decoded, we accumulate
+ session.setAttribute(PARTIAL_HEAD_ATT, partial);
+ session.setAttribute(DECODER_STATE_ATT, DecoderState.HEAD);
+ break;
} else {
- LOG.debug("request without content");
+ out.write(rq);
+ // is it a request with some body content ?
+ String contentLen = rq.getHeader("content-length");
+
+ if (contentLen != null) {
+ LOG.debug("found content len : {}", contentLen);
+ session.setAttribute(BODY_REMAINING_BYTES, Integer.valueOf(contentLen));
+ session.setAttribute(DECODER_STATE_ATT, DecoderState.BODY);
+ // fallthrough, process body immediately
+ } else {
+ LOG.debug("request without content");
+ session.setAttribute(DECODER_STATE_ATT, DecoderState.NEW);
+ out.write(new HttpEndOfContent());
+ break;
+ }
+ }
+
+ case BODY:
+ LOG.debug("decoding BODY: {} bytes", msg.remaining());
+ int chunkSize = msg.remaining();
+
+ // send the chunk of body
+ if (chunkSize != 0) {
+ IoBuffer wb = IoBuffer.allocate(msg.remaining());
+ wb.put(msg);
+ wb.flip();
+ out.write(wb);
+ }
+
+ msg.position(msg.limit());
+ // do we have reach end of body ?
+ int remaining = (Integer) session.getAttribute(BODY_REMAINING_BYTES);
+ remaining -= chunkSize;
+
+ if (remaining <= 0) {
+ LOG.debug("end of HTTP body");
session.setAttribute(DECODER_STATE_ATT, DecoderState.NEW);
+ session.removeAttribute(BODY_REMAINING_BYTES);
out.write(new HttpEndOfContent());
- break;
+ } else {
+ session.setAttribute(BODY_REMAINING_BYTES, Integer.valueOf(remaining));
}
- }
-
- case BODY:
- LOG.debug("decoding BODY: {} bytes", msg.remaining());
- final int chunkSize = msg.remaining();
- // send the chunk of body
- if (chunkSize != 0) {
- final IoBuffer wb = IoBuffer.allocate(msg.remaining());
- wb.put(msg);
- wb.flip();
- out.write(wb);
- }
- msg.position(msg.limit());
- // do we have reach end of body ?
- int remaining = (Integer) session.getAttribute(BODY_REMAINING_BYTES);
- remaining -= chunkSize;
-
- if (remaining <= 0) {
- LOG.debug("end of HTTP body");
- session.setAttribute(DECODER_STATE_ATT, DecoderState.NEW);
- session.removeAttribute(BODY_REMAINING_BYTES);
- out.write(new HttpEndOfContent());
- } else {
- session.setAttribute(BODY_REMAINING_BYTES, Integer.valueOf(remaining));
- }
-
- break;
-
- default:
- throw new HttpException(HttpStatus.CLIENT_ERROR_BAD_REQUEST, "Unknonwn decoder state : " + state);
+
+ break;
+
+ default:
+ throw new HttpException(HttpStatus.CLIENT_ERROR_BAD_REQUEST, "Unknonwn decoder state : " + state);
}
}
- public void finishDecode(final IoSession session, final ProtocolDecoderOutput out) throws Exception {
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws Exception {
}
- public void dispose(final IoSession session) throws Exception {
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void dispose(IoSession session) throws Exception {
}
- private HttpRequestImpl parseHttpRequestHead(final ByteBuffer buffer) {
- // Java 6 >> String raw = new String(buffer.array(), 0, buffer.limit(), Charset.forName("UTF-8"));
- final String raw = new String(buffer.array(), 0, buffer.limit());
- final String[] headersAndBody = RAW_VALUE_PATTERN.split(raw, -1);
+ private HttpRequestImpl parseHttpRequestHead(ByteBuffer buffer) {
+ String raw = new String(buffer.array(), 0, buffer.limit());
+ String[] headersAndBody = RAW_VALUE_PATTERN.split(raw, -1);
if (headersAndBody.length <= 1) {
// we didn't receive the full HTTP head
@@ -166,20 +187,20 @@ public class HttpServerDecoder implements ProtocolDecoder {
String[] headerFields = HEADERS_BODY_PATTERN.split(headersAndBody[0]);
headerFields = ArrayUtil.dropFromEndWhile(headerFields, "");
- final String requestLine = headerFields[0];
- final Map<String, String> generalHeaders = new HashMap<String, String>();
+ String requestLine = headerFields[0];
+ Map<String, String> generalHeaders = new HashMap<>();
for (int i = 1; i < headerFields.length; i++) {
- final String[] header = HEADER_VALUE_PATTERN.split(headerFields[i]);
+ String[] header = HEADER_VALUE_PATTERN.split(headerFields[i]);
generalHeaders.put(header[0].toLowerCase(), header[1].trim());
}
- final String[] elements = REQUEST_LINE_PATTERN.split(requestLine);
- final HttpMethod method = HttpMethod.valueOf(elements[0]);
- final HttpVersion version = HttpVersion.fromString(elements[2]);
- final String[] pathFrags = QUERY_STRING_PATTERN.split(elements[1]);
- final String requestedPath = pathFrags[0];
- final String queryString = pathFrags.length == 2 ? pathFrags[1] : "";
+ String[] elements = REQUEST_LINE_PATTERN.split(requestLine);
+ HttpMethod method = HttpMethod.valueOf(elements[0]);
+ HttpVersion version = HttpVersion.fromString(elements[2]);
+ String[] pathFrags = QUERY_STRING_PATTERN.split(elements[1]);
+ String requestedPath = pathFrags[0];
+ String queryString = pathFrags.length == 2 ? pathFrags[1] : "";
// we put the buffer position where we found the beginning of the HTTP body
buffer.position(headersAndBody[0].length() + 4);
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/HttpServerEncoder.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/HttpServerEncoder.java b/mina-http/src/main/java/org/apache/mina/http/HttpServerEncoder.java
index 0001bce..186fea0 100644
--- a/mina-http/src/main/java/org/apache/mina/http/HttpServerEncoder.java
+++ b/mina-http/src/main/java/org/apache/mina/http/HttpServerEncoder.java
@@ -33,14 +33,24 @@ import org.apache.mina.http.api.HttpResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+/**
+ * An encoder for the HTTP server
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public class HttpServerEncoder implements ProtocolEncoder {
private static final Logger LOG = LoggerFactory.getLogger(HttpServerCodec.class);
private static final CharsetEncoder ENCODER = Charset.forName("UTF-8").newEncoder();
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception {
- LOG.debug("encode {}", message.getClass().getCanonicalName());
+ LOG.debug("encode {}", message.getClass().getCanonicalName());
+
if (message instanceof HttpResponse) {
- LOG.debug("HttpResponse");
+ LOG.debug("HttpResponse");
HttpResponse msg = (HttpResponse) message;
StringBuilder sb = new StringBuilder(msg.getStatus().line());
@@ -50,22 +60,26 @@ public class HttpServerEncoder implements ProtocolEncoder {
sb.append(header.getValue());
sb.append("\r\n");
}
+
sb.append("\r\n");
IoBuffer buf = IoBuffer.allocate(sb.length()).setAutoExpand(true);
buf.putString(sb.toString(), ENCODER);
buf.flip();
out.write(buf);
} else if (message instanceof ByteBuffer) {
- LOG.debug("Body {}", message);
- out.write(message);
+ LOG.debug("Body {}", message);
+ out.write(message);
} else if (message instanceof HttpEndOfContent) {
- LOG.debug("End of Content");
+ LOG.debug("End of Content");
// end of HTTP content
// keep alive ?
}
-
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public void dispose(IoSession session) throws Exception {
// TODO Auto-generated method stub
}
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/api/DefaultHttpResponse.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/api/DefaultHttpResponse.java b/mina-http/src/main/java/org/apache/mina/http/api/DefaultHttpResponse.java
index 9b546ef..bfef973 100644
--- a/mina-http/src/main/java/org/apache/mina/http/api/DefaultHttpResponse.java
+++ b/mina-http/src/main/java/org/apache/mina/http/api/DefaultHttpResponse.java
@@ -21,6 +21,11 @@ package org.apache.mina.http.api;
import java.util.Map;
+/**
+ * The default implementation for the HTTP response element.
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public class DefaultHttpResponse implements HttpResponse {
private final HttpVersion version;
@@ -29,37 +34,72 @@ public class DefaultHttpResponse implements HttpResponse {
private final Map<String, String> headers;
+ /**
+ * Creates a new DefaultHttpResponse instance
+ *
+ * @param version The HTTP version
+ * @param status The HTTP status
+ * @param headers The HTTP headers
+ */
public DefaultHttpResponse(HttpVersion version, HttpStatus status, Map<String, String> headers) {
this.version = version;
this.status = status;
this.headers = headers;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public HttpVersion getProtocolVersion() {
return version;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public String getContentType() {
return headers.get("content-type");
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public boolean isKeepAlive() {
// TODO check header and version for keep alive
return false;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public String getHeader(String name) {
return headers.get(name);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public boolean containsHeader(String name) {
return headers.containsKey(name);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public Map<String, String> getHeaders() {
return headers;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public HttpStatus getStatus() {
return status;
}
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/api/HttpContentChunk.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/api/HttpContentChunk.java b/mina-http/src/main/java/org/apache/mina/http/api/HttpContentChunk.java
index 06761a6..4aa9d49 100644
--- a/mina-http/src/main/java/org/apache/mina/http/api/HttpContentChunk.java
+++ b/mina-http/src/main/java/org/apache/mina/http/api/HttpContentChunk.java
@@ -22,7 +22,14 @@ package org.apache.mina.http.api;
import java.nio.ByteBuffer;
import java.util.List;
+/**
+ * The HTTP content chunk object
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public interface HttpContentChunk {
-
+ /**
+ * @return The list of contents
+ */
List<ByteBuffer> getContent();
}
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/api/HttpEndOfContent.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/api/HttpEndOfContent.java b/mina-http/src/main/java/org/apache/mina/http/api/HttpEndOfContent.java
index 026cc39..003fcc8 100644
--- a/mina-http/src/main/java/org/apache/mina/http/api/HttpEndOfContent.java
+++ b/mina-http/src/main/java/org/apache/mina/http/api/HttpEndOfContent.java
@@ -19,8 +19,15 @@
*/
package org.apache.mina.http.api;
+/**
+ * The HTTP end of content element
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public class HttpEndOfContent {
-
+ /**
+ * {@inheritDoc}
+ */
@Override
public String toString() {
return "HttpEndOfContent";
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/api/HttpMessage.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/api/HttpMessage.java b/mina-http/src/main/java/org/apache/mina/http/api/HttpMessage.java
index 5be423e..1cf963e 100644
--- a/mina-http/src/main/java/org/apache/mina/http/api/HttpMessage.java
+++ b/mina-http/src/main/java/org/apache/mina/http/api/HttpMessage.java
@@ -25,7 +25,7 @@ import java.util.Map;
/**
* An HTTP message, the ancestor of HTTP request & response.
*
- * @author The Apache MINA Project (dev@mina.apache.org)
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public interface HttpMessage {
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/api/HttpMethod.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/api/HttpMethod.java b/mina-http/src/main/java/org/apache/mina/http/api/HttpMethod.java
index 5c05d0b..100cd2a 100644
--- a/mina-http/src/main/java/org/apache/mina/http/api/HttpMethod.java
+++ b/mina-http/src/main/java/org/apache/mina/http/api/HttpMethod.java
@@ -20,11 +20,32 @@
package org.apache.mina.http.api;
/**
+ * The HTTP method, one of GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public enum HttpMethod {
-
- GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT
+ /** The GET method */
+ GET,
+
+ /** The HEAD method */
+ HEAD,
+
+ /** The POST method */
+ POST,
+
+ /** The PUT method */
+ PUT,
+
+ /** The DELETE method */
+ DELETE,
+
+ /** The OPTIONS method */
+ OPTIONS,
+
+ /** The TRACE method */
+ TRACE,
+
+ /** The CONNECT method */
+ CONNECT
}
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/api/HttpRequest.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/api/HttpRequest.java b/mina-http/src/main/java/org/apache/mina/http/api/HttpRequest.java
index f895138..1e7cb4c 100644
--- a/mina-http/src/main/java/org/apache/mina/http/api/HttpRequest.java
+++ b/mina-http/src/main/java/org/apache/mina/http/api/HttpRequest.java
@@ -24,10 +24,9 @@ import java.util.List;
import java.util.Map;
/**
- * An HTTP request
- *
- * @author jvermillar
+ * An HTTP request element
*
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public interface HttpRequest extends HttpMessage {
@@ -50,6 +49,9 @@ public interface HttpRequest extends HttpMessage {
*/
String getParameter(String name);
+ /**
+ * @return The query part
+ */
String getQueryString();
/**
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/api/HttpResponse.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/api/HttpResponse.java b/mina-http/src/main/java/org/apache/mina/http/api/HttpResponse.java
index cea28a0..d38b08b 100644
--- a/mina-http/src/main/java/org/apache/mina/http/api/HttpResponse.java
+++ b/mina-http/src/main/java/org/apache/mina/http/api/HttpResponse.java
@@ -22,8 +22,7 @@ package org.apache.mina.http.api;
/**
* An HTTP response to an HTTP request
*
- * @author The Apache MINA Project (dev@mina.apache.org)
- *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public interface HttpResponse extends HttpMessage {
/**
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/api/HttpStatus.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/api/HttpStatus.java b/mina-http/src/main/java/org/apache/mina/http/api/HttpStatus.java
index 7f35df4..a8af909 100644
--- a/mina-http/src/main/java/org/apache/mina/http/api/HttpStatus.java
+++ b/mina-http/src/main/java/org/apache/mina/http/api/HttpStatus.java
@@ -21,6 +21,8 @@ package org.apache.mina.http.api;
/**
* An <code>Enumeration</code> of all known HTTP status codes.
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public enum HttpStatus {
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/api/HttpVerb.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/api/HttpVerb.java b/mina-http/src/main/java/org/apache/mina/http/api/HttpVerb.java
index 0ff719c..edfe5c7 100644
--- a/mina-http/src/main/java/org/apache/mina/http/api/HttpVerb.java
+++ b/mina-http/src/main/java/org/apache/mina/http/api/HttpVerb.java
@@ -19,7 +19,33 @@
*/
package org.apache.mina.http.api;
+/**
+ * The HTTP verb. One of GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE and CONNECT.
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
public enum HttpVerb {
-
- GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT
+ /** The GET verb */
+ GET,
+
+ /** The HEAD verb */
+ HEAD,
+
+ /** The POST verb */
+ POST,
+
+ /** The PUT verb */
+ PUT,
+
+ /** The DELETE verb */
+ DELETE,
+
+ /** The OPTIONS verb */
+ OPTIONS,
+
+ /** The TRACE verb */
+ TRACE,
+
+ /** The CONNECT verb */
+ CONNECT
}
http://git-wip-us.apache.org/repos/asf/mina/blob/591fccb7/mina-http/src/main/java/org/apache/mina/http/api/HttpVersion.java
----------------------------------------------------------------------
diff --git a/mina-http/src/main/java/org/apache/mina/http/api/HttpVersion.java b/mina-http/src/main/java/org/apache/mina/http/api/HttpVersion.java
index 95655bf..98fd695 100644
--- a/mina-http/src/main/java/org/apache/mina/http/api/HttpVersion.java
+++ b/mina-http/src/main/java/org/apache/mina/http/api/HttpVersion.java
@@ -22,7 +22,7 @@ package org.apache.mina.http.api;
/**
* Type safe enumeration representing HTTP protocol version
*
- * @author The Apache MINA Project (dev@mina.apache.org)
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public enum HttpVersion {
/**