-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refactoring, new interface for Scopes, added Named Annotation
- Loading branch information
1 parent
c5753ae
commit 6630a48
Showing
53 changed files
with
557 additions
and
513 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0" version="6.0.1.9" editor="www.draw.io" type="device"><diagram name="Page-1">7Vrbbts4EP0aA+6DC118y6PlpO0C7iJYB9jdR1qiJbaUaFB0HOfrdyiSkmjJXiVW2hcXAUoOh0Ny5vBwNMnAX6YvXznaJd9ZhOnAc6KXgX8/8Dx37Dvwn5QclWTm3ClBzEmklSrBmrxiLdTz4j2JcG4pCsaoIDtbGLIsw6GwZIhzdrDVtozaq+5QjBuCdYhoU/o3iUSipHNvWsm/YRInZmV3qs+3QeHPmLN9ptcbeP62+KeGU2Rs6YPmCYrYoSbyHwb+kjMmVCt9WWIqfWvcpuZ9OTNa7pvjTHSaoGfk4mjOjiNwhe4yLhIWswzRh0oaFOfD0oIDvUSkFJouNGFRfvxHyj9PTPdfPfYDC3HUkUZ7wUBUWV8xtittRAsZQehGBKUsi54SkqmBL4SapZoHNSdhex7qo3gaOojHWGvNlEgesjZNO+crZimGPYMCxxQJ8mzjAWlYxaVe5VpoaO+2e1rv5RnRPTbYmFLYVUCgEcvGYpMLjkKxBleRLM6NApgudRrhyg8kpSjDdiS2LBMmiLKPKInBifchuAtzEDxjLggAfqEHhAxAECaERit0ZHvprlwAmk0vSBgnr2AWmTVgmAsdUbgZdY21nKnxwXEOOo8mUm4pWqFcaJ2QUYp2OdmUG04hZiQLmBAs1UrmpBIFS0YZLxxg7tcFSMiz4peL4dajM32NNW15d2PVP1QkUMqSOgHMp9cjxG8gZLQhWVQgwV/AyHe0AxigVEaqAMaSohxQslwR8KQ1EqiJf2RbVg5o/Ni9EzSBn4SNJIAk+4mNvzNWIG1bC4EWGYRRvBVn8ZXvUAjbWhU69+NK8pf2pRQdEiLwGuRyTwd4YCRVgL0tLVghIVGEs4KGBBJIQUbiY8dIJgr/TwL4AeJbSh6awLmW0HerPvxIdS6WLJNXjhSAwYDHA85FK5S8zlAy2Jl2g47XA3LGLdxyElhKTilCBdY8b+67oppCLIonQYfxqaDxkdsItd8Mtd8SQoo2mD6ynAjCpH2udE9C+wuiN/G6RW9+ffAmLcFrPAXDT4oCnhlM08/ChlePwslLAhYoQ1HbLPsxaVryURRp9hgafgETRfMTNJRFm18aRgJ4b2sqQz2769Q/UYqjxny1kbXgIO1ua0Fpy07MOd7GnGfcXpfc+PSDbuTU6fgUm2+Ia+7krHEn/wdpt6Ts45Iy1/etrGzcRII7n7QgYdIDEubNpCyk6PVV0YfmJacJiVEGHKaUFGO1qJB8DQMUC/nWSc0NfONilN145f28MuuMrvN5WiuaJuPrwXR3y9N6jt68Ixf0kKe5rYnahdziXK4W5FiUF3/YPafKVWI0NBlQx3m/ljnaSKGPOM873lLv+kAbRuirJlbWs9gO24Usqdq1Lnb2Ia0XvFy99f7KW3rqo7zY1ZPsz2bWk+zPT55aVXLTsyrXgyfQsaam+eLsOmP/dJ1Z3VwHfeei/rlzVEhRO65wU/qwG2dMG5yx5BgJuFa3lPEDU8aJ41hx9WYthTzzRWFVY/oox7jNz4dRbmq6BWWfq/TeMr635wzlHbuqNNcKhj6w0PyAuOV8V8avrTjXFr8+kr62lD3QHD48vcYdcj+gTEafsVURswtQT6dlJ+fpkqWiVlYWyKzq2Dvsjqz9gcFacvl+q5+7ihwIUMIi+Um9lW+kE0pPF1/PDtv8wKHQVcAcIw6PXDGgNCMM2RXQT0iwnI5F2HnVW13vd7JxW2Gv7Ta707eXc6Bb/S5d5W/VHyz4D/8B</diagram></mxfile> | ||
<mxfile userAgent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0" version="6.0.2.1" editor="www.draw.io" type="device"><diagram name="Page-1">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</diagram></mxfile> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package myinjector.Annotations; | ||
|
||
import java.lang.annotation.Retention; | ||
import java.lang.annotation.RetentionPolicy; | ||
|
||
@Retention(RetentionPolicy.RUNTIME) | ||
public @interface Named { | ||
String name(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,8 @@ | ||
package myinjector.Annotations; | ||
|
||
import java.lang.annotation.Retention; | ||
import java.lang.annotation.RetentionPolicy; | ||
|
||
@Retention(RetentionPolicy.RUNTIME) | ||
public @interface Optional { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package myinjector; | ||
|
||
import myinjector.Annotations.Inject; | ||
|
||
import java.lang.reflect.*; | ||
import java.util.Arrays; | ||
import java.util.Comparator; | ||
|
||
public class Builder{ | ||
|
||
private Injector injector; | ||
|
||
public Builder(AbstractSettings settings){ | ||
this.injector = new Injector(settings); | ||
} | ||
|
||
public <T> T createInstance(Class clazz) { | ||
System.out.println("Creating object: " + clazz.getName()); | ||
Constructor constructor = findConstructor(clazz); | ||
Object[] arguments = injector.injectArguments(constructor); | ||
T outputObject = null; | ||
try { | ||
outputObject = (T)constructor.newInstance(arguments); | ||
} catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { | ||
e.printStackTrace(); | ||
} | ||
injector.injectDependencies(outputObject); | ||
return outputObject; | ||
} | ||
|
||
|
||
private Constructor findConstructor(Class clazz) { | ||
Constructor[] allConstructors = clazz.getConstructors(); | ||
if(allConstructors.length == 0){ | ||
Constructor constructor = null; | ||
try { | ||
constructor = clazz.getConstructor(); | ||
} catch (NoSuchMethodException e) { | ||
//@TODO: display info that clazz can not be created | ||
} | ||
return constructor; | ||
} | ||
for (Constructor constructor: allConstructors) { | ||
if(isExplicitInjectionConstructor(constructor)){ | ||
return constructor; | ||
} | ||
} | ||
|
||
return findImplicitConstructor(allConstructors); | ||
} | ||
|
||
private boolean isExplicitInjectionConstructor(Constructor constructor) | ||
{ | ||
return (constructor.getAnnotation(Inject.class) != null); | ||
} | ||
|
||
private Constructor findImplicitConstructor(Constructor[] constructors) { | ||
Arrays.sort(constructors, new Comparator<Constructor>() { | ||
public int compare(Constructor constr1, Constructor constr2){ | ||
if(constr1.getParameterTypes().length >= constr2.getParameterTypes().length) | ||
return -1; | ||
else return 1; | ||
} | ||
}); | ||
|
||
return constructors[0]; | ||
} | ||
} |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.