feat(databind): add typed collection support for choice groups#589
Conversation
📝 WalkthroughWalkthroughGeneralizes metaschema binding bootstrap into separate config/model generators, adds inline Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Dev as Developer
participant Maven as Maven (bootstrap POMs)
participant Plugin as metaschema-maven-plugin
participant Repo as Source Metaschema Modules
participant Codegen as Binding Code Generator
participant Bindings as Generated Binding Classes
Dev->>Maven: mvn install
Dev->>Maven: mvn -f databind/pom-bootstrap-config.xml generate-sources
Maven->>Plugin: invoke generate-sources (config bootstrap)
Plugin->>Repo: read source metaschema & `metaschema-config-bindings.yaml`
Plugin->>Codegen: request config binding generation
Codegen->>Bindings: write config binding classes (config package paths)
Dev->>Maven: mvn -f databind/pom-bootstrap-model.xml generate-sources
Maven->>Plugin: invoke generate-sources (model bootstrap)
Plugin->>Repo: read source metaschema & `metaschema-model-bindings.xml`
Plugin->>Codegen: request model binding generation (path/target-aware lookup)
Codegen->>Bindings: write model binding classes (model package, includes new report/constraint types)
Note over Dev,Bindings: Verify regenerated bindings, commit, run tests
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Possibly related issues
Possibly related PRs
Suggested reviewers
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Organization UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (2)
✅ Files skipped from review due to trivial changes (1)
🧰 Additional context used📓 Path-based instructions (1)**/*.java📄 CodeRabbit inference engine (CLAUDE.md)
Files:
🧠 Learnings (4)📓 Common learnings📚 Learning: 2025-12-19T04:01:37.408ZApplied to files:
📚 Learning: 2025-12-17T13:27:43.679ZApplied to files:
📚 Learning: 2025-12-27T16:52:04.509ZApplied to files:
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
🔇 Additional comments (2)
Comment |
3470a56 to
2defcf2
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.java (1)
135-145: Missing Javadoc ongetRules()/setRules()methods.These methods lack Javadoc documentation unlike the
getLets()/setLets()methods. This is a generator-level inconsistency that should be tracked for improvement in the code generator. Based on learnings, this should not be manually fixed in the generated file.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (57)
.claude/rules/metaschema-authoring.mdCLAUDE.mdcore/metaschemadatabind-metaschema/pom.xmldatabind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xmldatabind-metaschema/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/README.mddatabind/pom-bootstrap-config.xmldatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonValueKeyFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetapath.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/UseName.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/BindingModule.javadatabind/src/main/metaschema-bindings/metaschema-config-bindings.xmldatabind/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/src/main/metaschema/metaschema-bindings.yaml
💤 Files with no reviewable changes (2)
- databind-metaschema/pom.xml
- databind-metaschema/src/main/metaschema-bindings/metaschema-model-bindings.xml
🧰 Additional context used
📓 Path-based instructions (1)
**/*.java
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.java: All code changes must follow the Javadoc style guide (docs/javadoc-style-guide.md). New code requires 100% Javadoc coverage on public/protected members. Modified code must add/update Javadoc on any members touched. All Javadoc must include @param, @return, @throws tags in the correct order (BLOCKING)
Java target version must be Java 11. Use SpotBugs annotations (@nonnull, @nullable) for null safety in code.
Follow package naming convention gov.nist.secauto.metaschema.* for all Java packages
Follow Test-Driven Development (TDD) principles: write tests first before implementing functionality, verify tests fail with current implementation, implement minimal code to pass tests, then refactor while keeping tests green
Files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/UseName.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetapath.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/BindingModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonValueKeyFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.java
🧠 Learnings (18)
📓 Common learnings
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:52.756Z
Learning: In metaschema-testing, generated binding classes under gov.nist.secauto.metaschema.model.testing.testsuite are produced by metaschema-maven-plugin from YAML metaschema definitions. Javadoc issues in these generated classes should not be flagged for manual fixes; improvements are tracked and handled through code generator enhancements rather than manual edits to the generated source.
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/GenerationCase.java:74-80
Timestamp: 2025-12-24T21:21:59.692Z
Learning: Files in the package gov.nist.secauto.metaschema.model.testing.testsuite in metaschema-testing are generated binding classes created from Metaschema definitions. Documentation and style improvements for these files should be made at the code generator level (metaschema-maven-plugin) rather than by manually editing the generated code.
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/csrc/ns/metaschema/test_suite/_1_0/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:35.530Z
Learning: In metaschema-framework/metaschema-java, generated binding classes in package gov.nist.csrc.ns.metaschema.test_suite._1_0 (and similar generated binding packages) are pre-generated by metaschema-maven-plugin and checked into source control. Javadoc coverage issues in these generated classes should be tracked as code generator improvements rather than file-level issues, and improvements are deferred to generator enhancements.
📚 Learning: 2025-12-24T21:21:59.692Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/GenerationCase.java:74-80
Timestamp: 2025-12-24T21:21:59.692Z
Learning: Files in the package gov.nist.secauto.metaschema.model.testing.testsuite in metaschema-testing are generated binding classes created from Metaschema definitions. Documentation and style improvements for these files should be made at the code generator level (metaschema-maven-plugin) rather than by manually editing the generated code.
Applied to files:
databind/README.mddatabind/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/pom-bootstrap-config.xmldatabind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javaCLAUDE.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/metaschema/metaschema-bindings.yamldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetapath.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java.claude/rules/metaschema-authoring.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/BindingModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.java
📚 Learning: 2025-12-24T21:21:35.530Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/csrc/ns/metaschema/test_suite/_1_0/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:35.530Z
Learning: In metaschema-framework/metaschema-java, generated binding classes in package gov.nist.csrc.ns.metaschema.test_suite._1_0 (and similar generated binding packages) are pre-generated by metaschema-maven-plugin and checked into source control. Javadoc coverage issues in these generated classes should be tracked as code generator improvements rather than file-level issues, and improvements are deferred to generator enhancements.
Applied to files:
databind/README.mddatabind/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/pom-bootstrap-config.xmldatabind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javaCLAUDE.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/metaschema/metaschema-bindings.yamldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetapath.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java.claude/rules/metaschema-authoring.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/BindingModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.java
📚 Learning: 2025-12-24T21:21:52.756Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:52.756Z
Learning: In metaschema-testing, generated binding classes under gov.nist.secauto.metaschema.model.testing.testsuite are produced by metaschema-maven-plugin from YAML metaschema definitions. Javadoc issues in these generated classes should not be flagged for manual fixes; improvements are tracked and handled through code generator enhancements rather than manual edits to the generated source.
Applied to files:
databind/README.mddatabind/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/pom-bootstrap-config.xmldatabind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javaCLAUDE.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/metaschema/metaschema-bindings.yamldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetapath.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonKey.javacore/metaschemadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java.claude/rules/metaschema-authoring.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/BindingModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to core/metaschema/schema/xml/** : XMLBeans code is generated from XSD schemas in core/metaschema/schema/xml during Maven build. Generated sources are placed in target/generated-sources/
Applied to files:
databind/README.mddatabind/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/pom-bootstrap-config.xmldatabind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xmlCLAUDE.md.claude/rules/metaschema-authoring.mddatabind/pom-bootstrap-model.xml
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/*.java : Follow package naming convention gov.nist.secauto.metaschema.* for all Java packages
Applied to files:
databind/README.mddatabind/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xmlCLAUDE.md.claude/rules/metaschema-authoring.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2025-12-19T04:01:37.408Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 550
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/format/JsonPointerFormatter.java:56-100
Timestamp: 2025-12-19T04:01:37.408Z
Learning: When overriding Java interface methods, rely on inherited Javadoc from the interface. Do not duplicate documentation in the implementing class unless there is implementation-specific behavior that warrants additional notes beyond the interface contract.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/UseName.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetapath.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/BindingModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonValueKeyFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/*.{xmlbeans,antlr} : Generated code in *.xmlbeans and *.antlr packages is excluded from Javadoc and style checks. Generated sources are placed in target/generated-sources/
Applied to files:
databind/pom-bootstrap-config.xml.claude/rules/metaschema-authoring.md
📚 Learning: 2024-11-14T17:07:03.586Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/IIPv4AddressItem.java:66-73
Timestamp: 2024-11-14T17:07:03.586Z
Learning: In the Metaschema Java codebase, differences in casting patterns across atomic type implementations are intentional and required; any differences in approach are significant and necessary.
Applied to files:
databind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java.claude/rules/metaschema-authoring.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2025-12-13T21:16:12.281Z
Learnt from: CR
Repo: metaschema-framework/metaschema PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-13T21:16:12.281Z
Learning: Constraints are documented in `website/content/specification/syntax/constraints.md`. When adding new constraint types, update the constraint type lists for `define-flag`, `define-field`, and `define-assembly`, and add a new section with syntax table and examples
Applied to files:
databind/src/main/metaschema/metaschema-bindings.yamldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/metapath/**/*.java : Metapath is an implementation of XPath 3.1. Use the XPath 3.1 specification (https://www.w3.org/TR/xpath-31/) and XPath Functions 3.1 (https://www.w3.org/TR/xpath-functions-31/) as authoritative reference when implementing new functions, fixing bugs, or understanding error handling. Raise clarification before making changes if implementation differs from spec.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetapath.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.java
📚 Learning: 2024-11-14T23:37:29.087Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/DateAdapter.java:41-48
Timestamp: 2024-11-14T23:37:29.087Z
Learning: In the `DateAdapter` class (`core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/DateAdapter.java`), using a regular expression for date validation is necessary because `DateTimeFormatter` does not properly parse dates with timezones in this context.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java
📚 Learning: 2024-11-14T18:19:40.200Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/IBooleanItem.java:86-104
Timestamp: 2024-11-14T18:19:40.200Z
Learning: In the file `core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/IBooleanItem.java`, the 3-step approach in the `cast` method is consistent with the XPath 3.1 specification.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java
📚 Learning: 2025-12-13T21:16:12.281Z
Learnt from: CR
Repo: metaschema-framework/metaschema PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-13T21:16:12.281Z
Learning: When adding or modifying datatypes, update `schema/json/metaschema-datatypes.json`, `schema/xml/metaschema-datatypes.xsd`, and `website/content/specification/datatypes.md` in sync
Applied to files:
.claude/rules/metaschema-authoring.md
📚 Learning: 2024-11-14T17:09:05.819Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/INonNegativeIntegerItem.java:116-124
Timestamp: 2024-11-14T17:09:05.819Z
Learning: In the interface `INonNegativeIntegerItem` (file `core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/INonNegativeIntegerItem.java`), the casting logic in the `cast` method is intentionally designed this way due to earlier discrepancies.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2024-11-14T05:15:46.640Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/impl/NonNegativeIntegerItemImpl.java:24-31
Timestamp: 2024-11-14T05:15:46.640Z
Learning: In the `NonNegativeIntegerItemImpl` class (`core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/impl/NonNegativeIntegerItemImpl.java`), the validation for non-negative values is performed in the `INonNegativeIntegerItem.valueOf(BigInteger)` method. Therefore, it's not necessary to duplicate this validation in the constructor of `NonNegativeIntegerItemImpl`.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/*.java : Java target version must be Java 11. Use SpotBugs annotations (NonNull, Nullable) for null safety in code.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to core/src/main/antlr4/** : Metapath parser is generated from ANTLR4 grammar files in core/src/main/antlr4. Code generation occurs during Maven build producing output in target/generated-sources/
Applied to files:
databind/pom-bootstrap-model.xml
🧬 Code graph analysis (9)
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.java (1)
core/src/main/java/gov/nist/secauto/metaschema/core/util/ObjectUtils.java (1)
ObjectUtils(18-135)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/UseName.java (4)
core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/NonNegativeIntegerAdapter.java (1)
NonNegativeIntegerAdapter(24-48)core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/TokenAdapter.java (1)
TokenAdapter(23-45)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java (1)
MetaschemaField(1256-1344)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.java (1)
MetaschemaField(30-126)
databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java (1)
core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/StringAdapter.java (1)
StringAdapter(23-46)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.java (1)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/AbstractBoundModule.java (1)
AbstractBoundModule(31-213)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.java (3)
core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/StringAdapter.java (1)
StringAdapter(23-46)core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/TokenAdapter.java (1)
TokenAdapter(23-45)core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/UriAdapter.java (1)
UriAdapter(27-66)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.java (2)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.java (1)
MetaschemaAssembly(22-151)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java (1)
MetaschemaAssembly(27-151)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.java (1)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.java (1)
MetaschemaAssembly(35-360)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.java (2)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.java (1)
MetaschemaAssembly(27-151)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java (1)
MetaschemaAssembly(27-151)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.java (1)
schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/json/impl/JsonSchemaHelper.java (1)
Choice(362-387)
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java (1)
21-21: Consider adding Javadoc and improving temp directory lifecycle management.While Javadoc is not required for private methods per the guidelines, it would help explain the purpose of the compile path and why this helper exists (enabling dynamic compilation for module loader tests).
Additionally, the temp directories created under
target/generated-modulesaccumulate during test runs. Consider using JUnit 5's@TempDirannotation for automatic cleanup after each test.🔎 Proposed improvements
Option 1: Add Javadoc (optional but helpful for maintainability)
+ /** + * Creates a new binding context configured with a compile path for dynamic compilation. + * <p> + * This is required for tests that load Metaschema modules and need to compile generated + * Java classes at runtime (e.g., {@link #testModuleLoader()}, {@link #testOscalBindingModuleLoader()}). + * </p> + * + * @return a new binding context with compile path configured + * @throws IOException if the temporary compilation directory cannot be created + */ @NonNull private static IBindingContext newBindingContext() throws IOException {Option 2: Use @tempdir for automatic cleanup (recommended)
+ @TempDir + static Path tempDir; + @NonNull - private static IBindingContext newBindingContext() throws IOException { - Path generationDir = Paths.get("target/generated-modules"); - Files.createDirectories(generationDir); - + private static IBindingContext newBindingContext() { return IBindingContext.builder() - .compilePath(ObjectUtils.notNull(Files.createTempDirectory(generationDir, "modules-"))) + .compilePath(ObjectUtils.notNull(tempDir.resolve("modules-" + System.nanoTime()))) .build(); }Note: If using
@TempDir, you'll need to ensure unique subdirectories per test invocation (hence theSystem.nanoTime()suffix) or make the field non-static and instance-level.Also applies to: 32-40
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java
🧰 Additional context used
📓 Path-based instructions (2)
**/*.java
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.java: All code changes must follow the Javadoc style guide (docs/javadoc-style-guide.md). New code requires 100% Javadoc coverage on public/protected members. Modified code must add/update Javadoc on any members touched. All Javadoc must include @param, @return, @throws tags in the correct order (BLOCKING)
Java target version must be Java 11. Use SpotBugs annotations (@nonnull, @nullable) for null safety in code.
Follow package naming convention gov.nist.secauto.metaschema.* for all Java packages
Follow Test-Driven Development (TDD) principles: write tests first before implementing functionality, verify tests fail with current implementation, implement minimal code to pass tests, then refactor while keeping tests green
Files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java
**/*Test.java
📄 CodeRabbit inference engine (CLAUDE.md)
@test methods do not require Javadoc if they use descriptive method names. Use JUnit 5 for testing with parallel execution enabled.
Files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java
🧠 Learnings (4)
📚 Learning: 2025-12-24T21:22:07.082Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/GenerationCase.java:74-80
Timestamp: 2025-12-24T21:22:07.082Z
Learning: Files in the package gov.nist.secauto.metaschema.model.testing.testsuite in metaschema-testing are generated binding classes created from Metaschema definitions. Documentation and style improvements for these files should be made at the code generator level (metaschema-maven-plugin) rather than by manually editing the generated code.
Applied to files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java
📚 Learning: 2025-12-24T21:21:56.361Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:56.361Z
Learning: In metaschema-testing, generated binding classes under gov.nist.secauto.metaschema.model.testing.testsuite are produced by metaschema-maven-plugin from YAML metaschema definitions. Javadoc issues in these generated classes should not be flagged for manual fixes; improvements are tracked and handled through code generator enhancements rather than manual edits to the generated source.
Applied to files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java
📚 Learning: 2025-12-24T21:21:40.208Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/csrc/ns/metaschema/test_suite/_1_0/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:40.208Z
Learning: In metaschema-framework/metaschema-java, generated binding classes in package gov.nist.csrc.ns.metaschema.test_suite._1_0 (and similar generated binding packages) are pre-generated by metaschema-maven-plugin and checked into source control. Javadoc coverage issues in these generated classes should be tracked as code generator improvements rather than file-level issues, and improvements are deferred to generator enhancements.
Applied to files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java
📚 Learning: 2025-12-19T04:01:37.408Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 550
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/format/JsonPointerFormatter.java:56-100
Timestamp: 2025-12-19T04:01:37.408Z
Learning: When overriding Java interface methods, rely on inherited Javadoc from the interface. Do not duplicate documentation in the implementing class unless there is implementation-specific behavior that warrants additional notes beyond the interface contract.
Applied to files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java
🧬 Code graph analysis (1)
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java (1)
core/src/main/java/gov/nist/secauto/metaschema/core/util/ObjectUtils.java (1)
ObjectUtils(18-135)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Code
- GitHub Check: Website
🔇 Additional comments (2)
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java (2)
83-87: LGTM!The test correctly uses the new
newBindingContext()helper to configure a binding context with a compile path for dynamic module loading.
90-96: LGTM!The test correctly uses the new
newBindingContext()helper and enables entity resolution for loading the remote OSCAL metaschema. The implementation is sound.Note: This test depends on network connectivity and GitHub availability, which could make it occasionally flaky in CI environments. If this becomes an issue, consider using
@Tag("integration")to allow selective test execution.
There was a problem hiding this comment.
Actionable comments posted: 3
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (12)
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/metaschema-bindings/metaschema-model-bindings.xml
🚧 Files skipped from review as they are similar to previous changes (1)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueConstraintsBase.java
🧰 Additional context used
📓 Path-based instructions (1)
**/*.java
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.java: All code changes must follow the Javadoc style guide (docs/javadoc-style-guide.md). New code requires 100% Javadoc coverage on public/protected members. Modified code must add/update Javadoc on any members touched. All Javadoc must include @param, @return, @throws tags in the correct order (BLOCKING)
Java target version must be Java 11. Use SpotBugs annotations (@nonnull, @nullable) for null safety in code.
Follow package naming convention gov.nist.secauto.metaschema.* for all Java packages
Follow Test-Driven Development (TDD) principles: write tests first before implementing functionality, verify tests fail with current implementation, implement minimal code to pass tests, then refactor while keeping tests green
Files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java
🧠 Learnings (12)
📓 Common learnings
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:56.361Z
Learning: In metaschema-testing, generated binding classes under gov.nist.secauto.metaschema.model.testing.testsuite are produced by metaschema-maven-plugin from YAML metaschema definitions. Javadoc issues in these generated classes should not be flagged for manual fixes; improvements are tracked and handled through code generator enhancements rather than manual edits to the generated source.
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/csrc/ns/metaschema/test_suite/_1_0/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:40.208Z
Learning: In metaschema-framework/metaschema-java, generated binding classes in package gov.nist.csrc.ns.metaschema.test_suite._1_0 (and similar generated binding packages) are pre-generated by metaschema-maven-plugin and checked into source control. Javadoc coverage issues in these generated classes should be tracked as code generator improvements rather than file-level issues, and improvements are deferred to generator enhancements.
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/GenerationCase.java:74-80
Timestamp: 2025-12-24T21:22:07.082Z
Learning: Files in the package gov.nist.secauto.metaschema.model.testing.testsuite in metaschema-testing are generated binding classes created from Metaschema definitions. Documentation and style improvements for these files should be made at the code generator level (metaschema-maven-plugin) rather than by manually editing the generated code.
📚 Learning: 2025-12-24T21:22:07.082Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/GenerationCase.java:74-80
Timestamp: 2025-12-24T21:22:07.082Z
Learning: Files in the package gov.nist.secauto.metaschema.model.testing.testsuite in metaschema-testing are generated binding classes created from Metaschema definitions. Documentation and style improvements for these files should be made at the code generator level (metaschema-maven-plugin) rather than by manually editing the generated code.
Applied to files:
databind/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2025-12-24T21:21:40.208Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/csrc/ns/metaschema/test_suite/_1_0/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:40.208Z
Learning: In metaschema-framework/metaschema-java, generated binding classes in package gov.nist.csrc.ns.metaschema.test_suite._1_0 (and similar generated binding packages) are pre-generated by metaschema-maven-plugin and checked into source control. Javadoc coverage issues in these generated classes should be tracked as code generator improvements rather than file-level issues, and improvements are deferred to generator enhancements.
Applied to files:
databind/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java
📚 Learning: 2025-12-24T21:21:56.361Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:56.361Z
Learning: In metaschema-testing, generated binding classes under gov.nist.secauto.metaschema.model.testing.testsuite are produced by metaschema-maven-plugin from YAML metaschema definitions. Javadoc issues in these generated classes should not be flagged for manual fixes; improvements are tracked and handled through code generator enhancements rather than manual edits to the generated source.
Applied to files:
databind/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to core/metaschema/schema/xml/** : XMLBeans code is generated from XSD schemas in core/metaschema/schema/xml during Maven build. Generated sources are placed in target/generated-sources/
Applied to files:
databind/src/main/metaschema-bindings/metaschema-model-bindings.xml
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/*.java : Follow package naming convention gov.nist.secauto.metaschema.* for all Java packages
Applied to files:
databind/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2025-12-19T04:01:37.408Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 550
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/format/JsonPointerFormatter.java:56-100
Timestamp: 2025-12-19T04:01:37.408Z
Learning: When overriding Java interface methods, rely on inherited Javadoc from the interface. Do not duplicate documentation in the implementing class unless there is implementation-specific behavior that warrants additional notes beyond the interface contract.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java
📚 Learning: 2025-12-27T16:52:04.509Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 590
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/DynamicContext.java:482-492
Timestamp: 2025-12-27T16:52:04.509Z
Learning: In Java, UncheckedIOException.getCause() is declared to return IOException. In methods that declare throws IOException, you can rethrow the underlying cause with throw e.getCause() where e is an UncheckedIOException, without a cast. Ensure the surrounding method signature includes throws IOException. This does not apply to other unchecked exceptions; verify that e is actually an UncheckedIOException before using this pattern.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java
📚 Learning: 2024-11-14T17:09:05.819Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/INonNegativeIntegerItem.java:116-124
Timestamp: 2024-11-14T17:09:05.819Z
Learning: In the interface `INonNegativeIntegerItem` (file `core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/INonNegativeIntegerItem.java`), the casting logic in the `cast` method is intentionally designed this way due to earlier discrepancies.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2024-11-14T05:15:46.640Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/impl/NonNegativeIntegerItemImpl.java:24-31
Timestamp: 2024-11-14T05:15:46.640Z
Learning: In the `NonNegativeIntegerItemImpl` class (`core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/impl/NonNegativeIntegerItemImpl.java`), the validation for non-negative values is performed in the `INonNegativeIntegerItem.valueOf(BigInteger)` method. Therefore, it's not necessary to duplicate this validation in the constructor of `NonNegativeIntegerItemImpl`.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2024-11-14T17:07:03.586Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/IIPv4AddressItem.java:66-73
Timestamp: 2024-11-14T17:07:03.586Z
Learning: In the Metaschema Java codebase, differences in casting patterns across atomic type implementations are intentional and required; any differences in approach are significant and necessary.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2025-12-13T21:16:12.281Z
Learnt from: CR
Repo: metaschema-framework/metaschema PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-13T21:16:12.281Z
Learning: Constraints are documented in `website/content/specification/syntax/constraints.md`. When adding new constraint types, update the constraint type lists for `define-flag`, `define-field`, and `define-assembly`, and add a new section with syntax table and examples
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
🧬 Code graph analysis (1)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.java (1)
schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/json/impl/JsonSchemaHelper.java (1)
Choice(362-387)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Website
- GitHub Check: Code
🔇 Additional comments (26)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java (1)
5-2600: LGTM! Generated binding class successfully regenerated.This file is generated by metaschema-maven-plugin and reflects the updated code generator improvements mentioned in the PR objectives, including:
- Nullability annotations with
@NonNulland@Nullable- Enhanced Javadoc coverage on public members
- Lazy initialization for collection fields
- Corrected constraint message template syntax (
{{→{)- Updated choice group bindings for typed collections
The generated code follows consistent patterns with no apparent runtime issues.
Based on learnings, any further documentation or style improvements should be addressed at the code generator level rather than through manual edits to this generated file.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.java (1)
5-6: LGTM: Generated binding class with code generator improvements.This file is generated by metaschema-maven-plugin (as noted in the header). The changes represent systematic code generator improvements:
- Added explicit nullability contracts via
@NonNull/@Nullableannotations- Implemented lazy initialization for collection getters ensuring non-null returns
- Generated comprehensive Javadoc for constructors and accessor methods
- Updated binding annotations with proper discriminator values and grouping semantics
- Added
ReflectionToStringBuilderfor consistenttoString()implementationsThe patterns are consistent throughout the file, and the lazy initialization logic correctly ensures that collection getters never return null.
Based on learnings, documentation and style improvements for generated binding classes are handled at the code generator level rather than through manual edits to the generated source.
Also applies to: 10-11, 37-38, 68-115, 137-140, 170-243
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.java (4)
5-6: Generated file with updated nullability and interface support.The regeneration correctly adds imports for @NonNull/@nullable annotations, new constraint interfaces (IConstraintBase, IValueTargetedConstraintsBase), and toString utilities. The generation source header is properly maintained.
Based on learnings, this is a generated binding class from metaschema-maven-plugin. Any further improvements should be tracked as code generator enhancements rather than manual edits.
Also applies to: 10-11, 31-31, 34-34, 38-39
203-206: Lazy initialization correctly enforces @nonnull contracts.The collection getters now lazily initialize with LinkedList when null, ensuring non-null returns. This pattern is appropriate for generated binding classes and aligns with the stricter nullability contracts introduced in this PR.
Also applies to: 261-263, 316-318, 567-570, 732-735, 844-847, 956-959
473-473: Interface implementations enable typed collection generation.The inner classes now implement IValueTargetedConstraintsBase and IValueConstraintsBase, allowing the code generator to produce typed collections (e.g.,
List<? extends IValueConstraintsBase>) instead ofList<Object>for choice groups. This directly addresses the PR objective to enable typed collection overrides for inline definitions within choice groups.Also applies to: 642-642, 674-674, 760-760, 786-786, 872-872, 898-898
671-673: New report constraint types properly integrated.The addition of TargetedReportConstraint (for Assembly and Field) and FlagReport (for Flag) properly extends the constraint choice groups with new report condition constraint support.
Also applies to: 783-785, 895-897
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.java (6)
5-11: Generated binding class with proper nullability imports.This is a generated binding class that should not be manually edited. The addition of
@NonNull/@Nullableannotations from SpotBugs aligns with coding guidelines for null safety. Any improvements to Javadoc or style should be addressed at the code generator level.Based on learnings, documentation and style improvements for generated binding classes should be made at the code generator level rather than by manually editing the generated code.
186-204: Nullability contract on required field is correct.The
@NonNullannotation ongetName()correctly documents the expected contract: the binding framework ensures the value is set during deserialization (viarequired = truein@BoundFlag). For programmatic construction, callers must invokesetName()before accessing the value, which is the standard pattern for required fields in binding classes.
340-376: Well-implemented lazy initialization pattern for collection properties.The lazy initialization in
getProps()ensures a non-null return value without requiring callers to check for null. The pattern is consistently applied across the getter, setter, andaddProp()method. UsingLinkedListis appropriate given the presence of add/remove operations.
124-133: Choice group with heterogeneous types usesList<Object>appropriately.The
flagschoice group contains two different assembly types (InlineDefineFlagandFlagReference). Without a common interface configured for these types,List<Object>is the correct return type. The lazy initialization pattern is consistently applied.Per the PR objectives, typed collections are generated when an
item-typeinterface is configured in the bindings configuration; this appears to be correctly handled by the generator for cases where no common interface exists.Also applies to: 441-462
532-581: Consistent null-safe collection handling for examples.The
getExamples(),setExamples(),addExample(), andremoveExample()methods follow the same consistent patterns used for other collections in this class. TheremoveExample()method correctly handles the case where_examplesmay be null.
583-586: StandardtoString()implementation using reflection.The use of
ReflectionToStringBuilderwithMULTI_LINE_STYLEis consistent with the codebase pattern for generated binding classes, providing useful debugging output without requiring manual maintenance as fields change.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.java (3)
5-6: Generated binding class with improved patterns.This regenerated binding class incorporates several enhancements from the code generator: lazy-initialized collections,
@NonNull/@Nullableannotations, comprehensive Javadoc, and add/remove helper methods. Based on learnings, any further improvements should be tracked as code generator enhancements.
285-303: LGTM: Required flag contract matches nullability annotation.The
@NonNullannotation ongetName()is correctly applied since the binding flag hasrequired = true, ensuring the value is populated during deserialization.
504-548: Consistent lazy initialization and collection helpers.The lazy initialization pattern for
getProps()and the correspondingaddProp()/removeProp()helpers follow a consistent pattern with proper null-safety usingObjectUtils.requireNonNull(). The same pattern is correctly applied to other collections (flags,examples).databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.java (1)
10-15: LGTM: Interface documentation follows conventions.The added Javadoc provides a clear description of the interface's purpose. Per learnings, the
@OverrideongetRules()correctly relies on inherited Javadoc fromIValueConstraintsBaserather than duplicating documentation.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java (2)
5-6: Generated binding class with consistent patterns.The regenerated
FlagConstraintsclass correctly implementsIBoundObjectandIValueConstraintsBase, with the newFlagReportbinding added to the rules group. The lazy initialization and nullability patterns are consistent withFieldConstraintsandAssemblyConstraints.Also applies to: 30-30
40-56: New Report Condition Constraint binding added.The
BoundChoiceGroupnow includesFlagReport.classfor report condition constraints, expanding the supported constraint types for flag definitions. ThegroupAsconfiguration ensures proper JSON serialization.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.java (2)
5-6: Generated binding class with expanded constraint support.The regenerated
AssemblyConstraintsclass implementsIBoundObjectandIModelConstraintsBase, withTargetedReportConstraintadded to the rules group. The constraint set appropriately includes assembly-specific targeted constraints (cardinality, unique, index) alongside the new report constraint.Also applies to: 30-30
90-168: Consistent accessor patterns across constraint classes.The
getLets()andgetRules()methods with lazy initialization, along with the add/remove helpers, follow the same pattern asFlagConstraintsandFieldConstraints. This consistency is correctly maintained by the code generator.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.java (2)
5-6: Generated binding class correctly implements value-targeted interface.The regenerated
FieldConstraintsclass implementsIValueTargetedConstraintsBase(with targeted constraint rules) as opposed toFlagConstraintswhich implementsIValueConstraintsBase(with basic constraints). TheTargetedReportConstraintis appropriately added to complete the report constraint support across binding classes.Also applies to: 30-30
40-56: Appropriate constraint set for field definitions.The
BoundChoiceGroupincludes the correct set of targeted constraints for field definitions (allowed-values, expect, index-has-key, matches, report), which differs fromAssemblyConstraints(which adds cardinality, unique, index) andFlagConstraints(which uses non-targeted variants). This reflects the metaschema specification for each definition scope.databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java (1)
184-201: Good documentation for private helper method.The private helper method is well-documented with clear Javadoc, making the code more maintainable. The centralized configuration retrieval logic improves code clarity in the subsequent Javadoc-building methods.
databind/src/main/metaschema-bindings/metaschema-model-bindings.xml (3)
26-54: All referenced interfaces exist in the codebase.Verification confirms that all interfaces referenced in lines 26-54 are available in the
gov.nist.secauto.metaschema.databind.model.metaschemapackage:
IModelConstraintsBase✓IValueTargetedConstraintsBase✓IConstraintBase✓IValueConstraintsBase✓ITargetedConstraintBase✓No issues found.
116-144: Correct implementation of target-based inline assembly bindings.The inline assembly bindings with
targetattributes correctly generate typed constraint classes. The XML configuration in lines 116-144 properly targets scope variants (assembly, field, flag), andDefaultBindingConfigurationcorrectly parses these target expressions to generate the nestedAssembly,Field, andFlagclasses inMetaschemaModuleConstraintsthat implement the specified interfaces. The choice groups use typed collections with wildcard generics as intended (e.g.,List<? extends IValueTargetedConstraintsBase>), enabling polymorphic constraint handling.
14-14: The relative path in the href is correctly structured. The filemetaschema-module-metaschema.xmlis located in thecore/metaschemagit submodule atschema/metaschema/, and the path../../../../core/metaschema/schema/metaschema/metaschema-module-metaschema.xmlcorrectly references it fromdatabind/src/main/metaschema-bindings/. This aligns with the metaschema directory configuration in databind-metaschema/pom.xml.
...main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java
Show resolved
Hide resolved
...main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java
Show resolved
Hide resolved
...main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java
Show resolved
Hide resolved
Enhance the code generator to produce type-safe collections and better documentation for choice group accessor methods. Metapath-based binding targeting: - Add 'target' flag to metaschema-bindings.yaml binding schema - Update DefaultBindingConfiguration to parse Metapath target expressions - Enable targeting configurations to inline assembly/field definitions Typed collection generation: - Choice groups use List<? extends Interface> instead of List<Object> when item-type is configured in binding configuration - Add binding configurations for scope, rules, and constraints groups - Add default getLets() method to IValueConstraintsBase interface Javadoc improvements: - Add Javadoc generation for choice group getter/setter methods - Reference configured item type interface in documentation - Add Javadoc to constraint binding interfaces Test and cleanup: - Configure binding context with compile path for module loader tests - Remove unused metaschema-metaschema-bindings.xml - Simplify MetaschemaModuleMetaschemaTest - Move file paths out of README headings - Add databind-metaschema README documenting bootstrap regeneration - Update CLAUDE.md with consolidated bootstrap documentation Regenerated all bootstrap binding classes with updated code generator.
6360c48 to
8ea0f9c
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
♻️ Duplicate comments (3)
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java (3)
30-32: Remove duplicate @nonnull import.The
@NonNullannotation is imported twice: at line 30 (new addition) and at line 41 (pre-existing). Remove the duplicate import at line 30.🔎 Fix for duplicate import
-import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.Nullable; -
203-226: Add Javadoc for public override method.This public override method lacks method-level Javadoc. Per coding guidelines, all public methods require Javadoc with @param tags (BLOCKING).
📝 Suggested Javadoc
Add Javadoc above line 203:
/** * {@inheritDoc} * <p> * Generates Javadoc for choice group getter methods, including documentation * of the configured item type (if binding configuration specifies one) and * whether wildcard types are used. * * @param builder * the method builder to add Javadoc to */ @Override public void buildGetterJavadoc(@NonNull MethodSpec.Builder builder) {As per coding guidelines, all Javadoc must include @param, @return, and @throws tags in the correct order.
228-252: Add Javadoc for public override method.This public override method lacks method-level Javadoc. Per coding guidelines, all public methods require Javadoc with @param tags (BLOCKING).
📝 Suggested Javadoc
Add Javadoc above line 228:
/** * {@inheritDoc} * <p> * Generates Javadoc for choice group setter methods, including documentation * of the configured item type (if binding configuration specifies one) and * whether wildcard types are required. * * @param builder * the method builder to add Javadoc to * @param paramName * the name of the setter parameter */ @Override public void buildSetterJavadoc(@NonNull MethodSpec.Builder builder, @NonNull String paramName) {As per coding guidelines, all Javadoc must include @param, @return, and @throws tags in the correct order.
🧹 Nitpick comments (1)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.java (1)
1-15: Consider adding package-level Javadoc at the generator level.While this generated package-info.java file includes appropriate annotations, it lacks package-level Javadoc documentation describing the purpose of the
gov.nist.secauto.metaschema.databind.model.metaschema.bindingpackage.Since this is generated code (per the header), this improvement should be made at the code generator (metaschema-maven-plugin) level to automatically include package-level Javadoc in all generated package-info.java files.
Based on learnings, documentation improvements for generated binding classes should be tracked as generator enhancements.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (62)
.claude/rules/metaschema-authoring.mdCLAUDE.mdcore/metaschemadatabind-metaschema/pom.xmldatabind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xmldatabind-metaschema/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/README.mddatabind/pom-bootstrap-config.xmldatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IModelConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonValueKeyFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetapath.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/UseName.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/BindingModule.javadatabind/src/main/metaschema-bindings/metaschema-config-bindings.xmldatabind/src/main/metaschema-bindings/metaschema-model-bindings.xmldatabind/src/main/metaschema/metaschema-bindings.yamldatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java
💤 Files with no reviewable changes (3)
- databind-metaschema/src/main/metaschema-bindings/metaschema-model-bindings.xml
- databind-metaschema/pom.xml
- databind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xml
🚧 Files skipped from review as they are similar to previous changes (8)
- databind/src/main/metaschema-bindings/metaschema-model-bindings.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonValueKeyFlag.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonKey.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/BindingModule.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/UseName.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IModelConstraintsBase.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetapath.java
🧰 Additional context used
📓 Path-based instructions (2)
**/*.java
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.java: All code changes must follow the Javadoc style guide (docs/javadoc-style-guide.md). New code requires 100% Javadoc coverage on public/protected members. Modified code must add/update Javadoc on any members touched. All Javadoc must include @param, @return, @throws tags in the correct order (BLOCKING)
Java target version must be Java 11. Use SpotBugs annotations (@nonnull, @nullable) for null safety in code.
Follow package naming convention gov.nist.secauto.metaschema.* for all Java packages
Follow Test-Driven Development (TDD) principles: write tests first before implementing functionality, verify tests fail with current implementation, implement minimal code to pass tests, then refactor while keeping tests green
Files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.java
**/*Test.java
📄 CodeRabbit inference engine (CLAUDE.md)
@test methods do not require Javadoc if they use descriptive method names. Use JUnit 5 for testing with parallel execution enabled.
Files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java
🧠 Learnings (21)
📓 Common learnings
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/csrc/ns/metaschema/test_suite/_1_0/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:40.208Z
Learning: In metaschema-framework/metaschema-java, generated binding classes in package gov.nist.csrc.ns.metaschema.test_suite._1_0 (and similar generated binding packages) are pre-generated by metaschema-maven-plugin and checked into source control. Javadoc coverage issues in these generated classes should be tracked as code generator improvements rather than file-level issues, and improvements are deferred to generator enhancements.
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:56.361Z
Learning: In metaschema-testing, generated binding classes under gov.nist.secauto.metaschema.model.testing.testsuite are produced by metaschema-maven-plugin from YAML metaschema definitions. Javadoc issues in these generated classes should not be flagged for manual fixes; improvements are tracked and handled through code generator enhancements rather than manual edits to the generated source.
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/GenerationCase.java:74-80
Timestamp: 2025-12-24T21:22:07.082Z
Learning: Files in the package gov.nist.secauto.metaschema.model.testing.testsuite in metaschema-testing are generated binding classes created from Metaschema definitions. Documentation and style improvements for these files should be made at the code generator level (metaschema-maven-plugin) rather than by manually editing the generated code.
📚 Learning: 2025-12-24T21:21:56.361Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:56.361Z
Learning: In metaschema-testing, generated binding classes under gov.nist.secauto.metaschema.model.testing.testsuite are produced by metaschema-maven-plugin from YAML metaschema definitions. Javadoc issues in these generated classes should not be flagged for manual fixes; improvements are tracked and handled through code generator enhancements rather than manual edits to the generated source.
Applied to files:
core/metaschemadatabind/pom-bootstrap-config.xml.claude/rules/metaschema-authoring.mddatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javaCLAUDE.mddatabind/src/main/metaschema/metaschema-bindings.yamldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/README.md
📚 Learning: 2025-12-24T21:22:07.082Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/GenerationCase.java:74-80
Timestamp: 2025-12-24T21:22:07.082Z
Learning: Files in the package gov.nist.secauto.metaschema.model.testing.testsuite in metaschema-testing are generated binding classes created from Metaschema definitions. Documentation and style improvements for these files should be made at the code generator level (metaschema-maven-plugin) rather than by manually editing the generated code.
Applied to files:
databind/pom-bootstrap-config.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.java.claude/rules/metaschema-authoring.mddatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javaCLAUDE.mddatabind/src/main/metaschema/metaschema-bindings.yamldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/README.md
📚 Learning: 2025-12-24T21:21:40.208Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/csrc/ns/metaschema/test_suite/_1_0/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:40.208Z
Learning: In metaschema-framework/metaschema-java, generated binding classes in package gov.nist.csrc.ns.metaschema.test_suite._1_0 (and similar generated binding packages) are pre-generated by metaschema-maven-plugin and checked into source control. Javadoc coverage issues in these generated classes should be tracked as code generator improvements rather than file-level issues, and improvements are deferred to generator enhancements.
Applied to files:
databind/pom-bootstrap-config.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.java.claude/rules/metaschema-authoring.mddatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javaCLAUDE.mddatabind/src/main/metaschema/metaschema-bindings.yamldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/README.md
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to core/metaschema/schema/xml/** : XMLBeans code is generated from XSD schemas in core/metaschema/schema/xml during Maven build. Generated sources are placed in target/generated-sources/
Applied to files:
databind/pom-bootstrap-config.xml.claude/rules/metaschema-authoring.mddatabind/pom-bootstrap-model.xmlCLAUDE.mddatabind/README.md
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/*.{xmlbeans,antlr} : Generated code in *.xmlbeans and *.antlr packages is excluded from Javadoc and style checks. Generated sources are placed in target/generated-sources/
Applied to files:
databind/pom-bootstrap-config.xml.claude/rules/metaschema-authoring.md
📚 Learning: 2025-12-19T04:01:37.408Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 550
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/format/JsonPointerFormatter.java:56-100
Timestamp: 2025-12-19T04:01:37.408Z
Learning: When overriding Java interface methods, rely on inherited Javadoc from the interface. Do not duplicate documentation in the implementing class unless there is implementation-specific behavior that warrants additional notes beyond the interface contract.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.java
📚 Learning: 2025-12-27T16:52:04.509Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 590
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/DynamicContext.java:482-492
Timestamp: 2025-12-27T16:52:04.509Z
Learning: In Java, UncheckedIOException.getCause() is declared to return IOException. In methods that declare throws IOException, you can rethrow the underlying cause with throw e.getCause() where e is an UncheckedIOException, without a cast. Ensure the surrounding method signature includes throws IOException. This does not apply to other unchecked exceptions; verify that e is actually an UncheckedIOException before using this pattern.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueConstraintsBase.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/*.java : Follow package naming convention gov.nist.secauto.metaschema.* for all Java packages
Applied to files:
.claude/rules/metaschema-authoring.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/package-info.javaCLAUDE.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/README.md
📚 Learning: 2025-12-13T21:16:12.281Z
Learnt from: CR
Repo: metaschema-framework/metaschema PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-13T21:16:12.281Z
Learning: Keep `schema/json/`, `schema/xml/`, and `website/content/specification/datatypes.md` in sync when updating schema definitions
Applied to files:
.claude/rules/metaschema-authoring.md
📚 Learning: 2025-12-13T21:16:12.281Z
Learnt from: CR
Repo: metaschema-framework/metaschema PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-13T21:16:12.281Z
Learning: When adding or modifying datatypes, update `schema/json/metaschema-datatypes.json`, `schema/xml/metaschema-datatypes.xsd`, and `website/content/specification/datatypes.md` in sync
Applied to files:
.claude/rules/metaschema-authoring.md
📚 Learning: 2024-11-14T17:07:03.586Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/IIPv4AddressItem.java:66-73
Timestamp: 2024-11-14T17:07:03.586Z
Learning: In the Metaschema Java codebase, differences in casting patterns across atomic type implementations are intentional and required; any differences in approach are significant and necessary.
Applied to files:
.claude/rules/metaschema-authoring.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to core/src/main/antlr4/** : Metapath parser is generated from ANTLR4 grammar files in core/src/main/antlr4. Code generation occurs during Maven build producing output in target/generated-sources/
Applied to files:
databind/pom-bootstrap-model.xml
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/*.java : Java target version must be Java 11. Use SpotBugs annotations (NonNull, Nullable) for null safety in code.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.java
📚 Learning: 2024-11-14T05:15:46.640Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/impl/NonNegativeIntegerItemImpl.java:24-31
Timestamp: 2024-11-14T05:15:46.640Z
Learning: In the `NonNegativeIntegerItemImpl` class (`core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/impl/NonNegativeIntegerItemImpl.java`), the validation for non-negative values is performed in the `INonNegativeIntegerItem.valueOf(BigInteger)` method. Therefore, it's not necessary to duplicate this validation in the constructor of `NonNegativeIntegerItemImpl`.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/*.java : All code changes must follow the Javadoc style guide (docs/javadoc-style-guide.md). New code requires 100% Javadoc coverage on public/protected members. Modified code must add/update Javadoc on any members touched. All Javadoc must include param, return, throws tags in the correct order (BLOCKING)
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java
📚 Learning: 2025-12-13T21:16:12.281Z
Learnt from: CR
Repo: metaschema-framework/metaschema PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-13T21:16:12.281Z
Learning: Constraints are documented in `website/content/specification/syntax/constraints.md`. When adding new constraint types, update the constraint type lists for `define-flag`, `define-field`, and `define-assembly`, and add a new section with syntax table and examples
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModelModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/metaschema/metaschema-bindings.yamldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/metapath/**/*.java : Metapath is an implementation of XPath 3.1. Use the XPath 3.1 specification (https://www.w3.org/TR/xpath-31/) and XPath Functions 3.1 (https://www.w3.org/TR/xpath-functions-31/) as authoritative reference when implementing new functions, fixing bugs, or understanding error handling. Raise clarification before making changes if implementation differs from spec.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathNamespace.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.java
📚 Learning: 2024-11-14T23:37:29.087Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/DateAdapter.java:41-48
Timestamp: 2024-11-14T23:37:29.087Z
Learning: In the `DateAdapter` class (`core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/DateAdapter.java`), using a regular expression for date validation is necessary because `DateTimeFormatter` does not properly parse dates with timezones in this context.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java
📚 Learning: 2024-11-14T18:19:40.200Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/IBooleanItem.java:86-104
Timestamp: 2024-11-14T18:19:40.200Z
Learning: In the file `core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/IBooleanItem.java`, the 3-step approach in the `cast` method is consistent with the XPath 3.1 specification.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java
📚 Learning: 2024-11-14T17:09:05.819Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/INonNegativeIntegerItem.java:116-124
Timestamp: 2024-11-14T17:09:05.819Z
Learning: In the interface `INonNegativeIntegerItem` (file `core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/INonNegativeIntegerItem.java`), the casting logic in the `cast` method is intentionally designed this way due to earlier discrepancies.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.java
🧬 Code graph analysis (10)
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.java (1)
core/src/main/java/gov/nist/secauto/metaschema/core/util/ObjectUtils.java (1)
ObjectUtils(18-135)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.java (5)
core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/StringAdapter.java (1)
StringAdapter(23-46)core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/TokenAdapter.java (1)
TokenAdapter(23-45)core/src/main/java/gov/nist/secauto/metaschema/core/datatype/markup/MarkupLine.java (1)
MarkupLine(32-114)core/src/main/java/gov/nist/secauto/metaschema/core/datatype/markup/MarkupLineAdapter.java (1)
MarkupLineAdapter(31-84)core/src/main/java/gov/nist/secauto/metaschema/core/util/ObjectUtils.java (1)
ObjectUtils(18-135)
databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java (1)
core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/StringAdapter.java (1)
StringAdapter(23-46)
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/MetaschemaModuleMetaschemaTest.java (1)
core/src/main/java/gov/nist/secauto/metaschema/core/util/ObjectUtils.java (1)
ObjectUtils(18-135)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.java (5)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.java (1)
MetaschemaAssembly(38-500)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.java (1)
MetaschemaAssembly(35-441)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.java (1)
MetaschemaAssembly(36-414)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.java (1)
MetaschemaAssembly(38-587)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.java (1)
MetaschemaAssembly(40-766)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.java (3)
core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/StringAdapter.java (1)
StringAdapter(23-46)core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/TokenAdapter.java (1)
TokenAdapter(23-45)core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/UriAdapter.java (1)
UriAdapter(27-66)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.java (5)
core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/StringAdapter.java (1)
StringAdapter(23-46)core/src/main/java/gov/nist/secauto/metaschema/core/datatype/adapter/TokenAdapter.java (1)
TokenAdapter(23-45)core/src/main/java/gov/nist/secauto/metaschema/core/datatype/markup/MarkupLine.java (1)
MarkupLine(32-114)core/src/main/java/gov/nist/secauto/metaschema/core/datatype/markup/MarkupLineAdapter.java (1)
MarkupLineAdapter(31-84)core/src/main/java/gov/nist/secauto/metaschema/core/util/ObjectUtils.java (1)
ObjectUtils(18-135)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java (3)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.java (1)
MetaschemaAssembly(22-151)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.java (1)
MetaschemaAssembly(27-168)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.java (1)
MetaschemaAssembly(35-441)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.java (3)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.java (1)
MetaschemaAssembly(16-53)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.java (1)
MetaschemaAssembly(22-151)databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java (1)
MetaschemaAssembly(27-168)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.java (1)
schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/json/impl/JsonSchemaHelper.java (1)
Choice(362-387)
...ava/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.java
Show resolved
Hide resolved
- Remove duplicate @nonnull import in ChoiceGroupTypeInfoImpl - Add Javadoc for buildSetterJavadoc override method - Update implementation plan status
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (1)
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java (1)
201-224: Add method-level Javadoc (BLOCKING).This public override method lacks method-level Javadoc. Per coding guidelines, all public methods require complete Javadoc documentation (BLOCKING). The implementation has specific behavior for documenting choice group getters with configurable item types and wildcard handling.
📝 Suggested Javadoc
Add Javadoc above line 201:
+ /** + * {@inheritDoc} + * <p> + * Generates Javadoc for choice group getter methods, including documentation + * of the configured item type (if binding configuration specifies one) and + * whether wildcard types are used. + */ @Override public void buildGetterJavadoc(@NonNull MethodSpec.Builder builder) {As per coding guidelines, all Javadoc must include @param, @return, @throws tags in the correct order.
🧹 Nitpick comments (1)
PRDs/20251224-codegen-quality/implementation-plan.md (1)
229-229: Explicit mention of choice-group-binding support would improve clarity.The PR objectives emphasize typed collection support for choice groups and a new
IChoiceGroupBindingConfiguration, but the plan document's mention of renaminggroup-astoGroupingAs(line 229) and creatingmetaschema-model-bindings.xml(line 204) is indirect. Consider adding a brief cross-reference to explicitly document how the bootstrap reorganization supports the new choice-group-binding feature.Also applies to: 204-204
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
PRDs/20251224-codegen-quality/implementation-plan.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java
🧰 Additional context used
📓 Path-based instructions (1)
**/*.java
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.java: All code changes must follow the Javadoc style guide (docs/javadoc-style-guide.md). New code requires 100% Javadoc coverage on public/protected members. Modified code must add/update Javadoc on any members touched. All Javadoc must include @param, @return, @throws tags in the correct order (BLOCKING)
Java target version must be Java 11. Use SpotBugs annotations (@nonnull, @nullable) for null safety in code.
Follow package naming convention gov.nist.secauto.metaschema.* for all Java packages
Follow Test-Driven Development (TDD) principles: write tests first before implementing functionality, verify tests fail with current implementation, implement minimal code to pass tests, then refactor while keeping tests green
Files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java
🧠 Learnings (10)
📓 Common learnings
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:56.361Z
Learning: In metaschema-testing, generated binding classes under gov.nist.secauto.metaschema.model.testing.testsuite are produced by metaschema-maven-plugin from YAML metaschema definitions. Javadoc issues in these generated classes should not be flagged for manual fixes; improvements are tracked and handled through code generator enhancements rather than manual edits to the generated source.
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/GenerationCase.java:74-80
Timestamp: 2025-12-24T21:22:07.082Z
Learning: Files in the package gov.nist.secauto.metaschema.model.testing.testsuite in metaschema-testing are generated binding classes created from Metaschema definitions. Documentation and style improvements for these files should be made at the code generator level (metaschema-maven-plugin) rather than by manually editing the generated code.
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/csrc/ns/metaschema/test_suite/_1_0/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:40.208Z
Learning: In metaschema-framework/metaschema-java, generated binding classes in package gov.nist.csrc.ns.metaschema.test_suite._1_0 (and similar generated binding packages) are pre-generated by metaschema-maven-plugin and checked into source control. Javadoc coverage issues in these generated classes should be tracked as code generator improvements rather than file-level issues, and improvements are deferred to generator enhancements.
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to core/metaschema/schema/xml/** : XMLBeans code is generated from XSD schemas in core/metaschema/schema/xml during Maven build. Generated sources are placed in target/generated-sources/
📚 Learning: 2025-12-24T21:21:40.208Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/csrc/ns/metaschema/test_suite/_1_0/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:40.208Z
Learning: In metaschema-framework/metaschema-java, generated binding classes in package gov.nist.csrc.ns.metaschema.test_suite._1_0 (and similar generated binding packages) are pre-generated by metaschema-maven-plugin and checked into source control. Javadoc coverage issues in these generated classes should be tracked as code generator improvements rather than file-level issues, and improvements are deferred to generator enhancements.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javaPRDs/20251224-codegen-quality/implementation-plan.md
📚 Learning: 2025-12-24T21:22:07.082Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/GenerationCase.java:74-80
Timestamp: 2025-12-24T21:22:07.082Z
Learning: Files in the package gov.nist.secauto.metaschema.model.testing.testsuite in metaschema-testing are generated binding classes created from Metaschema definitions. Documentation and style improvements for these files should be made at the code generator level (metaschema-maven-plugin) rather than by manually editing the generated code.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javaPRDs/20251224-codegen-quality/implementation-plan.md
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/*.java : Java target version must be Java 11. Use SpotBugs annotations (NonNull, Nullable) for null safety in code.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java
📚 Learning: 2024-11-14T05:15:46.640Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/impl/NonNegativeIntegerItemImpl.java:24-31
Timestamp: 2024-11-14T05:15:46.640Z
Learning: In the `NonNegativeIntegerItemImpl` class (`core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/atomic/impl/NonNegativeIntegerItemImpl.java`), the validation for non-negative values is performed in the `INonNegativeIntegerItem.valueOf(BigInteger)` method. Therefore, it's not necessary to duplicate this validation in the constructor of `NonNegativeIntegerItemImpl`.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: Applies to **/*.java : All code changes must follow the Javadoc style guide (docs/javadoc-style-guide.md). New code requires 100% Javadoc coverage on public/protected members. Modified code must add/update Javadoc on any members touched. All Javadoc must include param, return, throws tags in the correct order (BLOCKING)
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java
📚 Learning: 2025-12-19T04:01:37.408Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 550
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/format/JsonPointerFormatter.java:56-100
Timestamp: 2025-12-19T04:01:37.408Z
Learning: When overriding Java interface methods, rely on inherited Javadoc from the interface. Do not duplicate documentation in the implementing class unless there is implementation-specific behavior that warrants additional notes beyond the interface contract.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java
📚 Learning: 2025-12-24T21:21:56.361Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 567
File: metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/testsuite/Metaschema.java:41-47
Timestamp: 2025-12-24T21:21:56.361Z
Learning: In metaschema-testing, generated binding classes under gov.nist.secauto.metaschema.model.testing.testsuite are produced by metaschema-maven-plugin from YAML metaschema definitions. Javadoc issues in these generated classes should not be flagged for manual fixes; improvements are tracked and handled through code generator enhancements rather than manual edits to the generated source.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.javaPRDs/20251224-codegen-quality/implementation-plan.md
📚 Learning: 2025-12-27T16:52:04.509Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 590
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/DynamicContext.java:482-492
Timestamp: 2025-12-27T16:52:04.509Z
Learning: In Java, UncheckedIOException.getCause() is declared to return IOException. In methods that declare throws IOException, you can rethrow the underlying cause with throw e.getCause() where e is an UncheckedIOException, without a cast. Ensure the surrounding method signature includes throws IOException. This does not apply to other unchecked exceptions; verify that e is actually an UncheckedIOException before using this pattern.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java
📚 Learning: 2025-12-17T13:27:43.679Z
Learnt from: CR
Repo: metaschema-framework/metaschema-java PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-17T13:27:43.679Z
Learning: For larger initiatives requiring multiple PRs, use structured PRD (Product Requirements Document) approach. PRDs stored in PRDs/<YYYYMMDD>-<name>/ with PRD.md and implementation-plan.md. Target ≤50 files per PR, maximum 100 files per PR.
Applied to files:
PRDs/20251224-codegen-quality/implementation-plan.md
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Website
- GitHub Check: Code
🔇 Additional comments (4)
PRDs/20251224-codegen-quality/implementation-plan.md (1)
192-193: Clarify PR numbering and relationship to current PR #589.The plan references PR #584 as where PR 2 and PR 3 were combined, but the current review is for PR #589. Clarify which PR number corresponds to the completed databind bootstrap work and ensure the document accurately reflects the relationship between this planning document and the actual PR numbers.
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/ChoiceGroupTypeInfoImpl.java (3)
11-11: LGTM: Import additions are necessary and correctly placed.The new imports support the added functionality:
MethodSpecis used for Javadoc builder parameters in the new override methods.@NonNulland@Nullableannotations are applied for null-safety contracts.No duplicate imports detected.
Also applies to: 30-32
182-199: LGTM: Well-documented helper method with proper null-safety.The private helper method
getChoiceGroupBindingConfiguration()has complete Javadoc, appropriate@Nullablereturn type annotation, and straightforward null-safe logic for retrieving binding configuration.
226-257: LGTM: Javadoc present with {@inheritdoc} pattern.The method-level Javadoc appropriately uses
{@inheritDoc}with implementation-specific notes documenting the choice group setter behavior, configurable item types, and wildcard handling. The implementation correctly builds Javadoc content for generated setter methods.
953f1e3
into
metaschema-framework:develop
Summary
Add support for typed collection generation in choice groups, enabling
List<? extends CommonInterface>instead ofList<Object>when binding configuration specifies a common interface type.Key Changes
Choice Group Type Configuration:
choice-group-bindingelement support in binding configuration XMLIChoiceGroupBindingConfigurationinterface for choice group-specific settingsitem-typeto specify common interface/superclassuse-wildcardflag to enable bounded wildcard types (? extends Type)Code Generator Improvements:
ChoiceGroupTypeInfoImplgenerates wildcard types when configuredBootstrap Infrastructure:
pom-bootstrap-config.xml,pom-bootstrap-model.xml)databind/README.mddocumenting regeneration processTest plan
mvn clean install -PCI -PreleaseSummary by CodeRabbit
New Features
Improvements
Refactor
Documentation
✏️ Tip: You can customize this high-level summary in your review settings.