diff --git a/cdi/pom.xml b/cdi/pom.xml index 0c14df6e73..1d14e3c267 100644 --- a/cdi/pom.xml +++ b/cdi/pom.xml @@ -14,6 +14,24 @@ + + org.hamcrest + hamcrest-core + 1.3 + test + + + org.assertj + assertj-core + 3.10.0 + test + + + junit + junit + 4.12 + test + org.springframework spring-context @@ -42,4 +60,4 @@ 2.4.1.Final - \ No newline at end of file + diff --git a/cdi/src/main/java/com/baeldung/dependencyinjection/application/FileApplication.java b/cdi/src/main/java/com/baeldung/dependencyinjection/application/FileApplication.java new file mode 100644 index 0000000000..2ae8ac9621 --- /dev/null +++ b/cdi/src/main/java/com/baeldung/dependencyinjection/application/FileApplication.java @@ -0,0 +1,18 @@ +package com.baeldung.dependencyinjection.application; + +import com.baeldung.dependencyinjection.imageprocessors.ImageFileProcessor; +import org.jboss.weld.environment.se.Weld; +import org.jboss.weld.environment.se.WeldContainer; + +public class FileApplication { + + public static void main(String[] args) { + Weld weld = new Weld(); + WeldContainer container = weld.initialize(); + ImageFileProcessor imageFileProcessor = container.select(ImageFileProcessor.class).get(); + System.out.println(imageFileProcessor.openFile("file1.png")); + System.out.println(imageFileProcessor.writeFile("file1.png")); + System.out.println(imageFileProcessor.saveFile("file1.png")); + container.shutdown(); + } +} \ No newline at end of file diff --git a/cdi/src/main/java/com/baeldung/dependencyinjection/factories/TimeLoggerFactory.java b/cdi/src/main/java/com/baeldung/dependencyinjection/factories/TimeLoggerFactory.java new file mode 100644 index 0000000000..86916fa8c4 --- /dev/null +++ b/cdi/src/main/java/com/baeldung/dependencyinjection/factories/TimeLoggerFactory.java @@ -0,0 +1,14 @@ +package com.baeldung.dependencyinjection.factories; + +import com.baeldung.dependencyinjection.loggers.TimeLogger; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import javax.enterprise.inject.Produces; + +public class TimeLoggerFactory { + + @Produces + public TimeLogger getTimeLogger() { + return new TimeLogger(new SimpleDateFormat("HH:mm"), Calendar.getInstance()); + } +} \ No newline at end of file diff --git a/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/GifFileEditor.java b/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/GifFileEditor.java new file mode 100644 index 0000000000..6b51d64a33 --- /dev/null +++ b/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/GifFileEditor.java @@ -0,0 +1,27 @@ +package com.baeldung.dependencyinjection.imagefileeditors; + +import com.baeldung.dependencyinjection.qualifiers.GifFileEditorQualifier; + +@GifFileEditorQualifier +public class GifFileEditor implements ImageFileEditor { + + @Override + public String openFile(String fileName) { + return "Opening GIF file " + fileName; + } + + @Override + public String editFile(String fileName) { + return "Editing GIF file " + fileName; + } + + @Override + public String writeFile(String fileName) { + return "Writing GIF file " + fileName; + } + + @Override + public String saveFile(String fileName) { + return "Saving GIF file " + fileName; + } +} \ No newline at end of file diff --git a/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/ImageFileEditor.java b/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/ImageFileEditor.java new file mode 100644 index 0000000000..d524a5160a --- /dev/null +++ b/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/ImageFileEditor.java @@ -0,0 +1,12 @@ +package com.baeldung.dependencyinjection.imagefileeditors; + +public interface ImageFileEditor { + + String openFile(String fileName); + + String editFile(String fileName); + + String writeFile(String fileName); + + String saveFile(String fileName); +} \ No newline at end of file diff --git a/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/JpgFileEditor.java b/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/JpgFileEditor.java new file mode 100644 index 0000000000..97adebc1af --- /dev/null +++ b/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/JpgFileEditor.java @@ -0,0 +1,27 @@ +package com.baeldung.dependencyinjection.imagefileeditors; + +import com.baeldung.dependencyinjection.qualifiers.JpgFileEditorQualifier; + +@JpgFileEditorQualifier +public class JpgFileEditor implements ImageFileEditor { + + @Override + public String openFile(String fileName) { + return "Opening JPG file " + fileName; + } + + @Override + public String editFile(String fileName) { + return "Editing JPG file " + fileName; + } + + @Override + public String writeFile(String fileName) { + return "Writing JPG file " + fileName; + } + + @Override + public String saveFile(String fileName) { + return "Saving JPG file " + fileName; + } +} \ No newline at end of file diff --git a/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/PngFileEditor.java b/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/PngFileEditor.java new file mode 100644 index 0000000000..5db608539c --- /dev/null +++ b/cdi/src/main/java/com/baeldung/dependencyinjection/imagefileeditors/PngFileEditor.java @@ -0,0 +1,27 @@ +package com.baeldung.dependencyinjection.imagefileeditors; + +import com.baeldung.dependencyinjection.qualifiers.PngFileEditorQualifier; + +@PngFileEditorQualifier +public class PngFileEditor implements ImageFileEditor { + + @Override + public String openFile(String fileName) { + return "Opening PNG file " + fileName; + } + + @Override + public String editFile(String fileName) { + return "Editing PNG file " + fileName; + } + + @Override + public String writeFile(String fileName) { + return "Writing PNG file " + fileName; + } + + @Override + public String saveFile(String fileName) { + return "Saving PNG file " + fileName; + } +} \ No newline at end of file diff --git a/cdi/src/main/java/com/baeldung/dependencyinjection/imageprocessors/ImageFileProcessor.java b/cdi/src/main/java/com/baeldung/dependencyinjection/imageprocessors/ImageFileProcessor.java new file mode 100644 index 0000000000..1527108568 --- /dev/null +++ b/cdi/src/main/java/com/baeldung/dependencyinjection/imageprocessors/ImageFileProcessor.java @@ -0,0 +1,42 @@ +package com.baeldung.dependencyinjection.imageprocessors; + +import com.baeldung.dependencyinjection.loggers.TimeLogger; +import com.baeldung.dependencyinjection.qualifiers.PngFileEditorQualifier; +import javax.inject.Inject; +import com.baeldung.dependencyinjection.imagefileeditors.ImageFileEditor; + +public class ImageFileProcessor { + + private final ImageFileEditor imageFileEditor; + private final TimeLogger timeLogger; + + @Inject + public ImageFileProcessor(@PngFileEditorQualifier ImageFileEditor imageFileEditor, TimeLogger timeLogger) { + this.imageFileEditor = imageFileEditor; + this.timeLogger = timeLogger; + } + + public ImageFileEditor getImageFileditor() { + return imageFileEditor; + } + + public TimeLogger getTimeLogger() { + return timeLogger; + } + + public String openFile(String fileName) { + return imageFileEditor.openFile(fileName) + " at: " + timeLogger.getTime(); + } + + public String editFile(String fileName) { + return imageFileEditor.editFile(fileName) + " at: " + timeLogger.getTime(); + } + + public String writeFile(String fileName) { + return imageFileEditor.writeFile(fileName) + " at: " + timeLogger.getTime(); + } + + public String saveFile(String fileName) { + return imageFileEditor.saveFile(fileName)+ " at: " + timeLogger.getTime(); + } +} \ No newline at end of file diff --git a/cdi/src/main/java/com/baeldung/dependencyinjection/loggers/TimeLogger.java b/cdi/src/main/java/com/baeldung/dependencyinjection/loggers/TimeLogger.java new file mode 100644 index 0000000000..44223d7e5d --- /dev/null +++ b/cdi/src/main/java/com/baeldung/dependencyinjection/loggers/TimeLogger.java @@ -0,0 +1,19 @@ +package com.baeldung.dependencyinjection.loggers; + +import java.text.SimpleDateFormat; +import java.util.Calendar; + +public class TimeLogger { + + private final SimpleDateFormat dateFormat; + private final Calendar calendar; + + public TimeLogger(SimpleDateFormat dateFormat, Calendar calendar) { + this.dateFormat = dateFormat; + this.calendar = calendar; + } + + public String getTime() { + return dateFormat.format(calendar.getTime()); + } +} \ No newline at end of file diff --git a/cdi/src/main/java/com/baeldung/dependencyinjection/qualifiers/GifFileEditorQualifier.java b/cdi/src/main/java/com/baeldung/dependencyinjection/qualifiers/GifFileEditorQualifier.java new file mode 100644 index 0000000000..3660aad15e --- /dev/null +++ b/cdi/src/main/java/com/baeldung/dependencyinjection/qualifiers/GifFileEditorQualifier.java @@ -0,0 +1,12 @@ +package com.baeldung.dependencyinjection.qualifiers; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import javax.inject.Qualifier; + +@Qualifier +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.TYPE, ElementType.PARAMETER}) +public @interface GifFileEditorQualifier {} \ No newline at end of file diff --git a/cdi/src/main/java/com/baeldung/dependencyinjection/qualifiers/JpgFileEditorQualifier.java b/cdi/src/main/java/com/baeldung/dependencyinjection/qualifiers/JpgFileEditorQualifier.java new file mode 100644 index 0000000000..c8a007bcab --- /dev/null +++ b/cdi/src/main/java/com/baeldung/dependencyinjection/qualifiers/JpgFileEditorQualifier.java @@ -0,0 +1,12 @@ +package com.baeldung.dependencyinjection.qualifiers; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import javax.inject.Qualifier; + +@Qualifier +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.TYPE, ElementType.PARAMETER}) +public @interface JpgFileEditorQualifier {} diff --git a/cdi/src/main/java/com/baeldung/dependencyinjection/qualifiers/PngFileEditorQualifier.java b/cdi/src/main/java/com/baeldung/dependencyinjection/qualifiers/PngFileEditorQualifier.java new file mode 100644 index 0000000000..51d2fba315 --- /dev/null +++ b/cdi/src/main/java/com/baeldung/dependencyinjection/qualifiers/PngFileEditorQualifier.java @@ -0,0 +1,12 @@ +package com.baeldung.dependencyinjection.qualifiers; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import javax.inject.Qualifier; + +@Qualifier +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD, ElementType.METHOD, ElementType.TYPE, ElementType.PARAMETER}) +public @interface PngFileEditorQualifier {} diff --git a/cdi/src/test/java/com/baeldung/test/dependencyinjection/GifFileEditorUnitTest.java b/cdi/src/test/java/com/baeldung/test/dependencyinjection/GifFileEditorUnitTest.java new file mode 100644 index 0000000000..3b148049b5 --- /dev/null +++ b/cdi/src/test/java/com/baeldung/test/dependencyinjection/GifFileEditorUnitTest.java @@ -0,0 +1,37 @@ +package com.baeldung.test.dependencyinjection; + +import com.baeldung.dependencyinjection.imagefileeditors.GifFileEditor; +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.BeforeClass; +import org.junit.Test; + +public class GifFileEditorUnitTest { + + private static GifFileEditor gifFileEditor; + + + @BeforeClass + public static void setGifFileEditorInstance() { + gifFileEditor = new GifFileEditor(); + } + + @Test + public void givenGifFileEditorlInstance_whenCalledopenFile_thenOneAssertion() { + assertThat(gifFileEditor.openFile("file1.gif")).isEqualTo("Opening GIF file file1.gif"); + } + + @Test + public void givenGifFileEditorlInstance_whenCallededitFile_thenOneAssertion() { + assertThat(gifFileEditor.editFile("file1.gif")).isEqualTo("Editing GIF file file1.gif"); + } + + @Test + public void givenGifFileEditorInstance_whenCalledwriteFile_thenOneAssertion() { + assertThat(gifFileEditor.writeFile("file1.gif")).isEqualTo("Writing GIF file file1.gif"); + } + + @Test + public void givenGifFileEditorInstance_whenCalledsaveFile_thenOneAssertion() { + assertThat(gifFileEditor.saveFile("file1.gif")).isEqualTo("Saving GIF file file1.gif"); + } +} \ No newline at end of file diff --git a/cdi/src/test/java/com/baeldung/test/dependencyinjection/ImageProcessorUnitTest.java b/cdi/src/test/java/com/baeldung/test/dependencyinjection/ImageProcessorUnitTest.java new file mode 100644 index 0000000000..8b5fa409c9 --- /dev/null +++ b/cdi/src/test/java/com/baeldung/test/dependencyinjection/ImageProcessorUnitTest.java @@ -0,0 +1,70 @@ +package com.baeldung.test.dependencyinjection; + +import com.baeldung.dependencyinjection.imagefileeditors.GifFileEditor; +import com.baeldung.dependencyinjection.imagefileeditors.JpgFileEditor; +import com.baeldung.dependencyinjection.imagefileeditors.PngFileEditor; +import com.baeldung.dependencyinjection.imageprocessors.ImageFileProcessor; +import com.baeldung.dependencyinjection.loggers.TimeLogger; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import static org.assertj.core.api.Assertions.assertThat; +import org.jboss.weld.environment.se.Weld; +import org.jboss.weld.environment.se.WeldContainer; +import org.junit.BeforeClass; +import org.junit.Test; + +public class ImageProcessorUnitTest { + + private static ImageFileProcessor imageFileProcessor; + private static SimpleDateFormat dateFormat; + private static Calendar calendar; + + + @BeforeClass + public static void setImageProcessorInstance() { + Weld weld = new Weld(); + WeldContainer container = weld.initialize(); + imageFileProcessor = container.select(ImageFileProcessor.class).get(); + container.shutdown(); + } + + @BeforeClass + public static void setSimpleDateFormatInstance() { + dateFormat = new SimpleDateFormat("HH:mm"); + } + + @BeforeClass + public static void setCalendarInstance() { + calendar = Calendar.getInstance(); + } + + @Test + public void givenImageProcessorInstance_whenInjectedPngFileEditorandTimeLoggerInstances_thenTwoAssertions() { + assertThat(imageFileProcessor.getImageFileditor()).isInstanceOf(PngFileEditor.class); + assertThat(imageFileProcessor.getTimeLogger()).isInstanceOf(TimeLogger.class); + } + + @Test + public void givenImageProcessorInstance_whenCalledopenFile_thenOneAssertion() { + String currentTime = dateFormat.format(calendar.getTime()); + assertThat(imageFileProcessor.openFile("file1.png")).isEqualTo("Opening PNG file file1.png at: " + currentTime); + } + + @Test + public void givenImageProcessorInstance_whenCallededitFile_thenOneAssertion() { + String currentTime = dateFormat.format(calendar.getTime()); + assertThat(imageFileProcessor.editFile("file1.png")).isEqualTo("Editing PNG file file1.png at: " + currentTime); + } + + @Test + public void givenImageProcessorInstance_whenCalledwriteFile_thenOneAssertion() { + String currentTime = dateFormat.format(calendar.getTime()); + assertThat(imageFileProcessor.writeFile("file1.png")).isEqualTo("Writing PNG file file1.png at: " + currentTime); + } + + @Test + public void givenImageProcessorInstance_whenCalledsaveFile_thenOneAssertion() { + String currentTime = dateFormat.format(calendar.getTime()); + assertThat(imageFileProcessor.saveFile("file1.png")).isEqualTo("Saving PNG file file1.png at: " + currentTime); + } +} \ No newline at end of file diff --git a/cdi/src/test/java/com/baeldung/test/dependencyinjection/JpgFileEditorUnitTest.java b/cdi/src/test/java/com/baeldung/test/dependencyinjection/JpgFileEditorUnitTest.java new file mode 100644 index 0000000000..4f3954c0bc --- /dev/null +++ b/cdi/src/test/java/com/baeldung/test/dependencyinjection/JpgFileEditorUnitTest.java @@ -0,0 +1,37 @@ +package com.baeldung.test.dependencyinjection; + +import com.baeldung.dependencyinjection.imagefileeditors.JpgFileEditor; +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JpgFileEditorUnitTest { + + private static JpgFileEditor jpgFileUtil; + + + @BeforeClass + public static void setJpgFileEditorInstance() { + jpgFileUtil = new JpgFileEditor(); + } + + @Test + public void givenJpgFileEditorInstance_whenCalledopenFile_thenOneAssertion() { + assertThat(jpgFileUtil.openFile("file1.jpg")).isEqualTo("Opening JPG file file1.jpg"); + } + + @Test + public void givenJpgFileEditorlInstance_whenCallededitFile_thenOneAssertion() { + assertThat(jpgFileUtil.editFile("file1.gif")).isEqualTo("Editing JPG file file1.gif"); + } + + @Test + public void givenJpgFileEditorInstance_whenCalledwriteFile_thenOneAssertion() { + assertThat(jpgFileUtil.writeFile("file1.jpg")).isEqualTo("Writing JPG file file1.jpg"); + } + + @Test + public void givenJpgFileEditorInstance_whenCalledsaveFile_thenOneAssertion() { + assertThat(jpgFileUtil.saveFile("file1.jpg")).isEqualTo("Saving JPG file file1.jpg"); + } +} \ No newline at end of file diff --git a/cdi/src/test/java/com/baeldung/test/dependencyinjection/PngFileEditorUnitTest.java b/cdi/src/test/java/com/baeldung/test/dependencyinjection/PngFileEditorUnitTest.java new file mode 100644 index 0000000000..d16f6d576e --- /dev/null +++ b/cdi/src/test/java/com/baeldung/test/dependencyinjection/PngFileEditorUnitTest.java @@ -0,0 +1,39 @@ +package com.baeldung.test.dependencyinjection; + +import com.baeldung.dependencyinjection.imagefileeditors.PngFileEditor; +import com.baeldung.dependencyinjection.qualifiers.PngFileEditorQualifier; +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.BeforeClass; +import org.junit.Test; + +@PngFileEditorQualifier +public class PngFileEditorUnitTest { + + private static PngFileEditor pngFileEditor; + + + @BeforeClass + public static void setPngFileEditorInstance() { + pngFileEditor = new PngFileEditor(); + } + + @Test + public void givenPngFileEditorInstance_whenCalledopenFile_thenOneAssertion() { + assertThat(pngFileEditor.openFile("file1.png")).isEqualTo("Opening PNG file file1.png"); + } + + @Test + public void givenPngFileEditorInstance_whenCallededitFile_thenOneAssertion() { + assertThat(pngFileEditor.editFile("file1.png")).isEqualTo("Editing PNG file file1.png"); + } + + @Test + public void givenPngFileEditorInstance_whenCalledwriteFile_thenOneAssertion() { + assertThat(pngFileEditor.writeFile("file1.png")).isEqualTo("Writing PNG file file1.png"); + } + + @Test + public void givenPngFileEditorInstance_whenCalledsaveFile_thenOneAssertion() { + assertThat(pngFileEditor.saveFile("file1.png")).isEqualTo("Saving PNG file file1.png"); + } +} diff --git a/cdi/src/test/java/com/baeldung/test/dependencyinjection/TimeLoggerFactoryUnitTest.java b/cdi/src/test/java/com/baeldung/test/dependencyinjection/TimeLoggerFactoryUnitTest.java new file mode 100644 index 0000000000..caf2ed32b5 --- /dev/null +++ b/cdi/src/test/java/com/baeldung/test/dependencyinjection/TimeLoggerFactoryUnitTest.java @@ -0,0 +1,15 @@ +package com.baeldung.test.dependencyinjection; + +import com.baeldung.dependencyinjection.factories.TimeLoggerFactory; +import com.baeldung.dependencyinjection.loggers.TimeLogger; +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; + +public class TimeLoggerFactoryUnitTest { + + @Test + public void givenTimeLoggerFactory_whenCalledgetTimeLogger_thenOneAssertion() { + TimeLoggerFactory timeLoggerFactory = new TimeLoggerFactory(); + assertThat(timeLoggerFactory.getTimeLogger()).isInstanceOf(TimeLogger.class); + } +} diff --git a/cdi/src/test/java/com/baeldung/test/dependencyinjection/TimeLoggerUnitTest.java b/cdi/src/test/java/com/baeldung/test/dependencyinjection/TimeLoggerUnitTest.java new file mode 100644 index 0000000000..222de251fe --- /dev/null +++ b/cdi/src/test/java/com/baeldung/test/dependencyinjection/TimeLoggerUnitTest.java @@ -0,0 +1,20 @@ +package com.baeldung.test.dependencyinjection; + +import com.baeldung.dependencyinjection.loggers.TimeLogger; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; + +public class TimeLoggerUnitTest { + + + @Test + public void givenTimeLoggerInstance_whenCalledgetLogTime_thenOneAssertion() { + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm"); + Calendar calendar = Calendar.getInstance(); + TimeLogger timeLogger = new TimeLogger(dateFormat, calendar); + String currentTime = dateFormat.format(calendar.getTime()); + assertThat(timeLogger.getTime()).isEqualTo(currentTime); + } +} \ No newline at end of file