Skip to content

Commit baea3f7

Browse files
committed
Simplify internals for DBeanMap
1 parent 25230b0 commit baea3f7

File tree

7 files changed

+44
-64
lines changed

7 files changed

+44
-64
lines changed

inject-test/src/test/java/io/avaje/inject/spi/DContextEntryTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public void get_when_onePrimary() {
1616
entry.add(DContextEntryBean.of("N", null, BeanEntry.NORMAL));
1717
entry.add(DContextEntryBean.of("S", null, BeanEntry.SECONDARY));
1818

19-
assertEquals(entry.candidate(null).getBean(), "P");
19+
assertEquals(entry.get(null), "P");
2020
}
2121

2222
@Test
@@ -27,7 +27,7 @@ public void get_when_twoPrimary() {
2727
entry.add(DContextEntryBean.of("N", null, BeanEntry.NORMAL));
2828
entry.add(DContextEntryBean.of("S", null, BeanEntry.PRIMARY));
2929

30-
entry.candidate(null);
30+
entry.get(null);
3131
});
3232
}
3333

@@ -38,7 +38,7 @@ public void get_when_oneNormal() {
3838
entry.add(DContextEntryBean.of("N", null, BeanEntry.NORMAL));
3939
entry.add(DContextEntryBean.of("S", null, BeanEntry.SECONDARY));
4040

41-
assertEquals(entry.candidate(null).getBean(), "N");
41+
assertEquals(entry.get(null), "N");
4242
}
4343

4444

@@ -50,7 +50,7 @@ public void get_when_oneNormal2() {
5050
entry.add(DContextEntryBean.of("S1", null, BeanEntry.SECONDARY));
5151
entry.add(DContextEntryBean.of("S2", null, BeanEntry.SECONDARY));
5252

53-
assertEquals(entry.candidate(null).getBean(), "N");
53+
assertEquals(entry.get(null), "N");
5454
}
5555

5656
@Test
@@ -60,7 +60,7 @@ public void get_when_multiSecondaryOnly() {
6060
entry.add(DContextEntryBean.of("S1", null, BeanEntry.SECONDARY));
6161
entry.add(DContextEntryBean.of("S2", null, BeanEntry.SECONDARY));
6262

63-
entry.candidate(null);
63+
entry.get(null);
6464
});
6565
}
6666

@@ -72,7 +72,7 @@ public void get_when_multiSecondary_butNamed() {
7272
entry.add(DContextEntryBean.of("S1", "a", BeanEntry.SECONDARY));
7373
entry.add(DContextEntryBean.of("S2", "b", BeanEntry.SECONDARY));
7474

75-
assertEquals(entry.candidate("b").getBean(), "S2");
75+
assertEquals(entry.get("b"), "S2");
7676
}
7777

7878
@Test
@@ -82,7 +82,7 @@ public void get_when_multiSecondary_butNamed2() {
8282
entry.add(DContextEntryBean.of("S1", null, BeanEntry.SECONDARY));
8383
entry.add(DContextEntryBean.of("S2", "b", BeanEntry.SECONDARY));
8484

85-
assertEquals(entry.candidate("b").getBean(), "S2");
85+
assertEquals(entry.get("b"), "S2");
8686
}
8787

8888
@Test
@@ -92,6 +92,6 @@ public void get_when_secondary_butNamed() {
9292
entry.add(DContextEntryBean.of("S1", null, BeanEntry.PRIMARY));
9393
entry.add(DContextEntryBean.of("S2", "b", BeanEntry.SECONDARY));
9494

95-
assertEquals(entry.candidate("b").getBean(), "S2");
95+
assertEquals(entry.get("b"), "S2");
9696
}
9797
}

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,16 @@ void register(int flag, Object bean) {
4949
}
5050
}
5151

