Skip to content

Commit def3165

Browse files
committed
#176 - Module interface lacks the classes() method
Modify the Module.classes() method to be non-static interface method
1 parent 252fe6b commit def3165

File tree

5 files changed

+22
-11
lines changed

5 files changed

+22
-11
lines changed

inject-generator/src/main/java/io/avaje/inject/generator/SimpleModuleWriter.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,6 @@ class SimpleModuleWriter {
4343
" * field injection, method injection and lifecycle support.\n" +
4444
" */";
4545

46-
private static final String CLASSES_COMMENT =
47-
" /**\n" +
48-
" * Return public classes of the beans that would be registered by this module.\n" +
49-
" * <p>\n" +
50-
" * This method allows code to use reflection to inspect the modules classes \n" +
51-
" * before the module is wired. This method is not required for DI wiring.\n" +
52-
" */";
53-
5446
private final ProcessingContext context;
5547
private final String modulePackage;
5648
private final String shortName;
@@ -99,8 +91,8 @@ private void writeServicesFile(ScopeInfo.Type scopeType) {
9991

10092
private void writeClassesMethod() {
10193
Set<String> allClasses = distinctPublicClasses();
102-
writer.append(CLASSES_COMMENT).eol();
103-
writer.append(" public static Class<?>[] classes() {").eol();
94+
writer.append(" @Override").eol();
95+
writer.append(" public Class<?>[] classes() {").eol();
10496
writer.append(" return new Class<?>[]{").eol();
10597
for (String rawType : allClasses) {
10698
writer.append(" %s.class,", rawType).eol();

inject-test/src/test/java/org/example/coffee/BeanScopeBuilderAddTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ public Class<?>[] provides() {
4040
return new Class[0];
4141
}
4242

43+
@Override
44+
public Class<?>[] classes() {
45+
return new Class[0];
46+
}
47+
4348
@Override
4449
public void build(Builder builder) {
4550
// do nothing

inject-test/src/test/java/org/example/custom3/ParentScopeTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ void parentScope() {
5050

5151
@Test
5252
void module_classes() {
53-
Class<?>[] classes = MyThreeModule.classes();
53+
MyThreeModule module = new MyThreeModule();
54+
Class<?>[] classes = module.classes();
5455
Set<Class<?>> asSet = new HashSet<>(Arrays.asList(classes));
5556

5657
assertThat(asSet).contains(

inject/src/main/java/io/avaje/inject/spi/Module.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@ public interface Module {
1515
*/
1616
Class<?>[] provides();
1717

18+
/**
19+
* Return public classes of the beans that would be registered by this module.
20+
* <p>
21+
* This method allows code to use reflection to inspect the modules classes
22+
* before the module is wired. This method is not required for DI wiring.
23+
*/
24+
Class<?>[] classes();
25+
1826
/**
1927
* Build all the beans.
2028
*/

inject/src/test/java/io/avaje/inject/BeanScopeBuilderTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ public Class<?>[] provides() {
117117
return provides;
118118
}
119119

120+
@Override
121+
public Class<?>[] classes() {
122+
return new Class[0];
123+
}
124+
120125
@Override
121126
public Class<?>[] requires() {
122127
return requires;

0 commit comments

Comments
 (0)