diff --git a/codec-stomp/pom.xml b/codec-stomp/pom.xml
index 693cbbeb35..d00fab5132 100644
--- a/codec-stomp/pom.xml
+++ b/codec-stomp/pom.xml
@@ -20,7 +20,7 @@
io.netty
netty-parent
- 4.1.0.Alpha1-SNAPSHOT
+ 5.0.0.Alpha2-SNAPSHOT
netty-codec-stomp
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultFullStompFrame.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultFullStompFrame.java
deleted file mode 100644
index d13bd031fb..0000000000
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultFullStompFrame.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2014 The Netty Project
- *
- * The Netty Project 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 io.netty.handler.codec.stomp;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-import io.netty.util.CharsetUtil;
-
-/**
- * Default implementation of {@link FullStompFrame}.
- */
-public class DefaultFullStompFrame extends DefaultStompFrame implements FullStompFrame {
- private final ByteBuf content;
-
- public DefaultFullStompFrame(StompCommand command) {
- this(command, Unpooled.buffer(0));
- if (command == null) {
- throw new NullPointerException("command");
- }
- }
-
- public DefaultFullStompFrame(StompCommand command, ByteBuf content) {
- super(command);
- if (content == null) {
- throw new NullPointerException("content");
- }
- this.content = content;
- }
-
- @Override
- public ByteBuf content() {
- return content;
- }
-
- @Override
- public FullStompFrame copy() {
- return new DefaultFullStompFrame(command, content.copy());
- }
-
- @Override
- public FullStompFrame duplicate() {
- return new DefaultFullStompFrame(command, content.duplicate());
- }
-
- @Override
- public int refCnt() {
- return content.refCnt();
- }
-
- @Override
- public FullStompFrame retain() {
- content.retain();
- return this;
- }
-
- @Override
- public FullStompFrame retain(int increment) {
- content.retain();
- return this;
- }
-
- @Override
- public FullStompFrame touch() {
- content.touch();
- return this;
- }
-
- @Override
- public FullStompFrame touch(Object hint) {
- content.touch(hint);
- return this;
- }
-
- @Override
- public boolean release() {
- return content.release();
- }
-
- @Override
- public boolean release(int decrement) {
- return content.release(decrement);
- }
-
- @Override
- public String toString() {
- return "DefaultFullStompFrame{" +
- "command=" + command +
- ", headers=" + headers +
- ", content=" + content.toString(CharsetUtil.UTF_8) +
- '}';
- }
-}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultLastStompContent.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultLastStompContentSubframe.java
similarity index 60%
rename from codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultLastStompContent.java
rename to codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultLastStompContentSubframe.java
index 96680cd030..eaca9f9900 100644
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultLastStompContent.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultLastStompContentSubframe.java
@@ -18,52 +18,52 @@ package io.netty.handler.codec.stomp;
import io.netty.buffer.ByteBuf;
/**
- * The default implementation for the {@link LastStompContent}.
+ * The default implementation for the {@link LastStompContentSubframe}.
*/
-public class DefaultLastStompContent extends DefaultStompContent implements LastStompContent {
- public DefaultLastStompContent(ByteBuf content) {
+public class DefaultLastStompContentSubframe extends DefaultStompContentSubframe implements LastStompContentSubframe {
+
+ public DefaultLastStompContentSubframe(ByteBuf content) {
super(content);
}
@Override
- public DefaultLastStompContent retain() {
+ public DefaultLastStompContentSubframe retain() {
super.retain();
return this;
}
@Override
- public LastStompContent retain(int increment) {
+ public LastStompContentSubframe retain(int increment) {
super.retain(increment);
return this;
}
@Override
- public LastStompContent touch() {
+ public LastStompContentSubframe touch() {
super.touch();
return this;
}
@Override
- public LastStompContent touch(Object hint) {
+ public LastStompContentSubframe touch(Object hint) {
super.touch(hint);
return this;
}
@Override
- public LastStompContent copy() {
- return new DefaultLastStompContent(content().copy());
+ public LastStompContentSubframe copy() {
+ return new DefaultLastStompContentSubframe(content().copy());
}
@Override
- public LastStompContent duplicate() {
- return new DefaultLastStompContent(content().duplicate());
+ public LastStompContentSubframe duplicate() {
+ return new DefaultLastStompContentSubframe(content().duplicate());
}
@Override
public String toString() {
return "DefaultLastStompContent{" +
- "decoderResult=" + getDecoderResult() +
+ "decoderResult=" + decoderResult() +
'}';
}
-
}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompContent.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompContentSubframe.java
similarity index 70%
rename from codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompContent.java
rename to codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompContentSubframe.java
index 6450a931c5..2c212634ce 100644
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompContent.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompContentSubframe.java
@@ -20,13 +20,13 @@ import io.netty.buffer.ByteBuf;
import io.netty.handler.codec.DecoderResult;
/**
- * The default {@link StompContent} implementation.
+ * The default {@link StompContentSubframe} implementation.
*/
-public class DefaultStompContent implements StompContent {
+public class DefaultStompContentSubframe implements StompContentSubframe {
private DecoderResult decoderResult;
private final ByteBuf content;
- public DefaultStompContent(ByteBuf content) {
+ public DefaultStompContentSubframe(ByteBuf content) {
if (content == null) {
throw new NullPointerException("content");
}
@@ -39,13 +39,13 @@ public class DefaultStompContent implements StompContent {
}
@Override
- public StompContent copy() {
- return new DefaultStompContent(content().copy());
+ public StompContentSubframe copy() {
+ return new DefaultStompContentSubframe(content().copy());
}
@Override
- public StompContent duplicate() {
- return new DefaultStompContent(content().duplicate());
+ public StompContentSubframe duplicate() {
+ return new DefaultStompContentSubframe(content().duplicate());
}
@Override
@@ -54,25 +54,25 @@ public class DefaultStompContent implements StompContent {
}
@Override
- public StompContent retain() {
+ public StompContentSubframe retain() {
content().retain();
return this;
}
@Override
- public StompContent retain(int increment) {
+ public StompContentSubframe retain(int increment) {
content().retain(increment);
return this;
}
@Override
- public StompContent touch() {
- content.toString();
+ public StompContentSubframe touch() {
+ content.touch();
return this;
}
@Override
- public StompContent touch(Object hint) {
+ public StompContentSubframe touch(Object hint) {
content.touch(hint);
return this;
}
@@ -88,13 +88,13 @@ public class DefaultStompContent implements StompContent {
}
@Override
- public DecoderResult getDecoderResult() {
+ public DecoderResult decoderResult() {
return decoderResult;
}
@Override
- public void setDecoderResult(DecoderResult result) {
- this.decoderResult = result;
+ public void setDecoderResult(DecoderResult decoderResult) {
+ this.decoderResult = decoderResult;
}
@Override
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompFrame.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompFrame.java
index 40404fddb6..90ed4a7950 100644
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompFrame.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompFrame.java
@@ -15,48 +15,92 @@
*/
package io.netty.handler.codec.stomp;
-import io.netty.handler.codec.DecoderResult;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
+import io.netty.util.CharsetUtil;
/**
* Default implementation of {@link StompFrame}.
*/
-public class DefaultStompFrame implements StompFrame {
- protected final StompCommand command;
- protected DecoderResult decoderResult;
- protected final StompHeaders headers = new StompHeaders();
+public class DefaultStompFrame extends DefaultStompHeadersSubframe implements StompFrame {
+
+ private final ByteBuf content;
public DefaultStompFrame(StompCommand command) {
+ this(command, Unpooled.buffer(0));
if (command == null) {
throw new NullPointerException("command");
}
- this.command = command;
+ }
+
+ public DefaultStompFrame(StompCommand command, ByteBuf content) {
+ super(command);
+ if (content == null) {
+ throw new NullPointerException("content");
+ }
+ this.content = content;
}
@Override
- public StompCommand command() {
- return command;
+ public ByteBuf content() {
+ return content;
}
@Override
- public StompHeaders headers() {
- return headers;
+ public StompFrame copy() {
+ return new DefaultStompFrame(command, content.copy());
}
@Override
- public DecoderResult getDecoderResult() {
- return decoderResult;
+ public StompFrame duplicate() {
+ return new DefaultStompFrame(command, content.duplicate());
}
@Override
- public void setDecoderResult(DecoderResult decoderResult) {
- this.decoderResult = decoderResult;
+ public int refCnt() {
+ return content.refCnt();
+ }
+
+ @Override
+ public StompFrame retain() {
+ content.retain();
+ return this;
+ }
+
+ @Override
+ public StompFrame retain(int increment) {
+ content.retain();
+ return this;
+ }
+
+ @Override
+ public StompFrame touch() {
+ content.touch();
+ return this;
+ }
+
+ @Override
+ public StompFrame touch(Object hint) {
+ content.touch(hint);
+ return this;
+ }
+
+ @Override
+ public boolean release() {
+ return content.release();
+ }
+
+ @Override
+ public boolean release(int decrement) {
+ return content.release(decrement);
}
@Override
public String toString() {
- return "StompFrame{" +
+ return "DefaultFullStompFrame{" +
"command=" + command +
", headers=" + headers +
+ ", content=" + content.toString(CharsetUtil.UTF_8) +
'}';
}
}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompHeadersSubframe.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompHeadersSubframe.java
new file mode 100644
index 0000000000..236fcddd56
--- /dev/null
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/DefaultStompHeadersSubframe.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2014 The Netty Project
+ *
+ * The Netty Project 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 io.netty.handler.codec.stomp;
+
+import io.netty.handler.codec.DecoderResult;
+
+/**
+ * Default implementation of {@link StompHeadersSubframe}.
+ */
+public class DefaultStompHeadersSubframe implements StompHeadersSubframe {
+
+ protected final StompCommand command;
+ protected DecoderResult decoderResult;
+ protected final StompHeaders headers = new StompHeaders();
+
+ public DefaultStompHeadersSubframe(StompCommand command) {
+ if (command == null) {
+ throw new NullPointerException("command");
+ }
+ this.command = command;
+ }
+
+ @Override
+ public StompCommand command() {
+ return command;
+ }
+
+ @Override
+ public StompHeaders headers() {
+ return headers;
+ }
+
+ @Override
+ public DecoderResult decoderResult() {
+ return decoderResult;
+ }
+
+ @Override
+ public void setDecoderResult(DecoderResult decoderResult) {
+ this.decoderResult = decoderResult;
+ }
+
+ @Override
+ public String toString() {
+ return "StompFrame{" +
+ "command=" + command +
+ ", headers=" + headers +
+ '}';
+ }
+}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/FullStompFrame.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/FullStompFrame.java
deleted file mode 100644
index 11cbe54ca5..0000000000
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/FullStompFrame.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright 2014 The Netty Project
- *
- * The Netty Project 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 io.netty.handler.codec.stomp;
-
-/**
- * Combines {@link StompFrame} and {@link LastStompContent} into one
- * frame. So it represent a complete STOMP frame.
- */
-public interface FullStompFrame extends StompFrame, LastStompContent {
- @Override
- FullStompFrame copy();
-
- @Override
- FullStompFrame duplicate();
-
- @Override
- FullStompFrame retain();
-
- @Override
- FullStompFrame retain(int increment);
-
- @Override
- FullStompFrame touch();
-
- @Override
- FullStompFrame touch(Object hint);
-
-}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/LastStompContent.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/LastStompContentSubframe.java
similarity index 66%
rename from codec-stomp/src/main/java/io/netty/handler/codec/stomp/LastStompContent.java
rename to codec-stomp/src/main/java/io/netty/handler/codec/stomp/LastStompContentSubframe.java
index cf94a783ce..138d24edbc 100644
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/LastStompContent.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/LastStompContentSubframe.java
@@ -20,47 +20,47 @@ import io.netty.buffer.Unpooled;
import io.netty.handler.codec.DecoderResult;
/**
- * The last {@link StompContent} which signals the end of the content batch
+ * The last {@link StompContentSubframe} which signals the end of the content batch
*
* Note, even when no content is emitted by the protocol, an
- * empty {@link LastStompContent} is issued to make the upstream parsing
+ * empty {@link LastStompContentSubframe} is issued to make the upstream parsing
* easier.
*/
-public interface LastStompContent extends StompContent {
+public interface LastStompContentSubframe extends StompContentSubframe {
- LastStompContent EMPTY_LAST_CONTENT = new LastStompContent() {
+ LastStompContentSubframe EMPTY_LAST_CONTENT = new LastStompContentSubframe() {
@Override
public ByteBuf content() {
return Unpooled.EMPTY_BUFFER;
}
@Override
- public LastStompContent copy() {
+ public LastStompContentSubframe copy() {
return EMPTY_LAST_CONTENT;
}
@Override
- public LastStompContent duplicate() {
+ public LastStompContentSubframe duplicate() {
return this;
}
@Override
- public LastStompContent retain() {
+ public LastStompContentSubframe retain() {
return this;
}
@Override
- public LastStompContent retain(int increment) {
+ public LastStompContentSubframe retain(int increment) {
return this;
}
@Override
- public LastStompContent touch() {
+ public LastStompContentSubframe touch() {
return this;
}
@Override
- public LastStompContent touch(Object hint) {
+ public LastStompContentSubframe touch(Object hint) {
return this;
}
@@ -80,7 +80,7 @@ public interface LastStompContent extends StompContent {
}
@Override
- public DecoderResult getDecoderResult() {
+ public DecoderResult decoderResult() {
return DecoderResult.SUCCESS;
}
@@ -91,21 +91,20 @@ public interface LastStompContent extends StompContent {
};
@Override
- LastStompContent copy();
+ LastStompContentSubframe copy();
@Override
- LastStompContent duplicate();
+ LastStompContentSubframe duplicate();
@Override
- LastStompContent retain();
+ LastStompContentSubframe retain();
@Override
- LastStompContent retain(int increment);
+ LastStompContentSubframe retain(int increment);
@Override
- LastStompContent touch();
+ LastStompContentSubframe touch();
@Override
- LastStompContent touch(Object hint);
-
+ LastStompContentSubframe touch(Object hint);
}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompCommand.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompCommand.java
index c5f0aa0244..789be1ef0f 100644
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompCommand.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompCommand.java
@@ -19,7 +19,18 @@ package io.netty.handler.codec.stomp;
* STOMP command
*/
public enum StompCommand {
- STOMP, CONNECT, CONNECTED, SEND, SUBSCRIBE, UNSUBSCRIBE, ACK, NACK, BEGIN, DISCONNECT, MESSAGE, RECEIPT, ERROR,
+ STOMP,
+ CONNECT,
+ CONNECTED,
+ SEND,
+ SUBSCRIBE,
+ UNSUBSCRIBE,
+ ACK,
+ NACK,
+ BEGIN,
+ DISCONNECT,
+ MESSAGE,
+ RECEIPT,
+ ERROR,
UNKNOWN
-
}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompConstants.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompConstants.java
index 67cbb6608a..3c9401ab2e 100644
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompConstants.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompConstants.java
@@ -16,12 +16,11 @@
package io.netty.handler.codec.stomp;
final class StompConstants {
- public static final byte CR = 13;
- public static final byte LF = 10;
- public static final byte NULL = 0;
- public static final byte COLON = 58;
- private StompConstants() {
- }
+ static final byte CR = 13;
+ static final byte LF = 10;
+ static final byte NUL = 0;
+ static final byte COLON = 58;
+ private StompConstants() { }
}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompContent.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompContentSubframe.java
similarity index 54%
rename from codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompContent.java
rename to codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompContentSubframe.java
index eeaafee8ab..7b55edb893 100644
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompContent.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompContentSubframe.java
@@ -16,32 +16,31 @@
package io.netty.handler.codec.stomp;
import io.netty.buffer.ByteBufHolder;
+import io.netty.channel.ChannelPipeline;
/**
- * An STOMP chunk which is used for STOMP chunked transfer-encoding.
- * {@link StompDecoder} generates {@link StompContent} after
- * {@link StompFrame} when the content is large or the encoding of the content
- * is 'chunked. If you prefer not to receive {@link StompContent} in your handler,
- * place {@link StompAggregator} after {@link StompDecoder} in the
- * {@link io.netty.channel.ChannelPipeline}.
+ * An STOMP chunk which is used for STOMP chunked transfer-encoding. {@link StompSubframeDecoder} generates
+ * {@link StompContentSubframe} after {@link StompHeadersSubframe} when the content is large or the encoding of
+ * the content is 'chunked. If you prefer not to receive multiple {@link StompSubframe}s for a single
+ * {@link StompFrame}, place {@link StompSubframeAggregator} after {@link StompSubframeDecoder} in the
+ * {@link ChannelPipeline}.
*/
-public interface StompContent extends ByteBufHolder, StompObject {
+public interface StompContentSubframe extends ByteBufHolder, StompSubframe {
@Override
- StompContent copy();
+ StompContentSubframe copy();
@Override
- StompContent duplicate();
+ StompContentSubframe duplicate();
@Override
- StompContent retain();
+ StompContentSubframe retain();
@Override
- StompContent retain(int increment);
+ StompContentSubframe retain(int increment);
@Override
- StompContent touch();
+ StompContentSubframe touch();
@Override
- StompContent touch(Object hint);
-
+ StompContentSubframe touch(Object hint);
}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompFrame.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompFrame.java
index 99c589b31e..254ac6073c 100644
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompFrame.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompFrame.java
@@ -16,23 +16,25 @@
package io.netty.handler.codec.stomp;
/**
- * An interface that defines a Stomp frame
- *
- * @see StompFrame
- * @see FullStompFrame
- * @see StompHeaders
+ * Combines {@link StompHeadersSubframe} and {@link LastStompContentSubframe} into one
+ * frame. So it represent a complete STOMP frame.
*/
-public interface StompFrame extends StompObject {
- /**
- * returns command of this frame
- * @return the command
- */
- StompCommand command();
+public interface StompFrame extends StompHeadersSubframe, LastStompContentSubframe {
+ @Override
+ StompFrame copy();
- /**
- * returns headers of this frame
- * @return the headers object
- */
- StompHeaders headers();
+ @Override
+ StompFrame duplicate();
+ @Override
+ StompFrame retain();
+
+ @Override
+ StompFrame retain(int increment);
+
+ @Override
+ StompFrame touch();
+
+ @Override
+ StompFrame touch(Object hint);
}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompHeaders.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompHeaders.java
index b04d8d9e55..9f54dada32 100644
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompHeaders.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompHeaders.java
@@ -18,16 +18,16 @@ package io.netty.handler.codec.stomp;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Provides the constants for the standard STOMP header names and values and
- * commonly used utility methods that accesses an {@link StompFrame}.
+ * commonly used utility methods that accesses an {@link StompHeadersSubframe}.
*/
public class StompHeaders {
+
public static final String ACCEPT_VERSION = "accept-version";
public static final String HOST = "host";
public static final String LOGIN = "login";
@@ -48,28 +48,16 @@ public class StompHeaders {
public static final String CONTENT_LENGTH = "content-length";
public static final String CONTENT_TYPE = "content-type";
- public static long getContentLength(StompHeaders headers, long defaultValue) {
- String contentLength = headers.get(CONTENT_LENGTH);
- if (contentLength != null) {
- try {
- return Long.parseLong(contentLength);
- } catch (NumberFormatException e) {
- return defaultValue;
- }
- }
- return defaultValue;
- }
-
private final Map> headers = new HashMap>();
public boolean has(String key) {
List values = headers.get(key);
- return values != null && values.size() > 0;
+ return values != null && !values.isEmpty();
}
public String get(String key) {
List values = headers.get(key);
- if (values != null && values.size() > 0) {
+ if (values != null && !values.isEmpty()) {
return values.get(0);
} else {
return null;
@@ -85,6 +73,7 @@ public class StompHeaders {
values.add(value);
}
+ @SuppressWarnings("ArraysAsListWithZeroOrOneArgument")
public void set(String key, String value) {
headers.put(key, Arrays.asList(value));
}
@@ -110,8 +99,7 @@ public class StompHeaders {
}
public void set(StompHeaders headers) {
- for (Iterator iterator = headers.keySet().iterator(); iterator.hasNext();) {
- String key = iterator.next();
+ for (String key: headers.keySet()) {
List values = headers.getAll(key);
this.headers.put(key, values);
}
diff --git a/example/src/main/java/io/netty/example/stomp/StompFrameListener.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompHeadersSubframe.java
similarity index 62%
rename from example/src/main/java/io/netty/example/stomp/StompFrameListener.java
rename to codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompHeadersSubframe.java
index 03d7f4e4f5..064be80d62 100644
--- a/example/src/main/java/io/netty/example/stomp/StompFrameListener.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompHeadersSubframe.java
@@ -13,13 +13,22 @@
* License for the specific language governing permissions and limitations
* under the License.
*/
-package io.netty.example.stomp;
-
-import io.netty.handler.codec.stomp.FullStompFrame;
+package io.netty.handler.codec.stomp;
/**
- * STOMP frame listener which used as a callback in {@link StompClientHandler}
+ * An interface that defines a {@link StompFrame}'s command and headers.
+ *
+ * @see StompCommand
+ * @see StompHeaders
*/
-public interface StompFrameListener {
- void onFrame(FullStompFrame frame);
+public interface StompHeadersSubframe extends StompSubframe {
+ /**
+ * Returns command of this frame.
+ */
+ StompCommand command();
+
+ /**
+ * Returns headers of this frame.
+ */
+ StompHeaders headers();
}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompObject.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompSubframe.java
similarity index 77%
rename from codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompObject.java
rename to codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompSubframe.java
index 15be1686fc..22f676a335 100644
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompObject.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompSubframe.java
@@ -18,18 +18,17 @@ package io.netty.handler.codec.stomp;
import io.netty.handler.codec.DecoderResult;
/**
- * Defines a common interface for all {@link StompObject} implementations.
+ * Defines a common interface for all {@link StompSubframe} implementations.
*/
-public interface StompObject {
+public interface StompSubframe {
/**
* Returns the result of decoding this object.
*/
- DecoderResult getDecoderResult();
+ DecoderResult decoderResult();
/**
- * Updates the result of decoding this object. This method is supposed to be invoked by {@link StompDecoder}.
- * Do not call this method unless you know what you are doing.
+ * Updates the result of decoding this object. This method is supposed to be invoked by
+ * {@link StompSubframeDecoder}. Do not call this method unless you know what you are doing.
*/
void setDecoderResult(DecoderResult result);
-
}
diff --git a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompAggregator.java b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompSubframeAggregator.java
similarity index 77%
rename from codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompAggregator.java
rename to codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompSubframeAggregator.java
index 9976906b51..093e3f84fd 100644
--- a/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompAggregator.java
+++ b/codec-stomp/src/main/java/io/netty/handler/codec/stomp/StompSubframeAggregator.java
@@ -15,28 +15,30 @@
*/
package io.netty.handler.codec.stomp;
-import java.util.List;
-
import io.netty.buffer.CompositeByteBuf;
import io.netty.buffer.Unpooled;
+import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelPipeline;
import io.netty.handler.codec.MessageToMessageDecoder;
import io.netty.handler.codec.TooLongFrameException;
+import java.util.List;
+
/**
- * A {@link io.netty.channel.ChannelHandler} that aggregates an {@link StompFrame}
- * and its following {@link StompContent}s into a single {@link StompFrame} with
- * no following {@link StompContent}s. It is useful when you don't want to take
- * care of STOMP frames whose content is 'chunked'. Insert this
- * handler after {@link StompDecoder} in the {@link io.netty.channel.ChannelPipeline}:
+ * A {@link ChannelHandler} that aggregates an {@link StompHeadersSubframe}
+ * and its following {@link StompContentSubframe}s into a single {@link StompFrame}.
+ * It is useful when you don't want to take care of STOMP frames whose content is 'chunked'. Insert this
+ * handler after {@link StompSubframeDecoder} in the {@link ChannelPipeline}:
*/
-public class StompAggregator extends MessageToMessageDecoder {
- public static final int DEFAULT_MAX_COMPOSITEBUFFER_COMPONENTS = 1024;
+public class StompSubframeAggregator extends MessageToMessageDecoder {
+
+ private static final int DEFAULT_MAX_COMPOSITEBUFFER_COMPONENTS = 1024;
private int maxCumulationBufferComponents = DEFAULT_MAX_COMPOSITEBUFFER_COMPONENTS;
private final int maxContentLength;
- private FullStompFrame currentFrame;
+ private StompFrame currentFrame;
private boolean tooLongFrameFound;
private volatile boolean handlerAdded;
@@ -48,7 +50,7 @@ public class StompAggregator extends MessageToMessageDecoder {
* If the length of the aggregated content exceeds this value,
* a {@link TooLongFrameException} will be raised.
*/
- public StompAggregator(int maxContentLength) {
+ public StompSubframeAggregator(int maxContentLength) {
if (maxContentLength <= 0) {
throw new IllegalArgumentException(
"maxContentLength must be a positive integer: " +
@@ -80,23 +82,23 @@ public class StompAggregator extends MessageToMessageDecoder {
}
@Override
- protected void decode(ChannelHandlerContext ctx, StompObject msg, List