Skip to content

Commit da72c22

Browse files
committed
Adding a new test, still failing with handshake
1 parent f9a1da3 commit da72c22

File tree

9 files changed

+127
-157
lines changed

9 files changed

+127
-157
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.javaee7.websocket.encoder.programmatic;
2+
3+
import java.io.IOException;
4+
import java.util.concurrent.CountDownLatch;
5+
import java.util.logging.Level;
6+
import java.util.logging.Logger;
7+
import javax.websocket.ClientEndpoint;
8+
import javax.websocket.EncodeException;
9+
import javax.websocket.OnError;
10+
import javax.websocket.OnMessage;
11+
import javax.websocket.OnOpen;
12+
import javax.websocket.Session;
13+
14+
/**
15+
* @author Arun Gupta
16+
*/
17+
@ClientEndpoint(encoders = {MyMessageEncoder.class},
18+
decoders={MyMessageDecoder.class})
19+
public class MyClient {
20+
public static CountDownLatch latch= new CountDownLatch(4);
21+
22+
@OnOpen
23+
public void onOpen(Session session) {
24+
System.out.println("Connected to endpoint: " + session.getBasicRemote());
25+
try {
26+
MyMessage message = new MyMessage("{\"apple\" : \"red\", \"banana\": \"yellow\"}");
27+
session.getBasicRemote().sendObject(message);
28+
} catch (IOException | EncodeException ex) {
29+
Logger.getLogger(MyClient.class.getName()).log(Level.SEVERE, null, ex);
30+
}
31+
}
32+
33+
@OnMessage
34+
public MyMessage processMessage(MyMessage message) {
35+
latch.countDown();
36+
return message;
37+
}
38+
39+
@OnError
40+
public void onError(Throwable t) {
41+
t.printStackTrace();
42+
}
43+
}

