An Introduction to CDI (Contexts and Dependency Injection) (#4503)
* Initial Commit * Update pom.xml * Update TimeLoggerFactoryUnitTest.java * Update PngFileEditorUnitTest.java
This commit is contained in:
committed by
pauljervis
parent
4bfb407cfc
commit
4109abebf9
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
+12
@@ -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);
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
+42
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
+12
@@ -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 {}
|
||||
+12
@@ -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 {}
|
||||
+12
@@ -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 {}
|
||||
Reference in New Issue
Block a user