Skip to content

Commit 27a49c5

Browse files
committed
Road grading
Signed-off-by: Laird Nelson <[email protected]>
1 parent 3caa568 commit 27a49c5

22 files changed

+1240
-531
lines changed

README.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# microBean™ Producer
2+
3+
[![Maven Central](https://img.shields.io/maven-central/v/org.microbean/microbean-producer.svg?label=Maven%20Central)](https://search.maven.org/artifact/org.microbean/microbean-producer)
4+
5+
The microBean™ Producer project provides classes and interfaces assisting with implementing
6+
[`Factory`](https://microbean.github.io/microbean-bean/apidocs/org.microbean.bean/org/microbean/bean/Factory.html)
7+
instances.
8+
9+
# Status
10+
11+
This project is currently experimental, in a pre-alpha state, and unsuitable for production use.
12+
13+
# Compatibility
14+
15+
**Until further notice, this project's APIs are subject to frequent backwards-incompatible signature and behavior
16+
changes, regardless of project version and without notice.**
17+
18+
# Requirements
19+
20+
microBean™ Producer requires a Java runtime of version 21 or higher.
21+
22+
# Installation
23+
24+
microBean™ Producer is available on [Maven
25+
Central](https://central.sonatype.com/artifact/org.microbean/microbean-producer). Include microBean™ Producer as a Maven
26+
dependency:
27+
28+
```xml
29+
<dependency>
30+
<groupId>org.microbean</groupId>
31+
<artifactId>microbean-producer</artifactId>
32+
<!-- Always check https://central.sonatype.com/artifact/org.microbean/microbean-producer for up-to-date available versions. -->
33+
<version>0.0.2</version>
34+
</dependency>
35+
```
36+
37+
# Documentation
38+
39+
Full documentation is available at
40+
[microbean.github.io/microbean-producer](https://microbean.github.io/microbean-producer/).

pom.xml

Lines changed: 56 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
<!-- maven-javadoc-plugin properties -->
8181
<bottom><![CDATA[Copyright &copy; ${project.inceptionYear}&ndash;{currentYear}, <a href="${project.organization.url}" target="_top">${project.organization.name}</a>. All rights reserved.]]></bottom>
8282
<doctitle>&lt;a href="${project.url}" target="_top"&gt;&lt;span style="font-family:Lobster, cursive;"&gt;µb&lt;/span&gt; ${project.artifactId}&lt;/a&gt; ${project.version}</doctitle>
83-
<links>https://microbean.github.io/microbean-bean/apidocs/,https://microbean.github.io/microbean-interceptor/apidocs/</links>
83+
<links>https://microbean.github.io/microbean-bean/apidocs/,https://microbean.github.io/microbean-construct/apidocs/,https://microbean.github.io/microbean-interceptor/apidocs/,https://microbean.github.io/microbean-proxy/apidocs/</links>
8484
<sourcetab>2</sourcetab>
8585

8686
<!-- maven-release-plugin properties -->
@@ -125,17 +125,35 @@
125125
<dependency>
126126
<groupId>org.junit</groupId>
127127
<artifactId>junit-bom</artifactId>
128-
<version>5.11.4</version>
128+
<version>5.13.0</version>
129129
<type>pom</type>
130130
<scope>import</scope>
131131
</dependency>
132132

133133
<!-- Normal dependencies. -->
134134

135+
<dependency>
136+
<groupId>org.microbean</groupId>
137+
<artifactId>microbean-assign</artifactId>
138+
<version>0.0.5</version>
139+
</dependency>
140+
141+
<dependency>
142+
<groupId>org.microbean</groupId>
143+
<artifactId>microbean-attributes</artifactId>
144+
<version>0.0.2</version>
145+
</dependency>
146+
135147
<dependency>
136148
<groupId>org.microbean</groupId>
137149
<artifactId>microbean-bean</artifactId>
138-
<version>0.0.16</version>
150+
<version>0.0.18</version>
151+
</dependency>
152+
153+
<dependency>
154+
<groupId>org.microbean</groupId>
155+
<artifactId>microbean-construct</artifactId>
156+
<version>0.0.10</version>
139157
</dependency>
140158

141159
<dependency>
@@ -144,23 +162,53 @@
144162
<version>0.5.1</version>
145163
</dependency>
146164

165+
<dependency>
166+
<groupId>org.microbean</groupId>
167+
<artifactId>microbean-proxy</artifactId>
168+
<version>0.0.2</version>
169+
</dependency>
170+
147171
</dependencies>
148172
</dependencyManagement>
149173

150174
<dependencies>
151175

176+
<dependency>
177+
<groupId>org.microbean</groupId>
178+
<artifactId>microbean-assign</artifactId>
179+
<scope>compile</scope>
180+
</dependency>
181+
182+
<dependency>
183+
<groupId>org.microbean</groupId>
184+
<artifactId>microbean-attributes</artifactId>
185+
<scope>compile</scope>
186+
</dependency>
187+
152188
<dependency>
153189
<groupId>org.microbean</groupId>
154190
<artifactId>microbean-bean</artifactId>
155191
<scope>compile</scope>
156192
</dependency>
157193

194+
<dependency>
195+
<groupId>org.microbean</groupId>
196+
<artifactId>microbean-construct</artifactId>
197+
<scope>compile</scope>
198+
</dependency>
199+
158200
<dependency>
159201
<groupId>org.microbean</groupId>
160202
<artifactId>microbean-interceptor</artifactId>
161203
<scope>compile</scope>
162204
</dependency>
163205

206+
<dependency>
207+
<groupId>org.microbean</groupId>
208+
<artifactId>microbean-proxy</artifactId>
209+
<scope>compile</scope>
210+
</dependency>
211+
164212
<!-- Test-scoped dependencies. -->
165213

166214
<dependency>
@@ -174,7 +222,7 @@
174222
<artifactId>junit-jupiter-engine</artifactId>
175223
<scope>test</scope>
176224
</dependency>
177-
225+
178226
</dependencies>
179227

180228
<build>
@@ -302,7 +350,7 @@
302350
</plugin>
303351
<plugin>
304352
<artifactId>maven-clean-plugin</artifactId>
305-
<version>3.4.1</version>
353+
<version>3.5.0</version>
306354
<configuration>
307355
<filesets>
308356
<fileset>
@@ -417,14 +465,7 @@
417465
</plugin>
418466
<plugin>
419467
<artifactId>maven-surefire-plugin</artifactId>
420-
<version>3.5.2</version>
421-
<dependencies>
422-
<dependency>
423-
<groupId>org.apache.maven.surefire</groupId>
424-
<artifactId>surefire-junit-platform</artifactId>
425-
<version>3.5.2</version>
426-
</dependency>
427-
</dependencies>
468+
<version>3.5.3</version>
428469
</plugin>
429470
<plugin>
430471
<artifactId>maven-toolchains-plugin</artifactId>
@@ -433,7 +474,7 @@
433474
<plugin>
434475
<groupId>com.github.spotbugs</groupId>
435476
<artifactId>spotbugs-maven-plugin</artifactId>
436-
<version>4.9.2.0</version>
477+
<version>4.9.3.0</version>
437478
</plugin>
438479
<plugin>
439480
<groupId>org.codehaus.mojo</groupId>
@@ -443,7 +484,7 @@
443484
<plugin>
444485
<groupId>io.smallrye</groupId>
445486
<artifactId>jandex-maven-plugin</artifactId>
446-
<version>3.2.7</version>
487+
<version>3.3.1</version>
447488
</plugin>
448489
<plugin>
449490
<groupId>org.sonatype.plugins</groupId>

src/main/java/module-info.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
exports org.microbean.producer;
2323

2424
requires transitive org.microbean.bean;
25+
requires org.microbean.construct;
2526
requires transitive org.microbean.interceptor;
27+
requires transitive org.microbean.proxy;
2628

2729
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* -*- mode: Java; c-basic-offset: 2; indent-tabs-mode: nil; coding: utf-8-unix -*-
2+
*
3+
* Copyright © 2025 microBean™.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
6+
* the License. You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
11+
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
12+
* specific language governing permissions and limitations under the License.
13+
*/
14+
package org.microbean.producer;
15+
16+
/**
17+
* A lifecycle event-oriented {@link InterceptorMethodType}.
18+
*
19+
* @author <a href="https://about.me/lairdnelson" target="_top">Laird Nelson</a>
20+
*/
21+
public abstract non-sealed class AbstractLifecycleCallbackInterceptorMethodType extends InterceptorMethodType {
22+
23+
AbstractLifecycleCallbackInterceptorMethodType(final TargetKind kind, final String name) {
24+
super(kind, name);
25+
}
26+
27+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/* -*- mode: Java; c-basic-offset: 2; indent-tabs-mode: nil; coding: utf-8-unix -*-
2+
*
3+
* Copyright © 2025 microBean™.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
6+
* the License. You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
11+
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
12+
* specific language governing permissions and limitations under the License.
13+
*/
14+
package org.microbean.producer;
15+
16+
/**
17+
* A business method-oriented {@link InterceptorMethodType}.
18+
*
19+
* @author <a href="https://about.me/lairdnelson" target="_top">Laird Nelson</a>
20+
*/
21+
public abstract non-sealed class AbstractMethodInterceptorMethodType extends InterceptorMethodType {
22+
23+
/**
24+
* Creates a new {@link AbstractMethodInterceptorMethodType}.
25+
*
26+
* @param name a globally unique name; must not be {@code null}
27+
*
28+
* @exception NullPointerException if {@code name} is {@code null}
29+
*/
30+
protected AbstractMethodInterceptorMethodType(final String name) {
31+
super(TargetKind.METHOD, name);
32+
}
33+
34+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/* -*- mode: Java; c-basic-offset: 2; indent-tabs-mode: nil; coding: utf-8-unix -*-
2+
*
3+
* Copyright © 2025 microBean™.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
6+
* the License. You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
11+
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
12+
* specific language governing permissions and limitations under the License.
13+
*/
14+
package org.microbean.producer;
15+
16+
/**
17+
* A constructor- or production-oriented {@link AbstractLifecycleCallbackInterceptorMethodType}.
18+
*
19+
* @author <a href="https://about.me/lairdnelson" target="_top">Laird Nelson</a>
20+
*/
21+
public final class AroundConstructInterceptorMethodType extends AbstractLifecycleCallbackInterceptorMethodType {
22+
23+
/**
24+
* The sole instance of this class.
25+
*/
26+
public static final AroundConstructInterceptorMethodType INSTANCE = new AroundConstructInterceptorMethodType();
27+
28+
private AroundConstructInterceptorMethodType() {
29+
super(TargetKind.CONSTRUCTOR, "AroundConstruct");
30+
}
31+
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/* -*- mode: Java; c-basic-offset: 2; indent-tabs-mode: nil; coding: utf-8-unix -*-
2+
*
3+
* Copyright © 2025 microBean™.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
6+
* the License. You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
11+
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
12+
* specific language governing permissions and limitations under the License.
13+
*/
14+
package org.microbean.producer;
15+
16+
/**
17+
* A business method-oriented {@link AbstractMethodInterceptorMethodType}.
18+
*
19+
* @author <a href="https://about.me/lairdnelson" target="_top">Laird Nelson</a>
20+
*/
21+
public final class AroundInvokeInterceptorMethodType extends AbstractMethodInterceptorMethodType {
22+
23+
/**
24+
* The sole instance of this class.
25+
*/
26+
public static final AroundInvokeInterceptorMethodType INSTANCE = new AroundInvokeInterceptorMethodType();
27+
28+
private AroundInvokeInterceptorMethodType() {
29+
super("AroundInvoke");
30+
}
31+
32+
}

0 commit comments

Comments
 (0)