Skip to content

Commit

Permalink
Merge pull request #1 from JulianDev24/develop
Browse files Browse the repository at this point in the history
Re-Structured Project
  • Loading branch information
JulianDev24 authored Jul 3, 2023
2 parents d414aa0 + 8bcb068 commit e401b6c
Show file tree
Hide file tree
Showing 23 changed files with 72 additions and 34 deletions.
15 changes: 0 additions & 15 deletions core/pom.xml

This file was deleted.

18 changes: 6 additions & 12 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,8 @@
<modelVersion>4.0.0</modelVersion>

<groupId>xyz.juliandev</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>1.0.0</version>

<modules>
<module>core</module>
</modules>

<name>EasyInjector</name>
<artifactId>EasyInject</artifactId>
<version>2.0.0</version>

<description>
EasyInjector is an ultra-lightweight dependency injection library for Java.
Expand All @@ -22,7 +15,7 @@
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
Expand Down Expand Up @@ -67,7 +60,7 @@
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<version>1.18.28</version>
</path>
</annotationProcessorPaths>
</configuration>
Expand All @@ -77,7 +70,7 @@
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<outputDirectory>${project.parent.basedir}/artifacts/</outputDirectory>
<outputDirectory>${project.basedir}/artifacts/</outputDirectory>
</configuration>
</plugin>

Expand Down Expand Up @@ -112,4 +105,5 @@
</plugins>
</pluginManagement>
</build>

</project>
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package xyz.juliandev.easy.injector;

import xyz.juliandev.easy.module.AbstractModule;

public interface EasyInjector {

/**
Expand All @@ -24,4 +26,6 @@ public interface EasyInjector {

boolean injectObjectFields(Object target);

void addDynamicModule(AbstractModule abstractModule);

}
Original file line number Diff line number Diff line change
@@ -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.*;
Expand Down Expand Up @@ -59,6 +58,16 @@ public <T> Provider<T> getProvider(Key<T> 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
*/
Expand Down Expand Up @@ -273,4 +282,4 @@ private boolean providerInSubClass(Method method, Set<Method> discoveredMethods)
return false;
}

}
}
45 changes: 45 additions & 0 deletions src/test/java/xyz/juliandev/easy/DynamicModuleTest.java
Original file line number Diff line number Diff line change
@@ -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);
}
}

}
Original file line number Diff line number Diff line change
@@ -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;
Expand Down

0 comments on commit e401b6c

Please sign in to comment.