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`.
-

Reply via email to