Skip to content

Commit 30f5615

Browse files
committed
#97 - Followup Refactor simplifying register methods
This means we only declare the qualifier and types once in generated code which makes more sense
1 parent 12e9928 commit 30f5615

File tree

5 files changed

+52
-49
lines changed

5 files changed

+52
-49
lines changed

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

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -295,14 +295,7 @@ void buildRegister(Append writer) {
295295
writer.append("%s $bean = ", shortName);
296296
}
297297
String flags = primary ? "Primary" : secondary ? "Secondary" : "";
298-
writer.append("builder.register%s(bean, ", flags);
299-
if (name == null) {
300-
writer.append("null, ");
301-
} else {
302-
writer.append("\"%s\", ", name);
303-
}
304-
// add interfaces and annotations
305-
writer.append(typeReader.getTypesRegister()).append(");").eol();
298+
writer.append("builder.register%s(bean);", flags).eol();
306299
}
307300

308301
void buildAddLifecycle(Append writer) {

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

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -125,17 +125,7 @@ void builderBuildAddBean(Append writer) {
125125
if (beanLifeCycle || hasLifecycleMethods()) {
126126
writer.append("%s $bean = ", shortName);
127127
}
128-
writer.append("builder.register(bean, ");
129-
if (name == null) {
130-
writer.append("null, ");
131-
} else {
132-
writer.append("\"%s\", ", name);
133-
}
134-
if (typeReader != null) {
135-
writer.append(typeReader.getTypesRegister());
136-
}
137-
writer.append(");").eol();
138-
128+
writer.append("builder.register(bean);").eol();
139129
if (beanLifeCycle) {
140130
writer.append(" builder.addLifecycle($bean);").eol();
141131
} else if (hasLifecycleMethods()) {

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

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,25 +83,20 @@ static Builder newBuilder(String name, String[] provides, String[] dependsOn) {
8383

8484
/**
8585
* Register the bean instance into the context.
86-
* <p>
87-
* Beans are added in an appropriate order to satisfy dependencies.
88-
* </p>
8986
*
90-
* @param bean The bean instance that has been created.
91-
* @param name The (optional) name of the instance.
92-
* @param types Interfaces and class level annotations this bean provides or associates to.
87+
* @param bean The bean instance that has been created.
9388
*/
94-
<T> T register(T bean, String name, Class<?>... types);
89+
<T> T register(T bean);
9590

9691
/**
9792
* Register the bean as a Primary bean.
9893
*/
99-
<T> T registerPrimary(T bean, String name, Class<?>... types);
94+
<T> T registerPrimary(T bean);
10095

10196
/**
10297
* Register the bean as a secondary bean.
10398
*/
104-
<T> T registerSecondary(T bean, String name, Class<?>... types);
99+
<T> T registerSecondary(T bean);
105100

106101
/**
107102
* Add a lifecycle bean.

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

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
import io.avaje.inject.BeanEntry;
44

5-
import java.util.LinkedHashMap;
6-
import java.util.List;
7-
import java.util.Map;
5+
import java.util.*;
86

97
import static io.avaje.inject.BeanEntry.*;
108

@@ -16,6 +14,8 @@ class DBeanMap {
1614

1715
private final Map<String, DContextEntry> beans = new LinkedHashMap<>();
1816

17+
private NextBean nextBean;
18+
1919
/**
2020
* Create for context builder.
2121
*/
@@ -42,21 +42,21 @@ private void addSuppliedBean(SuppliedBean supplied) {
4242
}
4343
}
4444

45-
void registerPrimary(Object bean, String name, Class<?>... types) {
46-
registerWith(PRIMARY, bean, name, types);
45+
void registerPrimary(Object bean) {
46+
registerWith(PRIMARY, bean);
4747
}
4848

49-
void registerSecondary(Object bean, String name, Class<?>... types) {
50-
registerWith(SECONDARY, bean, name, types);
49+
void registerSecondary(Object bean) {
50+
registerWith(SECONDARY, bean);
5151
}
5252

53-
void register(Object bean, String name, Class<?>... types) {
54-
registerWith(NORMAL, bean, name, types);
53+
void register(Object bean) {
54+
registerWith(NORMAL, bean);
5555
}
5656

57-
void registerWith(int flag, Object bean, String name, Class<?>... types) {
58-
DContextEntryBean entryBean = DContextEntryBean.of(bean, name, flag);
59-
for (Class<?> type : types) {
57+
void registerWith(int flag, Object bean) {
58+
DContextEntryBean entryBean = DContextEntryBean.of(bean, nextBean.name, flag);
59+
for (Class<?> type : nextBean.types) {
6060
beans.computeIfAbsent(type.getCanonicalName(), s -> new DContextEntry()).add(entryBean);
6161
}
6262
}
@@ -101,4 +101,28 @@ private boolean isSuppliedType(String qualifierName, Class<?> type) {
101101
DContextEntry entry = beans.get(type.getCanonicalName());
102102
return entry != null && entry.isSupplied(qualifierName);
103103
}
104+
105+
/**
106+
* Store the qualifier name and type for the next bean to register.
107+
*/
108+
void nextBean(String name, Class<?>[] types) {
109+
nextBean = new NextBean(name, types);
110+
}
111+
112+
/**
113+
* Return the types of the bean being processed/registered.
114+
*/
115+
Class<?>[] types() {
116+
return nextBean.types;
117+
}
118+
119+
private static class NextBean {
120+
final String name;
121+
final Class<?>[] types;
122+
123+
NextBean(String name, Class<?>[] types) {
124+
this.name = name;
125+
this.types = types;
126+
}
127+
}
104128
}

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

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ public boolean isAddBeanFor(Class<?>... types) {
108108

109109
@Override
110110
public boolean isAddBeanFor(String name, Class<?>... types) {
111+
beanMap.nextBean(name, types);
111112
if (parent == null) {
112113
return true;
113114
}
@@ -173,32 +174,32 @@ public <T> T enrich(T bean, Class<?>[] types) {
173174
}
174175

175176
@Override
176-
public <T> T register(T bean, String name, Class<?>... types) {
177+
public <T> T register(T bean) {
177178
if (parent != null) {
178179
// enrichment only exist on top level builder
179-
bean = parent.enrich(bean, types);
180+
bean = parent.enrich(bean, beanMap.types());
180181
}
181-
beanMap.register(bean, name, types);
182+
beanMap.register(bean);
182183
return bean;
183184
}
184185

185186
@Override
186-
public <T> T registerPrimary(T bean, String name, Class<?>... types) {
187+
public <T> T registerPrimary(T bean) {
187188
if (parent != null) {
188189
// enrichment only exist on top level builder
189-
bean = parent.enrich(bean, types);
190+
bean = parent.enrich(bean, beanMap.types());
190191
}
191-
beanMap.registerPrimary(bean, name, types);
192+
beanMap.registerPrimary(bean);
192193
return bean;
193194
}
194195

195196
@Override
196-
public <T> T registerSecondary(T bean, String name, Class<?>... types) {
197+
public <T> T registerSecondary(T bean) {
197198
if (parent != null) {
198199
// enrichment only exist on top level builder
199-
bean = parent.enrich(bean, types);
200+
bean = parent.enrich(bean, beanMap.types());
200201
}
201-
beanMap.registerSecondary(bean, name, types);
202+
beanMap.registerSecondary(bean);
202203
return bean;
203204
}
204205

0 commit comments

Comments
 (0)