52-
<T> BeanEntry<T> candidate(Class<T> type, String name) {
52+
@SuppressWarnings("unchecked")
53+
<T> T get(Class<T> type, String name) {
5354
DContextEntry entry = beans.get(type.getCanonicalName());
54-
if (entry != null) {
55-
if (name != null) {
56-
name = name.toLowerCase();
57-
}
58-
return entry.candidate(name);
55+
if (entry == null) {
56+
return null;
57+
}
58+
if (name != null) {
59+
name = name.toLowerCase();
5960
}
60-
return null;
61+
return (T) entry.get(name);
6162
}
6263

6364
/**

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,13 @@ public <T> T get(Class<T> beanClass) {
4848

4949
@Override
5050
public <T> T get(Class<T> beanClass, String name) {
51-
BeanEntry<T> candidate = beans.candidate(beanClass, name);
52-
return (candidate == null) ? null : candidate.getBean();
51+
return beans.get(beanClass, name);
5352
}
5453

54+
@SuppressWarnings("unchecked")
5555
@Override
5656
public <T> List<T> list(Class<T> interfaceType) {
57-
return (List<T>)beans.all(interfaceType);
57+
return (List<T>) beans.all(interfaceType);
5858
}
5959

6060
@Override

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ public <T> List<T> getList(Class<T> interfaceType) {
8686
}
8787

8888
private <T> T getMaybe(Class<T> beanClass, String name) {
89-
BeanEntry<T> entry = beanMap.candidate(beanClass, name);
90-
return (entry == null) ? null : entry.getBean();
89+
return beanMap.get(beanClass, name);
9190
}
9291

9392
/**

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

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

3-
import io.avaje.inject.BeanEntry;
4-
53
import java.util.ArrayList;
64
import java.util.List;
75

@@ -12,21 +10,17 @@
1210
*/
1311
class DContextEntry {
1412

15-
private final List<DContextEntryBean> entries = new ArrayList<>();
13+
private final List<DContextEntryBean> entries = new ArrayList<>(5);
1614

17-
@SuppressWarnings("unchecked")
18-
<T> BeanEntry<T> candidate(String name) {
19-
if (entries.isEmpty()) {
20-
return null;
21-
}
15+
void add(DContextEntryBean entryBean) {
16+
entries.add(entryBean);
17+
}
18+
19+
Object get(String name) {
2220
if (entries.size() == 1) {
23-
DContextEntryBean entry = entries.get(0);
24-
return entry.candidate(name);
21+
return entries.get(0).candidate(name);
2522
}
26-
27-
EntryMatcher matcher = new EntryMatcher(name);
28-
matcher.match(entries);
29-
return matcher.candidate();
23+
return new EntryMatcher(name).match(entries);
3024
}
3125

3226
/**
@@ -40,10 +34,6 @@ List<Object> all() {
4034
return list;
4135
}
4236

43-
void add(DContextEntryBean entryBean) {
44-
entries.add(entryBean);
45-
}
46-
4737
/**
4838
* Return true if a supplied bean is one of the entries.
4939
*/
@@ -67,12 +57,13 @@ static class EntryMatcher {
6757
this.name = name;
6858
}
6959

70-
void match(List<DContextEntryBean> entries) {
60+
Object match(List<DContextEntryBean> entries) {
7161
for (DContextEntryBean entry : entries) {
7262
if (entry.isNameMatch(name)) {
7363
checkMatch(entry);
7464
}
7565
}
66+
return candidate();
7667
}
7768

7869
private void checkMatch(DContextEntryBean entry) {
@@ -114,13 +105,12 @@ private void checkMatch(DContextEntryBean entry) {
114105
throw new IllegalStateException("Expecting only 1 bean match but have multiple matching beans " + match.getBean() + " and " + entry.getBean());
115106
}
116107

117-
@SuppressWarnings("rawtypes")
118-
BeanEntry candidate() {
108+
private Object candidate() {
119109
if (match == null) {
120110
return null;
121111
}
122112
checkSecondary();
123-
return match.getBeanEntry();
113+
return match.getBean();
124114
}
125115

126116
private void checkSecondary() {

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

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,8 @@ boolean isNameEqual(String qualifierName) {
4949
return Objects.equals(qualifierName, name);
5050
}
5151

52-
Object obtainInstance() {
53-
// its a plain bean, just return it
54-
return source;
55-
}
56-
5752
Object getBean() {
58-
return obtainInstance();
53+
return source;
5954
}
6055

6156
boolean isPrimary() {
@@ -71,14 +66,9 @@ boolean isSupplied(String qualifierName) {
7166
}
7267

7368
@SuppressWarnings({"unchecked", "rawtypes"})
74-
BeanEntry getBeanEntry() {
75-
return new BeanEntry(flag, getBean(), name);
76-
}
77-
78-
@SuppressWarnings({"unchecked", "rawtypes"})
79-
BeanEntry candidate(String qualifierName) {
69+
Object candidate(String qualifierName) {
8070
if (qualifierName == null || Objects.equals(name, qualifierName)) {
81-
return new BeanEntry(flag, obtainInstance(), qualifierName);
71+
return getBean();
8272
} else {
8373
return null;
8474
}
@@ -96,7 +86,7 @@ private Prov(Object provider, String name, int flag) {
9686
}
9787

9888
@Override
99-
Object obtainInstance() {
89+
Object getBean() {
10090
// its a provider, get it once
10191
if (actualBean == null) {
10292
actualBean = ((Provider<?>) source).get();

inject/src/test/java/io/avaje/inject/spi/DContextEntryTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public void get_when_onePrimary() {
1616
entry.add(DContextEntryBean.of("N", null, BeanEntry.NORMAL));
1717
entry.add(DContextEntryBean.of("S", null, BeanEntry.SECONDARY));
1818

19-
assertEquals(entry.candidate(null).getBean(), "P");
19+
assertEquals(entry.get(null), "P");
2020
}
2121

2222
@Test
@@ -27,7 +27,7 @@ public void get_when_twoPrimary() {
2727
entry.add(DContextEntryBean.of("N", null, BeanEntry.NORMAL));
2828
entry.add(DContextEntryBean.of("S", null, BeanEntry.PRIMARY));
2929

30-
entry.candidate(null);
30+
entry.get(null);
3131
});
3232
}
3333

@@ -38,7 +38,7 @@ public void get_when_oneNormal() {
3838
entry.add(DContextEntryBean.of("N", null, BeanEntry.NORMAL));
3939
entry.add(DContextEntryBean.of("S", null, BeanEntry.SECONDARY));
4040

41-
assertEquals(entry.candidate(null).getBean(), "N");
41+
assertEquals(entry.get(null), "N");
4242
}
4343

4444

@@ -50,7 +50,7 @@ public void get_when_oneNormal2() {
5050
entry.add(DContextEntryBean.of("S1", null, BeanEntry.SECONDARY));
5151
entry.add(DContextEntryBean.of("S2", null, BeanEntry.SECONDARY));
5252

53-
assertEquals(entry.candidate(null).getBean(), "N");
53+
assertEquals(entry.get(null), "N");
5454
}
5555

5656
@Test
@@ -61,7 +61,7 @@ public void get_when_multiSecondaryOnly() {
6161
entry.add(DContextEntryBean.of("S1", null, BeanEntry.SECONDARY));
6262
entry.add(DContextEntryBean.of("S2", null, BeanEntry.SECONDARY));
6363

64-
entry.candidate(null);
64+
entry.get(null);
6565
});
6666
}
6767

@@ -73,7 +73,7 @@ public void get_when_multiSecondary_butNamed() {
7373
entry.add(DContextEntryBean.of("S1", "a", BeanEntry.SECONDARY));
7474
entry.add(DContextEntryBean.of("S2", "b", BeanEntry.SECONDARY));
7575

76-
assertEquals(entry.candidate("b").getBean(), "S2");
76+
assertEquals(entry.get("b"), "S2");
7777
}
7878

7979
@Test
@@ -83,7 +83,7 @@ public void get_when_multiSecondary_butNamed2() {
8383
entry.add(DContextEntryBean.of("S1", null, BeanEntry.SECONDARY));
8484
entry.add(DContextEntryBean.of("S2", "b", BeanEntry.SECONDARY));
8585

86-
assertEquals(entry.candidate("b").getBean(), "S2");
86+
assertEquals(entry.get("b"), "S2");
8787
}
8888

8989
@Test
@@ -93,6 +93,6 @@ public void get_when_secondary_butNamed() {
9393
entry.add(DContextEntryBean.of("S1", null, BeanEntry.PRIMARY));
9494
entry.add(DContextEntryBean.of("S2", "b", BeanEntry.SECONDARY));
9595

96-
assertEquals(entry.candidate("b").getBean(), "S2");
96+
assertEquals(entry.get("b"), "S2");
9797
}
9898
}

0 commit comments

Comments
 (0)