Skip to content

Commit 0c19894

Browse files
committed
Added SSE client implementation.
1 parent 1188f18 commit 0c19894

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@
3939
<version>${jersey.version}</version>
4040
<scope>test</scope>
4141
</dependency>
42+
<dependency>
43+
<groupId>org.glassfish.jersey.media</groupId>
44+
<artifactId>jersey-media-sse</artifactId>
45+
<version>${jersey.version}</version>
46+
<scope>test</scope>
47+
</dependency>
4248

4349
</dependencies>
4450

src/test/java/com/packtpub/javaee8/SseClientIntegrationTest.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,14 @@
88

99
import javax.ws.rs.client.Client;
1010
import javax.ws.rs.client.ClientBuilder;
11+
import javax.ws.rs.client.Entity;
1112
import javax.ws.rs.client.WebTarget;
13+
import javax.ws.rs.core.MediaType;
14+
import javax.ws.rs.sse.SseEventSource;
15+
import java.util.concurrent.Executors;
16+
import java.util.concurrent.ScheduledExecutorService;
1217
import java.util.concurrent.TimeUnit;
18+
import java.util.logging.Level;
1319
import java.util.logging.Logger;
1420

1521
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@@ -20,22 +26,37 @@ public class SseClientIntegrationTest {
2026
private Client client;
2127
private WebTarget webTarget;
2228

29+
private ScheduledExecutorService executorService;
30+
2331
@Before
2432
public void setUp() {
2533
client = ClientBuilder.newBuilder()
2634
.connectTimeout(5, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS)
2735
.build();
2836

29-
webTarget = client.target("http://localhost:8080").path("/sse-service/api");
37+
webTarget = client.target("http://localhost:8080").path("/sse-service/api/events");
38+
executorService = Executors.newSingleThreadScheduledExecutor();
3039
}
3140

3241
@After
3342
public void tearDown() {
3443
client.close();
44+
executorService.shutdown();
3545
}
3646

3747
@Test
3848
public void receiveSse() throws Exception {
39-
// TODO implement me
49+
50+
executorService.scheduleWithFixedDelay(() -> {
51+
webTarget.request().post(Entity.entity("Hello SSE JAX-RS client.", MediaType.TEXT_PLAIN_TYPE));
52+
}, 250, 500, TimeUnit.MILLISECONDS);
53+
54+
try (SseEventSource eventSource = SseEventSource.target(webTarget).build()) {
55+
eventSource.register((e) -> LOGGER.log(Level.INFO, "Recieved event {0} with data {1}.",
56+
new Object[]{e.getName(), e.readData()}));
57+
eventSource.open();
58+
59+
TimeUnit.SECONDS.sleep(3);
60+
}
4061
}
4162
}

0 commit comments

Comments
 (0)