Skip to content

Commit adfcb59

Browse files
committed
#60 - Refactor internal IncludeAnnotations to use prefix tests to exclude registering annotations
1 parent 729aafb commit adfcb59

File tree

5 files changed

+19
-17
lines changed

5 files changed

+19
-17
lines changed

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

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,30 @@
11
package io.avaje.inject.generator;
22

3-
import io.avaje.inject.Factory;
4-
import io.avaje.inject.Primary;
5-
import io.avaje.inject.Secondary;
6-
7-
import javax.inject.Named;
8-
import javax.inject.Singleton;
93
import java.util.HashSet;
104
import java.util.Set;
115

126
class IncludeAnnotations {
137

8+
private static final String[] EXCLUDED_PREFIX = {"javax.annotation.", "javax.inject.", "io.avaje.inject.", "lombok."};
9+
1410
/**
1511
* Annotations that we don't bother registering lists for.
1612
*/
1713
private static final Set<String> EXCLUDED_ANNOTATIONS = new HashSet<>();
1814

1915
static {
20-
EXCLUDED_ANNOTATIONS.add("javax.annotation.Generated");
21-
EXCLUDED_ANNOTATIONS.add(Singleton.class.getName());
22-
EXCLUDED_ANNOTATIONS.add(Named.class.getName());
23-
EXCLUDED_ANNOTATIONS.add(Factory.class.getName());
24-
EXCLUDED_ANNOTATIONS.add(Primary.class.getName());
25-
EXCLUDED_ANNOTATIONS.add(Secondary.class.getName());
2616
EXCLUDED_ANNOTATIONS.add(Constants.KOTLIN_METADATA);
2717
EXCLUDED_ANNOTATIONS.add(Constants.PATH);
28-
EXCLUDED_ANNOTATIONS.add(Constants.GENERATED_9);
2918
}
3019

3120
/**
3221
* Return true if the annotation should be included.
3322
*/
3423
static boolean include(String annotationType) {
35-
if (annotationType.startsWith("lombok.")) {
36-
return false;
24+
for (String prefix : EXCLUDED_PREFIX) {
25+
if (annotationType.startsWith(prefix)) {
26+
return false;
27+
}
3728
}
3829
return !EXCLUDED_ANNOTATIONS.contains(annotationType);
3930
}

inject-test/src/test/java/io/avaje/inject/SystemContextTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package io.avaje.inject;
22

3+
import org.example.coffee.fruit.Fruit;
34
import org.example.coffee.list.ASomei;
45
import org.example.coffee.list.BSomei;
56
import org.example.coffee.list.Somei;
67
import org.junit.jupiter.api.Test;
78

8-
import javax.annotation.Priority;
99
import java.util.List;
1010

1111
import static org.assertj.core.api.Assertions.assertThat;
@@ -33,7 +33,7 @@ public void getBeansUnsorted_withPriority() {
3333
@Test
3434
public void getBeansWithAnnotation() {
3535

36-
final List<Object> beans = SystemContext.getBeansWithAnnotation(Priority.class);
36+
final List<Object> beans = SystemContext.getBeansWithAnnotation(Fruit.class);
3737
assertThat(beans).hasSize(2);
3838
}
3939
}

inject-test/src/test/java/org/example/coffee/fruit/BananaService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import javax.inject.Inject;
44
import javax.inject.Singleton;
55

6+
@Fruit
67
@Singleton
78
class BananaService {
89

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.example.coffee.fruit;
2+
3+
import java.lang.annotation.Retention;
4+
5+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
6+
7+
@Retention(RUNTIME)
8+
public @interface Fruit {
9+
}

inject-test/src/test/java/org/example/coffee/fruit/PeachService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import javax.inject.Singleton;
44

5+
@Fruit
56
@Singleton
67
class PeachService {
78

0 commit comments

Comments
 (0)