Updated Branches: refs/heads/trunk d2b08c051 -> 06bac93f2
CoAP code and javadoc cleanup Project: http://git-wip-us.apache.org/repos/asf/mina/repo Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/06bac93f Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/06bac93f Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/06bac93f Branch: refs/heads/trunk Commit: 06bac93f213a12dc00c4d708cb7c59a14acafc31 Parents: d2b08c0 Author: jvermillard <[email protected]> Authored: Sat May 11 19:23:52 2013 +0200 Committer: jvermillard <[email protected]> Committed: Sat May 11 19:23:52 2013 +0200 ---------------------------------------------------------------------- .../java/org/apache/mina/coap/CoapMessage.java | 32 +++++++++++++- .../main/java/org/apache/mina/coap/CoapOption.java | 17 +++++++- .../java/org/apache/mina/coap/CoapOptionType.java | 3 + .../java/org/apache/mina/coap/MessageType.java | 3 + .../org/apache/mina/coap/codec/CoapDecoder.java | 4 +- .../org/apache/mina/coap/codec/CoapEncoder.java | 2 + .../org/apache/mina/coap/codec/TestMessages.java | 10 ++-- .../apache/mina/examples/coap/CoapGetServer.java | 4 +- 8 files changed, 63 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina/blob/06bac93f/coap/src/main/java/org/apache/mina/coap/CoapMessage.java ---------------------------------------------------------------------- diff --git a/coap/src/main/java/org/apache/mina/coap/CoapMessage.java b/coap/src/main/java/org/apache/mina/coap/CoapMessage.java index a26e12d..ff278fc 100644 --- a/coap/src/main/java/org/apache/mina/coap/CoapMessage.java +++ b/coap/src/main/java/org/apache/mina/coap/CoapMessage.java @@ -22,9 +22,15 @@ package org.apache.mina.coap; import java.util.Arrays; import java.util.Comparator; +/** + * A representation of CoAP message following the CoAP RFC. + * + * @author <a href="http://mina.apache.org">Apache MINA Project</a> + */ public class CoapMessage { - private final static byte[] EMPTY_BYTE_ARRAY = new byte[] {}; + private static final byte[] EMPTY_BYTE_ARRAY = new byte[] {}; + private final int version; private final MessageType type; private final int code; @@ -33,8 +39,19 @@ public class CoapMessage { private final byte[] payload; private final CoapOption[] options; - public CoapMessage(int version, MessageType type, int code, int id, byte[] token, byte[] payload, - CoapOption[] options) { + /** + * Create a CoAP message + * + * @param version the version (you probably want 1 here) + * @param type the type of CoAP message + * @param code the message code : {@link CoapCode} + * @param id the identifier for this message + * @param token the message token (can be <code>null</code>) + * @param options list of options for this message (can be <code>null</code>) + * @param payload the payload of the message (can be <code>null</code> + */ + public CoapMessage(int version, MessageType type, int code, int id, byte[] token, CoapOption[] options, + byte[] payload) { super(); this.version = version; this.type = type; @@ -83,6 +100,9 @@ public class CoapMessage { return type; } + /** + * {@inheritDoc} + */ @Override public String toString() { StringBuilder builder = new StringBuilder(); @@ -93,6 +113,9 @@ public class CoapMessage { return builder.toString(); } + /** + * {@inheritDoc} + */ @Override public int hashCode() { final int prime = 31; @@ -107,6 +130,9 @@ public class CoapMessage { return result; } + /** + * {@inheritDoc} + */ @Override public boolean equals(Object obj) { if (this == obj) http://git-wip-us.apache.org/repos/asf/mina/blob/06bac93f/coap/src/main/java/org/apache/mina/coap/CoapOption.java ---------------------------------------------------------------------- diff --git a/coap/src/main/java/org/apache/mina/coap/CoapOption.java b/coap/src/main/java/org/apache/mina/coap/CoapOption.java index 941ec8a..a2efa82 100644 --- a/coap/src/main/java/org/apache/mina/coap/CoapOption.java +++ b/coap/src/main/java/org/apache/mina/coap/CoapOption.java @@ -31,10 +31,16 @@ public class CoapOption { private final CoapOptionType type; private final byte[] data; + /** + * Create a CoAP option + * + * @param type the type of the option + * @param data the content of the option + */ public CoapOption(CoapOptionType type, byte[] data) { super(); this.type = type; - this.data = data; + this.data = Arrays.copyOf(data, data.length); } public CoapOptionType getType() { @@ -45,6 +51,9 @@ public class CoapOption { return data; } + /** + * {@inheritDoc} + */ @Override public String toString() { StringBuilder builder = new StringBuilder(); @@ -52,6 +61,9 @@ public class CoapOption { return builder.toString(); } + /** + * {@inheritDoc} + */ @Override public int hashCode() { final int prime = 31; @@ -61,6 +73,9 @@ public class CoapOption { return result; } + /** + * {@inheritDoc} + */ @Override public boolean equals(Object obj) { if (this == obj) http://git-wip-us.apache.org/repos/asf/mina/blob/06bac93f/coap/src/main/java/org/apache/mina/coap/CoapOptionType.java ---------------------------------------------------------------------- diff --git a/coap/src/main/java/org/apache/mina/coap/CoapOptionType.java b/coap/src/main/java/org/apache/mina/coap/CoapOptionType.java index b6626c8..993ae58 100644 --- a/coap/src/main/java/org/apache/mina/coap/CoapOptionType.java +++ b/coap/src/main/java/org/apache/mina/coap/CoapOptionType.java @@ -34,6 +34,9 @@ public enum CoapOptionType { this.code = code; } + /** + * @return the numeric code for this option type + */ public int getCode() { return code; } http://git-wip-us.apache.org/repos/asf/mina/blob/06bac93f/coap/src/main/java/org/apache/mina/coap/MessageType.java ---------------------------------------------------------------------- diff --git a/coap/src/main/java/org/apache/mina/coap/MessageType.java b/coap/src/main/java/org/apache/mina/coap/MessageType.java index 5fad5ef..e24d70e 100644 --- a/coap/src/main/java/org/apache/mina/coap/MessageType.java +++ b/coap/src/main/java/org/apache/mina/coap/MessageType.java @@ -39,6 +39,9 @@ public enum MessageType { this.code = code; } + /** + * @return the numeric code for this message type + */ public int getCode() { return code; } http://git-wip-us.apache.org/repos/asf/mina/blob/06bac93f/coap/src/main/java/org/apache/mina/coap/codec/CoapDecoder.java ---------------------------------------------------------------------- diff --git a/coap/src/main/java/org/apache/mina/coap/codec/CoapDecoder.java b/coap/src/main/java/org/apache/mina/coap/codec/CoapDecoder.java index 7be4c90..19b6f7e 100644 --- a/coap/src/main/java/org/apache/mina/coap/codec/CoapDecoder.java +++ b/coap/src/main/java/org/apache/mina/coap/codec/CoapDecoder.java @@ -36,6 +36,8 @@ import org.slf4j.LoggerFactory; /** * Decoder CoAP messages from the ByteBuffer of a received UDP Datagram. * + * Decode {@link ByteBuffer} into {@link CoapMessage}. + * * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public class CoapDecoder implements StatelessProtocolDecoder<ByteBuffer, CoapMessage> { @@ -125,7 +127,7 @@ public class CoapDecoder implements StatelessProtocolDecoder<ByteBuffer, CoapMes if (input.hasRemaining()) { throw new ProtocolDecoderException("trailling " + input.remaining() + " bytes in the UDP datagram"); } - return new CoapMessage(version, type, code, id, token, payload, options.toArray(EMPTY_OPTION)); + return new CoapMessage(version, type, code, id, token, options.toArray(EMPTY_OPTION), payload); } /** http://git-wip-us.apache.org/repos/asf/mina/blob/06bac93f/coap/src/main/java/org/apache/mina/coap/codec/CoapEncoder.java ---------------------------------------------------------------------- diff --git a/coap/src/main/java/org/apache/mina/coap/codec/CoapEncoder.java b/coap/src/main/java/org/apache/mina/coap/codec/CoapEncoder.java index f24fb1b..3018a6f 100644 --- a/coap/src/main/java/org/apache/mina/coap/codec/CoapEncoder.java +++ b/coap/src/main/java/org/apache/mina/coap/codec/CoapEncoder.java @@ -31,6 +31,8 @@ import org.slf4j.LoggerFactory; /** * Encode a CoAP message following the RFC. * + * Encode {@link CoapMessage} into {@link ByteBuffer} + * * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public class CoapEncoder implements StatelessProtocolEncoder<CoapMessage, ByteBuffer> { http://git-wip-us.apache.org/repos/asf/mina/blob/06bac93f/coap/src/test/java/org/apache/mina/coap/codec/TestMessages.java ---------------------------------------------------------------------- diff --git a/coap/src/test/java/org/apache/mina/coap/codec/TestMessages.java b/coap/src/test/java/org/apache/mina/coap/codec/TestMessages.java index 3cd676e..c3418eb 100644 --- a/coap/src/test/java/org/apache/mina/coap/codec/TestMessages.java +++ b/coap/src/test/java/org/apache/mina/coap/codec/TestMessages.java @@ -36,22 +36,22 @@ public interface TestMessages { public static final String NO_CONTENT_NO_OPTION_HEX = "600104D2"; public static final CoapMessage SOME_CONTENT_NO_OPTION = new CoapMessage(1, MessageType.CONFIRMABLE, 1, 1234, - "token".getBytes(), "some rather large payload".getBytes(), null); + "token".getBytes(), null, "some rather large payload".getBytes()); public static final String SOME_CONTENT_NO_OPTION_HEX = "450104D2746F6B656EFF736F6D6520726174686572206C61726765207061796C6F6164"; public static final CoapMessage PAYLOAD_AND_ONE_OPTION = new CoapMessage(1, MessageType.NON_CONFIRMABLE, 1, 1234, - "toto".getBytes(), new byte[] {}, new CoapOption[] { new CoapOption(CoapOptionType.URI_PATH, - "coap://blabla".getBytes()) }); + "toto".getBytes(), new CoapOption[] { new CoapOption(CoapOptionType.URI_PATH, + "coap://blabla".getBytes()) }, new byte[] {}); public static final String PAYLOAD_AND_ONE_OPTION_HEX = "540104D2746F746FBD00636F61703A2F2F626C61626C61"; public static final CoapMessage PAYLOAD_AND_MULTIPLE_OPTION = new CoapMessage(1, MessageType.NON_CONFIRMABLE, 1, - 1234, "toto".getBytes(), new byte[] {}, new CoapOption[] { // + 1234, "toto".getBytes(), new CoapOption[] { // new CoapOption(CoapOptionType.URI_PATH, "coap://blabla".getBytes()), // new CoapOption(CoapOptionType.LOCATION_QUERY, "somewhere".getBytes()), // new CoapOption(CoapOptionType.PROXY_URI, "http://proxyuri".getBytes()), // - new CoapOption(CoapOptionType.MAX_AGE, "bleh".getBytes()) }); + new CoapOption(CoapOptionType.MAX_AGE, "bleh".getBytes()) }, new byte[] {}); public static final String PAYLOAD_AND_MULTIPLE_OPTION_HEX = "540104D2746F746FBD00636F61703A2F2F626C61626C6134626C656869736F6D657768657265DD0202687474703A2F2F70726F7879757269";// "540104D2746F746FBD00636F61703A2F2F626C61626C6134626C656869736F6D657768657265DD02687474703A2F2F70726F7879757269"; } http://git-wip-us.apache.org/repos/asf/mina/blob/06bac93f/examples/src/main/java/org/apache/mina/examples/coap/CoapGetServer.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/mina/examples/coap/CoapGetServer.java b/examples/src/main/java/org/apache/mina/examples/coap/CoapGetServer.java index 31c7fde..4a87b99 100644 --- a/examples/src/main/java/org/apache/mina/examples/coap/CoapGetServer.java +++ b/examples/src/main/java/org/apache/mina/examples/coap/CoapGetServer.java @@ -90,8 +90,8 @@ public class CoapGetServer { // let's confirm it CoapMessage response = new CoapMessage(1, MessageType.ACK, CoapCode.CONTENT.getCode(), msg.getId(), - msg.getToken(), "hello coap !".getBytes(), new CoapOption[] { new CoapOption( - CoapOptionType.CONTENT_FORMAT, new byte[] { 0 }) }); + msg.getToken(), new CoapOption[] { new CoapOption( + CoapOptionType.CONTENT_FORMAT, new byte[] { 0 }) }, "hello coap !".getBytes()); session.write(response); } }
