Skip to content

Commit 5987d59

Browse files
committed
#199 - Tests + MethodReader fix for - Parameter type import of aspect method.
1 parent c44e42b commit 5987d59

File tree

4 files changed

+52
-3
lines changed

4 files changed

+52
-3
lines changed

blackbox-test-inject/src/main/java/org/example/myapp/ExampleService.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import jakarta.inject.Singleton;
44
import org.example.myapp.aspect.MyTimed;
55

6-
import java.io.IOException;
6+
import java.util.concurrent.ConcurrentHashMap;
7+
import java.util.concurrent.atomic.AtomicLong;
78

89
@MyTimed
910
@Singleton
@@ -20,6 +21,14 @@ public String other(String param0, int param1) {//} throws IOException, IllegalS
2021
}
2122

2223
public void runOnly(String param) {
23-
System.out.println("runOnly "+param);
24+
System.out.println("runOnly " + param);
25+
}
26+
27+
public void withParamAtomic(AtomicLong atomicLong) {
28+
System.out.println("withParamAtomic " + atomicLong);
29+
}
30+
31+
public void withParamImport(ConcurrentHashMap<String, String> param0) {
32+
System.out.println("withParamAtomic " + param0);
2433
}
2534
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.example.myapp;
2+
3+
import io.avaje.inject.BeanScope;
4+
import org.junit.jupiter.api.Test;
5+
6+
import java.util.concurrent.ConcurrentHashMap;
7+
import java.util.concurrent.atomic.AtomicLong;
8+
9+
class ExampleServiceTest {
10+
11+
@Test
12+
void exercise() {
13+
try (BeanScope beanScope = BeanScope.newBuilder().build()) {
14+
ExampleService exampleService = beanScope.get(ExampleService.class);
15+
16+
exampleService.other("foo", 42);
17+
exampleService.runOnly("foo");
18+
exampleService.withParamAtomic(new AtomicLong(42));
19+
exampleService.withParamImport(new ConcurrentHashMap<>());
20+
}
21+
}
22+
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,8 @@ void writeMethodParam(Append writer) {
398398

399399
void writeMethodParamType(Append writer) {
400400
if (genericType != null) {
401-
genericType.writeShort(writer);
401+
// for getDeclaredMethod only need top level main type
402+
writer.append(genericType.getMainType());
402403
} else {
403404
writer.append(Util.shortName(paramType));
404405
}

inject-generator/src/test/java/io/avaje/inject/generator/GenericTypeTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import java.io.StringWriter;
66
import java.util.HashSet;
7+
import java.util.LinkedHashSet;
78
import java.util.Set;
89

910
import static org.assertj.core.api.Assertions.assertThat;
@@ -87,6 +88,22 @@ void parse_withParams() {
8788
assertThat(type.getParams().get(1).getMainType()).isEqualTo("java.lang.Long");
8889
}
8990

91+
@Test
92+
void parse_withParams2() {
93+
GenericType type = GenericType.parse("java.util.concurrent.ConcurrentMap<java.lang.String,my.d.Has>");
94+
95+
assertThat(type.getMainType()).isEqualTo("java.util.concurrent.ConcurrentMap");
96+
assertThat(type.getParams()).hasSize(2);
97+
assertThat(type.getParams().get(0).getMainType()).isEqualTo("java.lang.String");
98+
assertThat(type.getParams().get(1).getMainType()).isEqualTo("my.d.Has");
99+
100+
LinkedHashSet<String> importTypes = new LinkedHashSet<>();
101+
type.addImports(importTypes);
102+
103+
assertThat(importTypes).hasSize(2);
104+
assertThat(importTypes).containsExactly("java.util.concurrent.ConcurrentMap", "my.d.Has");
105+
}
106+
90107
@Test
91108
void parse_withExtendsParams() {
92109
GenericType type = new GenericTypeParser("my.exa.Repo<? extends my.d.Haz,java.lang.Long>").parse();

0 commit comments

Comments
 (0)