Skip to content

Commit 14dcae7

Browse files
committed
Merge branch 'feature/101' into javax.main
2 parents 8bc2509 + c937a61 commit 14dcae7

File tree

17 files changed

+75
-28
lines changed

17 files changed

+75
-28
lines changed

inject-generator/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>io.avaje</groupId>
66
<artifactId>avaje-inject-parent</artifactId>
7-
<version>3.3</version>
7+
<version>3.4</version>
88
</parent>
99

1010
<artifactId>avaje-inject-generator</artifactId>
@@ -16,7 +16,7 @@
1616
<dependency>
1717
<groupId>io.avaje</groupId>
1818
<artifactId>avaje-inject</artifactId>
19-
<version>3.3</version>
19+
<version>3.4</version>
2020
</dependency>
2121

2222
<!-- test dependencies -->

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ void read(boolean factory) {
108108
constructor.checkRequest(requestParams);
109109
}
110110
for (FieldReader fields : injectFields) {
111+
fields.addImports(importTypes);
111112
fields.checkRequest(requestParams);
112113
}
113114
for (MethodReader methods : injectMethods) {

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

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

33
import javax.lang.model.element.Element;
4+
import java.util.Set;
45

56
class FieldReader {
67

78
private final Element element;
89
private final String name;
910
private final UtilType type;
1011
private final boolean nullable;
12+
private final String fieldType;
1113
private boolean requestParam;
1214
private String requestParamName;
1315

@@ -16,27 +18,28 @@ class FieldReader {
1618
this.name = Util.getNamed(element);
1719
this.nullable = Util.isNullable(element);
1820
this.type = Util.determineType(element.asType());
21+
this.fieldType = Util.unwrapProvider(type.rawType());
1922
}
2023

2124
String getFieldName() {
2225
return element.getSimpleName().toString();
2326
}
2427

28+
void addImports(Set<String> importTypes) {
29+
importTypes.add(fieldType);
30+
}
31+
2532
String builderGetDependency() {
2633
StringBuilder sb = new StringBuilder();
2734
sb.append("b.").append(type.getMethod(nullable));
28-
sb.append(getFieldType()).append(".class");
35+
sb.append(nm(fieldType)).append(".class");
2936
if (name != null) {
3037
sb.append(",\"").append(name).append("\"");
3138
}
3239
sb.append(")");
3340
return sb.toString();
3441
}
3542

36-
private String getFieldType() {
37-
return Util.unwrapProvider(type.rawType());
38-
}
39-
4043
/**
4144
* Check for request scoped dependency.
4245
*/
@@ -53,7 +56,7 @@ void checkRequest(BeanRequestParams requestParams) {
5356
void writeRequestDependency(Append writer) {
5457
if (!requestParam) {
5558
// just add as field dependency
56-
requestParamName = writer.nextName(getFieldName().toLowerCase());//"dep");
59+
requestParamName = writer.nextName(getFieldName().toLowerCase());
5760
final String shortType = nm(type.rawType());
5861
writer.append(" @Inject").eol();
5962
writer.append(" %s %s;", shortType, requestParamName).eol().eol();

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,11 @@ String getBuildName() {
6161
if (Util.isVoid(type)) {
6262
return "void_" + Util.trimMethod(method);
6363
} else {
64+
String trimType = Util.trimMethod(type);
6465
if (name != null) {
65-
return shortType + "_" + name;
66+
return trimType + "_" + name;
6667
} else {
67-
return shortType;
68+
return trimType;
6869
}
6970
}
7071
}

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,27 @@ class TypeAppender {
1616
this.importTypes = importTypes;
1717
}
1818

19-
boolean isEmpty() {
20-
return count == 0;
19+
void add(String type) {
20+
addType(type);
2121
}
2222

2323
void add(List<String> types) {
2424
for (String type : types) {
2525
if (!GenericType.isGeneric(type)) {
26-
importTypes.add(type);
27-
if (count++ > 0) {
26+
if (count > 0) {
2827
sb.append(", ");
2928
}
30-
sb.append(Util.shortName(type)).append(".class");
29+
addType(type);
3130
}
3231
}
3332
}
3433

34+
private void addType(String type) {
35+
count++;
36+
importTypes.add(type);
37+
sb.append(Util.shortName(type)).append(".class");
38+
}
39+
3540
String asString() {
3641
return sb.toString();
3742
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,17 @@ class TypeExtendsReader {
1717
* The implied qualifier name based on naming convention.
1818
*/
1919
private String qualifierName;
20+
private String baseTypeRaw;
2021

2122
TypeExtendsReader(TypeElement baseType, ProcessingContext context) {
2223
this.baseType = baseType;
2324
this.context = context;
2425
}
2526

27+
String getBaseType() {
28+
return baseTypeRaw;
29+
}
30+
2631
List<String> getExtendsTypes() {
2732
return extendsTypes;
2833
}
@@ -34,6 +39,7 @@ String getQualifierName() {
3439
void process() {
3540
String base = Util.unwrapProvider(baseType.getQualifiedName().toString());
3641
if (!GenericType.isGeneric(base)) {
42+
baseTypeRaw = base;
3743
extendsTypes.add(base);
3844
}
3945
TypeElement superElement = superOf(baseType);

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,16 @@ String getName() {
7070

7171
private void initRegistrationTypes() {
7272
TypeAppender appender = new TypeAppender(importTypes);
73-
appender.add(interfaceReader.getInterfaceTypes());
74-
if (appender.isEmpty()) {
73+
List<String> interfaceTypes = interfaceReader.getInterfaceTypes();
74+
if (interfaceTypes.isEmpty()) {
7575
// only register extends type if no interfaces implemented
7676
appender.add(extendsReader.getExtendsTypes());
77+
} else {
78+
String baseType = extendsReader.getBaseType();
79+
if (!interfaceTypes.contains(baseType)) {
80+
appender.add(baseType);
81+
}
82+
appender.add(interfaceTypes);
7783
}
7884
if (forBean) {
7985
appender.add(annotationReader.getAnnotationTypes());

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,13 @@ static String commonParent(String currentTop, String aPackage) {
125125
public static String getNamed(Element p) {
126126
Named named = p.getAnnotation(Named.class);
127127
if (named != null) {
128-
return named.value();
128+
return named.value().toLowerCase();
129129
}
130130
for (AnnotationMirror annotationMirror : p.getAnnotationMirrors()) {
131131
DeclaredType annotationType = annotationMirror.getAnnotationType();
132132
Qualifier qualifier = annotationType.asElement().getAnnotation(Qualifier.class);
133133
if (qualifier != null) {
134-
return Util.shortName(annotationType.toString());
134+
return Util.shortName(annotationType.toString()).toLowerCase();
135135
}
136136
}
137137
return null;

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

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

33
import org.junit.jupiter.api.Test;
44

5+
import static org.assertj.core.api.Assertions.assertThat;
56
import static org.junit.jupiter.api.Assertions.assertEquals;
67
import static org.junit.jupiter.api.Assertions.assertFalse;
78
import static org.junit.jupiter.api.Assertions.assertNull;
@@ -52,4 +53,9 @@ public void validImportType_not() {
5253
assertFalse(Util.validImportType("Foo"));
5354
assertFalse(Util.validImportType("NoPackage"));
5455
}
56+
57+
@Test
58+
void shortMethod() {
59+
assertThat(Util.shortMethod("foo.bar.processMe")).isEqualTo("bar.processMe");
60+
}
5561
}

inject-test/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>io.avaje</groupId>
66
<artifactId>avaje-inject-parent</artifactId>
7-
<version>3.3</version>
7+
<version>3.4</version>
88
</parent>
99

1010
<artifactId>avaje-inject-test</artifactId>

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ public void withMockitoSpy_whenOnlySecondary_expect_spyUsed() {
140140

141141
// these are the same (secondary only)
142142
WidgetSecondary widgetSecondary = context.getBean(WidgetSecondary.class);
143-
//assertThat(widget).isSameAs(widgetSecondary);
144-
assertThat(widgetSecondary).isNull();
143+
assertThat(widget).isSameAs(widgetSecondary);
145144
}
146145
}
147146

@@ -161,11 +160,9 @@ public void withMockitoSpy_whenSecondary_expect_spyUsed() {
161160
assertThat(result).isEqualTo("SomeImpl");
162161

163162
SomeImpl someImpl = context.getBean(SomeImpl.class);
164-
SomeImplBean someImplBean = context.getBean(SomeImplBean.class);
165163
assertThat(someImpl).isNull();
166-
assertThat(someImplBean).isNull();
167-
//assertThat(something).isSameAs(someImpl);
168-
//assertThat(someImpl).isNotSameAs(someImplBean);
164+
SomeImplBean someImplBean = context.getBean(SomeImplBean.class);
165+
assertThat(something).isNotSameAs(someImplBean);
169166
}
170167
}
171168

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package org.example.coffee.factory;
2+
3+
public class DFact implements IDFact {
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package org.example.coffee.factory;
2+
3+
public interface IDFact {
4+
}

inject-test/src/test/java/org/example/coffee/factory/MyFactory.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ public class MyFactory {
1212

1313
String methods = "";
1414

15+
@Bean
16+
DFact buildDFact() {
17+
return new DFact();
18+
}
19+
1520
@Bean
1621
CFact buildCFact() {
1722
return new CFact();

inject-test/src/test/java/org/example/coffee/factory/MyFactoryTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,13 @@ public void factoryMethod_createsConcreteImplementation() {
2525
DesEngi buildDesi2 = SystemContext.getBean(DesEngi.class, "BuildDesi2");
2626
assertThat(buildDesi2.ignite()).isEqualTo("MyEngi");
2727
}
28+
29+
@Test
30+
public void factoryMethod_objectInterface() {
31+
DFact dfact = SystemContext.getBean(DFact.class);
32+
assertThat(dfact).isNotNull();
33+
34+
IDFact idfact = SystemContext.getBean(IDFact.class);
35+
assertThat(idfact).isSameAs(dfact);
36+
}
2837
}

inject/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>io.avaje</groupId>
66
<artifactId>avaje-inject-parent</artifactId>
7-
<version>3.3</version>
7+
<version>3.4</version>
88
</parent>
99

1010
<artifactId>avaje-inject</artifactId>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
<groupId>io.avaje</groupId>
1111
<artifactId>avaje-inject-parent</artifactId>
12-
<version>3.3</version>
12+
<version>3.4</version>
1313
<packaging>pom</packaging>
1414
<name>avaje inject parent</name>
1515
<description>parent pom for avaje inject library</description>

0 commit comments

Comments
 (0)