Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Moves poison-pill to Java 11
  • Loading branch information
anuragagarwal561994 committed Dec 29, 2019
commit c9a6d9d2c996f6280756768e0c9da767bc97cef6
28 changes: 10 additions & 18 deletions poison-pill/src/main/java/com/iluwatar/poison/pill/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,18 @@ public class App {
* @param args command line args
*/
public static void main(String[] args) {
MessageQueue queue = new SimpleMessageQueue(10000);
var queue = new SimpleMessageQueue(10000);

final Producer producer = new Producer("PRODUCER_1", queue);
final Consumer consumer = new Consumer("CONSUMER_1", queue);
final var producer = new Producer("PRODUCER_1", queue);
final var consumer = new Consumer("CONSUMER_1", queue);

new Thread() {
@Override
public void run() {
consumer.consume();
}
}.start();
new Thread(consumer::consume).start();

new Thread() {
@Override
public void run() {
producer.send("hand shake");
producer.send("some very important information");
producer.send("bye!");
producer.stop();
}
}.start();
new Thread(() -> {
producer.send("hand shake");
producer.send("some very important information");
producer.send("bye!");
producer.stop();
}).start();
}
}
10 changes: 4 additions & 6 deletions poison-pill/src/main/java/com/iluwatar/poison/pill/Consumer.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,22 +47,20 @@ public Consumer(String name, MqSubscribePoint queue) {
*/
public void consume() {
while (true) {
Message msg;
try {
msg = queue.take();
var msg = queue.take();
if (Message.POISON_PILL.equals(msg)) {
LOGGER.info("Consumer {} receive request to terminate.", name);
break;
}
var sender = msg.getHeader(Headers.SENDER);
var body = msg.getBody();
LOGGER.info("Message [{}] from [{}] received by [{}]", body, sender, name);
} catch (InterruptedException e) {
// allow thread to exit
LOGGER.error("Exception caught.", e);
return;
}

String sender = msg.getHeader(Headers.SENDER);
String body = msg.getBody();
LOGGER.info("Message [{}] from [{}] received by [{}]", body, sender, name);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public void send(String body) {
throw new IllegalStateException(String.format(
"Producer %s was stopped and fail to deliver requested message [%s].", body, name));
}
Message msg = new SimpleMessage();
var msg = new SimpleMessage();
msg.addHeader(Headers.DATE, new Date().toString());
msg.addHeader(Headers.SENDER, name);
msg.setBody(body);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,12 @@
import org.junit.jupiter.api.Test;

/**
*
* Application test
*
*/
public class AppTest {

@Test
public void test() {
String[] args = {};
App.main(args);
App.main(new String[]{});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,19 @@

package com.iluwatar.poison.pill;

import static org.junit.jupiter.api.Assertions.assertTrue;

import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.List;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.slf4j.LoggerFactory;

import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.List;

import static org.junit.jupiter.api.Assertions.assertTrue;

/**
* Date: 12/27/15 - 9:45 PM
*
Expand All @@ -58,15 +57,15 @@ public void tearDown() {

@Test
public void testConsume() throws Exception {
final Message[] messages = new Message[]{
final var messages = List.of(
createMessage("you", "Hello!"),
createMessage("me", "Hi!"),
Message.POISON_PILL,
createMessage("late_for_the_party", "Hello? Anyone here?"),
};
createMessage("late_for_the_party", "Hello? Anyone here?")
);

final MessageQueue queue = new SimpleMessageQueue(messages.length);
for (final Message message : messages) {
final var queue = new SimpleMessageQueue(messages.size());
for (final var message : messages) {
queue.put(message);
}

Expand All @@ -85,7 +84,7 @@ public void testConsume() throws Exception {
* @return The message instance
*/
private static Message createMessage(final String sender, final String message) {
final SimpleMessage msg = new SimpleMessage();
final var msg = new SimpleMessage();
msg.addHeader(Message.Headers.SENDER, sender);
msg.addHeader(Message.Headers.DATE, LocalDateTime.now().toString());
msg.setBody(message);
Expand All @@ -106,7 +105,7 @@ protected void append(ILoggingEvent eventObject) {
}

public boolean logContains(String message) {
return log.stream().anyMatch(event -> event.getFormattedMessage().equals(message));
return log.stream().map(ILoggingEvent::getFormattedMessage).anyMatch(message::equals);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@

package com.iluwatar.poison.pill;

import org.junit.jupiter.api.Test;

import static com.iluwatar.poison.pill.Message.Headers;
import static com.iluwatar.poison.pill.Message.POISON_PILL;
import static org.junit.jupiter.api.Assertions.assertThrows;

import org.junit.jupiter.api.Test;

/**
* Date: 12/27/15 - 10:30 PM
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@

package com.iluwatar.poison.pill;

import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.fail;
Expand All @@ -35,6 +32,9 @@
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.verifyZeroInteractions;

import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;

/**
* Date: 12/27/15 - 10:32 PM
*
Expand All @@ -44,16 +44,16 @@ public class ProducerTest {

@Test
public void testSend() throws Exception {
final MqPublishPoint publishPoint = mock(MqPublishPoint.class);
final Producer producer = new Producer("producer", publishPoint);
final var publishPoint = mock(MqPublishPoint.class);
final var producer = new Producer("producer", publishPoint);
verifyZeroInteractions(publishPoint);

producer.send("Hello!");

final ArgumentCaptor<Message> messageCaptor = ArgumentCaptor.forClass(Message.class);
final var messageCaptor = ArgumentCaptor.forClass(Message.class);
verify(publishPoint).put(messageCaptor.capture());

final Message message = messageCaptor.getValue();
final var message = messageCaptor.getValue();
assertNotNull(message);
assertEquals("producer", message.getHeader(Message.Headers.SENDER));
assertNotNull(message.getHeader(Message.Headers.DATE));
Expand All @@ -64,8 +64,8 @@ public void testSend() throws Exception {

@Test
public void testStop() throws Exception {
final MqPublishPoint publishPoint = mock(MqPublishPoint.class);
final Producer producer = new Producer("producer", publishPoint);
final var publishPoint = mock(MqPublishPoint.class);
final var producer = new Producer("producer", publishPoint);
verifyZeroInteractions(publishPoint);

producer.stop();
Expand All @@ -78,7 +78,7 @@ public void testStop() throws Exception {
assertNotNull(e);
assertNotNull(e.getMessage());
assertEquals("Producer Hello! was stopped and fail to deliver requested message [producer].",
e.getMessage());
e.getMessage());
}

verifyNoMoreInteractions(publishPoint);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,14 @@

package com.iluwatar.poison.pill;

import org.junit.jupiter.api.Test;

import java.util.Map;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.Test;

/**
* Date: 12/27/15 - 10:25 PM
*
Expand All @@ -42,11 +40,11 @@ public class SimpleMessageTest {

@Test
public void testGetHeaders() {
final SimpleMessage message = new SimpleMessage();
final var message = new SimpleMessage();
assertNotNull(message.getHeaders());
assertTrue(message.getHeaders().isEmpty());

final String senderName = "test";
final var senderName = "test";
message.addHeader(Message.Headers.SENDER, senderName);
assertNotNull(message.getHeaders());
assertFalse(message.getHeaders().isEmpty());
Expand All @@ -55,8 +53,8 @@ public void testGetHeaders() {

@Test
public void testUnModifiableHeaders() {
final SimpleMessage message = new SimpleMessage();
final Map<Message.Headers, String> headers = message.getHeaders();
final var message = new SimpleMessage();
final var headers = message.getHeaders();
assertThrows(UnsupportedOperationException.class, () -> {
headers.put(Message.Headers.SENDER, "test");
});
Expand Down