Skip to content

Commit c9dda9b

Browse files
dmealingclaude
andcommitted
docs: changelog entries for symlink-following and the Java mojo's behavior change
Documents the symlink-following fix (Java/Python) and, per the un-flagged gap the review caught, the Java/Maven behavior change: a <loader> naming neither <sourceDir> nor <sources>, with nothing else to resolve, now fails the build (ERR_COLLECTION_NOT_FOUND) instead of silently loading an empty model and passing — deliberate and tested, but previously undisclosed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 3448eb1 commit c9dda9b

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,23 @@ guide: [`docs/features/metadata-sources.md`](docs/features/metadata-sources.md).
4747
but which error is each port's own — verified empirically: TypeScript raises
4848
a raw `ZodError` with no code at all, Python raises
4949
`ERR_COLLECTION_NOT_FOUND`, C# and Java both raise `ERR_BAD_ATTR_VALUE`.
50+
- **Directory expansion follows symlinked directories in all four ports**
51+
including when a declared `sources` path is itself a symlink, or a symlink
52+
sits partway through a walked tree. TypeScript and C# already did; Java and
53+
Python now match (a symlinked `sources` path previously resolved to zero
54+
files in Java, silently, exit 0). A symlink cycle is a loud error rather
55+
than a hang. Gated by two new `symlinks`-bearing corpus cases.
56+
- **Behavior change (Java/Maven only): a `<loader>` naming neither
57+
`<sourceDir>` nor `<sources>`, with no `.metaobjects/config.json` `sources`
58+
and no default `metaobjects/` directory, now FAILS the build**
59+
(`ERR_COLLECTION_NOT_FOUND`) instead of silently producing an empty model
60+
and passing. This is the one behavior change here that can break an
61+
existing `mvn metaobjects:generate`/`:verify` — most likely to bite a
62+
multi-module reactor where a parent pom configures `<loader>` and one child
63+
module never adds its own `<sourceDir>`. To restore the old outcome, declare
64+
`<sourceDir>`/`<sources>` explicitly in that module's pom, or give it a real
65+
metadata source (a `metaobjects/` directory or a `.metaobjects/config.json`
66+
`sources` entry).
5067

5168
### Changed — a committed migration chain must replay from empty, and `meta migrate` stops writing chains that cannot ([#313](https://github.com/metaobjectsdev/metaobjects/issues/313))
5269

0 commit comments

Comments
 (0)