Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt2015-05-06 17:22:41 +0000
committerJoakim Erdfelt2015-05-06 22:49:25 +0000
commit8e7f05190db698a4d9ffe7b92286b878cce1807d (patch)
tree14b0277432341646b8ee9796eb3d97b98e607246 /jetty-websocket/javax-websocket-client-impl/src
parent744b9e4c62923f8db57742397f6d327409aabf71 (diff)
downloadorg.eclipse.jetty.project-8e7f05190db698a4d9ffe7b92286b878cce1807d.tar.gz
org.eclipse.jetty.project-8e7f05190db698a4d9ffe7b92286b878cce1807d.tar.xz
org.eclipse.jetty.project-8e7f05190db698a4d9ffe7b92286b878cce1807d.zip
466618 - Partial WebSocket Text delivery does not like incomplete UTF8 sequences
+ Adding implementation of Utf8PartialBuilder to JSR356 Endpoints
Diffstat (limited to 'jetty-websocket/javax-websocket-client-impl/src')
-rw-r--r--jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialMessage.java7
-rw-r--r--jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialOnMessage.java16
2 files changed, 11 insertions, 12 deletions
diff --git a/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialMessage.java b/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialMessage.java
index 21d06b5d2e..97689198ab 100644
--- a/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialMessage.java
+++ b/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialMessage.java
@@ -24,8 +24,8 @@ import java.nio.ByteBuffer;
import javax.websocket.MessageHandler;
import javax.websocket.MessageHandler.Partial;
-import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.websocket.common.message.MessageAppender;
+import org.eclipse.jetty.websocket.common.util.Utf8PartialBuilder;
import org.eclipse.jetty.websocket.jsr356.MessageHandlerWrapper;
/**
@@ -36,19 +36,22 @@ public class TextPartialMessage implements MessageAppender
@SuppressWarnings("unused")
private final MessageHandlerWrapper msgWrapper;
private final MessageHandler.Partial<String> partialHandler;
+ private final Utf8PartialBuilder utf8Partial;
@SuppressWarnings("unchecked")
public TextPartialMessage(MessageHandlerWrapper wrapper)
{
this.msgWrapper = wrapper;
this.partialHandler = (Partial<String>)wrapper.getHandler();
+ this.utf8Partial = new Utf8PartialBuilder();
}
@Override
public void appendFrame(ByteBuffer payload, boolean isLast) throws IOException
{
+ String partialText = utf8Partial.toPartialString(payload);
// No decoders for Partial messages per JSR-356 (PFD1 spec)
- partialHandler.onMessage(BufferUtil.toUTF8String(payload.slice()),isLast);
+ partialHandler.onMessage(partialText,isLast);
}
@Override
diff --git a/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialOnMessage.java b/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialOnMessage.java
index 4b996fe200..24fd0bbdeb 100644
--- a/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialOnMessage.java
+++ b/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialOnMessage.java
@@ -23,8 +23,8 @@ import java.nio.ByteBuffer;
import javax.websocket.OnMessage;
-import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.websocket.common.message.MessageAppender;
+import org.eclipse.jetty.websocket.common.util.Utf8PartialBuilder;
import org.eclipse.jetty.websocket.jsr356.endpoints.JsrAnnotatedEventDriver;
/**
@@ -33,12 +33,14 @@ import org.eclipse.jetty.websocket.jsr356.endpoints.JsrAnnotatedEventDriver;
public class TextPartialOnMessage implements MessageAppender
{
private final JsrAnnotatedEventDriver driver;
+ private final Utf8PartialBuilder utf8Partial;
private boolean finished;
public TextPartialOnMessage(JsrAnnotatedEventDriver driver)
{
this.driver = driver;
this.finished = false;
+ this.utf8Partial = new Utf8PartialBuilder();
}
@Override
@@ -48,15 +50,9 @@ public class TextPartialOnMessage implements MessageAppender
{
throw new IOException("Cannot append to finished buffer");
}
- if (payload == null)
- {
- driver.onPartialTextMessage("",isLast);
- }
- else
- {
- String text = BufferUtil.toUTF8String(payload);
- driver.onPartialTextMessage(text,isLast);
- }
+
+ String text = utf8Partial.toPartialString(payload);
+ driver.onPartialTextMessage(text,isLast);
}
@Override

Back to the top