Skip to content

Commit ae71774

Browse files
committed
Squashable commit; road grading
Signed-off-by: Laird Nelson <[email protected]>
1 parent 2f6937f commit ae71774

File tree

5 files changed

+92
-81
lines changed

5 files changed

+92
-81
lines changed

pom.xml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -219,28 +219,31 @@
219219
<artifactId>maven-compiler-plugin</artifactId>
220220
<configuration>
221221
<compilerArgs>
222-
<arg>--enable-preview</arg>
223-
<arg>-Xlint:-preview</arg>
224222
<arg>-Xlint:all</arg>
225223
<arg>-Xpkginfo:always</arg>
226224
</compilerArgs>
227225
</configuration>
226+
<dependencies>
227+
<dependency>
228+
<groupId>org.ow2.asm</groupId>
229+
<artifactId>asm</artifactId>
230+
<version>9.5</version> <!-- until maven-compiler-plugin goes to 3.12.0 and does this for us -->
231+
</dependency>
232+
</dependencies>
228233
</plugin>
229234
<plugin>
230235
<artifactId>maven-javadoc-plugin</artifactId>
231236
<configuration>
232237
<additionalOptions>
233238
<additionalOption>--add-stylesheet</additionalOption>
234239
<additionalOption>${project.basedir}/src/main/javadoc/css/fonts.css</additionalOption>
235-
<additionalOption>--enable-preview</additionalOption>
236240
</additionalOptions>
237241
<docfilessubdirs>true</docfilessubdirs>
238242
</configuration>
239243
</plugin>
240244
<plugin>
241245
<artifactId>maven-surefire-plugin</artifactId>
242246
<configuration>
243-
<argLine>--enable-preview</argLine>
244247
<!-- <argLine>-add-opens=org.microbean.bean/org.microbean.bean=ALL-UNNAMED</argLine> -->
245248
<!-- See https://junit.org/junit5/docs/snapshot/user-guide/#running-tests-build-maven-config-params -->
246249
<!-- See https://github.com/apache/maven-surefire/blob/eb48f1b59ca5ccf6954ef33ecab03dbaf93214cd/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java#L242-L262 -->
@@ -268,9 +271,9 @@
268271
<jdkToolchainVendor>openjdk</jdkToolchainVendor>
269272

270273
<!-- maven-compiler-plugin properties -->
271-
<maven.compiler.release>20</maven.compiler.release>
272-
<maven.compiler.source>20</maven.compiler.source>
273-
<maven.compiler.target>20</maven.compiler.target>
274+
<maven.compiler.release>21</maven.compiler.release>
275+
<maven.compiler.source>21</maven.compiler.source>
276+
<maven.compiler.target>21</maven.compiler.target>
274277

275278
<!-- maven-javadoc-plugin properties -->
276279
<detectJavaApiLink>false</detectJavaApiLink>

