Skip to content

Commit 4109abe

Browse files
Alejandro Gervasiopauljervis
authored andcommitted
An Introduction to CDI (Contexts and Dependency Injection) (eugenp#4503)
* Initial Commit * Update pom.xml * Update TimeLoggerFactoryUnitTest.java * Update PngFileEditorUnitTest.java
1 parent 4bfb407 commit 4109abe

18 files changed

Lines changed: 459 additions & 1 deletion

cdi/pom.xml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,24 @@
1414
</parent>
1515

1616
<dependencies>
17+
<dependency>
18+
<groupId>org.hamcrest</groupId>
19+
<artifactId>hamcrest-core</artifactId>
20+
<version>1.3</version>
21+
<scope>test</scope>
22+
</dependency>
23+
<dependency>
24+
<groupId>org.assertj</groupId>
25+
<artifactId>assertj-core</artifactId>
26+
<version>3.10.0</version>
27+
<scope>test</scope>
28+
</dependency>
29+
<dependency>
30+
<groupId>junit</groupId>
31+
<artifactId>junit</artifactId>
32+
<version>4.12</version>
33+
<scope>test</scope>
34+
</dependency>
1735
<dependency>
1836
<groupId>org.springframework</groupId>
1937
<artifactId>spring-context</artifactId>
@@ -42,4 +60,4 @@
4260
<weld-se-core.version>2.4.1.Final</weld-se-core.version>
4361
</properties>
4462

45-
</project>
63+
</project>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.baeldung.dependencyinjection.application;
2+
3+
import com.baeldung.dependencyinjection.imageprocessors.ImageFileProcessor;
4+
import org.jboss.weld.environment.se.Weld;
5+
import org.jboss.weld.environment.se.WeldContainer;
6+
7+
public class FileApplication {
8+
9+
public static void main(String[] args) {
10+
Weld weld = new Weld();
11+
WeldContainer container = weld.initialize();
12+
ImageFileProcessor imageFileProcessor = container.select(ImageFileProcessor.class).get();
13+
System.out.println(imageFileProcessor.openFile("file1.png"));
14+
System.out.println(imageFileProcessor.writeFile("file1.png"));
15+
System.out.println(imageFileProcessor.saveFile("file1.png"));
16+
container.shutdown();
17+
}
18+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.baeldung.dependencyinjection.factories;
2+
3+
import com.baeldung.dependencyinjection.loggers.TimeLogger;
4+
import java.text.SimpleDateFormat;
5+
import java.util.Calendar;
6+
import javax.enterprise.inject.Produces;
7+
8+
public class TimeLoggerFactory {
9+
10+
@Produces
11+
public TimeLogger getTimeLogger() {
12+
return new TimeLogger(new SimpleDateFormat("HH:mm"), Calendar.getInstance());
13+
}
14+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.baeldung.dependencyinjection.imagefileeditors;
2+
3+
import com.baeldung.dependencyinjection.qualifiers.GifFileEditorQualifier;
4+
5+
@GifFileEditorQualifier
6+
public class GifFileEditor implements ImageFileEditor {
7+
8+
@Override
9+
public String openFile(String fileName) {
10+
return "Opening GIF file " + fileName;
11+
}
12+
13+
@Override
14+
public String editFile(String fileName) {
15+
return "Editing GIF file " + fileName;
16+
}
17+
18+
@Override
19+
public String writeFile(String fileName) {
20+
return "Writing GIF file " + fileName;
21+
}
22+
23+
@Override
24+
public String saveFile(String fileName) {
25+
return "Saving GIF file " + fileName;
26+
}
27+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.baeldung.dependencyinjection.imagefileeditors;
2+
3+
public interface ImageFileEditor {
4+
5+
String openFile(String fileName);
6+
7+
String editFile(String fileName);
8+
9+
String writeFile(String fileName);
10+
11+
String saveFile(String fileName);
12+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.baeldung.dependencyinjection.imagefileeditors;
2+
3+
import com.baeldung.dependencyinjection.qualifiers.JpgFileEditorQualifier;
4+
5+
@JpgFileEditorQualifier
6+
public class JpgFileEditor implements ImageFileEditor {
7+
8+
@Override
9+
public String openFile(String fileName) {
10+
return "Opening JPG file " + fileName;
11+
}
12+
13+
@Override
14+
public String editFile(String fileName) {
15+
return "Editing JPG file " + fileName;
16+
}
17+
18+
@Override
19+
public String writeFile(String fileName) {
20+
return "Writing JPG file " + fileName;
21+
}
22+
23+
@Override
24+
public String saveFile(String fileName) {
25+
return "Saving JPG file " + fileName;
26+
}
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.baeldung.dependencyinjection.imagefileeditors;
2+
3+
import com.baeldung.dependencyinjection.qualifiers.PngFileEditorQualifier;
4+
5+
@PngFileEditorQualifier
6+
public class PngFileEditor implements ImageFileEditor {
7+
8+
@Override
9+
public String openFile(String fileName) {
10+
return "Opening PNG file " + fileName;
11+
}
12+
13+
@Override
14+
public String editFile(String fileName) {
15+
return "Editing PNG file " + fileName;
16+
}
17+
18+
@Override
19+
public String writeFile(String fileName) {
20+
return "Writing PNG file " + fileName;
21+
}
22+
23+
@Override
24+
public String saveFile(String fileName) {
25+
return "Saving PNG file " + fileName;
26+
}
27+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.baeldung.dependencyinjection.imageprocessors;
2+
3+
import com.baeldung.dependencyinjection.loggers.TimeLogger;
4+
import com.baeldung.dependencyinjection.qualifiers.PngFileEditorQualifier;
5+
import javax.inject.Inject;
6+
import com.baeldung.dependencyinjection.imagefileeditors.ImageFileEditor;
7+
8+
public class ImageFileProcessor {
9+
10+
private final ImageFileEditor imageFileEditor;
11+
private final TimeLogger timeLogger;
12+
13+
@Inject
14+
public ImageFileProcessor(@PngFileEditorQualifier ImageFileEditor imageFileEditor, TimeLogger timeLogger) {
15+
this.imageFileEditor = imageFileEditor;
16+
this.timeLogger = timeLogger;
17+
}
18+
19+
public ImageFileEditor getImageFileditor() {
20+
return imageFileEditor;
21+
}
22+
23+
public TimeLogger getTimeLogger() {
24+
return timeLogger;
25+
}
26+
27+
public String openFile(String fileName) {
28+
return imageFileEditor.openFile(fileName) + " at: " + timeLogger.getTime();
29+
}
30+
31+
public String editFile(String fileName) {
32+
return imageFileEditor.editFile(fileName) + " at: " + timeLogger.getTime();
33+
}
34+
35+
public String writeFile(String fileName) {
36+
return imageFileEditor.writeFile(fileName) + " at: " + timeLogger.getTime();
37+
}
38+
39+
public String saveFile(String fileName) {
40+
return imageFileEditor.saveFile(fileName)+ " at: " + timeLogger.getTime();
41+
}
42+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.baeldung.dependencyinjection.loggers;
2+
3+
import java.text.SimpleDateFormat;
4+
import java.util.Calendar;
5+
6+
public class TimeLogger {
7+
8+
private final SimpleDateFormat dateFormat;
9+
private final Calendar calendar;
10+
11+
public TimeLogger(SimpleDateFormat dateFormat, Calendar calendar) {
12+
this.dateFormat = dateFormat;
13+
this.calendar = calendar;
14+
}
15+
16+
public String getTime() {
17+
return dateFormat.format(calendar.getTime());
18+
}
19+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.baeldung.dependencyinjection.qualifiers;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
import javax.inject.Qualifier;
8+
9+
@Qualifier
10+
@Retention(RetentionPolicy.RUNTIME)
11+
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.TYPE, ElementType.PARAMETER})
12+
public @interface GifFileEditorQualifier {}

0 commit comments

Comments
 (0)