diff --git a/core/pom.xml b/core/pom.xml
deleted file mode 100644
index ab3dff6..0000000
--- a/core/pom.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- parent
- xyz.juliandev
- 1.0.0
-
- 4.0.0
-
- easyinjector-core
-
- EasyInjectorCore
-
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 5182427..1d0477b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,15 +5,8 @@
4.0.0
xyz.juliandev
- parent
- pom
- 1.0.0
-
-
- core
-
-
- EasyInjector
+ EasyInject
+ 2.0.0
EasyInjector is an ultra-lightweight dependency injection library for Java.
@@ -22,7 +15,7 @@
The Apache Software License, Version 2.0
- http://www.apache.org/licenses/LICENSE-2.0.txt
+ https://www.apache.org/licenses/LICENSE-2.0.txt
repo
@@ -67,7 +60,7 @@
org.projectlombok
lombok
- 1.18.26
+ 1.18.28
@@ -77,7 +70,7 @@
maven-jar-plugin
3.2.0
- ${project.parent.basedir}/artifacts/
+ ${project.basedir}/artifacts/
@@ -112,4 +105,5 @@
+
\ No newline at end of file
diff --git a/core/src/main/java/xyz/juliandev/easy/Easy.java b/src/main/java/xyz/juliandev/easy/Easy.java
similarity index 100%
rename from core/src/main/java/xyz/juliandev/easy/Easy.java
rename to src/main/java/xyz/juliandev/easy/Easy.java
diff --git a/core/src/main/java/xyz/juliandev/easy/annotations/Inject.java b/src/main/java/xyz/juliandev/easy/annotations/Inject.java
similarity index 100%
rename from core/src/main/java/xyz/juliandev/easy/annotations/Inject.java
rename to src/main/java/xyz/juliandev/easy/annotations/Inject.java
diff --git a/core/src/main/java/xyz/juliandev/easy/annotations/Named.java b/src/main/java/xyz/juliandev/easy/annotations/Named.java
similarity index 100%
rename from core/src/main/java/xyz/juliandev/easy/annotations/Named.java
rename to src/main/java/xyz/juliandev/easy/annotations/Named.java
diff --git a/core/src/main/java/xyz/juliandev/easy/annotations/Provides.java b/src/main/java/xyz/juliandev/easy/annotations/Provides.java
similarity index 100%
rename from core/src/main/java/xyz/juliandev/easy/annotations/Provides.java
rename to src/main/java/xyz/juliandev/easy/annotations/Provides.java
diff --git a/core/src/main/java/xyz/juliandev/easy/annotations/Qualifier.java b/src/main/java/xyz/juliandev/easy/annotations/Qualifier.java
similarity index 100%
rename from core/src/main/java/xyz/juliandev/easy/annotations/Qualifier.java
rename to src/main/java/xyz/juliandev/easy/annotations/Qualifier.java
diff --git a/core/src/main/java/xyz/juliandev/easy/annotations/Scope.java b/src/main/java/xyz/juliandev/easy/annotations/Scope.java
similarity index 99%
rename from core/src/main/java/xyz/juliandev/easy/annotations/Scope.java
rename to src/main/java/xyz/juliandev/easy/annotations/Scope.java
index 17e0ef6..dd2f9b6 100644
--- a/core/src/main/java/xyz/juliandev/easy/annotations/Scope.java
+++ b/src/main/java/xyz/juliandev/easy/annotations/Scope.java
@@ -1,10 +1,11 @@
package xyz.juliandev.easy.annotations;
-import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
import java.lang.annotation.Documented;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Target(ANNOTATION_TYPE)
@Retention(RUNTIME)
diff --git a/core/src/main/java/xyz/juliandev/easy/annotations/Singleton.java b/src/main/java/xyz/juliandev/easy/annotations/Singleton.java
similarity index 100%
rename from core/src/main/java/xyz/juliandev/easy/annotations/Singleton.java
rename to src/main/java/xyz/juliandev/easy/annotations/Singleton.java
diff --git a/core/src/main/java/xyz/juliandev/easy/injector/EasyInjector.java b/src/main/java/xyz/juliandev/easy/injector/EasyInjector.java
similarity index 83%
rename from core/src/main/java/xyz/juliandev/easy/injector/EasyInjector.java
rename to src/main/java/xyz/juliandev/easy/injector/EasyInjector.java
index 77ef071..32b57ea 100644
--- a/core/src/main/java/xyz/juliandev/easy/injector/EasyInjector.java
+++ b/src/main/java/xyz/juliandev/easy/injector/EasyInjector.java
@@ -1,5 +1,7 @@
package xyz.juliandev.easy.injector;
+import xyz.juliandev.easy.module.AbstractModule;
+
public interface EasyInjector {
/**
@@ -24,4 +26,6 @@ public interface EasyInjector {
boolean injectObjectFields(Object target);
+ void addDynamicModule(AbstractModule abstractModule);
+
}
diff --git a/core/src/main/java/xyz/juliandev/easy/injector/EasyInjectorImpl.java b/src/main/java/xyz/juliandev/easy/injector/EasyInjectorImpl.java
similarity index 97%
rename from core/src/main/java/xyz/juliandev/easy/injector/EasyInjectorImpl.java
rename to src/main/java/xyz/juliandev/easy/injector/EasyInjectorImpl.java
index f4c7a2b..6c074bf 100644
--- a/core/src/main/java/xyz/juliandev/easy/injector/EasyInjectorImpl.java
+++ b/src/main/java/xyz/juliandev/easy/injector/EasyInjectorImpl.java
@@ -1,11 +1,10 @@
package xyz.juliandev.easy.injector;
import xyz.juliandev.easy.annotations.Inject;
+import xyz.juliandev.easy.annotations.Provides;
import xyz.juliandev.easy.annotations.Qualifier;
import xyz.juliandev.easy.annotations.Singleton;
import xyz.juliandev.easy.module.AbstractModule;
-import xyz.juliandev.easy.annotations.Provides;
-
import java.lang.annotation.Annotation;
import java.lang.reflect.*;
@@ -59,6 +58,16 @@ public Provider getProvider(Key key) {
return provider(key, null);
}
+ /**
+ * Dynamic Registers AbstractModules
+ */
+ @Override
+ public void addDynamicModule(AbstractModule abstractModule) {
+ for (Method providerMethod : providers(abstractModule.getClass())) {
+ providerMethod(abstractModule, providerMethod);
+ }
+ }
+
/**
* Injects fields to the target object
*/
@@ -273,4 +282,4 @@ private boolean providerInSubClass(Method method, Set discoveredMethods)
return false;
}
-}
+}
\ No newline at end of file
diff --git a/core/src/main/java/xyz/juliandev/easy/injector/EasyInjectorRuntimeException.java b/src/main/java/xyz/juliandev/easy/injector/EasyInjectorRuntimeException.java
similarity index 100%
rename from core/src/main/java/xyz/juliandev/easy/injector/EasyInjectorRuntimeException.java
rename to src/main/java/xyz/juliandev/easy/injector/EasyInjectorRuntimeException.java
diff --git a/core/src/main/java/xyz/juliandev/easy/injector/Key.java b/src/main/java/xyz/juliandev/easy/injector/Key.java
similarity index 100%
rename from core/src/main/java/xyz/juliandev/easy/injector/Key.java
rename to src/main/java/xyz/juliandev/easy/injector/Key.java
diff --git a/core/src/main/java/xyz/juliandev/easy/injector/Provider.java b/src/main/java/xyz/juliandev/easy/injector/Provider.java
similarity index 100%
rename from core/src/main/java/xyz/juliandev/easy/injector/Provider.java
rename to src/main/java/xyz/juliandev/easy/injector/Provider.java
diff --git a/core/src/main/java/xyz/juliandev/easy/module/AbstractModule.java b/src/main/java/xyz/juliandev/easy/module/AbstractModule.java
similarity index 100%
rename from core/src/main/java/xyz/juliandev/easy/module/AbstractModule.java
rename to src/main/java/xyz/juliandev/easy/module/AbstractModule.java
diff --git a/core/src/test/java/xyz/juliandev/easy/AmbiguousModuleTest.java b/src/test/java/xyz/juliandev/easy/AmbiguousModuleTest.java
similarity index 100%
rename from core/src/test/java/xyz/juliandev/easy/AmbiguousModuleTest.java
rename to src/test/java/xyz/juliandev/easy/AmbiguousModuleTest.java
diff --git a/src/test/java/xyz/juliandev/easy/DynamicModuleTest.java b/src/test/java/xyz/juliandev/easy/DynamicModuleTest.java
new file mode 100644
index 0000000..96966e8
--- /dev/null
+++ b/src/test/java/xyz/juliandev/easy/DynamicModuleTest.java
@@ -0,0 +1,45 @@
+package xyz.juliandev.easy;
+
+import org.junit.Test;
+import xyz.juliandev.easy.annotations.Inject;
+import xyz.juliandev.easy.annotations.Named;
+import xyz.juliandev.easy.annotations.Provides;
+import xyz.juliandev.easy.injector.EasyInjector;
+import xyz.juliandev.easy.module.AbstractModule;
+
+public class DynamicModuleTest {
+
+ @Test
+ public void dynamicModule() {
+ EasyInjector injector = Easy.createInjector(new AbstractModule() {
+ @Provides
+ @Named("foo")
+ String foo() {
+ return "foo";
+ }
+ });
+ injector.addDynamicModule(new AbstractModule() {
+
+ @Provides
+ @Named("bar")
+ String bar() {
+ return "bar";
+ }
+ });
+
+ TestObj obj = injector.getInstance(TestObj.class);
+ obj.print();
+
+
+ }
+
+ public record TestObj(@Named("foo") String foo, @Named("bar") String bar) {
+ @Inject
+ public TestObj {}
+
+ public void print() {
+ System.out.println("fooVar: " + foo + " barVar: " + bar);
+ }
+ }
+
+}
diff --git a/core/src/test/java/xyz/juliandev/easy/FieldInjectionTest.java b/src/test/java/xyz/juliandev/easy/FieldInjectionTest.java
similarity index 100%
rename from core/src/test/java/xyz/juliandev/easy/FieldInjectionTest.java
rename to src/test/java/xyz/juliandev/easy/FieldInjectionTest.java
diff --git a/core/src/test/java/xyz/juliandev/easy/ModuleOverrideTest.java b/src/test/java/xyz/juliandev/easy/ModuleOverrideTest.java
similarity index 100%
rename from core/src/test/java/xyz/juliandev/easy/ModuleOverrideTest.java
rename to src/test/java/xyz/juliandev/easy/ModuleOverrideTest.java
diff --git a/core/src/test/java/xyz/juliandev/easy/NamedDependencyTest.java b/src/test/java/xyz/juliandev/easy/NamedDependencyTest.java
similarity index 100%
rename from core/src/test/java/xyz/juliandev/easy/NamedDependencyTest.java
rename to src/test/java/xyz/juliandev/easy/NamedDependencyTest.java
diff --git a/core/src/test/java/xyz/juliandev/easy/PolymorphicDependencyTest.java b/src/test/java/xyz/juliandev/easy/PolymorphicDependencyTest.java
similarity index 100%
rename from core/src/test/java/xyz/juliandev/easy/PolymorphicDependencyTest.java
rename to src/test/java/xyz/juliandev/easy/PolymorphicDependencyTest.java
diff --git a/core/src/test/java/xyz/juliandev/easy/ProviderInjectionTest.java b/src/test/java/xyz/juliandev/easy/ProviderInjectionTest.java
similarity index 100%
rename from core/src/test/java/xyz/juliandev/easy/ProviderInjectionTest.java
rename to src/test/java/xyz/juliandev/easy/ProviderInjectionTest.java
diff --git a/core/src/test/java/xyz/juliandev/easy/SingletonTest.java b/src/test/java/xyz/juliandev/easy/SingletonTest.java
similarity index 100%
rename from core/src/test/java/xyz/juliandev/easy/SingletonTest.java
rename to src/test/java/xyz/juliandev/easy/SingletonTest.java
index ebb606d..ae875fd 100644
--- a/core/src/test/java/xyz/juliandev/easy/SingletonTest.java
+++ b/src/test/java/xyz/juliandev/easy/SingletonTest.java
@@ -1,9 +1,9 @@
package xyz.juliandev.easy;
+import org.junit.Test;
import xyz.juliandev.easy.annotations.Singleton;
import xyz.juliandev.easy.injector.EasyInjector;
import xyz.juliandev.easy.injector.Provider;
-import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;