src/main/java/org/microbean/reference/DefaultClientProxier.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,23 +116,20 @@ public static final Bean<DefaultClientProxier> bean(final TypeAndElementSource t
116116
SINGLETON_ID),
117117
(c, r) -> {
118118
return
119-
new DefaultClientProxier(r.<Predicate>reference(new BeanSelectionCriteria(tes,
120-
assignability,
119+
new DefaultClientProxier(r.<Predicate>reference(new BeanSelectionCriteria(assignability,
121120
tes.declaredType(Predicate.class),
122121
defaultQualifiers(),
123122
true),
124123
null,
125124
cast(c)),
126125
precomputedProxies, // defensive copying guaranteed to happen downstream
127-
r.<ClientProxyClassSupplier>reference(new BeanSelectionCriteria(tes,
128-
assignability,
126+
r.<ClientProxyClassSupplier>reference(new BeanSelectionCriteria(assignability,
129127
tes.declaredType(ClientProxyClassSupplier.class),
130128
defaultQualifiers(),
131129
true),
132130
null,
133131
cast(c)),
134-
r.<ClientProxyInstantiator>reference(new BeanSelectionCriteria(tes,
135-
assignability,
132+
r.<ClientProxyInstantiator>reference(new BeanSelectionCriteria(assignability,
136133
tes.declaredType(ClientProxyInstantiator.class),
137134
defaultQualifiers(),
138135
true),
@@ -274,13 +271,13 @@ public static final Bean<GeneratingClientProxyClassSupplier> bean(final TypeAndE
274271
SINGLETON_ID),
275272
(c, r) -> {
276273
return
277-
new GeneratingClientProxyClassSupplier(r.<ClassNamer>reference(new BeanSelectionCriteria(tes, assignability, tes.declaredType(ClassNamer.class), defaultQualifiers(), true),
274+
new GeneratingClientProxyClassSupplier(r.<ClassNamer>reference(new BeanSelectionCriteria(assignability, tes.declaredType(ClassNamer.class), defaultQualifiers(), true),
278275
null,
279276
cast(c)),
280-
r.<ClassLoaderSelector>reference(new BeanSelectionCriteria(tes, assignability, tes.declaredType(ClassLoaderSelector.class), defaultQualifiers(), true),
277+
r.<ClassLoaderSelector>reference(new BeanSelectionCriteria(assignability, tes.declaredType(ClassLoaderSelector.class), defaultQualifiers(), true),
281278
null,
282279
cast(c)),
283-
r.<ClientProxyClassGenerator>reference(new BeanSelectionCriteria(tes, assignability, tes.declaredType(ClientProxyClassGenerator.class), defaultQualifiers(), true),
280+
r.<ClientProxyClassGenerator>reference(new BeanSelectionCriteria(assignability, tes.declaredType(ClientProxyClassGenerator.class), defaultQualifiers(), true),
284281
null,
285282
cast(c)));
286283
});
@@ -334,7 +331,7 @@ public final boolean needsClientProxy(final BeanSelectionCriteria beanSelectionC
334331
final Creation<?> c,
335332
final ReferenceSelector r) {
336333
final Scope governingScope =
337-
r.reference(new BeanSelectionCriteria(this.tes, this.assignability, this.tes.declaredType(Scope.class), List.of(id.governingScopeId()), true),
334+
r.reference(new BeanSelectionCriteria(this.assignability, this.tes.declaredType(Scope.class), List.of(id.governingScopeId()), true),
338335
null, // bean
339336
cast(c));
340337
return governingScope != null && governingScope.normal();

src/main/java/org/microbean/reference/DefaultInstanceManager.java

Lines changed: 49 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -62,43 +62,52 @@
6262
// Public mostly only for testing scenarios.
6363
public final class DefaultInstanceManager implements InstanceManager {
6464

65-
private final Assignability assignability;
6665

67-
private final TypeAndElementSource tes;
66+
/*
67+
* Instance fields.
68+
*/
69+
70+
71+
private final Assignability assignability;
6872

6973
private final TypeMirror scopeletType;
7074

7175
private final BeanSelectionCriteria anyScopeletSelector;
7276

7377
private final BeanSet beanSet;
7478

75-
public DefaultInstanceManager(final TypeAndElementSource tes,
76-
final Assignability assignability,
79+
80+
/*
81+
* Constructors.
82+
*/
83+
84+
85+
public DefaultInstanceManager(final Assignability assignability,
7786
final Collection<? extends Bean<?>> beans) {
7887
super();
79-
this.tes = Objects.requireNonNullElse(tes, typeAndElementSource());
80-
this.assignability = Objects.requireNonNullElse(assignability, new Assignability(this.tes));
81-
this.scopeletType = this.tes.declaredType(null, this.tes.typeElement(Scopelet.class), this.tes.wildcardType(null, null));
82-
this.anyScopeletSelector = new BeanSelectionCriteria(this.tes, this.assignability, this.scopeletType, List.of(anyQualifier()), true);
88+
this.assignability = assignability == null ? new Assignability() : assignability;
89+
final TypeAndElementSource tes = this.assignability.typeAndElementSource();
90+
this.scopeletType = tes.declaredType(null, tes.typeElement(Scopelet.class), tes.wildcardType(null, null));
91+
this.anyScopeletSelector = new BeanSelectionCriteria(this.assignability, this.scopeletType, List.of(anyQualifier()), true);
8392
final Collection<Bean<?>> newBeans = new ArrayList<>(beans.size() + 5);
8493
newBeans.addAll(beans);
8594
newBeans.add(new SingletonScopelet().bean());
8695
newBeans.add(new NoneScopelet().bean());
87-
newBeans.add(new Bean<>(new Id(List.of(this.tes.declaredType(DefaultAutoCloseableRegistry.class),
88-
this.tes.declaredType(AutoCloseableRegistry.class)),
96+
newBeans.add(new Bean<>(new Id(List.of(tes.declaredType(DefaultAutoCloseableRegistry.class),
97+
tes.declaredType(AutoCloseableRegistry.class)),
8998
anyAndDefaultQualifiers(),
9099
NONE_ID),
91100
(c, r) -> new DefaultAutoCloseableRegistry()));
92-
TypeElement e = this.tes.typeElement(DefaultCreation.class);
101+
TypeElement e = tes.typeElement(DefaultCreation.class);
93102
TypeVariable tv = (TypeVariable)e.getTypeParameters().get(0).asType();
94-
final TypeMirror t0 = this.tes.declaredType(null, e, tv);
95-
final TypeMirror t1 = this.tes.declaredType(null, e);
103+
final TypeMirror t0 = tes.declaredType(null, e, tv);
104+
final TypeMirror t1 = tes.declaredType(null, e);
96105
e = tes.typeElement(Creation.class);
97106
tv = (TypeVariable)e.getTypeParameters().get(0).asType();
98-
final TypeMirror t2 = this.tes.declaredType(null, e, tv);
99-
final TypeMirror t3 = this.tes.declaredType(null, e);
107+
final TypeMirror t2 = tes.declaredType(null, e, tv);
108+
final TypeMirror t3 = tes.declaredType(null, e);
100109
final BeanSelectionCriteria bsc =
101-
new BeanSelectionCriteria(this.tes, this.assignability, this.tes.declaredType(AutoCloseableRegistry.class), defaultQualifiers(), true);
110+
new BeanSelectionCriteria(this.assignability, tes.declaredType(AutoCloseableRegistry.class), defaultQualifiers(), true);
102111
newBeans.add(new Bean<>(new Id(List.of(t0, t1, t2, t3),
103112
anyAndDefaultQualifiers(),
104113
NONE_ID),
@@ -107,13 +116,21 @@ public DefaultInstanceManager(final TypeAndElementSource tes,
107116
anyAndDefaultQualifiers(),
108117
SINGLETON_ID),
109118
new Singleton<>(this)));
110-
this.beanSet = new DefaultBeanSet(assignability, tes, newBeans);
119+
this.beanSet = new DefaultBeanSet(assignability, newBeans);
111120
}
112121

122+
123+
/*
124+
* Instance methods.
125+
*/
126+
127+
128+
@Override // InstanceManager
113129
public final BeanSet beanSet() {
114130
return this.beanSet;
115131
}
116132

133+
@Override // InstanceManager;
117134
@SuppressWarnings("unchecked")
118135
public final <I> I instance(final BeanSelectionCriteria beanSelectionCriteria,
119136
final Bean<I> bean, // nullable
@@ -140,6 +157,20 @@ public final <I> I instance(final BeanSelectionCriteria beanSelectionCriteria,
140157
referenceSelector);
141158
}
142159

160+
public final boolean remove(final Id id) {
161+
return
162+
id != null &&
163+
this.<Scopelet<?>>instance(new BeanSelectionCriteria(this.assignability, scopeletType, List.of(id.governingScopeId()), true),
164+
null, // Factory
165+
null, // Creation
166+
null) // ReferenceSelector
167+
.remove(id);
168+
}
169+
170+
/*
171+
* Private methods.
172+
*/
173+
143174
private final <I> I instance(final Bean<I> bean,
144175
final Function<? super Scopelet<?>, ? extends I> f,
145176
final Creation<I> creation,
@@ -148,7 +179,7 @@ private final <I> I instance(final Bean<I> bean,
148179
final I singleton = factory.singleton();
149180
if (singleton == null) {
150181
final BeanSelectionCriteria scopeletBeanSelectionCriteria =
151-
new BeanSelectionCriteria(this.tes, this.assignability, scopeletType, List.of(bean.id().governingScopeId()), true);
182+
new BeanSelectionCriteria(this.assignability, scopeletType, List.of(bean.id().governingScopeId()), true);
152183
if (bean.equals(this.beanSet.bean(scopeletBeanSelectionCriteria, DefaultInstanceManager::handleInactiveScopelets))) {
153184
return factory.create(creation, referenceSelector);
154185
}
@@ -157,16 +188,6 @@ private final <I> I instance(final Bean<I> bean,
157188
return singleton;
158189
}
159190

160-
public final boolean remove(final Id id) {
161-
return
162-
id != null &&
163-
this.<Scopelet<?>>instance(new BeanSelectionCriteria(this.tes, this.assignability, scopeletType, List.of(id.governingScopeId()), true),
164-
null, // Factory
165-
null, // Creation
166-
null) // ReferenceSelector
167-
.remove(id);
168-
}
169-
170191

171192
/*
172193
* Static methods.

0 commit comments

Comments
 (0)