websocket/encoder-programmatic/src/main/java/org/javaee7/websocket/encoder/programmatic/MyEndpoint.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,10 @@ public void onOpen(final Session session, EndpointConfig ec) {
5757
session.addMessageHandler(new MessageHandler.Whole<String>() {
5858

5959
@Override
60-
public void onMessage(String name) {
60+
public void onMessage(String text) {
6161
try {
62-
session.getBasicRemote().sendText("Hello " + name);
62+
MyClient.latch.countDown();
63+
session.getBasicRemote().sendText(text);
6364
} catch (IOException ex) {
6465
Logger.getLogger(MyEndpoint.class.getName()).log(Level.SEVERE, null, ex);
6566
}

websocket/encoder-programmatic/src/main/java/org/javaee7/websocket/encoder/programmatic/MyEndpointConfiguration.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public MyEndpointConfiguration() {
6767
public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> set) {
6868
return new HashSet<ServerEndpointConfig>() {
6969
{
70-
add(ServerEndpointConfig.Builder.create(MyEndpoint.class, "/websocket")
70+
add(ServerEndpointConfig.Builder.create(MyEndpoint.class, "/encoder-programmatic")
7171
.encoders(encoders)
7272
.decoders(decoders)
7373
.build());
@@ -79,6 +79,4 @@ public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint
7979
public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> set) {
8080
return Collections.emptySet();
8181
}
82-
83-
8482
}

websocket/encoder-programmatic/src/main/java/org/javaee7/websocket/encoder/programmatic/MyMessage.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
*/
4040
package org.javaee7.websocket.encoder.programmatic;
4141

42+
import java.io.StringReader;
43+
import javax.json.Json;
4244
import javax.json.JsonObject;
4345

4446
/**
@@ -50,6 +52,10 @@ public class MyMessage {
5052

5153
public MyMessage() {
5254
}
55+
56+
public MyMessage(String string) {
57+
jsonObject = Json.createReader(new StringReader(string)).readObject();
58+
}
5359

5460
public MyMessage(JsonObject jsonObject) {
5561
this.jsonObject = jsonObject;

websocket/encoder-programmatic/src/main/java/org/javaee7/websocket/encoder/programmatic/MyMessageDecoder.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public class MyMessageDecoder implements Decoder.Text<MyMessage> {
5252

5353
@Override
5454
public MyMessage decode(String string) throws DecodeException {
55+
MyClient.latch.countDown();
5556
MyMessage myMessage = new MyMessage(Json.createReader(new StringReader(string)).readObject());
5657
return myMessage;
5758
}
@@ -62,12 +63,8 @@ public boolean willDecode(String string) {
6263
}
6364

6465
@Override
65-
public void init(EndpointConfig ec) {
66-
System.out.println("init");
67-
}
66+
public void init(EndpointConfig ec) { }
6867

6968
@Override
70-
public void destroy() {
71-
System.out.println("desroy");
72-
}
69+
public void destroy() { }
7370
}

websocket/encoder-programmatic/src/main/java/org/javaee7/websocket/encoder/programmatic/MyMessageEncoder.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,13 @@
4949
public class MyMessageEncoder implements Encoder.Text<MyMessage> {
5050
@Override
5151
public String encode(MyMessage myMessage) throws EncodeException {
52+
MyClient.latch.countDown();
5253
return myMessage.getJsonObject().toString();
5354
}
5455

5556
@Override
56-
public void init(EndpointConfig ec) {
57-
System.out.println("init");
58-
}
57+
public void init(EndpointConfig ec) { }
5958

6059
@Override
61-
public void destroy() {
62-
System.out.println("desroy");
63-
}
60+
public void destroy() { }
6461
}

websocket/encoder-programmatic/src/main/webapp/index.jsp

Lines changed: 0 additions & 68 deletions
This file was deleted.

websocket/encoder-programmatic/src/main/webapp/websocket.js

Lines changed: 0 additions & 72 deletions
This file was deleted.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package org.javaee7.websocket.encoder.programmatic;
2+
3+
import java.io.IOException;
4+
import java.net.URI;
5+
import java.net.URISyntaxException;
6+
import java.util.concurrent.TimeUnit;
7+
import javax.websocket.ContainerProvider;
8+
import javax.websocket.DeploymentException;
9+
import javax.websocket.MessageHandler;
10+
import javax.websocket.Session;
11+
import javax.websocket.WebSocketContainer;
12+
import org.jboss.arquillian.container.test.api.Deployment;
13+
import org.jboss.arquillian.junit.Arquillian;
14+
import org.jboss.arquillian.test.api.ArquillianResource;
15+
import org.jboss.shrinkwrap.api.ShrinkWrap;
16+
import org.jboss.shrinkwrap.api.spec.WebArchive;
17+
import org.junit.Test;
18+
import static org.junit.Assert.*;
19+
import org.junit.runner.RunWith;
20+
21+
/**
22+
* @author Arun Gupta
23+
*/
24+
@RunWith(Arquillian.class)
25+
public class MyClientTest {
26+
@ArquillianResource
27+
URI base;
28+
29+
@Deployment(testable = false)
30+
public static WebArchive createDeployment() {
31+
return ShrinkWrap.create(WebArchive.class)
32+
.addClasses(MyEndpoint.class,
33+
MyEndpointConfiguration.class,
34+
MyClient.class,
35+
MyMessage.class,
36+
MyMessageEncoder.class,
37+
MyMessageDecoder.class);
38+
}
39+
40+
@Test
41+
public void testEndpoint() throws URISyntaxException, DeploymentException, IOException, InterruptedException {
42+
final String JSON = "{\"apple\" : \"red\", \"banana\": \"yellow\"}";
43+
Session session = connectToServer(MyClient.class);
44+
assertNotNull(session);
45+
session.addMessageHandler(new MessageHandler.Whole<String>() {
46+
@Override
47+
public void onMessage(String text) {
48+
assertEquals(JSON, text);
49+
}
50+
});
51+
assertTrue(MyClient.latch.await(2, TimeUnit.SECONDS));
52+
}
53+
54+
public Session connectToServer(Class endpoint) throws DeploymentException, IOException, URISyntaxException {
55+
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
56+
assertNotNull(container);
57+
assertNotNull(base);
58+
URI uri = new URI("ws://"
59+
+ base.getHost()
60+
+ ":"
61+
+ base.getPort()
62+
+ "/"
63+
+ base.getPath()
64+
+ "/encoder-programmatic");
65+
return container.connectToServer(endpoint, uri);
66+
}
67+
68+
}

0 commit comments

Comments
 (0)