This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 29fd157c6b Partially advance TODO-60 with InvalidAnnotationException
hard-break move and EntityTags annotation drop
29fd157c6b is described below
commit 29fd157c6bb4a5450088fceab0e36b233a8f6f1d
Author: James Bognar <[email protected]>
AuthorDate: Fri May 22 13:47:30 2026 -0400
Partially advance TODO-60 with InvalidAnnotationException hard-break move
and EntityTags annotation drop
---
.../annotation/InvalidAnnotationException.java | 4 +--
.../org/apache/juneau/http/annotation/Content.java | 4 +--
.../org/apache/juneau/http/header/EntityTags.java | 2 --
.../juneau/httppart/bean/MethodInfoUtils.java | 2 +-
.../juneau/httppart/bean/ResponseBeanMeta.java | 2 +-
.../apache/juneau/BasicRuntimeException_Test.java | 2 +-
...mons.md => FINISHED-30-classmeta-to-commons.md} | 22 ++++++++++++++++
...NISHED-7-decouple-rest-common-from-marshall.md} | 29 ++++++++++++++++++++++
todo/TODO.md | 6 -----
9 files changed, 57 insertions(+), 16 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/InvalidAnnotationException.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/annotation/InvalidAnnotationException.java
similarity index 96%
rename from
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/InvalidAnnotationException.java
rename to
juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/annotation/InvalidAnnotationException.java
index d68b62c490..9f18494b39 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/InvalidAnnotationException.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/annotation/InvalidAnnotationException.java
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.juneau.annotation;
+package org.apache.juneau.commons.annotation;
import static org.apache.juneau.commons.utils.Utils.*;
import java.lang.annotation.*;
import java.util.*;
-import org.apache.juneau.*;
+import org.apache.juneau.commons.*;
import org.apache.juneau.commons.reflect.*;
/**
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/annotation/Content.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/annotation/Content.java
index d7634a35f6..47cffad123 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/annotation/Content.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/annotation/Content.java
@@ -23,8 +23,6 @@ import java.lang.annotation.*;
import org.apache.juneau.commons.annotation.Schema;
-import org.apache.juneau.json.JsonSchemaSerializer;
-
/**
* REST request body annotation.
*
@@ -148,7 +146,7 @@ public @interface Content {
*
* <p>
* This is a required attribute per the swagger definition.
- * However, if not explicitly specified, the value will be
auto-generated using {@link JsonSchemaSerializer}.
+ * However, if not explicitly specified, the value will be
auto-generated using {@link org.apache.juneau.json.JsonSchemaSerializer}.
*
* <p>
* The {@link Schema @Schema} annotation can also be used standalone on
the parameter or type.
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
index 125e9c6c88..73b50f3a2c 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
@@ -22,13 +22,11 @@ import static org.apache.juneau.commons.utils.Utils.*;
import java.util.*;
-import org.apache.juneau.annotation.*;
import org.apache.juneau.commons.collections.*;
/**
* A list of {@link EntityTag} beans.
*/
-@Marshalled(as=MarshalledAs.STRING)
public class EntityTags {
/** Represents an empty entity tags object. */
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/httppart/bean/MethodInfoUtils.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/httppart/bean/MethodInfoUtils.java
index 0cc2132103..8df848540b 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/httppart/bean/MethodInfoUtils.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/httppart/bean/MethodInfoUtils.java
@@ -19,7 +19,7 @@ package org.apache.juneau.httppart.bean;
import static org.apache.juneau.commons.utils.Utils.*;
import java.lang.annotation.*;
-import org.apache.juneau.annotation.*;
+import org.apache.juneau.commons.annotation.*;
import org.apache.juneau.commons.reflect.*;
/**
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
index 5332f399af..73aae923d1 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
@@ -16,7 +16,7 @@
*/
package org.apache.juneau.httppart.bean;
-import static org.apache.juneau.annotation.InvalidAnnotationException.*;
+import static
org.apache.juneau.commons.annotation.InvalidAnnotationException.*;
import static org.apache.juneau.commons.reflect.ReflectionUtils.*;
import static org.apache.juneau.commons.utils.ClassUtils.*;
import static org.apache.juneau.commons.utils.CollectionUtils.*;
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/BasicRuntimeException_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/BasicRuntimeException_Test.java
index efa10bd161..16678a9118 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/BasicRuntimeException_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/BasicRuntimeException_Test.java
@@ -18,7 +18,7 @@ package org.apache.juneau;
import static org.junit.jupiter.api.Assertions.*;
-import org.apache.juneau.annotation.*;
+import org.apache.juneau.commons.annotation.*;
import org.apache.juneau.objecttools.*;
import org.apache.juneau.parser.*;
import org.apache.juneau.rest.client.classic.remote.*;
diff --git a/todo/TODO-30-classmeta-to-commons.md
b/todo/FINISHED-30-classmeta-to-commons.md
similarity index 92%
rename from todo/TODO-30-classmeta-to-commons.md
rename to todo/FINISHED-30-classmeta-to-commons.md
index 8d8e33f9f5..4e78748714 100644
--- a/todo/TODO-30-classmeta-to-commons.md
+++ b/todo/FINISHED-30-classmeta-to-commons.md
@@ -1,5 +1,27 @@
# TODO-30 — Investigate moving `ClassMeta` (and related non-marshalling types)
from `juneau-marshall` into `juneau-commons`
+## Outcome (rescope, 2026-05-22)
+
+Investigation phase abandoned without execution. After consideration, the
+move was judged infeasible at acceptable cost: `ClassMeta` is one of the
+most-imported types in the codebase (hundreds of references across
+`juneau-marshall`, `juneau-rest-*`, `juneau-bean-*`, `juneau-utest`), the
+per-format `*ClassMeta` extension cache and the `MarshallingContext`
+side-channel hooks make it not standalone-portable, and the cascading
+follow-on moves (`ObjectSwap`, `BeanRegistry`, object tools) all currently
+depend transitively on `ClassMeta`. Even Phase 0 (a read-only inventory
+deliverable) was deemed not worth running given that the eventual move would
+not be executed.
+
+No carry-forward TODO is opened from TODO-30 specifically. The companion
+TODO-7 has been similarly rescoped - see `FINISHED-7-decouple-rest-common-
+from-marshall.md`. The four low-effort moves that don't depend on `ClassMeta`
+landed as TODO-60 (`TODO-60-low-effort-marshall-to-commons-moves.md`).
+
+The original analysis below is preserved verbatim for historical context.
+
+---
+
Source: promoted from `TODO.md` on 2026-05-13. Companion follow-on to
**TODO-5** (which already moved the bean-runtime types — `BeanMap`, `BeanMeta`,
`BeanPropertyMeta`, `BeanPropertyValue`, `BeanPropertyConsumer`,
`BeanProxyInvocationHandler`, `BeanMapEntry`, `BeanInterceptor` — into
`org.apache.juneau.commons.bean`).
---
diff --git a/todo/TODO-7-decouple-rest-common-from-marshall.md
b/todo/FINISHED-7-decouple-rest-common-from-marshall.md
similarity index 91%
rename from todo/TODO-7-decouple-rest-common-from-marshall.md
rename to todo/FINISHED-7-decouple-rest-common-from-marshall.md
index 33bebffb9a..7a93661823 100644
--- a/todo/TODO-7-decouple-rest-common-from-marshall.md
+++ b/todo/FINISHED-7-decouple-rest-common-from-marshall.md
@@ -1,5 +1,34 @@
# Decouple `juneau-rest-common` from `juneau-marshall`
+## Outcome (rescope, 2026-05-22)
+
+Original goal - fully break the `juneau-rest-common -> juneau-marshall` compile
+dependency - abandoned. The decisive blocker is Step 6 (`ClassMeta` /
+`MarshallingContext` / `AnnotationWorkList` references in `HttpParts` and the
+`*BeanMeta` classes), which depended on TODO-30 landing. TODO-30 was also
+abandoned (see `FINISHED-30-classmeta-to-commons.md`). Without `ClassMeta` in
+commons, `rest-common` cannot drop the marshall dependency.
+
+The four low-effort moves that don't depend on `ClassMeta` are useful on their
+own merits and have been carried forward into TODO-60 (`TODO-60-low-effort-
+marshall-to-commons-moves.md`):
+
+- Step 1: `Content.java` javadoc (`{@link JsonSchemaSerializer}` go
fully-qualified).
+- Step 2: `InvalidAnnotationException` -> commons.
+- Step 3: `SchemaAnnotation` / `ExternalDocsAnnotation` / `ItemsAnnotation`
+ / `SubItemsAnnotation` -> commons.
+- Step 4: drop or relocate `@Marshalled(as=MarshalledAs.STRING)` on
`EntityTags`.
+
+Steps 5-7 are intentionally dropped:
+
+- Step 5 (`HttpPartSchema` + `HttpPartSerializer/Parser` interfaces -> commons)
+ paid off mostly when paired with the dep-break goal.
+- Steps 6-7 (`ClassMeta` resolution + pom flip) are ClassMeta-blocked.
+
+The original analysis below is preserved verbatim for historical context.
+
+---
+
Target module chain:
```
diff --git a/todo/TODO.md b/todo/TODO.md
index 2c3b4cad94..4177ca3170 100644
--- a/todo/TODO.md
+++ b/todo/TODO.md
@@ -1,11 +1,5 @@
# TODO
-
-- [TODO-7] Decouple `juneau-rest-common` from `juneau-marshall` by breaking
the compile dependency so REST annotations and beans can be used without
pulling in the full serialization stack. See
`todo/TODO-7-decouple-rest-common-from-marshall.md`.
-
- [TODO-17] Audit 9.2.x changes (juneau-docs release notes 9.2.0 / 9.5.0 + git
history since 9.1.0) for breaking changes and populate the v9.5 Migration Guide
at juneau-docs/pages/topics/23.01.V9.5-migration-guide.md with Old→New rows for
each. Focus on removed APIs, renamed annotations/classes/methods, changed
default behaviors, and any annotation-attribute semantics changes.
- [TODO-18] Investigate possible useful features to add to juneau-rest-server.
-
-- [TODO-30] Investigate moving `ClassMeta` and related non-marshalling type
metadata from `juneau-marshall` into `juneau-commons` (analysis/feasibility
pass). See `todo/TODO-30-classmeta-to-commons.md`.
-