From dce767c1c5e46e071d4de42a6bb504afa21d940f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mih=C3=A1ly=20Kuprivecz?= Date: Thu, 6 Apr 2017 23:48:15 +0200 Subject: [PATCH 01/35] first commit --- event-queue/README.md | 0 event-queue/etc/Bass-Drum-1.wav | Bin 0 -> 221080 bytes event-queue/etc/Closed-Hi-Hat-1.wav | Bin 0 -> 13032 bytes event-queue/pom.xml | 42 ++++++ .../java/com/iluwatar/event/queue/App.java | 67 +++++++++ .../java/com/iluwatar/event/queue/Audio.java | 131 ++++++++++++++++++ .../com/iluwatar/event/queue/PlayMessage.java | 36 +++++ pom.xml | 1 + 8 files changed, 277 insertions(+) create mode 100644 event-queue/README.md create mode 100644 event-queue/etc/Bass-Drum-1.wav create mode 100644 event-queue/etc/Closed-Hi-Hat-1.wav create mode 100644 event-queue/pom.xml create mode 100644 event-queue/src/main/java/com/iluwatar/event/queue/App.java create mode 100644 event-queue/src/main/java/com/iluwatar/event/queue/Audio.java create mode 100644 event-queue/src/main/java/com/iluwatar/event/queue/PlayMessage.java diff --git a/event-queue/README.md b/event-queue/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/event-queue/etc/Bass-Drum-1.wav b/event-queue/etc/Bass-Drum-1.wav new file mode 100644 index 0000000000000000000000000000000000000000..566181d942aa4542f36826d55161845f9ed0ad53 GIT binary patch literal 221080 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
  • 60JcG?;$VvR*l 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%0DPyWASwtTqG(=xxC$ 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 y;eWVa{^sco@Y8mk00;|V + + + 4.0.0 + + com.iluwatar + java-design-patterns + 1.16.0-SNAPSHOT + + event-queue + + + junit + junit + test + + + diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/App.java b/event-queue/src/main/java/com/iluwatar/event/queue/App.java new file mode 100644 index 000000000..a84027ecb --- /dev/null +++ b/event-queue/src/main/java/com/iluwatar/event/queue/App.java @@ -0,0 +1,67 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.event.queue; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; + +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.UnsupportedAudioFileException; + +/** + * Event or message queues provide an asynchronous communications protocol, meaning that the sender + * and receiver of the message do not need to interact with the message queue at the same time. + * Events or messages placed onto the queue are stored until the recipient retrieves them. Event + * or message queues have implicit or explicit limits on the size of data that may be transmitted + * in a single message and the number of messages that may remain outstanding on the queue. + * A queue stores a series of notifications or requests in first-in, first-out order. + * Sending a notification enqueues the request and returns. The request processor then processes + * items from the queue at a later time. + */ +public class App { + /** + * Program entry point. + * + * @param args command line args + * @throws IOException when there is a problem with the audio file loading + * @throws UnsupportedAudioFileException when the loaded audio file is unsupported + */ + public static void main(String[] args) throws UnsupportedAudioFileException, IOException { + Audio.playSound(getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f); + Audio.playSound(getAudioStream("./etc/Closed-Hi-Hat-1.wav"), -8.0f); + + System.out.println("Press Enter key to stop the program..."); + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + br.read(); + Audio.stopService(); + } + + public static AudioInputStream getAudioStream(String filePath) + throws UnsupportedAudioFileException, IOException { + return AudioSystem.getAudioInputStream(new File(filePath).getAbsoluteFile()); + } +} diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java new file mode 100644 index 000000000..a9f0c5a67 --- /dev/null +++ b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java @@ -0,0 +1,131 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.event.queue; + +import java.io.IOException; + +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; +import javax.sound.sampled.LineUnavailableException; + +/** + * This class implements the Event Queue pattern. + * @author mkuprivecz + * + */ +public class Audio { + + private static final int MAX_PENDING = 16; + + private static int headIndex; + + private static int tailIndex; + + private static Thread updateThread = null; + + private static PlayMessage[] pendingAudio = new PlayMessage[MAX_PENDING]; + + public static boolean isServiceRunning() { + return updateThread.isAlive(); + } + + /** + * This method stops the Update Method's thread. + */ + public static void stopService() { + if (updateThread != null) { + updateThread.interrupt(); + } + } + + /** + * Starts the thread for the Update Method pattern if it was not started previously. + * Also when the thread is is ready initializes the indexes of the queue + */ + public static void init() { + if (updateThread == null) { + updateThread = new Thread(new Runnable() { + public void run() { + while (!Thread.currentThread().isInterrupted()) { + Audio.update(); + } + } + }); + } + if (!updateThread.isAlive()) { + updateThread.start(); + headIndex = 0; + tailIndex = 0; + } + } + + /** + * This method adds a new audio into the queue. + * @param stream is the AudioInputStream for the method + * @param volume is the level of the audio's volume + */ + public static void playSound(AudioInputStream stream, float volume) { + init(); + // Walk the pending requests. + for (int i = headIndex; i != tailIndex; i = (i + 1) % MAX_PENDING) { + if (pendingAudio[i].stream == stream) { + // Use the larger of the two volumes. + pendingAudio[i].volume = Math.max(volume, pendingAudio[i].volume); + + // Don't need to enqueue. + return; + } + } + pendingAudio[tailIndex] = new PlayMessage(); + pendingAudio[tailIndex].stream = stream; + pendingAudio[tailIndex].volume = volume; + tailIndex = (tailIndex + 1) % MAX_PENDING; + } + + /** + * This method uses the Update Method pattern. + * It takes the audio from the queue and plays it + */ + public static void update() { + // If there are no pending requests, do nothing. + if (headIndex == tailIndex) { + return; + } + Clip clip = null; + try { + clip = AudioSystem.getClip(); + clip.open(pendingAudio[headIndex].stream); + } catch (LineUnavailableException e) { + System.err.println("Error occoured while loading the audio: The line is unavailable"); + e.printStackTrace(); + } catch (IOException e) { + System.err.println("Input/Output error while loading the audio"); + e.printStackTrace(); + } + clip.start(); + + headIndex++; + } +} diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/PlayMessage.java b/event-queue/src/main/java/com/iluwatar/event/queue/PlayMessage.java new file mode 100644 index 000000000..5d151e8d5 --- /dev/null +++ b/event-queue/src/main/java/com/iluwatar/event/queue/PlayMessage.java @@ -0,0 +1,36 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.event.queue; + +import javax.sound.sampled.AudioInputStream; + +/** + * The Event Queue's queue will store the instances of this class. + * @author mkuprivecz + * + */ +public class PlayMessage { + AudioInputStream stream; + float volume; +} diff --git a/pom.xml b/pom.xml index 4b9740857..bca17e99a 100644 --- a/pom.xml +++ b/pom.xml @@ -133,6 +133,7 @@ promise page-object event-asynchronous + event-queue queue-load-leveling object-mother converter From 152b2762c3710902e1a08af7ffdca2b8d44c5388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mih=C3=A1ly=20Kuprivecz?= Date: Sat, 22 Apr 2017 17:16:38 +0200 Subject: [PATCH 02/35] read.me and the diagram is added --- event-queue/README.md | 29 ++++++++++++++ event-queue/etc/event-queue.urm.puml | 26 +++++++++++++ event-queue/etc/model.png | Bin 0 -> 10815 bytes event-queue/model.png | Bin 0 -> 10815 bytes event-queue/model.ucls | 36 ++++++++++++++++++ .../java/com/iluwatar/event/queue/Audio.java | 9 +---- 6 files changed, 93 insertions(+), 7 deletions(-) create mode 100644 event-queue/etc/event-queue.urm.puml create mode 100644 event-queue/etc/model.png create mode 100644 event-queue/model.png create mode 100644 event-queue/model.ucls diff --git a/event-queue/README.md b/event-queue/README.md index e69de29bb..2129f8c69 100644 --- a/event-queue/README.md +++ b/event-queue/README.md @@ -0,0 +1,29 @@ +--- +layout: pattern +title: Event Queue +folder: event-queue +permalink: /patterns/event-queue/ +categories: Concurrency +tags: + - Java + - Difficulty Intermediate + - Queue +--- + +## Intent +Event Queue is a good pattern if You have a limited accesibility resource (for example: +Audio or Database), but You need to handle all the requests that want to use that. +It puts all the requests in a queue and process them asynchronously. +Gives the resource for the event when it is the next in the queue and in same time +removes it from the queue. + +![alt text](./etc/model.png "Event Queue") + +## Applicability +Use the Event Queue pattern when + +* You have a limited accesibility resource and the asynchronous process is acceptable to reach that + +## Credits + +* [Mihály Kuprivecz - Event Queue] diff --git a/event-queue/etc/event-queue.urm.puml b/event-queue/etc/event-queue.urm.puml new file mode 100644 index 000000000..e2aabee31 --- /dev/null +++ b/event-queue/etc/event-queue.urm.puml @@ -0,0 +1,26 @@ +@startuml +package com.iluwatar.event.queue { + class App { + + App() + + getAudioStream(filePath : String) : AudioInputStream {static} + + main(args : String[]) {static} + } + class Audio { + - MAX_PENDING : int {static} + - headIndex : int {static} + - pendingAudio : PlayMessage[] {static} + - tailIndex : int {static} + - updateThread : Thread {static} + + Audio() + + init() {static} + + playSound(stream : AudioInputStream, volume : float) {static} + + stopService() {static} + + update() {static} + } + class PlayMessage { + ~ stream : AudioInputStream + ~ volume : float + + PlayMessage() + } +} +@enduml \ No newline at end of file diff --git a/event-queue/etc/model.png b/event-queue/etc/model.png new file mode 100644 index 0000000000000000000000000000000000000000..8222dccbfabf674306accfe10e990d3adb12b43f GIT binary patch literal 10815 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 DNMN3U literal 0 HcmV?d00001 diff --git a/event-queue/model.png b/event-queue/model.png new file mode 100644 index 0000000000000000000000000000000000000000..8222dccbfabf674306accfe10e990d3adb12b43f GIT binary patch literal 10815 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 DNMN3U literal 0 HcmV?d00001 diff --git a/event-queue/model.ucls b/event-queue/model.ucls new file mode 100644 index 000000000..ed923014b --- /dev/null +++ b/event-queue/model.ucls @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java index a9f0c5a67..e00cd375a 100644 --- a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java +++ b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java @@ -47,10 +47,6 @@ public class Audio { private static PlayMessage[] pendingAudio = new PlayMessage[MAX_PENDING]; - public static boolean isServiceRunning() { - return updateThread.isAlive(); - } - /** * This method stops the Update Method's thread. */ @@ -117,6 +113,8 @@ public class Audio { try { clip = AudioSystem.getClip(); clip.open(pendingAudio[headIndex].stream); + clip.start(); + headIndex++; } catch (LineUnavailableException e) { System.err.println("Error occoured while loading the audio: The line is unavailable"); e.printStackTrace(); @@ -124,8 +122,5 @@ public class Audio { System.err.println("Input/Output error while loading the audio"); e.printStackTrace(); } - clip.start(); - - headIndex++; } } From 9e7e8a64f6a2cec7b1f2d5e87c769f6896180c84 Mon Sep 17 00:00:00 2001 From: "Brandon D. McKay" Date: Wed, 26 Apr 2017 04:22:44 -0400 Subject: [PATCH 03/35] Fix incorrect URL --- event-driven-architecture/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/event-driven-architecture/README.md b/event-driven-architecture/README.md index 0f698273b..a263defec 100644 --- a/event-driven-architecture/README.md +++ b/event-driven-architecture/README.md @@ -32,7 +32,7 @@ Use an Event-driven architecture when ## Credits -* [Event-driven architecture - Wikipedia](http://www.computerweekly.com/feature/Write-through-write-around-write-back-Cache-explained) +* [Event-driven architecture - Wikipedia](https://en.wikipedia.org/wiki/Event-driven_architecture) * [Fundamental Components of an Event-Driven Architecture](http://giocc.com/fundamental-components-of-an-event-driven-architecture.html) * [Real World Applications/Event Driven Applications](https://wiki.haskell.org/Real_World_Applications/Event_Driven_Applications) * [Event-driven architecture definition](http://searchsoa.techtarget.com/definition/event-driven-architecture) From 6e8eaf7593bf7ab21865ed035287bc00aa7262f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mih=C3=A1ly=20Kuprivecz?= Date: Fri, 28 Apr 2017 10:38:40 +0200 Subject: [PATCH 04/35] adding some test cases for the event queue --- .../java/com/iluwatar/event/queue/App.java | 12 +-- .../java/com/iluwatar/event/queue/Audio.java | 47 +++++++++-- .../com/iluwatar/event/queue/AudioTest.java | 77 +++++++++++++++++++ 3 files changed, 120 insertions(+), 16 deletions(-) create mode 100644 event-queue/src/test/java/com/iluwatar/event/queue/AudioTest.java diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/App.java b/event-queue/src/main/java/com/iluwatar/event/queue/App.java index a84027ecb..ea107d6ca 100644 --- a/event-queue/src/main/java/com/iluwatar/event/queue/App.java +++ b/event-queue/src/main/java/com/iluwatar/event/queue/App.java @@ -24,12 +24,9 @@ package com.iluwatar.event.queue; import java.io.BufferedReader; -import java.io.File; import java.io.IOException; import java.io.InputStreamReader; -import javax.sound.sampled.AudioInputStream; -import javax.sound.sampled.AudioSystem; import javax.sound.sampled.UnsupportedAudioFileException; /** @@ -51,17 +48,12 @@ public class App { * @throws UnsupportedAudioFileException when the loaded audio file is unsupported */ public static void main(String[] args) throws UnsupportedAudioFileException, IOException { - Audio.playSound(getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f); - Audio.playSound(getAudioStream("./etc/Closed-Hi-Hat-1.wav"), -8.0f); + Audio.playSound(Audio.getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f); + Audio.playSound(Audio.getAudioStream("./etc/Closed-Hi-Hat-1.wav"), -8.0f); System.out.println("Press Enter key to stop the program..."); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br.read(); Audio.stopService(); } - - public static AudioInputStream getAudioStream(String filePath) - throws UnsupportedAudioFileException, IOException { - return AudioSystem.getAudioInputStream(new File(filePath).getAbsoluteFile()); - } } diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java index e00cd375a..ecd535b49 100644 --- a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java +++ b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java @@ -23,12 +23,15 @@ package com.iluwatar.event.queue; +import java.io.File; import java.io.IOException; +import java.lang.Thread.State; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; /** * This class implements the Event Queue pattern. @@ -55,6 +58,17 @@ public class Audio { updateThread.interrupt(); } } + + /** + * This method stops the Update Method's thread. + * @return boolean + */ + public static boolean isServiceRunning() { + if (updateThread != null) { + return updateThread.isAlive(); + } + return false; + } /** * Starts the thread for the Update Method pattern if it was not started previously. @@ -86,17 +100,17 @@ public class Audio { init(); // Walk the pending requests. for (int i = headIndex; i != tailIndex; i = (i + 1) % MAX_PENDING) { - if (pendingAudio[i].stream == stream) { + if (getPendingAudio()[i].stream == stream) { // Use the larger of the two volumes. - pendingAudio[i].volume = Math.max(volume, pendingAudio[i].volume); + getPendingAudio()[i].volume = Math.max(volume, getPendingAudio()[i].volume); // Don't need to enqueue. return; } } - pendingAudio[tailIndex] = new PlayMessage(); - pendingAudio[tailIndex].stream = stream; - pendingAudio[tailIndex].volume = volume; + getPendingAudio()[tailIndex] = new PlayMessage(); + getPendingAudio()[tailIndex].stream = stream; + getPendingAudio()[tailIndex].volume = volume; tailIndex = (tailIndex + 1) % MAX_PENDING; } @@ -112,7 +126,7 @@ public class Audio { Clip clip = null; try { clip = AudioSystem.getClip(); - clip.open(pendingAudio[headIndex].stream); + clip.open(getPendingAudio()[headIndex].stream); clip.start(); headIndex++; } catch (LineUnavailableException e) { @@ -123,4 +137,25 @@ public class Audio { e.printStackTrace(); } } + + /** + * Returns the AudioInputStream of a file + * @param filePath is the path of the audio file + * @return AudioInputStream + * @throws UnsupportedAudioFileException when the audio file is not supported + * @throws IOException when the file is not readable + */ + public static AudioInputStream getAudioStream(String filePath) + throws UnsupportedAudioFileException, IOException { + return AudioSystem.getAudioInputStream(new File(filePath).getAbsoluteFile()); + } + + /** + * Returns with the message array of the queue + * @return PlayMessage[] + */ + public static PlayMessage[] getPendingAudio() { + return pendingAudio; + } + } diff --git a/event-queue/src/test/java/com/iluwatar/event/queue/AudioTest.java b/event-queue/src/test/java/com/iluwatar/event/queue/AudioTest.java new file mode 100644 index 000000000..4b3bd19ed --- /dev/null +++ b/event-queue/src/test/java/com/iluwatar/event/queue/AudioTest.java @@ -0,0 +1,77 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package com.iluwatar.event.queue; +import static org.junit.Assert.*; + +import java.io.IOException; + +import javax.sound.sampled.UnsupportedAudioFileException; + +import org.junit.Test; + +/** + * Testing the Audio service of the Queue + * @author mkuprivecz + * + */ +public class AudioTest { + + /** + * Test here that the playSound method works correctly + * @throws UnsupportedAudioFileException when the audio file is not supported + * @throws IOException when the file is not readable + * @throws InterruptedException when the test is interrupted externally + */ + @Test + public void testPlaySound() throws UnsupportedAudioFileException, IOException, InterruptedException { + Audio.playSound(Audio.getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f); + // test that service is started + assertTrue(Audio.isServiceRunning()); + // adding a small pause to be sure that the sound is ended + Thread.sleep(5000); + // test that service is finished + assertFalse(!Audio.isServiceRunning()); + } + + /** + * Test here that the Queue + * @throws UnsupportedAudioFileException when the audio file is not supported + * @throws IOException when the file is not readable + * @throws InterruptedException when the test is interrupted externally + */ + @Test + public void testQueue() throws UnsupportedAudioFileException, IOException, InterruptedException { + Audio.playSound(Audio.getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f); + Audio.playSound(Audio.getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f); + Audio.playSound(Audio.getAudioStream("./etc/Bass-Drum-1.wav"), -10.0f); + assertTrue(Audio.getPendingAudio().length > 0); + // test that service is started + assertTrue(Audio.isServiceRunning()); + // adding a small pause to be sure that the sound is ended + Thread.sleep(10000); + // test that service is finished + assertFalse(!Audio.isServiceRunning()); + } + +} From 44401988d13177ed4b3d86e8b93540f158ef8b3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mih=C3=A1ly=20Kuprivecz?= Date: Fri, 28 Apr 2017 11:32:35 +0200 Subject: [PATCH 05/35] pom.xml fixes --- event-queue/pom.xml | 11 +++--- .../java/com/iluwatar/event/queue/Audio.java | 1 - pom.xml | 38 +++++++++---------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/event-queue/pom.xml b/event-queue/pom.xml index 16ee381b3..fc857b425 100644 --- a/event-queue/pom.xml +++ b/event-queue/pom.xml @@ -1,4 +1,4 @@ - + - + 4.0.0 - com.iluwatar java-design-patterns + com.iluwatar 1.16.0-SNAPSHOT event-queue @@ -39,4 +40,4 @@ test - + \ No newline at end of file diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java index ecd535b49..9175eeffa 100644 --- a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java +++ b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java @@ -25,7 +25,6 @@ package com.iluwatar.event.queue; import java.io.File; import java.io.IOException; -import java.lang.Thread.State; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; diff --git a/pom.xml b/pom.xml index bca17e99a..c9b7a2faf 100644 --- a/pom.xml +++ b/pom.xml @@ -122,7 +122,7 @@ factory-kit feature-toggle value-object - module + module monad mute-idiom mutex @@ -133,7 +133,7 @@ promise page-object event-asynchronous - event-queue + event-queue queue-load-leveling object-mother converter @@ -302,23 +302,23 @@ - - - com.github.markusmo3.urm - - - urm-maven-plugin - - - [1.4.1,) - - - map - - - - - + + + com.github.markusmo3.urm + + + urm-maven-plugin + + + [1.4.1,) + + + map + + + + + From a1c51313040643a3ec6cc92ab45adf0df68282c5 Mon Sep 17 00:00:00 2001 From: kapinuss Date: Fri, 28 Apr 2017 12:59:09 +0300 Subject: [PATCH 06/35] Add files via upload --- .../injection/AdvancedSorceress.java | 45 ++++++++++++++++ .../iluwatar/dependency/injection/App.java | 51 ++++++++++--------- 2 files changed, 73 insertions(+), 23 deletions(-) create mode 100644 dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java diff --git a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java new file mode 100644 index 000000000..4a952e952 --- /dev/null +++ b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java @@ -0,0 +1,45 @@ +package com.iluwatar.dependency.injection; + +/** + * The MIT License + * Copyright (c) 2014-2017 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + + +/** + * + * AdvancedSorceress implements inversion of control. It depends on abstraction that can be injected + * through its setter. + * + */ +public class AdvancedSorceress implements Wizard { + + private Tobacco tobacco; + + public void setTobacco(Tobacco tobacco) { + this.tobacco = tobacco; + } + + @Override + public void smoke() { + tobacco.smoke(this); + } +} diff --git a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/App.java b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/App.java index c7b9d6fb6..8723f9b4f 100644 --- a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/App.java +++ b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/App.java @@ -1,17 +1,17 @@ /** * The MIT License * Copyright (c) 2014-2016 Ilkka Seppälä - * + *

    * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

    * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + *

    * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -26,7 +26,7 @@ import com.google.inject.Guice; import com.google.inject.Injector; /** - * + * * Dependency Injection pattern deals with how objects handle their dependencies. The pattern * implements so called inversion of control principle. Inversion of control has two specific rules: * - High-level modules should not depend on low-level modules. Both should depend on abstractions. @@ -36,32 +36,37 @@ import com.google.inject.Injector; * naive implementation violating the inversion of control principle. It depends directly on a * concrete implementation which cannot be changed. *

    - * The second wizard ({@link AdvancedWizard}) is more flexible. It does not depend on any concrete - * implementation but abstraction. It utilizes Dependency Injection pattern allowing its - * {@link Tobacco} dependency to be injected through its constructor. This way, handling the - * dependency is no longer the wizard's responsibility. It is resolved outside the wizard class. + * The second and third wizards({@link AdvancedWizard} and {@link AdvancedSorceress}) are more flexible. + * They do not depend on any concrete implementation but abstraction. They utilizes Dependency Injection + * pattern allowing their {@link Tobacco} dependency to be injected through constructor ({@link AdvancedWizard}) + * or setter ({@link AdvancedSorceress}). This way, handling the dependency is no longer the wizard's + * responsibility. It is resolved outside the wizard class. *

    - * The third example takes the pattern a step further. It uses Guice framework for Dependency + * The fourth example takes the pattern a step further. It uses Guice framework for Dependency * Injection. {@link TobaccoModule} binds a concrete implementation to abstraction. Injector is then * used to create {@link GuiceWizard} object with correct dependencies. * */ public class App { - /** - * Program entry point - * - * @param args command line args - */ - public static void main(String[] args) { - SimpleWizard simpleWizard = new SimpleWizard(); - simpleWizard.smoke(); + /** + * Program entry point + * + * @param args command line args + */ + public static void main(String[] args) { + SimpleWizard simpleWizard = new SimpleWizard(); + simpleWizard.smoke(); - AdvancedWizard advancedWizard = new AdvancedWizard(new SecondBreakfastTobacco()); - advancedWizard.smoke(); + AdvancedWizard advancedWizard = new AdvancedWizard(new SecondBreakfastTobacco()); + advancedWizard.smoke(); - Injector injector = Guice.createInjector(new TobaccoModule()); - GuiceWizard guiceWizard = injector.getInstance(GuiceWizard.class); - guiceWizard.smoke(); - } + AdvancedSorceress advancedSorceress = new AdvancedSorceress(); + advancedSorceress.setTobacco(new SecondBreakfastTobacco()); + advancedSorceress.smoke(); + + Injector injector = Guice.createInjector(new TobaccoModule()); + GuiceWizard guiceWizard = injector.getInstance(GuiceWizard.class); + guiceWizard.smoke(); + } } From ccfb6709c7c9c76ee228fe42ffc2699bf933298d Mon Sep 17 00:00:00 2001 From: kapinuss Date: Fri, 28 Apr 2017 13:00:01 +0300 Subject: [PATCH 07/35] Add files via upload --- .../injection/AdvancedSorceressTest.java | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java diff --git a/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java b/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java new file mode 100644 index 000000000..eadb0b931 --- /dev/null +++ b/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java @@ -0,0 +1,77 @@ +/** + * The MIT License + * Copyright (c) 2014-2016 Ilkka Seppälä + *

    + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

    + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

    + * Marker interface vs annotation + * Marker interfaces and marker annotations both have their uses, + * neither of them is obsolete or always better then the other one. + * If you want to define a type that does not have any new methods associated with it, + * a marker interface is the way to go. + * If you want to mark program elements other than classes and interfaces, + * to allow for the possibility of adding more information to the marker in the future, + * or to fit the marker into a framework that already makes heavy use of annotation types, + * then a marker annotation is the correct choice */ public class App { + + /** + * Program entry point + * + * @param args command line args + */ public static void main(String[] args) { + Guard guard = new Guard(); + Thief thief = new Thief(); if (guard instanceof Permission) { guard.enter(); + } else { + System.out.println("You have no permission to enter, please leave this area"); + } + + if (thief instanceof Permission) { + thief.steal(); + } else { + thief.doNothing(); } } } diff --git a/marker/src/main/java/Thief.java b/marker/src/main/java/Thief.java new file mode 100644 index 000000000..33eac5aca --- /dev/null +++ b/marker/src/main/java/Thief.java @@ -0,0 +1,12 @@ +/** + * Created by Alexis on 02-May-17. + */ +public class Thief { + protected static void steal() { + System.out.println("Steal valuable items"); + } + + protected static void doNothing() { + System.out.println("Pretend nothing happened and just leave"); + } +} diff --git a/marker/src/test/java/AppTest.java b/marker/src/test/java/AppTest.java new file mode 100644 index 000000000..615a3c910 --- /dev/null +++ b/marker/src/test/java/AppTest.java @@ -0,0 +1,17 @@ +/** + * Created by Alexis on 01-May-17. + */ + +import org.junit.Test; + +/** + * Application test + */ +public class AppTest { + + @Test + public void test() { + String[] args = {}; + App.main(args); + } +} diff --git a/marker/src/test/java/GuardTest.java b/marker/src/test/java/GuardTest.java new file mode 100644 index 000000000..459447367 --- /dev/null +++ b/marker/src/test/java/GuardTest.java @@ -0,0 +1,16 @@ +import org.junit.Test; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.junit.Assert.assertThat; + +/** + * Created by Alexis on 02-May-17. + */ +public class GuardTest { + + @Test + public void testGuard() { + Guard guard = new Guard(); + assertThat(guard, instanceOf(Permission.class)); + } +} diff --git a/marker/src/test/java/ThiefTest.java b/marker/src/test/java/ThiefTest.java new file mode 100644 index 000000000..37409ecb3 --- /dev/null +++ b/marker/src/test/java/ThiefTest.java @@ -0,0 +1,15 @@ +/** + * Created by Alexis on 02-May-17. + */ + +import org.junit.Test; + +import static org.junit.Assert.assertFalse; + +public class ThiefTest { + @Test + public void testGuard() { + Thief thief = new Thief(); + assertFalse(thief instanceof Permission); + } +} From 6d87f63ed5e9705c328795f3ca8ebeabbe5210a0 Mon Sep 17 00:00:00 2001 From: 4lexis Date: Wed, 3 May 2017 19:48:29 +0200 Subject: [PATCH 16/35] Added README.md --- marker/README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 marker/README.md diff --git a/marker/README.md b/marker/README.md new file mode 100644 index 000000000..dbca4ca83 --- /dev/null +++ b/marker/README.md @@ -0,0 +1,30 @@ +--- +layout: pattern +title: Marker Interface +folder: marker +permalink: /patterns/marker/ +categories: Design +tags: + - Java + - Difficulty-Beginner +--- + +## Intent +Using empy interfaces as markers to distinguish special treated objects. + +![alt text](./marker/etc/MarkerDiagram.png "Marker Interface") + +## Applicability +Use the Marker Interface pattern when + +* you want to identify the special objects from normal objects +* define a type that is implemented by instances of the marked class, marker annotations can not do that + +## Real world examples + +* [javase.7.docs.api.java.io.Serializable](https://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html) +* [javase.7.docs.api.java.lang.Cloneable](https://docs.oracle.com/javase/7/docs/api/java/lang/Cloneable.html) + +## Credits + +* [Effective Java 2nd Edition by Joshua Bloch](https://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683) From be3f4dce50253de29632c2ba98328e4230a57f82 Mon Sep 17 00:00:00 2001 From: 4lexis Date: Wed, 3 May 2017 19:49:25 +0200 Subject: [PATCH 17/35] Update Picture --- marker/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/marker/README.md b/marker/README.md index dbca4ca83..8ff25100a 100644 --- a/marker/README.md +++ b/marker/README.md @@ -12,7 +12,7 @@ tags: ## Intent Using empy interfaces as markers to distinguish special treated objects. -![alt text](./marker/etc/MarkerDiagram.png "Marker Interface") +![alt text](./etc/MarkerDiagram.png "Marker Interface") ## Applicability Use the Marker Interface pattern when From 6e0b3e37ea10e26241cb4e5d56c2106de37a19cd Mon Sep 17 00:00:00 2001 From: Aleksandar Dudukovic Date: Wed, 3 May 2017 19:57:14 +0200 Subject: [PATCH 18/35] updated pom.xml --- marker/pom.xml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/marker/pom.xml b/marker/pom.xml index 74969d2eb..c7345d8ee 100644 --- a/marker/pom.xml +++ b/marker/pom.xml @@ -1,4 +1,24 @@ + + From 66c6f30c1c31a5dc09d6b7a14e1b7c96de4effd0 Mon Sep 17 00:00:00 2001 From: 4lexis Date: Wed, 3 May 2017 20:34:27 +0200 Subject: [PATCH 19/35] #567 Updated pom.xml --- marker/pom.xml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/marker/pom.xml b/marker/pom.xml index 74969d2eb..ceab669aa 100644 --- a/marker/pom.xml +++ b/marker/pom.xml @@ -1,4 +1,23 @@ + @@ -27,4 +46,4 @@ - \ No newline at end of file + From 34b09c75ec3e1c6369e2c837896259bc6885934d Mon Sep 17 00:00:00 2001 From: 4lexis Date: Wed, 3 May 2017 20:51:51 +0200 Subject: [PATCH 20/35] #567 added .gitignore --- marker/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 marker/.gitignore diff --git a/marker/.gitignore b/marker/.gitignore new file mode 100644 index 000000000..b83d22266 --- /dev/null +++ b/marker/.gitignore @@ -0,0 +1 @@ +/target/ From 6ecf994258d1f042121f910d639b887f8934a958 Mon Sep 17 00:00:00 2001 From: Aleksandar Dudukovic Date: Wed, 3 May 2017 21:42:15 +0200 Subject: [PATCH 21/35] #567 pom.xml align fix --- marker/pom.xml | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/marker/pom.xml b/marker/pom.xml index ceab669aa..ab92bdbc6 100644 --- a/marker/pom.xml +++ b/marker/pom.xml @@ -21,29 +21,29 @@ - - java-design-patterns - com.iluwatar - 1.16.0-SNAPSHOT - - 4.0.0 + + java-design-patterns + com.iluwatar + 1.16.0-SNAPSHOT + + 4.0.0 - marker - - - org.junit.jupiter - junit-jupiter-api - RELEASE - - - junit - junit - - - junit - junit - - + marker + + + org.junit.jupiter + junit-jupiter-api + RELEASE + + + junit + junit + + + junit + junit + + From 1abd96a9c8f9a07bee0048b43d4b09f0391dc5f9 Mon Sep 17 00:00:00 2001 From: Aleksandar Dudukovic Date: Wed, 3 May 2017 22:09:47 +0200 Subject: [PATCH 22/35] #567 checkstyle fix --- marker/src/test/java/ThiefTest.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/marker/src/test/java/ThiefTest.java b/marker/src/test/java/ThiefTest.java index 37409ecb3..bcc862803 100644 --- a/marker/src/test/java/ThiefTest.java +++ b/marker/src/test/java/ThiefTest.java @@ -1,11 +1,10 @@ -/** - * Created by Alexis on 02-May-17. - */ - import org.junit.Test; import static org.junit.Assert.assertFalse; +/** + * Created by Alexis on 02-May-17. + */ public class ThiefTest { @Test public void testGuard() { From fb26d42b51300b1665dc3d792c6d12e7e3eff5a6 Mon Sep 17 00:00:00 2001 From: prafful1 Date: Sun, 7 May 2017 13:28:54 +0530 Subject: [PATCH 23/35] Few additions in README Added few more points in applicability and also some use cases and consequences. --- abstract-factory/README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/abstract-factory/README.md b/abstract-factory/README.md index a3881b893..f153c1202 100644 --- a/abstract-factory/README.md +++ b/abstract-factory/README.md @@ -27,6 +27,22 @@ Use the Abstract Factory pattern when * a system should be configured with one of multiple families of products * a family of related product objects is designed to be used together, and you need to enforce this constraint * you want to provide a class library of products, and you want to reveal just their interfaces, not their implementations +* the lifetime of the dependency is conceptually shorter than the lifetime of the consumer. +* you need a run-time value to construct a particular dependency +* you want to decide which product to call from a family at runtime. +* you need to supply one or more parameters only known at run-time before you can resolve a dependency. + +## Use Cases: + +* Selecting to call the appropriate implementation of FileSystemAcmeService or DatabaseAcmeService or NetworkAcmeService at runtime. +* Unit test case writing becomes much easier + +## Consequences: + +* Dependency injection in java hides the service class dependencies that can lead to runtime errors that would have been caught at compile time. + + + ## Real world examples From 857902ab95f4c4137fb93976c9c664820e7b27af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mih=C3=A1ly=20Kuprivecz?= Date: Thu, 11 May 2017 21:41:25 +0200 Subject: [PATCH 24/35] compatibility fix When the system is not capable to play the sound, do not throw exception, just log it. For example on Linux there are several issues to play sound and there are no workarounds for that :( --- event-queue/src/main/java/com/iluwatar/event/queue/Audio.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java index b482acca1..7c2f04d09 100644 --- a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java +++ b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java @@ -132,16 +132,18 @@ public class Audio { } Clip clip = null; try { + headIndex++; clip = AudioSystem.getClip(); clip.open(getPendingAudio()[headIndex].stream); clip.start(); - headIndex++; } catch (LineUnavailableException e) { System.err.println("Error occoured while loading the audio: The line is unavailable"); e.printStackTrace(); } catch (IOException e) { System.err.println("Input/Output error while loading the audio"); e.printStackTrace(); + } catch (IllegalArgumentException e) { + System.err.println("The system doesn't support the sound: " + e.getMessage()); } } From 0546223bbaae2cc62a9d254daa6cb2a02a78eaf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mih=C3=A1ly=20Kuprivecz?= Date: Thu, 11 May 2017 21:44:07 +0200 Subject: [PATCH 25/35] quick fix --- event-queue/src/main/java/com/iluwatar/event/queue/Audio.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java index 7c2f04d09..7554464dd 100644 --- a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java +++ b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java @@ -132,9 +132,10 @@ public class Audio { } Clip clip = null; try { + AudioInputStream audioStream = getPendingAudio()[headIndex].stream; headIndex++; clip = AudioSystem.getClip(); - clip.open(getPendingAudio()[headIndex].stream); + clip.open(audioStream); clip.start(); } catch (LineUnavailableException e) { System.err.println("Error occoured while loading the audio: The line is unavailable"); From fe1e45bd693913e3f95f87b5e2361db69d1126af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mih=C3=A1ly=20Kuprivecz?= Date: Mon, 15 May 2017 10:40:12 +0200 Subject: [PATCH 26/35] some fixes --- event-queue/README.md | 2 +- event-queue/{ => etc}/model.ucls | 0 event-queue/model.png | Bin 10815 -> 0 bytes .../java/com/iluwatar/event/queue/Audio.java | 10 +++---- .../com/iluwatar/event/queue/PlayMessage.java | 27 ++++++++++++++++-- 5 files changed, 30 insertions(+), 9 deletions(-) rename event-queue/{ => etc}/model.ucls (100%) delete mode 100644 event-queue/model.png diff --git a/event-queue/README.md b/event-queue/README.md index 2129f8c69..35fdac45c 100644 --- a/event-queue/README.md +++ b/event-queue/README.md @@ -26,4 +26,4 @@ Use the Event Queue pattern when ## Credits -* [Mihály Kuprivecz - Event Queue] +* [Mihaly Kuprivecz - Event Queue] (http://gameprogrammingpatterns.com/event-queue.html) diff --git a/event-queue/model.ucls b/event-queue/etc/model.ucls similarity index 100% rename from event-queue/model.ucls rename to event-queue/etc/model.ucls diff --git a/event-queue/model.png b/event-queue/model.png deleted file mode 100644 index 8222dccbfabf674306accfe10e990d3adb12b43f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10815 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 DNMN3U diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java index 7554464dd..f8f1b1e3c 100644 --- a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java +++ b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java @@ -107,17 +107,15 @@ public class Audio { init(); // Walk the pending requests. for (int i = headIndex; i != tailIndex; i = (i + 1) % MAX_PENDING) { - if (getPendingAudio()[i].stream == stream) { + if (getPendingAudio()[i].getStream() == stream) { // Use the larger of the two volumes. - getPendingAudio()[i].volume = Math.max(volume, getPendingAudio()[i].volume); + getPendingAudio()[i].setVolume(Math.max(volume, getPendingAudio()[i].getVolume())); // Don't need to enqueue. return; } } - getPendingAudio()[tailIndex] = new PlayMessage(); - getPendingAudio()[tailIndex].stream = stream; - getPendingAudio()[tailIndex].volume = volume; + getPendingAudio()[tailIndex] = new PlayMessage(stream, volume); tailIndex = (tailIndex + 1) % MAX_PENDING; } @@ -132,7 +130,7 @@ public class Audio { } Clip clip = null; try { - AudioInputStream audioStream = getPendingAudio()[headIndex].stream; + AudioInputStream audioStream = getPendingAudio()[headIndex].getStream(); headIndex++; clip = AudioSystem.getClip(); clip.open(audioStream); diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/PlayMessage.java b/event-queue/src/main/java/com/iluwatar/event/queue/PlayMessage.java index 5d151e8d5..5ced2e3b3 100644 --- a/event-queue/src/main/java/com/iluwatar/event/queue/PlayMessage.java +++ b/event-queue/src/main/java/com/iluwatar/event/queue/PlayMessage.java @@ -31,6 +31,29 @@ import javax.sound.sampled.AudioInputStream; * */ public class PlayMessage { - AudioInputStream stream; - float volume; + + private AudioInputStream stream; + + private float volume; + + public PlayMessage(AudioInputStream stream, float volume) { + setStream(stream); + setVolume(volume); + } + + public AudioInputStream getStream() { + return stream; + } + + private void setStream(AudioInputStream stream) { + this.stream = stream; + } + + public float getVolume() { + return volume; + } + + public void setVolume(float volume) { + this.volume = volume; + } } From 167a43f72e5132d51462a268ab9d690f36fdec45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mih=C3=A1ly=20Kuprivecz?= Date: Mon, 15 May 2017 11:04:41 +0200 Subject: [PATCH 27/35] updated model.png --- event-queue/etc/model.png | Bin 10815 -> 17218 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/event-queue/etc/model.png b/event-queue/etc/model.png index 8222dccbfabf674306accfe10e990d3adb12b43f..45620e6f69a195b637d0840250bbdf976b9e356a 100644 GIT binary patch literal 17218 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 DNMN3U From 09aa44ddcb2b42d601015088853cbb2d069b56d3 Mon Sep 17 00:00:00 2001 From: kapinuss Date: Thu, 18 May 2017 19:13:09 +0300 Subject: [PATCH 28/35] Update App.java --- .../iluwatar/dependency/injection/App.java | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/App.java b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/App.java index 8723f9b4f..a27160bf1 100644 --- a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/App.java +++ b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/App.java @@ -26,7 +26,6 @@ import com.google.inject.Guice; import com.google.inject.Injector; /** - * * Dependency Injection pattern deals with how objects handle their dependencies. The pattern * implements so called inversion of control principle. Inversion of control has two specific rules: * - High-level modules should not depend on low-level modules. Both should depend on abstractions. @@ -45,28 +44,27 @@ import com.google.inject.Injector; * The fourth example takes the pattern a step further. It uses Guice framework for Dependency * Injection. {@link TobaccoModule} binds a concrete implementation to abstraction. Injector is then * used to create {@link GuiceWizard} object with correct dependencies. - * */ public class App { - /** - * Program entry point - * - * @param args command line args - */ - public static void main(String[] args) { - SimpleWizard simpleWizard = new SimpleWizard(); - simpleWizard.smoke(); + /** + * Program entry point + * + * @param args command line args + */ + public static void main(String[] args) { + SimpleWizard simpleWizard = new SimpleWizard(); + simpleWizard.smoke(); - AdvancedWizard advancedWizard = new AdvancedWizard(new SecondBreakfastTobacco()); - advancedWizard.smoke(); + AdvancedWizard advancedWizard = new AdvancedWizard(new SecondBreakfastTobacco()); + advancedWizard.smoke(); - AdvancedSorceress advancedSorceress = new AdvancedSorceress(); - advancedSorceress.setTobacco(new SecondBreakfastTobacco()); - advancedSorceress.smoke(); + AdvancedSorceress advancedSorceress = new AdvancedSorceress(); + advancedSorceress.setTobacco(new SecondBreakfastTobacco()); + advancedSorceress.smoke(); - Injector injector = Guice.createInjector(new TobaccoModule()); - GuiceWizard guiceWizard = injector.getInstance(GuiceWizard.class); - guiceWizard.smoke(); - } + Injector injector = Guice.createInjector(new TobaccoModule()); + GuiceWizard guiceWizard = injector.getInstance(GuiceWizard.class); + guiceWizard.smoke(); + } } From c746004f730c76ace78ff51a494d3e9c37b51a72 Mon Sep 17 00:00:00 2001 From: kapinuss Date: Thu, 18 May 2017 19:13:45 +0300 Subject: [PATCH 29/35] Update AdvancedSorceress.java --- .../injection/AdvancedSorceress.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java index 4a952e952..5652c8a87 100644 --- a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java +++ b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java @@ -3,17 +3,17 @@ package com.iluwatar.dependency.injection; /** * The MIT License * Copyright (c) 2014-2017 Ilkka Seppälä - * + *

    * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

    * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + *

    * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -32,14 +32,14 @@ package com.iluwatar.dependency.injection; */ public class AdvancedSorceress implements Wizard { - private Tobacco tobacco; + private Tobacco tobacco; - public void setTobacco(Tobacco tobacco) { - this.tobacco = tobacco; - } + public void setTobacco(Tobacco tobacco) { + this.tobacco = tobacco; + } - @Override - public void smoke() { - tobacco.smoke(this); - } + @Override + public void smoke() { + tobacco.smoke(this); + } } From 08901f3c26b70d08c75bc2314855fcf3c3313985 Mon Sep 17 00:00:00 2001 From: kapinuss Date: Thu, 18 May 2017 20:23:05 +0300 Subject: [PATCH 30/35] Update AdvancedSorceress.java --- .../com/iluwatar/dependency/injection/AdvancedSorceress.java | 1 - 1 file changed, 1 deletion(-) diff --git a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java index 5652c8a87..44b56f415 100644 --- a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java +++ b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java @@ -28,7 +28,6 @@ package com.iluwatar.dependency.injection; * * AdvancedSorceress implements inversion of control. It depends on abstraction that can be injected * through its setter. - * */ public class AdvancedSorceress implements Wizard { From 30dcbee2cc46c0e35a71a928793be07277c7b376 Mon Sep 17 00:00:00 2001 From: kapinuss Date: Thu, 18 May 2017 20:26:47 +0300 Subject: [PATCH 31/35] Update AdvancedSorceress.java --- .../com/iluwatar/dependency/injection/AdvancedSorceress.java | 1 - 1 file changed, 1 deletion(-) diff --git a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java index 44b56f415..4784c5b86 100644 --- a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java +++ b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java @@ -25,7 +25,6 @@ package com.iluwatar.dependency.injection; /** - * * AdvancedSorceress implements inversion of control. It depends on abstraction that can be injected * through its setter. */ From 17039dc5e9856ec5ed041aee3a92a1dd83cc8e7a Mon Sep 17 00:00:00 2001 From: kapinuss Date: Thu, 18 May 2017 20:27:16 +0300 Subject: [PATCH 32/35] Update AdvancedSorceressTest.java --- .../injection/AdvancedSorceressTest.java | 71 ++++++++++--------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java b/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java index a8badef78..b2a701d0b 100644 --- a/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java +++ b/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java @@ -26,44 +26,51 @@ import com.iluwatar.dependency.injection.utils.InMemoryAppender; import org.junit.After; import org.junit.Before; import org.junit.Test; + import static org.junit.Assert.assertEquals; +/** + * Date: 28/04/17 - 7:40 AM + * + * @author Stanislav Kapinus + */ + public class AdvancedSorceressTest { - private InMemoryAppender appender; + private InMemoryAppender appender; + + @Before + public void setUp() { + appender = new InMemoryAppender(Tobacco.class); + } + + @After + public void tearDown() { + appender.stop(); + } + + /** + * Test if the {@link AdvancedSorceress} smokes whatever instance of {@link Tobacco} is passed to her + * through the setter's parameter + */ + @Test + public void testSmokeEveryThing() throws Exception { + + final Tobacco[] tobaccos = { + new OldTobyTobacco(), new RivendellTobacco(), new SecondBreakfastTobacco() + }; + + for (final Tobacco tobacco : tobaccos) { + final AdvancedSorceress advancedSorceress = new AdvancedSorceress(); + advancedSorceress.setTobacco(tobacco); + advancedSorceress.smoke(); + // Verify if the sorceress is smoking the correct tobacco ... + assertEquals("AdvancedSorceress smoking " + tobacco.getClass().getSimpleName(), appender.getLastMessage()); - @Before - public void setUp() { - appender = new InMemoryAppender(Tobacco.class); } - @After - public void tearDown() { - appender.stop(); - } + // ... and nothing else is happening. + assertEquals(tobaccos.length, appender.getLogSize()); - /** - * Test if the {@link AdvancedSorceress} smokes whatever instance of {@link Tobacco} is passed to her - * through the setter's parameter - */ - - @Test - public void testSmokeEveryThing() throws Exception { - - final Tobacco[] tobaccos = { - new OldTobyTobacco(), new RivendellTobacco(), new SecondBreakfastTobacco() - }; - - for (final Tobacco tobacco : tobaccos) { - final AdvancedSorceress advancedSorceress = new AdvancedSorceress(); - advancedSorceress.setTobacco(tobacco); - advancedSorceress.smoke(); - // Verify if the sorceress is smoking the correct tobacco ... - assertEquals("AdvancedSorceress smoking " + tobacco.getClass().getSimpleName(), appender.getLastMessage()); - - } - - // ... and nothing else is happening. - assertEquals(tobaccos.length, appender.getLogSize()); - } + } } From ae1d9cf7a80037546ffed672b5fe575632873a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sun, 21 May 2017 09:19:29 +0300 Subject: [PATCH 33/35] Add missing license headers --- .../iluwatar/databus/AbstractDataType.java | 22 +++++++++++++++++++ .../java/com/iluwatar/databus/DataType.java | 22 +++++++++++++++++++ .../java/com/iluwatar/databus/Member.java | 22 +++++++++++++++++++ .../com/iluwatar/databus/DataBusTest.java | 22 +++++++++++++++++++ .../members/MessageCollectorMemberTest.java | 22 +++++++++++++++++++ .../databus/members/StatusMemberTest.java | 22 +++++++++++++++++++ .../injection/AdvancedSorceress.java | 22 +++++++++++++++++++ 7 files changed, 154 insertions(+) diff --git a/data-bus/src/main/java/com/iluwatar/databus/AbstractDataType.java b/data-bus/src/main/java/com/iluwatar/databus/AbstractDataType.java index 5ba6653de..d57e4a014 100644 --- a/data-bus/src/main/java/com/iluwatar/databus/AbstractDataType.java +++ b/data-bus/src/main/java/com/iluwatar/databus/AbstractDataType.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ /* The MIT License (MIT) diff --git a/data-bus/src/main/java/com/iluwatar/databus/DataType.java b/data-bus/src/main/java/com/iluwatar/databus/DataType.java index e5729c19d..a3dd32870 100644 --- a/data-bus/src/main/java/com/iluwatar/databus/DataType.java +++ b/data-bus/src/main/java/com/iluwatar/databus/DataType.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ /* The MIT License (MIT) diff --git a/data-bus/src/main/java/com/iluwatar/databus/Member.java b/data-bus/src/main/java/com/iluwatar/databus/Member.java index d5ecb0152..c2ab7de32 100644 --- a/data-bus/src/main/java/com/iluwatar/databus/Member.java +++ b/data-bus/src/main/java/com/iluwatar/databus/Member.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ /* The MIT License (MIT) diff --git a/data-bus/src/test/java/com/iluwatar/databus/DataBusTest.java b/data-bus/src/test/java/com/iluwatar/databus/DataBusTest.java index 90c326ebf..f986e1681 100644 --- a/data-bus/src/test/java/com/iluwatar/databus/DataBusTest.java +++ b/data-bus/src/test/java/com/iluwatar/databus/DataBusTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.databus; import org.junit.Before; diff --git a/data-bus/src/test/java/com/iluwatar/databus/members/MessageCollectorMemberTest.java b/data-bus/src/test/java/com/iluwatar/databus/members/MessageCollectorMemberTest.java index 96fc090ee..35deeb5fb 100644 --- a/data-bus/src/test/java/com/iluwatar/databus/members/MessageCollectorMemberTest.java +++ b/data-bus/src/test/java/com/iluwatar/databus/members/MessageCollectorMemberTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.databus.members; import com.iluwatar.databus.data.MessageData; diff --git a/data-bus/src/test/java/com/iluwatar/databus/members/StatusMemberTest.java b/data-bus/src/test/java/com/iluwatar/databus/members/StatusMemberTest.java index e5983dcea..d5afbd132 100644 --- a/data-bus/src/test/java/com/iluwatar/databus/members/StatusMemberTest.java +++ b/data-bus/src/test/java/com/iluwatar/databus/members/StatusMemberTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.databus.members; import com.iluwatar.databus.DataBus; diff --git a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java index 4784c5b86..52256fd81 100644 --- a/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java +++ b/dependency-injection/src/main/java/com/iluwatar/dependency/injection/AdvancedSorceress.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.dependency.injection; /** From f2e35ec03df777b56f4af5f16c657211f0cfae4d Mon Sep 17 00:00:00 2001 From: Aleksandar Dudukovic Date: Tue, 23 May 2017 01:38:02 +0200 Subject: [PATCH 34/35] #567 fix version and javadoc --- marker/README.md | 10 +++++----- marker/pom.xml | 10 +--------- marker/src/main/java/App.java | 6 +++++- marker/src/main/java/Guard.java | 13 +++++++++---- marker/src/main/java/Permission.java | 1 - marker/src/main/java/Thief.java | 12 +++++++++--- marker/src/test/java/AppTest.java | 4 ---- marker/src/test/java/GuardTest.java | 4 ++-- marker/src/test/java/ThiefTest.java | 6 +++--- 9 files changed, 34 insertions(+), 32 deletions(-) diff --git a/marker/README.md b/marker/README.md index 8ff25100a..5bcdf9664 100644 --- a/marker/README.md +++ b/marker/README.md @@ -10,20 +10,20 @@ tags: --- ## Intent -Using empy interfaces as markers to distinguish special treated objects. +Using empty interfaces as markers to distinguish special treated objects. ![alt text](./etc/MarkerDiagram.png "Marker Interface") ## Applicability Use the Marker Interface pattern when -* you want to identify the special objects from normal objects -* define a type that is implemented by instances of the marked class, marker annotations can not do that +* you want to identify the special objects from normal objects (to treat them differently) +* you want to mark that some object is available for certain sort of operations ## Real world examples -* [javase.7.docs.api.java.io.Serializable](https://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html) -* [javase.7.docs.api.java.lang.Cloneable](https://docs.oracle.com/javase/7/docs/api/java/lang/Cloneable.html) +* [javase.8.docs.api.java.io.Serializable](https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html) +* [javase.8.docs.api.java.lang.Cloneable](https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html) ## Credits diff --git a/marker/pom.xml b/marker/pom.xml index ab92bdbc6..2842bd739 100644 --- a/marker/pom.xml +++ b/marker/pom.xml @@ -30,18 +30,10 @@ marker - - org.junit.jupiter - junit-jupiter-api - RELEASE - - - junit - junit - junit junit + test diff --git a/marker/src/main/java/App.java b/marker/src/main/java/App.java index 10ec017df..7abdda8c4 100644 --- a/marker/src/main/java/App.java +++ b/marker/src/main/java/App.java @@ -1,3 +1,6 @@ +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * Created by Alexis on 28-Apr-17. * With Marker interface idea is to make empty interface and extend it. @@ -25,13 +28,14 @@ public class App { */ public static void main(String[] args) { + final Logger logger = LoggerFactory.getLogger(App.class); Guard guard = new Guard(); Thief thief = new Thief(); if (guard instanceof Permission) { guard.enter(); } else { - System.out.println("You have no permission to enter, please leave this area"); + logger.info("You have no permission to enter, please leave this area"); } if (thief instanceof Permission) { diff --git a/marker/src/main/java/Guard.java b/marker/src/main/java/Guard.java index 93db6b4d7..14016f0b1 100644 --- a/marker/src/main/java/Guard.java +++ b/marker/src/main/java/Guard.java @@ -1,10 +1,15 @@ +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** - * Created by Alexis on 29-Apr-17. + * Class defining Guard */ public class Guard implements Permission { - protected static void enter() { - System.out.println("You can enter"); - } + private static final Logger LOGGER = LoggerFactory.getLogger(Guard.class); + protected static void enter() { + + LOGGER.info("You can enter"); + } } diff --git a/marker/src/main/java/Permission.java b/marker/src/main/java/Permission.java index a422e955c..c6e78c49d 100644 --- a/marker/src/main/java/Permission.java +++ b/marker/src/main/java/Permission.java @@ -1,5 +1,4 @@ /** - * Created by Alexis on 29-Apr-17. * Interface without any methods * Marker interface is based on that assumption */ diff --git a/marker/src/main/java/Thief.java b/marker/src/main/java/Thief.java index 33eac5aca..9105057e3 100644 --- a/marker/src/main/java/Thief.java +++ b/marker/src/main/java/Thief.java @@ -1,12 +1,18 @@ +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** - * Created by Alexis on 02-May-17. + * Class defining Thief */ public class Thief { + + private static final Logger LOGGER = LoggerFactory.getLogger(Thief.class); + protected static void steal() { - System.out.println("Steal valuable items"); + LOGGER.info("Steal valuable items"); } protected static void doNothing() { - System.out.println("Pretend nothing happened and just leave"); + LOGGER.info("Pretend nothing happened and just leave"); } } diff --git a/marker/src/test/java/AppTest.java b/marker/src/test/java/AppTest.java index 615a3c910..55fb2a17f 100644 --- a/marker/src/test/java/AppTest.java +++ b/marker/src/test/java/AppTest.java @@ -1,7 +1,3 @@ -/** - * Created by Alexis on 01-May-17. - */ - import org.junit.Test; /** diff --git a/marker/src/test/java/GuardTest.java b/marker/src/test/java/GuardTest.java index 459447367..8b33b6e7f 100644 --- a/marker/src/test/java/GuardTest.java +++ b/marker/src/test/java/GuardTest.java @@ -4,7 +4,7 @@ import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertThat; /** - * Created by Alexis on 02-May-17. + * Guard test */ public class GuardTest { @@ -13,4 +13,4 @@ public class GuardTest { Guard guard = new Guard(); assertThat(guard, instanceOf(Permission.class)); } -} +} \ No newline at end of file diff --git a/marker/src/test/java/ThiefTest.java b/marker/src/test/java/ThiefTest.java index bcc862803..71fe82b68 100644 --- a/marker/src/test/java/ThiefTest.java +++ b/marker/src/test/java/ThiefTest.java @@ -3,12 +3,12 @@ import org.junit.Test; import static org.junit.Assert.assertFalse; /** - * Created by Alexis on 02-May-17. + * Thief test */ public class ThiefTest { @Test - public void testGuard() { + public void testThief() { Thief thief = new Thief(); assertFalse(thief instanceof Permission); } -} +} \ No newline at end of file From f87249e03b8b72cc48e7f6d04fb681a6ab9dad5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Mon, 29 May 2017 21:53:05 +0300 Subject: [PATCH 35/35] Add missing license headers --- marker/etc/marker.urm.puml | 2 ++ marker/src/main/java/App.java | 22 ++++++++++++++++++++++ marker/src/main/java/Guard.java | 22 ++++++++++++++++++++++ marker/src/main/java/Permission.java | 22 ++++++++++++++++++++++ marker/src/main/java/Thief.java | 22 ++++++++++++++++++++++ marker/src/test/java/AppTest.java | 22 ++++++++++++++++++++++ marker/src/test/java/GuardTest.java | 22 ++++++++++++++++++++++ marker/src/test/java/ThiefTest.java | 22 ++++++++++++++++++++++ 8 files changed, 156 insertions(+) create mode 100644 marker/etc/marker.urm.puml diff --git a/marker/etc/marker.urm.puml b/marker/etc/marker.urm.puml new file mode 100644 index 000000000..02af47ddf --- /dev/null +++ b/marker/etc/marker.urm.puml @@ -0,0 +1,2 @@ +@startuml +@enduml \ No newline at end of file diff --git a/marker/src/main/java/App.java b/marker/src/main/java/App.java index 7abdda8c4..d8fd54ecb 100644 --- a/marker/src/main/java/App.java +++ b/marker/src/main/java/App.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/marker/src/main/java/Guard.java b/marker/src/main/java/Guard.java index 14016f0b1..4dd2a4887 100644 --- a/marker/src/main/java/Guard.java +++ b/marker/src/main/java/Guard.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/marker/src/main/java/Permission.java b/marker/src/main/java/Permission.java index c6e78c49d..2a85b3363 100644 --- a/marker/src/main/java/Permission.java +++ b/marker/src/main/java/Permission.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ /** * Interface without any methods * Marker interface is based on that assumption diff --git a/marker/src/main/java/Thief.java b/marker/src/main/java/Thief.java index 9105057e3..b8d6464e5 100644 --- a/marker/src/main/java/Thief.java +++ b/marker/src/main/java/Thief.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/marker/src/test/java/AppTest.java b/marker/src/test/java/AppTest.java index 55fb2a17f..85fb61b16 100644 --- a/marker/src/test/java/AppTest.java +++ b/marker/src/test/java/AppTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ import org.junit.Test; /** diff --git a/marker/src/test/java/GuardTest.java b/marker/src/test/java/GuardTest.java index 8b33b6e7f..eb3a4b757 100644 --- a/marker/src/test/java/GuardTest.java +++ b/marker/src/test/java/GuardTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ import org.junit.Test; import static org.hamcrest.CoreMatchers.instanceOf; diff --git a/marker/src/test/java/ThiefTest.java b/marker/src/test/java/ThiefTest.java index 71fe82b68..f950809cc 100644 --- a/marker/src/test/java/ThiefTest.java +++ b/marker/src/test/java/ThiefTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ import org.junit.Test; import static org.junit.Assert.assertFalse;

    + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package com.iluwatar.dependency.injection; + +import com.iluwatar.dependency.injection.utils.InMemoryAppender; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * Date: 28/04/17 - 7:40 AM + * + * @author Stanislav Kapinus + */ + +public class AdvancedSorceressTest { + + private InMemoryAppender appender; + + @Before + public void setUp() { + appender = new InMemoryAppender(Tobacco.class); + } + + @After + public void tearDown() { + appender.stop(); + } + + /** + * Test if the {@link AdvancedSorceress} smokes whatever instance of {@link Tobacco} is passed to her + * through the setter's parameter + */ + @Test + public void testSmokeEveryThing() throws Exception { + + final Tobacco[] tobaccos = { + new OldTobyTobacco(), new RivendellTobacco(), new SecondBreakfastTobacco() + }; + + for (final Tobacco tobacco : tobaccos) { + final AdvancedSorceress advancedSorceress = new AdvancedSorceress(); + advancedSorceress.setTobacco(tobacco); + advancedSorceress.smoke(); + // Verify if the sorceress is smoking the correct tobacco ... + assertEquals("AdvancedSorceress smoking " + tobacco.getClass().getSimpleName(), appender.getLastMessage()); + + } + + // ... and nothing else is happening. + assertEquals(tobaccos.length, appender.getLogSize()); + + } + +} From 2830a407ba70b5f47ce2462def0394d0ebde3c85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mih=C3=A1ly=20Kuprivecz?= Date: Fri, 28 Apr 2017 12:19:57 +0200 Subject: [PATCH 08/35] some fixes for testing in event queue --- .../java/com/iluwatar/event/queue/Audio.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java index 9175eeffa..b482acca1 100644 --- a/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java +++ b/event-queue/src/main/java/com/iluwatar/event/queue/Audio.java @@ -52,7 +52,7 @@ public class Audio { /** * This method stops the Update Method's thread. */ - public static void stopService() { + public static synchronized void stopService() { if (updateThread != null) { updateThread.interrupt(); } @@ -62,11 +62,12 @@ public class Audio { * This method stops the Update Method's thread. * @return boolean */ - public static boolean isServiceRunning() { - if (updateThread != null) { - return updateThread.isAlive(); + public static synchronized boolean isServiceRunning() { + if (updateThread != null && updateThread.isAlive() ) { + return true; + } else { + return false; } - return false; } /** @@ -83,6 +84,13 @@ public class Audio { } }); } + startThread(); + } + + /** + * This is a synchronized thread starter + */ + public static synchronized void startThread() { if (!updateThread.isAlive()) { updateThread.start(); headIndex = 0; From ee3744cb0a5ecd3ca6006b1222924aa08264c56e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mih=C3=A1ly=20Kuprivecz?= Date: Fri, 28 Apr 2017 13:47:56 +0200 Subject: [PATCH 09/35] added travis supported sound files --- event-queue/etc/Bass-Drum-1.aif | Bin 0 -> 220938 bytes event-queue/etc/Closed-Hi-Hat-1.aif | Bin 0 -> 13042 bytes .../com/iluwatar/event/queue/AudioTest.java | 6 +++--- 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 event-queue/etc/Bass-Drum-1.aif create mode 100644 event-queue/etc/Closed-Hi-Hat-1.aif diff --git a/event-queue/etc/Bass-Drum-1.aif b/event-queue/etc/Bass-Drum-1.aif new file mode 100644 index 0000000000000000000000000000000000000000..f1eae69db029ffa97252279b94c94930d5f74ad9 GIT binary patch literal 220938 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 z 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ð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%0D|n zQa!RfQb7MkE%`lZAPJvv(tp$s{@j=rNA76+kRqBDTk~7{2=t7(;k+7_8$zpVU^!v# zv8Jd^1Ph8q`pWvFwp^%texmpZRMlebLgtI-Aiv!;(0LQ%1yOb7tljI^wkvV&1-oF$%1E~QFCCx{cF6C{o1hv%KV zpVkGRhOS$9H`b}_irEn3O3-C&)t;YndgiA%TpD^F$8j*wa0mR`@e%I$f`h?|_Z=RT z&wnjp7rw&Dqxj8dQ$F5AP9DFwiI)d1>AI5-*|X6|9LT>|T&OGJ7-%H>3z}ohEYSOoUb^pSzl?(TK(!b{eX6M9up0N zzMx(3^;~!Q%zf$e#%)d*?V7Pro`Z!je->OU-eh;u^3x>U(a+>Rcq(^m`7@bM_6yeT ztl*aum#ouHQ?t%5-Zu6YR#&tIwBn>gWK(!0l0VXL6v0pd+3hzEH8E63Rutb;a#{#0 zj!MD%6?k8HyE~MElLko%Nyt$Z_6amJnJS6`l>vqoykCnW1;3q@3{CA68Z;Lh8*4R+ z#+f!&<=W8rCSA@`A6$5qupv!+RzEbgHE!0&te|M6*plS>?r&=?y2&XxR_-|^F=?#j z*2f1D!me4#@x{N>)Nr@enaqKgRAzejFe{=)%xyZf1NuWj{WGteK0Do;(qeE-yJZhv%1laHCG@2KDJNmHJKBUi*xv1{ zfp)&+ot})^c*PGsJIOzrxM~1cjH6nV6|bL!kEhp^hkrJ|6PJF) z;n7R6=)$MnNEo{%oR1U5oEF7Giq#ZLDyLDgl5*CjbSnvOAAg_sm89Vdb~TppE9uiK zdG5CoF3t0~gkQ{cKK*uD2g*3kB-qh#fpKu}e^k?$x*_Zsz$u&gJRMv=i(vCcTm`BZfqniQ^;q_~#*YVJ-@SWVnYFye{l zB!%lK^G3pa36Y21?SXMBy?P?yJo-GJPr6fyxmOeY@joX2gZ$cU=lRu-O5!Yh)X!4ah|%ixQu!SziI_6j&ydPdym{dTeJwUr0pS|80- z9VA~Uwn?!=Sc8Y6@x2-8$Pef{al++%X^dGZvOR1V5A@nF@r0>OhOaxTbN#IFPB_l` zU&-%#G@ApLMw4u2^WZAIb9iYyYjdF<^vmV18czetngjm!YPwqkHB>%0sc)o6Qi^YtzHc zT&n!Vs6Y*Nq>3Svkyg9H!D!b1{nmI!M8cfrU>2D@>P8-5hIli&LD7FCH}cmLOy80z zb$qaPVzood%ZA9fapD3UwsfRL#sz5rTRbua(l)kuymiT&oOcEeT`(CN?J)gsJ$Gr4 z#nTj$#POgoUU{&v5@g9pT0jp^4@J-8j`!+0W!1~m!_)iFG?Fji!$>x2V@y*GCuzv^ zKqLXI1u@M#nT5Ob^vQJoq=YQFNIU38d59nUg@?_eR0(5|&No#*VpY-`CP49Uf46r*#M?tCJ3I zw5}ngoLKF`(X722^Q<~>O2(Bj=HK|V78yUnx-MF; zj4?4n%^b586ugKPsWX*?$&9v&RBC0ND+Xq!(OY{`D-Qb{E0>kfO4D`GN~)yhGrAXF z3e+-5n3-gjh$9cP9>dFOr)+C{_YyPSYGA+U%z+Dj&RRcm_km+SQl?h38k;$7jq;j! zyYi7*8gBM6bzu>&EUS~S@?gz7yjR-E9%zNIdye#S?$!=Cq5ahytv!0uC>Ac6z62lQi&eNPsHPpfVp*Zk-d~;|uXvAE! z9raA*jf!f)(bo4Sd_(9AdO^W7W3uYMJZ@bMKCzzpcjl$4YDbp^tqD`TY| zuNfyvXZ+b2?Ha7i?1G-V(+Tgc;cgEfTdUl`+L99NnDi7~HHDF}lD3n&S~xngoj-1?|oQTfCTFU0Ro@;am_H*7zeYO^r7KpYe zdB&P8FnA(W7DXFF*2J0>9Ba9?zj_Fii`vzWPI&E6;adwZRGJHgl$n^8TxNsTHkVk1 znHgrK{Zjh-b4P8V0QI01%ARH?l;4=QzmWi$E!HNIAZg9oTCru_OImxRRlt}Bxl;Jf zz!@Rwd3(JwN1~EDc<2E8Y-R8;fkmi<#L;tPdJ< zT(lWVN=BzZ2Y5B_H|EN?%sW47Q?$JcwmnEy-Rjy#`F%8PkE zlT_Z$<-K{%Oqx^Sw$6tWJDnJO@2SL}$*+H0zOZxQ*3O2TJCk=@uk<)#XUpKL&*gHy zA@11Ix#7Wa`d=pAd5B*p{qe+lJ2t80U- zSx#0wo^s){;CFIrKw_X)Bom&c__~k4GR&iyH|iO=OM1 zyKeTRjQo*NCB_a>ZMxIP&2ck|Y}$Ut+8g)D*5l#KD*GIHpLFEh=y_`hxtKiG3Np2g zc_t6*UK*?K%y#l|l46o!JA&PW>|CCq5b|t>qvgfnJM1uX+FJ6V&&p%reegM?%w40v z#5>_6agMlEl#eyA6pmG|oTW9a{1-0MPQ$w1msIh2_(OWW#-Y%x!?m{^9(A6r$YAg} zCr#sPPx}rE=Si#oyNdr<^RfY6A;<8=a(eSy_c& zO|qDtOCb(qaLS?B4RIUg`r(SgtSvXn)n3wal?itkmp_4JF@z;fr!=1ZwcNNGX)$yi zD6?zi4V6U(4^MPpcVnEk8reC?CA3&+29%l|4sGbdVW~$c>O7~H?QZ1vdKd?blR`&& z*QRzkH1g1&fhR84VC}i})k}KKs4*s`)iY~7kT|pxS-|4uie@o~ zg^_Dib8mKl(a}1+H*k#W&Qd+ub)ci&{I5rx9_|d3rlZih(9zPl+%b>lGmp$H^TsN& zE;~Z6l0Tpp$%^EZVp$K&X0wcZfQ0}(KbjMjioZoi79N=9AkRT}DU>HKdxM_#h1ZtO zyj2%@!9_LW#XXZtDW_$Y{`3pW#a@9-f*hf+`5a2`j{26az6XoE0<2m=v;?)RokVRW zTDQtK#Gu_vor`HXYU)jUl82~A-?g5Ws~nCT1?{XI;S6)QN=tSiU)x&W!`BQJzsT(1 z%3oTEHkq*XS_|>9v z+ijH4QnhrwFkxx*wWdZxcPHW2JRE}&V8nxKO@#xV$_x?TR#7`?lxgiFG0`Gw8mVKR zt!M7#y~?AReb({LAfp&wRwd~gX9ik#%~oq6p3ZD-eAnQytxG&u;CCcj?_0h*81h*C zD*rX3$sM|KSi!{Cs;bh^Wd#A>+Kn=h2S-+(5AM>E7uaj9$lV*P=v^`Ni7|8|kqrM|8AD@tZvziSK zd81QtNETULv({$w!%~MI37=9=wL5a>mr@%f);>;)VnM`uyVlx0M~dYQnen}<-w<&+zr4<# ztFJe>tY6qBfumd}@;jl5#|cXr<@ja^n4W!SM7i}*;B%r}HbPD%67HYXxpTw$ITRmO zIZscjo?N8vU}z7%CQdRE#)E;U2>TuoKvoYHMRM%TKO3rkon-H%Rd=oD zR2Il;ruBRWne7!@F|dVOEP}G0snj zRVkZOUgY)=cV6ZkCbo*k!GqX0siJgvR=7 z#-Xy8b2jC(8`<~mJY9E6SMsp84&zeHW-E;K*SQ?5OL0QhEV;Xmb_KB>m9DnBR40ex zv#z3~Gc+&ms6lin`jS48^-!ffC`O^^M;b@`+sOAq|FP_3yE*nfc_M)! zStO6#5cx~IY(v|TQR4B)BFiJzLJ04O9wY;$O=W9wJ@83Z@QF^`qk$#Csoa#6k+iIp zBI!|j^7NUs$A!;~-$C-y1+iTx-DT%N*5quW@~5>1hnM{9H_)N;Ewu>)8=j<~Bk>$O zXm7z~RgPaJ6(w1knky^+tlLRxYtvdwcJkHgeEBoTUCFSpk!oqZ$wz+GHYM3j>g0>m zciP&wyIAa!Hz|kJiu|w~%=0`gkg}!W9YJ#Jd?2k#GOX1}hNpG&PMZ8T3!&tf_FD3g zPmOhu_oSxlCNE%V!Uy_Vayik*NyBP-J^$)J%0ODc;-55u{Zb`gWC}FrqzYG)LM>MV zjpTt(fqSKM({d1u!&{@b~a{35j) zTbijcO}}>PD@i;xg5?arsHPbVZ7RnL6MXQqc)9M>{ zGc(Mf{Nrb6aL6+IOtLxh+2nOMD^X9Q+sxg}H7ij$<|r=Hodniw_iUvQf)WwpBsclc z1Xh*u=jh;`JBdQ+>VWpMN|Yb?dm2+(?`TR_ZTOuMS9-I$Ig|-XrF0Oe)kdOrP%&s0 zYgxZ}3xkDHw@T7z((U0Y$jEUP&TO+XgJ1dt$3aKflEHJXoORYJY>jP*Bgz+G>V!jFhMy^b8wkHqA{bMhGufXAtt0LpRuCSs3?pK~#dALTU}ozM7w+eVtdUeV=`; zvrf<#h3Bhha{`@TAt46Imt8levEe@;J3B3mrs!nS@lV2?(-mkW5T>Wo7vraD^A_d<+EiX*Z z^z=q&#^@XH^`v-r@cJbrJ=mVqS4NB+Ea>%|uv*C*L-n6_qDe={`n{9~f7_l&<6INZ zMvge6oaWqpInl=GQXaU~i1(fL91gXTM>*GL5oXn%D;FHOebGw{DhV7gSV61fc*5k@ z3`5^ktB%5v&WMGZTqrW}JS}-$f^SCfxS_9a{p!(E{{gX!CV%nu5eBQ)NNTNIJnR42 zU-0E^X~NV77R~SODh8mTzzVm1{90DMO3z8x8k)RXxhTj17M)5 zm4j!}yTbd8F5^)+tb6ZyNO&ge1y6|Oyx!(9$~%vY58feaD%8E+7sAa)vj^19J~b?V zV{Vx}{^j*-beiuClLCC9;^8MAc4}k}*E6?ko!ZHxhH&YOl?P;)=vQTR_0$4V_VjpT z-FN_3JG+CfbmbdU;A=Chi28UdMj#8*v*k)V<{J)|1q+@gAT4+G)}u-)p6*@8!G@Q$ z%(%A3>0Pj-U;3c_G&mJl!L+SeUdp?As!dCg4@T;yOfkhm8+h(m5LW+}_KoyC4-Yis zNLwzmTYEH2E@P~7e!0utxd^V=D@WU%t&p$y}b9%}*~3SM|4|7Zj&j8n+uW2I!DC(*Fa)3%%UH16`0-$Ef&Yc3D3jmizJ zg>vJ!;6SPZN>4OXG9C?HC>2tWMS5Afg*DV-WmIb>bV%iQ>O$&fg}{xG#E`7PNlEGr zPh*6fPVLGgR$2!N2ugyHa&U$uENZ4EC?c`a)e}rTQ9;rvUEiU?tf(j|vO$=Z+q8p# zrG~AYHBxP@r8rczVAr5l=tyg;w0cHsfWAC~C5>Lu+U13P6X4+xN}seG06_h=<7)W<;u&Q z!>mA4V&jST!jCmSNa4J~;o;ND;gJsG^rRABPHvrN zt9_et=@pegn^uinqzcJLgH0BLL!^-diB%0w&sk_RY&3JU=k+XMM@5QJO&a@gUp1%2 zgBwj+JyU4Ld918^pMYCUIt!kh;1Jj(Eb`FK!G%uMJ9{iLb~x0+hmTdYeYAJ-;&yAT zNPEb_Q5|c^Q_Z|^+QDk})L(tb)@xrxONrAR%btW)H^9cOZKy@{gjR0*lSq+hky%yB zH7%8ATru5eZGQ_6YgdW)m7m7CdgXh^SB9>>v|`{`MeI^m7xBIKS(#Q0 zs}mSqkt!dxLv_`$6VP(FcZXBHeOxHdX3$a6R%~mq-Nwq=-KXoJoy2$YrH0 zwPAO#2R2?Dy1F}_J;Tm{Vz8pyPo-Cq-BUihC%yt5QO>}6?P-xaSf#=2JJ|->LJpxy zUw&H?Je^v%TzQ2ky}S^94UFE`IVJDcX?=B<2ae7%D(wpK>#spndzI|{r! z0C=rs>x|Ner_z>m3xuY{je=YL&Il~0hMoskE?6{F`@l;3>4mnu8fZ6V(#*gW?GauAY{>m-9FY~X@;=xf)+pZ%+-u9%?tUZ*} z9&F1<-M(o1Rj#4!lp(i1ue_oyZEb=v`LOv#a^$|G2N5pXwIiW(&*;>;MxQzwoAMe9 zmCdMA+p+Rqy^JRTi$tqDY5iEr-8G&5#izj8j!>>qKI^x9b`C4L)t#KkyOq~&p_lC< z*23~n(%3z$nf497Ggf(d3Q>Gvl)A^M+0EocUw6kry@M}ITzLr)q%NIbIv(_82Xt?| zu*Sfn(4;RWc4FnC%e!;hRU3;Ek*YHI=Ei?06^CP=?Y&fj{P=)q${n}d()tE=v8Z{QaY>nqRHSO4E~J+yH;B0Cv;uy zW6*TUf{*$%uX^=anJ7*AU}00O`0`%(b8zwTxHqF1uT@TnO{ST~OGp}ApuBjmwddiCV}%v25+}zmRhmt>(cJ4H zggfSAQaexlUCV_Noa>nGcPX;l9A|c+$mQIFyu1M8e;s3F`tB(K}N85<6LP*w{d0Gs!3-|=aqEU&HCOh z^RywxqK@1Q9bIFphe1?v+uN0mDjhw zfeUG^6}Nf2k96f#M)S6X?0Ya-?)Lq*jJy8r{tf5CS#Z}YT2MLeZIAY~-NX7~A80RE zx~Y|{@Jc8gE4A?huhvT~;IFloKCt#`bNNbxfU*8$oOo-fXV`Yd6l$C)Nsq!)Y09u(fBExz5YX3Kjet!k%TVE}Sr!7)bdKK5DthSGSH&&Eygu&5>gSYjeqf(yk z2Wni1a&_i_E3FdEnL_R?>qxYwz_PR7xUnw6-5Rb$>mn;ubFC{ISk?lw0#v_BUS9#a zidn0zMApx)4bmy8cQCtlv6NAc6^#rxIU-e5Zl#4VuDq~oENEbM)zUgj0=v+qRZ8~) z>%5qev?k0dZa)&Do|OZ_1Pt|0O-8B-3cRekl~7hBE9Bx$Ysk+Qapx+lr2p2}4}?IFy%svg}#tVgX!>!zl#lfIHw zzkRayYRk5<-@<9i{(@)c(C+?WWHc47e(TQCeM=qX)1G=?&cXrR+qBe#842)`Q+hQs zzN9jSrPRM2UCS7B*Q%wY;RQ-lcWid7>O1A@uRej)-AV|2S}S=w%I!CL*$N9YG=qIi znZ+BX{?%VgnAI?sUyA9IK<<6XqXe~6qCQu;{%DJf>$5Q^cD-%e|5_bvt)~^6zHJSr zvc(po%DRhbL)(t+#icb1tF3K4X#008t@nx<0#a#?mZTJI*_my`w2zEvC3Uuf(YEP~ zk+*Ter8FbN$=}&wwOF6c(see&-0G0liN#${AfY!fQ>Wb%W{%Qz6q_VY4&|ZJmYK`8 zRT;dh{=R&vroRWCGHDz->pYvOR*4BcOlvwM+q%FptTgDA<4^TvE>S%^MaaF+{6l< zT8uqoY7~n`YmXD@_l$R(~kokrqT|iKyKV} zpA!fte*C}}d{Sz0Q)6c?s1y7^ai6*+U+S0Vj1TskX-DVlwY{}b+HLY`zy2BJpcor) z(68FisB2rgPpJvf_u{%2=>0yyK_B)VZbrJ6bQjwZ-B7c2PEpX$`S0v*%FbuwBr8mC zEgkON%rsJ@2CuWO_l7lvlr&s3{^xFeREMs(jqgfVs9lLb?`$=D)u*^DD~*!7E-Trp zp|3Um!>$P6)>ZP}qH17IMI#0`rW+&}#18>-hhf}d{&nR1M^`13JO)|~~ z%F<)4M|-q&FLofQbw_}C-`znx$E~87n z!e}Yt+g_!s)T=A8R)SS?phL8*nyZU{HEF%H_tI1D@YA=#+aJ<(o+Na}eq&n`_^XZj zOWAvSNgrxmkYMDwv)8I_##(9NZ4DZXvPyLYwqBTDiCtTZ_&N;qu5Sact8;Sxe__hB zek6YY(b%WlXw~KC!=TPiL-A*Q@xFEz%jC13fC>I!JZWH@zqNc;R5*4|2;_wOot2J# zdQ!IxHIoml@k$6jT~UKquv1U5T0(xi56t1$RdnD^eA{yHgLA_sZ`yQPD0QEbwD^)j z`CU0PMh3%-q_q;&ed1D^^mJnFE$NxWXQWLn%{cW&En2HPhV^|{{AHKZzv7Jzf6^HX zFqx6QhAHS$p@EiE9UJE8wAPH3;@$Bv<1qO_1am3deHnLVwYQEh<2Vqe9@>$0M@Dk$ z(Ggtg0wh)yFf>=xC=^K`xwoak6K|ZVhp}NEY3a@bbIgpCu45feo)?_z8=hJYjMf6~ z>c#U1T%|2*oVX>-ye~AR=`pz)X3pAampi=L=J4<@eb$zw0lhd*PYsl%jkTM3)7d<0 z!sM{}n)haJ`xREo)|$l_=F6%ff6E2AYgKEaOgPB}#`<0O((~?Z9p$Ns+H0rmH`7k2 z;Pz7EyV9+#V$%}(7k+K0u6)x5(}PMDCrxpMr&`X4PgqBkxWa+8wCVwF!?mokjWFEJ zGV+^G+LRM~w8l~%%#&x@(=NHRzFtvBVgA&hy{cujS8-T+v@^<^mPkv@YM~BRq4iNF zpZ^)HNt?N`)|d4oGoOv&V&8hT)nKN~<;}e~cv5mxq=lxA9Rn?|DOz&JZPOQ4W0#Qz zCoQiniwj6Cx%KX^8u(jqY)RmPw2qP9ZOf(YgPGovLVCXoo<>E->N1z6-BN1_cX!JL*59R1zP77YRnycsVbfOw zIklTKX@T5}g<1$rUnMoFXJ*Ev8wiuGZEZI*bJ8clM1M^kGw^3;8kow4lN8n-DcYAx z(PQf4uH|N(`&%o--!pkqN>WbG2A?HI*9UpjEHIj8%3kZSfoC3qn^sJU-n|Q-+T~up zGj&RefxFi7ZLhZdIz_aWI%&<}wr!u*-_!1En6-^M{?}^?h8nvYGuF+lje`-)jDw7g zHGK4lp4KDiqqe3IuvWLVcsaV4Yg>OtEPg$+KXn=!WGzoeMtfR+^sg|xYY16Om8Th3 zfoi>MDSAeKSjAf(P|ULSjn?c8Sw^_A+dgl7jE2;ItyZmXM`3%Sb8$xfwC2qIKydGv z(V}bpKakd2t~8aBTQ@aP+v2AbfBI==N$S)%spXM=eLO6qt5mTys91IO{y+5|NJd~F z|E)KSxR&1-Sa;SfbFV8%OK(dI1egS~Wq!DKRO*LP$*^hs)FjXTTE38FoGq=XZtWY8 zmwHU-;H>w%7Fof0H4luWEOxkM*g2+PoccEkj-WwO3oCyrt9$%P-tv+f_kdtfd+}m%PQVV|6JLgf+-% zk+e`CSwBKs%`E6T)|O3gr0>_~^x7Ox8J%Bk(bjRsg@UJU!F4d{`0o7fstfn_thB9% nb~eVQ9!pMr+d9H5(3bUH34>q4meC=^AIQ^cYo)iv68L`s)=#UW literal 0 HcmV?d00001 diff --git a/event-queue/etc/Closed-Hi-Hat-1.aif b/event-queue/etc/Closed-Hi-Hat-1.aif new file mode 100644 index 0000000000000000000000000000000000000000..ac248e4f4a57d147454c3b6aea24a8cc802b20e6 GIT binary patch literal 13042 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 0); // test that service is started assertTrue(Audio.isServiceRunning()); From a34e7be9c2377e64c5a2759d053997ef2d340f70 Mon Sep 17 00:00:00 2001 From: Aleksandar Dudukovic Date: Fri, 28 Apr 2017 19:35:19 +0200 Subject: [PATCH 10/35] check commit --- marker/pom.xml | 15 +++++++++++++++ marker/src/main/java/App.java | 6 ++++++ pom.xml | 1 + 3 files changed, 22 insertions(+) create mode 100644 marker/pom.xml create mode 100644 marker/src/main/java/App.java diff --git a/marker/pom.xml b/marker/pom.xml new file mode 100644 index 000000000..99dca27a3 --- /dev/null +++ b/marker/pom.xml @@ -0,0 +1,15 @@ + + + + java-design-patterns + com.iluwatar + 1.16.0-SNAPSHOT + + 4.0.0 + + marker + + + \ No newline at end of file diff --git a/marker/src/main/java/App.java b/marker/src/main/java/App.java new file mode 100644 index 000000000..233db22c9 --- /dev/null +++ b/marker/src/main/java/App.java @@ -0,0 +1,6 @@ +/** + * Created by Alexis on 28-Apr-17. + */ +public class App { + +} diff --git a/pom.xml b/pom.xml index a45f0e1f3..7ca284557 100644 --- a/pom.xml +++ b/pom.xml @@ -139,6 +139,7 @@ converter guarded-suspension balking + marker From 8530d01e10b092d47a0b61559b2ca9eb10767011 Mon Sep 17 00:00:00 2001 From: Aleksandar Dudukovic Date: Sat, 29 Apr 2017 16:35:57 +0200 Subject: [PATCH 11/35] code implemented --- marker/src/main/java/App.java | 7 +++++++ marker/src/main/java/Guard.java | 10 ++++++++++ marker/src/main/java/Permission.java | 7 +++++++ 3 files changed, 24 insertions(+) create mode 100644 marker/src/main/java/Guard.java create mode 100644 marker/src/main/java/Permission.java diff --git a/marker/src/main/java/App.java b/marker/src/main/java/App.java index 233db22c9..ca8c036f7 100644 --- a/marker/src/main/java/App.java +++ b/marker/src/main/java/App.java @@ -2,5 +2,12 @@ * Created by Alexis on 28-Apr-17. */ public class App { + public static void main(String[] args) { + Guard guard = new Guard(); + if (guard instanceof Permission) { + guard.enter(); + } + } } + diff --git a/marker/src/main/java/Guard.java b/marker/src/main/java/Guard.java new file mode 100644 index 000000000..93db6b4d7 --- /dev/null +++ b/marker/src/main/java/Guard.java @@ -0,0 +1,10 @@ +/** + * Created by Alexis on 29-Apr-17. + */ +public class Guard implements Permission { + + protected static void enter() { + System.out.println("You can enter"); + } + +} diff --git a/marker/src/main/java/Permission.java b/marker/src/main/java/Permission.java new file mode 100644 index 000000000..a422e955c --- /dev/null +++ b/marker/src/main/java/Permission.java @@ -0,0 +1,7 @@ +/** + * Created by Alexis on 29-Apr-17. + * Interface without any methods + * Marker interface is based on that assumption + */ +public interface Permission { +} From 3ed6cc19d2f8e7365a1a13e8732c7bced72b9387 Mon Sep 17 00:00:00 2001 From: ytian90 Date: Sun, 30 Apr 2017 00:19:50 -0700 Subject: [PATCH 12/35] fix Block 3 case --- .../src/main/java/com/iluwatar/featuretoggle/App.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/App.java b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/App.java index 29676e0c9..97c184fec 100644 --- a/feature-toggle/src/main/java/com/iluwatar/featuretoggle/App.java +++ b/feature-toggle/src/main/java/com/iluwatar/featuretoggle/App.java @@ -25,6 +25,7 @@ package com.iluwatar.featuretoggle; import com.iluwatar.featuretoggle.pattern.Service; import com.iluwatar.featuretoggle.pattern.propertiesversion.PropertiesFeatureToggleVersion; +import com.iluwatar.featuretoggle.pattern.tieredversion.TieredFeatureToggleVersion; import com.iluwatar.featuretoggle.user.User; import com.iluwatar.featuretoggle.user.UserGroup; import org.slf4j.Logger; @@ -85,6 +86,8 @@ public class App { LOGGER.info(welcomeMessageturnedOff); // -------------------------------------------- + + Service service2 = new TieredFeatureToggleVersion(); final User paidUser = new User("Jamie Coder"); final User freeUser = new User("Alan Defect"); @@ -92,8 +95,8 @@ public class App { UserGroup.addUserToPaidGroup(paidUser); UserGroup.addUserToFreeGroup(freeUser); - final String welcomeMessagePaidUser = service.getWelcomeMessage(paidUser); - final String welcomeMessageFreeUser = service.getWelcomeMessage(freeUser); + final String welcomeMessagePaidUser = service2.getWelcomeMessage(paidUser); + final String welcomeMessageFreeUser = service2.getWelcomeMessage(freeUser); LOGGER.info(welcomeMessageFreeUser); LOGGER.info(welcomeMessagePaidUser); } From 03aa99c55f58b487b2d1667e0c0824a59ed12195 Mon Sep 17 00:00:00 2001 From: kapinuss Date: Tue, 2 May 2017 20:18:05 +0300 Subject: [PATCH 13/35] Update AdvancedSorceressTest.java --- .../dependency/injection/AdvancedSorceressTest.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java b/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java index eadb0b931..6b7588db8 100644 --- a/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java +++ b/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java @@ -26,15 +26,8 @@ import com.iluwatar.dependency.injection.utils.InMemoryAppender; import org.junit.After; import org.junit.Before; import org.junit.Test; - import static org.junit.Assert.assertEquals; -/** - * Date: 28/04/17 - 7:40 AM - * - * @author Stanislav Kapinus - */ - public class AdvancedSorceressTest { private InMemoryAppender appender; From 2b229d8ea12d4fff57e5896fef55b855d4614797 Mon Sep 17 00:00:00 2001 From: kapinuss Date: Tue, 2 May 2017 20:38:08 +0300 Subject: [PATCH 14/35] Update AdvancedSorceressTest.java --- .../iluwatar/dependency/injection/AdvancedSorceressTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java b/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java index 6b7588db8..a8badef78 100644 --- a/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java +++ b/dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedSorceressTest.java @@ -46,6 +46,7 @@ public class AdvancedSorceressTest { * Test if the {@link AdvancedSorceress} smokes whatever instance of {@link Tobacco} is passed to her * through the setter's parameter */ + @Test public void testSmokeEveryThing() throws Exception { @@ -64,7 +65,5 @@ public class AdvancedSorceressTest { // ... and nothing else is happening. assertEquals(tobaccos.length, appender.getLogSize()); - } - } From 20062faae69c8a3b9b2b7d15080e13cc5bda5667 Mon Sep 17 00:00:00 2001 From: Aleksandar Dudukovic Date: Wed, 3 May 2017 17:50:35 +0200 Subject: [PATCH 15/35] All without Readme and pumlid --- marker/etc/MarkerDiagram.png | Bin 0 -> 6461 bytes marker/etc/MarkerDiagram.ucls | 41 ++++++++++++++++++++++++++++ marker/pom.xml | 15 ++++++++++ marker/src/main/java/App.java | 31 +++++++++++++++++++++ marker/src/main/java/Thief.java | 12 ++++++++ marker/src/test/java/AppTest.java | 17 ++++++++++++ marker/src/test/java/GuardTest.java | 16 +++++++++++ marker/src/test/java/ThiefTest.java | 15 ++++++++++ 8 files changed, 147 insertions(+) create mode 100644 marker/etc/MarkerDiagram.png create mode 100644 marker/etc/MarkerDiagram.ucls create mode 100644 marker/src/main/java/Thief.java create mode 100644 marker/src/test/java/AppTest.java create mode 100644 marker/src/test/java/GuardTest.java create mode 100644 marker/src/test/java/ThiefTest.java diff --git a/marker/etc/MarkerDiagram.png b/marker/etc/MarkerDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed4f9c567809787d9317733a2e4fe40cbe3284c GIT binary patch literal 6461 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 WzLyy+Lj79=qN54ic(48-^uGXLahsh0 literal 0 HcmV?d00001 diff --git a/marker/etc/MarkerDiagram.ucls b/marker/etc/MarkerDiagram.ucls new file mode 100644 index 000000000..0f8376e40 --- /dev/null +++ b/marker/etc/MarkerDiagram.ucls @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/marker/pom.xml b/marker/pom.xml index 99dca27a3..74969d2eb 100644 --- a/marker/pom.xml +++ b/marker/pom.xml @@ -10,6 +10,21 @@ 4.0.0 marker + + + org.junit.jupiter + junit-jupiter-api + RELEASE + + + junit + junit + + + junit + junit + + \ No newline at end of file diff --git a/marker/src/main/java/App.java b/marker/src/main/java/App.java index ca8c036f7..10ec017df 100644 --- a/marker/src/main/java/App.java +++ b/marker/src/main/java/App.java @@ -1,12 +1,43 @@ /** * Created by Alexis on 28-Apr-17. + * With Marker interface idea is to make empty interface and extend it. + * Basically it is just to identify the special objects from normal objects. + * Like in case of serialization , objects that need to be serialized must implement serializable interface + * (it is empty interface) and down the line writeObject() method must be checking + * if it is a instance of serializable or not. + *