Skip to content

Commit f3a9062

Browse files
committed
#27 - No injection of dependencies when using withSpy() and field injection
1 parent 2520e83 commit f3a9062

File tree

4 files changed

+17
-13
lines changed

4 files changed

+17
-13
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<dependency>
5151
<groupId>io.dinject</groupId>
5252
<artifactId>dinject-generator</artifactId>
53-
<version>1.6</version>
53+
<version>1.8</version>
5454
<scope>test</scope>
5555
</dependency>
5656

src/main/java/io/dinject/core/Builder.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,17 @@ public interface Builder {
6363
* @param name The (optional) name of the instance.
6464
* @param types Interfaces and class level annotations this bean provides or associates to.
6565
*/
66-
void register(Object bean, String name, Class<?>... types);
66+
<T> T register(T bean, String name, Class<?>... types);
6767

6868
/**
6969
* Register the bean as a Primary bean.
7070
*/
71-
void registerPrimary(Object bean, String name, Class<?>... types);
71+
<T> T registerPrimary(T bean, String name, Class<?>... types);
7272

7373
/**
7474
* Register the bean as a secondary bean.
7575
*/
76-
void registerSecondary(Object bean, String name, Class<?>... types);
76+
<T> T registerSecondary(T bean, String name, Class<?>... types);
7777

7878
/**
7979
* Add a lifecycle bean.
@@ -133,5 +133,5 @@ public interface Builder {
133133
* @param types The types this bean registers for
134134
* @return Either the bean or the enriched bean to register into the context.
135135
*/
136-
Object enrich(Object bean, Class<?>[] types);
136+
<T> T enrich(T bean, Class<?>[] types);
137137
}

src/main/java/io/dinject/core/DBuilder.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,39 +153,42 @@ public void addChild(BeanContext child) {
153153
* Return the bean to register potentially with spy enhancement.
154154
*/
155155
@Override
156-
public Object enrich(Object bean, Class<?>[] types) {
156+
public <T> T enrich(T bean, Class<?>[] types) {
157157
// only enriched by DBuilderExtn
158158
return bean;
159159
}
160160

161161
@Override
162-
public void register(Object bean, String name, Class<?>... types) {
162+
public <T> T register(T bean, String name, Class<?>... types) {
163163
String canonicalName = bean.getClass().getCanonicalName();
164164
if (parent != null) {
165165
// enrichment only exist on top level builder
166166
bean = parent.enrich(bean, types);
167167
}
168168
beanMap.register(canonicalName, bean, name, types);
169+
return bean;
169170
}
170171

171172
@Override
172-
public void registerPrimary(Object bean, String name, Class<?>... types) {
173+
public <T> T registerPrimary(T bean, String name, Class<?>... types) {
173174
String canonicalName = bean.getClass().getCanonicalName();
174175
if (parent != null) {
175176
// enrichment only exist on top level builder
176177
bean = parent.enrich(bean, types);
177178
}
178179
beanMap.registerPrimary(canonicalName, bean, name, types);
180+
return bean;
179181
}
180182

181183
@Override
182-
public void registerSecondary(Object bean, String name, Class<?>... types) {
184+
public <T> T registerSecondary(T bean, String name, Class<?>... types) {
183185
String canonicalName = bean.getClass().getCanonicalName();
184186
if (parent != null) {
185187
// enrichment only exist on top level builder
186188
bean = parent.enrich(bean, types);
187189
}
188190
beanMap.registerSecondary(canonicalName, bean, name, types);
191+
return bean;
189192
}
190193

191194
@Override

src/main/java/io/dinject/core/DBuilderExtn.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,18 @@ public boolean isAddBeanFor(Class<?> addForType, Class<?> injectTarget) {
4242
*/
4343
@SuppressWarnings("unchecked")
4444
@Override
45-
public Object enrich(Object bean, Class<?>[] types) {
46-
EnrichBean enrich = getEnrich(bean, types);
45+
public <T> T enrich(T bean, Class<?>[] types) {
46+
EnrichBean<T> enrich = getEnrich(bean, types);
4747
return enrich != null ? enrich.enrich(bean) : bean;
4848
}
4949

5050
/**
5151
* Search for EnrichBean on the bean or any of the interface types.
5252
*/
53-
private EnrichBean getEnrich(Object bean, Class<?>[] types) {
53+
@SuppressWarnings("unchecked")
54+
private <T> EnrichBean getEnrich(T bean, Class<?>[] types) {
5455

55-
EnrichBean enrich = enrichMap.get(bean.getClass());
56+
EnrichBean<T> enrich = enrichMap.get(bean.getClass());
5657
if (enrich != null) {
5758
return enrich;
5859
}

0 commit comments

Comments
 (0)