-
Notifications
You must be signed in to change notification settings - Fork 5
test: add regression test for choice validation (#613) #614
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test: add regression test for choice validation (#613) #614
Conversation
📝 WalkthroughWalkthroughAdds choice-deserialization tests, new choice/choice-group binding types and property-level binding configuration, SARIF help attribute keys, an IWritingContext.ObjectWriter API, many Javadoc additions, multiple JPMS module descriptors and CLI class visibility changes, and build/bootstrap phase adjustments. Changes
Sequence Diagram(s)(omitted) Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Organization UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🧰 Additional context used📓 Path-based instructions (1)**/*.java📄 CodeRabbit inference engine (CLAUDE.md)
Files:
🧠 Learnings (3)📓 Common learnings📚 Learning: 2025-12-19T04:01:37.408ZApplied 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 (1)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 PMD (7.19.0)metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.java[ERROR] Cannot load ruleset pmd/category/java/custom.xml: Cannot resolve rule/ruleset reference 'pmd/category/java/custom.xml'. Make sure the resource is a valid file or URL and is on the CLASSPATH. Use --debug (or a fine log level) to see the current classpath. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.java (1)
48-54: Optional: Consider adding standard Javadoc tags for completeness.While test methods don't require Javadoc (per coding guidelines for
**/*Test.java), when Javadoc IS provided, adding@paramand@throwstags would make the documentation more complete and maintainable:Example enhancement for line 48-54
/** * Test that providing one choice alternative satisfies the choice requirement. * <p> * The test metaschema defines a choice between fields x and y, both with * min-occurs=1. The example provides only y, which should satisfy the choice. * With required field validation enabled, this should NOT throw an error. + * + * @param formatName the format to test ("JSON" or "XML") + * @throws IOException if an I/O error occurs reading the test resources + * @throws MetaschemaException if metaschema processing fails */Also applies to: 78-80
📜 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/ChoiceValidationTest.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/ChoiceValidationTest.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/ChoiceValidationTest.java
🧠 Learnings (6)
📚 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/ChoiceValidationTest.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/ChoiceValidationTest.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/ChoiceValidationTest.java
📚 Learning: 2025-12-30T04:19:49.192Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
Applied to files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.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/ChoiceValidationTest.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/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.java
🧬 Code graph analysis (1)
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.java (2)
core/src/main/java/gov/nist/secauto/metaschema/core/model/MetaschemaException.java (1)
MetaschemaException(11-70)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: Website
- GitHub Check: Code
🔇 Additional comments (4)
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.java (4)
24-39: Excellent test class documentation.The class-level Javadoc clearly explains the purpose of these tests, the expected behavior of choice validation, and provides valuable traceability by referencing the related issues. This context will help future maintainers understand why these tests exist and what they're protecting against.
41-46: LGTM - Clear resource path definitions.The static constants are well-named and appropriately scoped for test use.
78-94: LGTM - Comprehensive validation test.This test appropriately verifies that choice validation works correctly alongside constraint validation, ensuring the two features don't conflict. The test structure and assertions are sound.
48-76: Test method is well-structured and compliant with all coding guidelines.The
Formatenum is accessible in the same package without requiring an explicit import. The test method has a descriptive name (testChoiceAlternativeSatisfiesRequirement) and uses JUnit 5 annotations correctly with@ParameterizedTestand@ValueSource. Per coding guidelines, test methods do not require Javadoc when using descriptive names; the present Javadoc is a helpful addition but not required. The test properly validates that providing one choice alternative satisfies the choice requirement without flagging other alternatives as missing, directly confirming the fix objective.
|
@coderabbitai Addressed the Javadoc nitpick in commit c4d62a9. Added @param and @throws tags to both test methods. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 1709 @david-waltermire Thank you for addressing the Javadoc concern! I've verified commit c4d62a9 and confirmed that both test methods now have proper @param and @throws tags with appropriate descriptions. The Javadoc is now complete and follows the style guide requirements. ✅ 🧠 Learnings used |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.java (1)
40-44: Consider correcting the @return description.The @return tag states "the namespace" but the method returns the property values (an array of strings). Consider updating to accurately describe what is returned.
🔎 Suggested correction
/** - * The values for the property's name and namespace. + * The values associated with this property. * - * @return the namespace + * @return the property values */databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.java (1)
20-22: Consider clarifying "default behavior" (optional).The Javadoc is acceptable, but the phrase "default behavior" could be more specific if there's a concrete default (e.g., "inherits the namespace form from the enclosing schema" or "defaults to QUALIFIED per XML Schema specification"). If the default is context-dependent or varies, the current wording is fine.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.java (1)
55-61: LGTM! Javadoc meets all required standards.The Javadoc for the new
_remarkfield and its accessors includes all required tags (@returnfor getter,@paramfor setter) in the correct order and achieves the 100% public member coverage needed for the maven-javadoc-plugin validation.The descriptions ("Get the field value", "Set the field value") are generic but adequate. As an optional enhancement, the code generator could produce more contextual descriptions (e.g., "Get the remark content" or reference the class-level description) by inferring semantics from the field value's role. Since this is generated code, any such improvement would be made at the generator level rather than in this file.
Also applies to: 117-135
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (79)
cli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.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/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/MetaschemaMetaConstraints.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/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmlmetaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javapom.xmlschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.java
💤 Files with no reviewable changes (1)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.java
✅ Files skipped from review due to trivial changes (26)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.java
- 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/Property.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/UseName.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.java
- schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.java
- cli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.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/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.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/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.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/METASCHEMA.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/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/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/FlagIndexHasKey.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/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.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/codegen/JavadocGenerationTest.java
🧠 Learnings (15)
📓 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/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-30T04:19:49.192Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.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/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.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/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/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/FlagIndexHasKey.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/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.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/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.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/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.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/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.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/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/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/FlagIndexHasKey.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/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.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/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.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/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.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/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.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/METASCHEMA.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/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/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/FlagIndexHasKey.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/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.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/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.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/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.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/METASCHEMA.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/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/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/FlagIndexHasKey.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/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.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:
pom.xmldatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.java
📚 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/resources/metaschema/no_description/metaschema.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.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/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.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/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.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/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/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/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.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/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.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/resources/metaschema/no_description/metaschema.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.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/ConstraintValueEnum.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.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/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.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/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/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/FlagIndexHasKey.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/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.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/test/resources/metaschema/no_description/metaschema.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:
metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.java
📚 Learning: 2025-12-30T04:37:04.944Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 0
File: :0-0
Timestamp: 2025-12-30T04:37:04.944Z
Learning: In metaschema-framework/metaschema-java, assert statements on loop variables (e.g., `assert item != null;`) are intentionally kept to satisfy Eclipse's null-safety analysis when the list elements have a `NonNull` contract, ensuring static analysis tools recognize the non-null guarantee for subsequent method calls.
Applied to files:
metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.java
📚 Learning: 2025-12-30T19:01:32.147Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:508-512
Timestamp: 2025-12-30T19:01:32.147Z
Learning: DefaultMetaschemaClassFactory.extendsIBoundObject logs a warning when a configured superinterface cannot be loaded from the classpath during code generation, advising users to add the class as a Maven plugin dependency to avoid redundant IBoundObject additions.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.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 **/*Test.java : Test methods do not require Javadoc if they use descriptive method names. Use JUnit 5 for testing with parallel execution enabled.
Applied to files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.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/annotations/ValueConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.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/MetapathContext.java
🧬 Code graph analysis (1)
databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.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
7aec3bb to
fdf4f4b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (2)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.java (1)
30-36: Pre-existing typo:@returntag says "prefix" instead of "URI".The
@returntag on line 33 incorrectly states "the prefix" but should reference the namespace URI since this is theuri()method.🔎 Proposed fix
/** * The Metapath namespace URI that is bound to the prefix. * - * @return the prefix + * @return the namespace URI */ @NonNull String uri();databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.java (1)
18-20: Javadoc addition looks good.The type-level Javadoc clearly describes the annotation's purpose and follows the required documentation standards.
Optional: Consider enhancing the documentation
Since this is a meta-annotation (can only be applied to other annotations due to
@Target(ANNOTATION_TYPE)), you might optionally enhance the Javadoc to clarify its usage pattern:/** - * Defines a name-value property for a Metaschema definition or instance. + * Defines a name-value property for a Metaschema definition or instance. + * <p> + * This annotation is used to annotate other annotations that define properties + * on {@link IAttributable} instances. */You could also consider adding a
@sincetag if that's part of your Javadoc style guide conventions.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (81)
cli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.javadatabind-metaschema/modulesdatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.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/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/MetaschemaMetaConstraints.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/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmlmetaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javapom.xmlschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.java
💤 Files with no reviewable changes (1)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.java
✅ Files skipped from review due to trivial changes (6)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.java
- metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.java
- databind-metaschema/modules
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.java
🚧 Files skipped from review as they are similar to previous changes (48)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.java
- databind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/UseName.java
- databind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java
- databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.java
- pom.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.java
- schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.java
- cli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
- databind/src/test/resources/metaschema/no_description/metaschema.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/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.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/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.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/JsonValueKeyFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.java
🧠 Learnings (14)
📓 Common learnings
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
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: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/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.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/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.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/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.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/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonValueKeyFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.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/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.java
📚 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/model/metaschema/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.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/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.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/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.java
📚 Learning: 2025-12-30T04:19:49.192Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
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/io/xml/IXmlParsingContext.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/FlagIndexHasKey.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/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.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/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.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/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.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/JsonValueKeyFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.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/binding/TargetedHasCardinalityConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.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/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.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/JsonValueKeyFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.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/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.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/MetaschemaMetaConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.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/model/metaschema/binding/TargetedExpectConstraint.java
📚 Learning: 2025-12-30T04:37:04.944Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 0
File: :0-0
Timestamp: 2025-12-30T04:37:04.944Z
Learning: In metaschema-framework/metaschema-java, assert statements on loop variables (e.g., `assert item != null;`) are intentionally kept to satisfy Eclipse's null-safety analysis when the list elements have a `NonNull` contract, ensuring static analysis tools recognize the non-null guarantee for subsequent method calls.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.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/annotations/NullJavaTypeAdapter.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/annotations/NullJavaTypeAdapter.java
📚 Learning: 2024-07-26T21:07:04.799Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 32
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/ISequence.java:268-270
Timestamp: 2024-07-26T21:07:04.799Z
Learning: The `of(T item)` method in `ISequence.java` has been updated to handle null inputs by returning an empty sequence, aligning its behavior with similar List methods. This change was made to enhance consistency and prevent potential NullPointerExceptions.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.java
📚 Learning: 2024-11-28T04:53:23.842Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 266
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/cst/DynamicFunctionCall.java:73-77
Timestamp: 2024-11-28T04:53:23.842Z
Learning: In the `DynamicFunctionCall` class in `core/src/main/java/gov/nist/secauto/metaschema/core/metapath/cst/DynamicFunctionCall.java`, it's acceptable to rely on `toAtomicItem()` to throw an exception if the specifier is not an `IAtomicItem`, rather than checking the instance type before calling `toAtomicItem()`.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.java
📚 Learning: 2025-12-30T19:01:32.147Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:508-512
Timestamp: 2025-12-30T19:01:32.147Z
Learning: DefaultMetaschemaClassFactory.extendsIBoundObject logs a warning when a configured superinterface cannot be loaded from the classpath during code generation, advising users to add the class as a Maven plugin dependency to avoid redundant IBoundObject additions.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.java
⏰ 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 (35)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.java (1)
20-22: LGTM!The added class-level Javadoc is clear, concise, and accurately describes the annotation's purpose. This aligns with the coding guidelines requiring Javadoc coverage on public members. The existing method-level Javadocs already include proper
@returntags.databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.java (1)
17-22: LGTM! Complete Javadoc documentation added.The class-level Javadoc is well-written, includes the required
@paramtag for the type parameter, and accurately describes the deserializer's purpose. This meets the coding guidelines requirement for 100% Javadoc coverage on public members.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.java (1)
19-22: LGTM! Clear interface documentation added.The Javadoc clearly describes the purpose of this interface and provides helpful examples of scalar data types. The documentation follows standard Javadoc conventions and improves code clarity.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.java (1)
35-37: LGTM! Class-level documentation added.The class-level Javadoc correctly describes the FlagReport binding class and aligns with the formalName specified in the @MetaschemaAssembly annotation. Since this is a generated binding class, the documentation improvement reflects enhancements made at the code generator level.
Based on learnings, generated binding classes in the metaschema project have documentation improvements handled through the code generator rather than manual edits.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.java (1)
17-19: LGTM! Class-level Javadoc added by generator.The class-level Javadoc appropriately describes the binding class and aligns with the formal name in the annotation. Since this is a generated binding class (as indicated by the file header), this improvement reflects a generator enhancement.
Based on learnings, any further Javadoc improvements for this generated class should be tracked at the code generator level rather than through manual edits to this file.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.java (1)
25-27: LGTM! Generated Javadoc follows expected pattern.The class-level Javadoc was added during code regeneration from the metaschema definition. The minimal documentation is appropriate for generated binding classes, where content is derived from the source metaschema.
Based on learnings, this is a generated binding class (as noted in line 6), and improvements to generated code are tracked at the metaschema-maven-plugin level rather than through manual edits.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.java (1)
41-43: Generated binding class with minimal Javadoc.The Javadoc additions provide basic descriptions for the new Choice and ChoiceGroup binding classes. Since this is generated code (per lines 5-6), more comprehensive documentation (including detailed descriptions, semantic context, and usage examples) should be implemented at the code generator level rather than through manual edits.
Based on learnings, Javadoc improvements for generated binding classes are tracked as generator enhancements.
Also applies to: 146-148, 252-254, 520-522, 873-875, 1331-1333, 1744-1746
databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.java (1)
21-23: LGTM! Interface Javadoc appropriately added.The file-level Javadoc clearly describes the interface purpose and follows the required documentation format. This satisfies the Javadoc coverage requirement for the interface.
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java (2)
314-317: LGTM!Good fix. Removing the redundant
<p>wrapper is correct sincetoHtml()already produces properly formatted HTML content. This prevents double-wrapping in the generated package-info Javadoc.
694-707: LGTM! Good fallback chain for Javadoc coverage.The three-tier fallback (description → formal name → definition name) ensures generated classes always have Javadoc documentation, aligning with the coding guidelines requiring 100% Javadoc coverage. The local variable extraction also improves readability.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.java (1)
66-69: LGTM! Javadoc addition improves documentation coverage.The Javadoc accurately describes the VoidItem class as a placeholder that throws unsupported operations, which aligns perfectly with its implementation. This satisfies the coding guideline requirement for documenting protected members.
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.java (4)
42-49: LGTM!The class-level Javadoc is comprehensive, clearly documenting the purpose of the class and its key capabilities (loading configuration from XML files, namespace-to-package mappings, and definition-specific binding configurations).
670-681: LGTM!The inner class is well-documented with clear purpose. The use of
ConcurrentHashMapfor all three config maps ensures thread-safety for concurrent access, which is appropriate given that the outer class also uses concurrent maps.
748-765: LGTM!The method has complete Javadoc with
@paramand@returntags. The implementation correctly handles the null case when the definition has no property bindings configured.
767-788: LGTM!The method has complete Javadoc with all required tags. The use of
computeIfAbsenton line 786 ensures thread-safe initialization of the nested map, which is the correct pattern forConcurrentHashMap.databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.java (1)
16-23: LGTM!The interface-level Javadoc clearly documents the purpose and responsibilities of the interface, explaining how Metaschema module elements are mapped to Java classes (package names, class names, base classes, and superinterfaces). This aligns with the coding guidelines requiring comprehensive Javadoc coverage.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.java (1)
16-18: LGTM!The added type-level Javadoc appropriately describes the annotation's purpose and follows the Javadoc style guide.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.java (1)
35-37: LGTM! Class-level Javadoc added for generated binding class.The added Javadoc correctly documents the purpose of this binding class and matches the formal name specified in the
@MetaschemaAssemblyannotation. Since this is generated code (as noted in the file header), this improvement reflects enhanced documentation coverage at the code generator level.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.java (1)
36-38: Documentation improvement looks good.The added class-level Javadoc correctly documents the generated binding class and follows proper format. Since this is generated code (lines 5-6), the documentation comes from the code generator, which appropriately improves Javadoc coverage for public classes.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java (1)
26-28: LGTM! Generated binding class now includes class-level Javadoc.The added Javadoc appropriately describes the binding class for the
flag-constraintsdefinition. Since this is a generated file (as noted in lines 5-6), this change reflects an improvement to the code generator that produces these binding classes.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonValueKeyFlag.java (1)
20-22: Verify that Javadoc was added through code regeneration.The added class-level Javadoc is well-formatted and matches the formal name in the annotation. However, since this is a generated file (line 6: "Do not edit - changes will be lost when regenerated"), please confirm that this Javadoc was added by improving the code generator and regenerating the binding classes, rather than by manually editing this file.
Based on learnings, documentation improvements for generated binding classes should be made at the code generator level rather than through manual edits to the generated source.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.java (1)
36-38: LGTM! Class-level Javadoc addition improves documentation.The added Javadoc comment appropriately describes this binding class and aligns with the formal name in the annotation. Since this is a generated file (as noted in lines 5-6), this change correctly comes from generator-level improvements rather than manual edits.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.java (2)
117-125: LGTM - Javadoc properly formatted for generated code.The Javadoc includes the required
@returntag and follows the correct format. The generic description is appropriate for generated binding code.
127-135: LGTM - Javadoc properly formatted for generated code.The Javadoc includes the required
@paramtag with correct indentation and follows the proper format. The generic description is appropriate for generated binding code.databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.java (2)
16-21: LGTM: Interface Javadoc is complete.The interface-level Javadoc clearly describes the purpose and documents the type parameter appropriately.
46-82: LGTM: ObjectWriter interface is well-designed and fully documented.The new functional interface follows best practices:
- Complete Javadoc with all required tags in the correct order (@param, @return, @throws)
- Proper use of
@NonNullannotations for null safety- The
andThen()composition method uses correct contravariant type bounds (? super T)- Implementation follows the standard Java composition pattern (similar to
Function.andThen())As per coding guidelines, all public members have 100% Javadoc coverage.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.java (4)
446-448: Javadoc added for generated binding class.The minimal Javadoc comment is appropriate for generated binding code. Since this file is generated by metaschema-maven-plugin (per lines 5-6), any further documentation improvements should be tracked at the code generator level.
642-644: LGTM - Javadoc added for nested binding class.The Javadoc addition follows the same pattern as the parent Scope class and is appropriate for generated binding code.
764-766: LGTM - Javadoc consistent with other nested binding classes.The Javadoc addition maintains consistency across all nested binding classes within Scope.
880-882: LGTM - Completes Javadoc coverage for nested binding classes.This completes the consistent Javadoc pattern across all three nested binding classes (Assembly, Field, Flag) within the Scope class.
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.java (4)
11-11: LGTM: Import addition supports new Javadoc builder methods.The import is correctly added to support the new
buildGetterJavadocandbuildSetterJavadocmethods.
77-80: LGTM: Field Javadoc builder correctly implemented.The method generates appropriate Javadoc for field values. Override methods rely on inherited interface documentation per project standards.
82-85: LGTM: Getter Javadoc builder includes required @return tag.The generated Javadoc correctly includes the @return tag as required by the coding guidelines for getter methods.
87-90: LGTM: Setter Javadoc builder includes required @param tag.The generated Javadoc correctly includes the @param tag as required by the coding guidelines for setter methods. The indentation aligns the parameter description in the rendered output.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.java (1)
400-554: LGTM! Generated binding class follows the correct pattern.The new
DefinitionContextinner class is properly structured and includes complete Javadoc coverage on all public/protected members with appropriate@paramand@returntags. The implementation follows the same pattern as the existingImportclass and correctly uses binding annotations, null-safety annotations, and theIBoundObjectinterface.Since this is a generated file (marked "Do not edit - changes will be lost when regenerated" at line 6), the code structure and documentation are appropriate for generated binding classes.
...ain/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.java
Show resolved
Hide resolved
...t/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.java
Show resolved
Hide resolved
fdf4f4b to
3608e89
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (5)
databind-metaschema/src/main/java/module-info.java (1)
12-12: Consider removing redundantjava.baserequirement.The
requires java.basestatement is implicit in all Java modules and is conventionally omitted. While not incorrect, removing it aligns with standard practice.🔎 Suggested change
- requires java.base; -databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.java (1)
17-19: Good documentation addition!The Javadoc successfully documents the annotation type and achieves the required coverage. The description is clear and concise.
For enhanced clarity, consider optionally expanding the description to provide more context, such as:
- Briefly explaining what "assembly definitions" means in the Metaschema context
- Mentioning the available constraint types (index, unique, cardinality)
- Adding a usage example or @see reference to related classes
Optional enhancement example
/** - * Defines constraints that apply to assembly definitions. + * Defines constraints that apply to Metaschema assembly definitions. + * <p> + * This annotation supports three types of constraints: + * <ul> + * <li>Index constraints ({@link #index()}) for efficient lookup</li> + * <li>Unique constraints ({@link #unique()}) to enforce uniqueness</li> + * <li>Cardinality constraints ({@link #cardinality()}) to control occurrence</li> + * </ul> */databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.java (1)
50-56: Field Javadoc successfully generated.The field-level Javadoc demonstrates that the generator improvements mentioned in the PR objectives (fixing
FieldValueTypeInfoImplto produce Javadoc for field value getters/setters) are working correctly.The description "The field value" is somewhat generic. For future generator enhancements, consider producing more contextual descriptions based on the field name (e.g., "A remark providing additional context for this allowed value enumeration"). This is a nice-to-have improvement at the code generator level.
Based on learnings, since this is a generated binding class, improvements should be made at the metaschema-maven-plugin level rather than manually editing this file.
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java (1)
694-707: Excellent fallback mechanism for missing descriptions.The addition of fallback Javadoc logic ensures that generated classes always have meaningful documentation, even when source Metaschema definitions lack descriptions. The fallback hierarchy (description → formal name → definition name) is well-designed and aligns with the PR's goal of comprehensive Javadoc coverage.
Optional: Add @nonnull annotation for consistency
For consistency with the codebase's null-safety practices, consider annotating the
definitionvariable:-IModelDefinition definition = typeInfo.getDefinition(); +@NonNull IModelDefinition definition = typeInfo.getDefinition();This makes the null-safety contract explicit, especially since
typeInfois already@NonNullandgetDefinition()should return a non-null value.metaschema-testing/src/main/java/module-info.java (1)
6-8: Consider expanding the module documentation.The module Javadoc is present and describes the basic purpose, but could benefit from additional detail about what types of testing support are provided (e.g., test utilities, test suite infrastructure, constraint validation testing).
💡 Example of expanded documentation
/** - * Provides unit testing support for Metaschema modules and constraints. + * Provides unit testing support for Metaschema modules and constraints. + * <p> + * This module exports test utilities and a test suite framework for validating + * Metaschema-based data binding, constraint enforcement, and serialization/deserialization + * operations. Generated binding classes in the testsuite package support reflection-based + * test execution. */
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (96)
CLAUDE.mdcli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.javacli-processor/src/main/java/module-info.javadatabind-metaschema/modulesdatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind-metaschema/src/main/java/module-info.javadatabind/pom-bootstrap-config.xmldatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.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/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/MetaschemaMetaConstraints.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/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmlmetaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javametaschema-cli/src/main/java/module-info.javametaschema-maven-plugin/pom.xmlmetaschema-maven-plugin/src/main/java/module-info.javametaschema-testing/pom-bootstrap.xmlmetaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javametaschema-testing/src/main/java/module-info.javapom.xmlschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.java
💤 Files with no reviewable changes (1)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.java
✅ Files skipped from review due to trivial changes (13)
- databind-metaschema/modules
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.java
🚧 Files skipped from review as they are similar to previous changes (37)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.java
- pom.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.java
- cli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.java
- databind/src/test/resources/metaschema/no_description/metaschema.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.java
- schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.java
- metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.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:
metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javametaschema-cli/src/main/java/module-info.javacli-processor/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.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/JsonValueKeyFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javametaschema-maven-plugin/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.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/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.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/codegen/JavadocGenerationTest.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.java
🧠 Learnings (20)
📓 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/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: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
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.
📚 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:
metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javadatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javametaschema-cli/src/main/java/module-info.javametaschema-testing/pom-bootstrap.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javaCLAUDE.mddatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.javametaschema-maven-plugin/pom.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/pom-bootstrap-config.xmldatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javametaschema-maven-plugin/src/main/java/module-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/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.java
📚 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:
metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javadatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javametaschema-cli/src/main/java/module-info.javametaschema-testing/pom-bootstrap.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.javaCLAUDE.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.javametaschema-maven-plugin/pom.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/pom-bootstrap-config.xmldatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javametaschema-maven-plugin/src/main/java/module-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/AssemblyReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.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/MetaschemaModuleConstraints.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:
metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javametaschema-testing/src/main/java/module-info.javametaschema-cli/src/main/java/module-info.javadatabind-metaschema/src/main/java/module-info.javametaschema-maven-plugin/pom.xmlmetaschema-maven-plugin/src/main/java/module-info.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:
metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javametaschema-cli/src/main/java/module-info.javacli-processor/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.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/JsonValueKeyFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javametaschema-maven-plugin/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.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/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.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:
metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javametaschema-cli/src/main/java/module-info.javacli-processor/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.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/FieldReference.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.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/JsonValueKeyFlag.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javametaschema-maven-plugin/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.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/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.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/pom-bootstrap-model.xmlmetaschema-testing/pom-bootstrap.xmlCLAUDE.mdmetaschema-maven-plugin/pom.xmldatabind/pom-bootstrap-config.xmlmetaschema-maven-plugin/src/main/java/module-info.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/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.javametaschema-testing/pom-bootstrap.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javaCLAUDE.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.javametaschema-maven-plugin/pom.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/pom-bootstrap-config.xmldatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javametaschema-maven-plugin/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.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/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.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-model.xmlCLAUDE.mddatabind/pom-bootstrap-config.xml
📚 Learning: 2025-12-30T04:19:49.192Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
Applied to files:
databind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javametaschema-testing/pom-bootstrap.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.javaCLAUDE.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind-metaschema/src/main/java/module-info.javadatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javametaschema-maven-plugin/pom.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/pom-bootstrap-config.xmldatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javametaschema-maven-plugin/src/main/java/module-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/AssemblyReference.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/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.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.xmlmetaschema-testing/pom-bootstrap.xmlCLAUDE.mdmetaschema-maven-plugin/src/main/java/module-info.java
📚 Learning: 2025-12-30T19:01:32.147Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:508-512
Timestamp: 2025-12-30T19:01:32.147Z
Learning: DefaultMetaschemaClassFactory.extendsIBoundObject logs a warning when a configured superinterface cannot be loaded from the classpath during code generation, advising users to add the class as a Maven plugin dependency to avoid redundant IBoundObject additions.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.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/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.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 **/*Test.java : Test methods do not require Javadoc if they use descriptive method names. Use JUnit 5 for testing with parallel execution enabled.
Applied to files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.java
📚 Learning: 2025-12-30T04:37:04.944Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 0
File: :0-0
Timestamp: 2025-12-30T04:37:04.944Z
Learning: In metaschema-framework/metaschema-java, assert statements on loop variables (e.g., `assert item != null;`) are intentionally kept to satisfy Eclipse's null-safety analysis when the list elements have a `NonNull` contract, ensuring static analysis tools recognize the non-null guarantee for subsequent method calls.
Applied to files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.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/annotations/NullJavaTypeAdapter.java
📚 Learning: 2024-07-26T21:07:04.799Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 32
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/ISequence.java:268-270
Timestamp: 2024-07-26T21:07:04.799Z
Learning: The `of(T item)` method in `ISequence.java` has been updated to handle null inputs by returning an empty sequence, aligning its behavior with similar List methods. This change was made to enhance consistency and prevent potential NullPointerExceptions.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.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/annotations/NullJavaTypeAdapter.java
📚 Learning: 2024-11-28T04:53:23.842Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 266
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/cst/DynamicFunctionCall.java:73-77
Timestamp: 2024-11-28T04:53:23.842Z
Learning: In the `DynamicFunctionCall` class in `core/src/main/java/gov/nist/secauto/metaschema/core/metapath/cst/DynamicFunctionCall.java`, it's acceptable to rely on `toAtomicItem()` to throw an exception if the specifier is not an `IAtomicItem`, rather than checking the instance type before calling `toAtomicItem()`.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.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/annotations/AssemblyConstraints.java
🧬 Code graph analysis (2)
databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.java (1)
core/src/main/java/gov/nist/secauto/metaschema/core/util/ObjectUtils.java (1)
ObjectUtils(18-135)
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.java (2)
core/src/main/java/gov/nist/secauto/metaschema/core/model/MetaschemaException.java (1)
MetaschemaException(11-70)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
3608e89 to
3caa997
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (5)
metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.java (1)
6-8: LGTM! Package documentation is clear and follows conventions.The package-level Javadoc correctly describes the testing utilities. The documentation is concise and appropriate for a package-info file.
Optionally, you could expand this to briefly mention key components (e.g., "Provides testing utilities for Metaschema modules and constraints, including test case definitions and validation helpers.") if you want to give readers a quick preview of what's inside.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.java (1)
19-21: Consider enhancing the annotation-level Javadoc.The added Javadoc meets the basic requirement, but could be more descriptive to help users understand when and how to use this annotation. Consider adding:
- A brief explanation of what a Metaschema module represents
- Guidance on which classes should be annotated (e.g., classes implementing
IBoundModule)- A usage example or constraints
📝 Example enhanced Javadoc
/** - * Marks a class as a Metaschema module definition. + * Marks a class as a Metaschema module definition, indicating it provides metadata + * about a Metaschema module including its defined global fields, assemblies, and imports. + * <p> + * Classes annotated with this annotation typically implement {@link IBoundModule} and serve + * as the entry point for binding-based Metaschema module metadata. + * + * @see IBoundModule */databind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.java (1)
267-278: Approve the deprecation suppression; consider converting to Javadoc format.The addition of
"deprecation"to the suppression list is appropriate, asfinalize()has been deprecated since Java 9. The security pattern (empty final finalizer in a non-final class with a throwing constructor) correctly implements SEI CERT Rule OBJ-11 to prevent finalizer attacks.However, the coding guidelines require Javadoc format for all public/protected members. Consider converting the block comment to proper Javadoc:
- /** - * Used to prevent finalizer attacks as recommended in SEI CERT Rule OBJ-11. - * This is needed because the class is non-final and the constructor can throw. - */ + /** + * Empty finalizer to prevent finalizer attacks per SEI CERT Rule OBJ-11. + * <p> + * This is required because the class is non-final and the constructor can throw + * an exception. An attacker could otherwise subclass and override finalize() + * to gain access to a partially-constructed instance. + */ @Override @SuppressWarnings({ "deprecation", "PMD.EmptyFinalizer", "checkstyle:NoFinalizer" }) protected final void finalize() { // Do nothing }As per coding guidelines, modified code should include proper Javadoc on touched members, and this aligns with the PR's goal of comprehensive Javadoc improvements.
databind-metaschema/src/main/java/module-info.java (1)
10-27: Module structure is well-organized and correct.The module declaration properly defines dependencies, exports, and reflection access:
- Transitive dependencies ensure consumers get access to core Metaschema APIs
- Static annotation dependencies support null-safety analysis
- The opened
org.schemastore.json.sarif.x210package appropriately provides reflection access to generated SARIF binding classesMinor nitpick: Line 12's
requires java.base;is redundant (implicitly included in all modules), though being explicit is harmless.metaschema-testing/src/main/java/module-info.java (1)
6-8: Expand module-level Javadoc for better API documentation.The module-level Javadoc is brief. Consider expanding it to describe:
- The purpose and scope of the testing module
- What the exported packages provide (e.g.,
gov.nist.secauto.metaschema.model.testingfor utilities,testsuitefor test suite bindings)- Typical usage patterns for consumers of this module
- Key dependencies and why they are transitive
As per coding guidelines, new code requires comprehensive Javadoc coverage, marked as BLOCKING.
🔎 Example enhanced Javadoc
/** - * Provides unit testing support for Metaschema modules and constraints. + * Provides unit testing support for Metaschema modules and constraints. + * <p> + * This module exports testing utilities and test suite binding classes + * for validating Metaschema definitions, constraints, and data binding + * behavior. The main exports are: + * <ul> + * <li>{@code gov.nist.secauto.metaschema.model.testing} - Core testing + * utilities and helper classes</li> + * <li>{@code gov.nist.secauto.metaschema.model.testing.testsuite} - + * Generated binding classes for test suite definitions</li> + * </ul> + * <p> + * This module transitively requires {@code gov.nist.secauto.metaschema.core} + * and {@code gov.nist.secauto.metaschema.databind}, exposing their types + * in the testing API. JUnit 5 is also a transitive dependency to support + * test execution. */
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (101)
CLAUDE.mdcli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.javacli-processor/src/main/java/module-info.javadatabind-metaschema/modulesdatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind-metaschema/src/main/java/module-info.javadatabind/pom-bootstrap-config.xmldatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.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/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/MetaschemaMetaConstraints.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/module-info.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmlmetaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javametaschema-cli/src/main/java/module-info.javametaschema-maven-plugin/pom.xmlmetaschema-maven-plugin/src/main/java/module-info.javametaschema-testing/pom-bootstrap.xmlmetaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javametaschema-testing/src/main/java/module-info.javapom.xmlschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.javaschemagen/src/test/java/gov/nist/secauto/metaschema/schemagen/AbstractSchemaGeneratorTestSuite.java
💤 Files with no reviewable changes (1)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.java
✅ Files skipped from review due to trivial changes (7)
- schemagen/src/test/java/gov/nist/secauto/metaschema/schemagen/AbstractSchemaGeneratorTestSuite.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.java
- schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.java
- databind-metaschema/modules
🚧 Files skipped from review as they are similar to previous changes (60)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.java
- databind/pom-bootstrap-model.xml
- databind/pom-bootstrap-config.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.java
- metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.java
- databind/src/test/resources/metaschema/no_description/metaschema.xml
- databind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.java
- metaschema-maven-plugin/pom.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.java
- metaschema-testing/pom-bootstrap.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.java
- metaschema-maven-plugin/src/main/java/module-info.java
- pom.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.java
- databind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.java
- cli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.java
- metaschema-cli/src/main/java/module-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.java
- cli-processor/src/main/java/module-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.java
- databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonValueKeyFlag.java
- CLAUDE.md
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.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/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javametaschema-testing/src/main/java/module-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.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/InlineDefineAssembly.javadatabind/src/main/java/module-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.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/Any.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.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/MetaschemaMetaConstraints.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/FieldReference.java
🧠 Learnings (14)
📓 Common learnings
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
📚 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/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javametaschema-testing/src/main/java/module-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.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/InlineDefineAssembly.javadatabind/src/main/java/module-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.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/Any.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.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/MetaschemaMetaConstraints.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/FieldReference.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/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.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/InlineDefineAssembly.javadatabind/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.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/Any.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.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/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.java
📚 Learning: 2025-12-30T04:19:49.192Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
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/MetapathContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.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/InlineDefineAssembly.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.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/TargetedAllowedValuesConstraint.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/MetaschemaMetaConstraints.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/FieldReference.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/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.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/InlineDefineAssembly.javadatabind/src/main/java/module-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.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/TargetedAllowedValuesConstraint.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/MetaschemaMetaConstraints.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/FieldReference.java
📚 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/model/metaschema/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.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/InlineDefineAssembly.javadatabind/src/main/java/module-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.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/Any.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/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.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/binding/InlineDefineField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.javametaschema-testing/src/main/java/module-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.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/InlineDefineAssembly.javadatabind/src/main/java/module-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.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/Any.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.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/MetaschemaMetaConstraints.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/FieldReference.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/MetapathContext.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:
metaschema-testing/src/main/java/module-info.javametaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javadatabind-metaschema/src/main/java/module-info.java
📚 Learning: 2025-12-30T19:01:32.147Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:508-512
Timestamp: 2025-12-30T19:01:32.147Z
Learning: DefaultMetaschemaClassFactory.extendsIBoundObject logs a warning when a configured superinterface cannot be loaded from the classpath during code generation, advising users to add the class as a Maven plugin dependency to avoid redundant IBoundObject additions.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.java
📚 Learning: 2025-12-30T04:37:04.944Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 0
File: :0-0
Timestamp: 2025-12-30T04:37:04.944Z
Learning: In metaschema-framework/metaschema-java, assert statements on loop variables (e.g., `assert item != null;`) are intentionally kept to satisfy Eclipse's null-safety analysis when the list elements have a `NonNull` contract, ensuring static analysis tools recognize the non-null guarantee for subsequent method calls.
Applied to files:
metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.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/annotations/NullJavaTypeAdapter.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/annotations/NullJavaTypeAdapter.java
📚 Learning: 2024-11-28T04:53:23.842Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 266
File: core/src/main/java/gov/nist/secauto/metaschema/core/metapath/cst/DynamicFunctionCall.java:73-77
Timestamp: 2024-11-28T04:53:23.842Z
Learning: In the `DynamicFunctionCall` class in `core/src/main/java/gov/nist/secauto/metaschema/core/metapath/cst/DynamicFunctionCall.java`, it's acceptable to rely on `toAtomicItem()` to throw an exception if the specifier is not an `IAtomicItem`, rather than checking the instance type before calling `toAtomicItem()`.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.java
⏰ 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
...schema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.java
Show resolved
Hide resolved
3caa997 to
91d4964
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
databind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.java (1)
267-278: Convert the comment to Javadoc format.The annotation on this method was modified, and per the coding guidelines, "Modified code must add/update Javadoc on any members touched." The existing comment (lines 267-269) explains the security rationale well, but it should be converted to Javadoc format for consistency and documentation generation.
The addition of "deprecation" to the suppression list is correct and necessary since
finalize()has been deprecated since Java 9.As per coding guidelines.
🔎 Proposed fix to convert comment to Javadoc
- /** - * Used to prevent finalizer attacks as recommended in SEI CERT Rule OBJ-11. - * This is needed because the class is non-final and the constructor can throw. - */ + /** + * Empty finalizer to prevent finalizer attacks. + * <p> + * This method is provided to prevent finalizer attacks as recommended in + * SEI CERT Rule OBJ-11. This is necessary because the class is non-final + * and the constructor can throw an exception. + */ @Override @SuppressWarnings({ "deprecation", "PMD.EmptyFinalizer", "checkstyle:NoFinalizer" }) protected final void finalize() { // Do nothing }
🧹 Nitpick comments (7)
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.java (1)
12-14: LGTM! Type-level Javadoc added successfully.The added interface documentation is clear and concise, properly describing the purpose of
IGeneratedDefinitionClass. This satisfies the repository's Javadoc coverage requirements.Optionally, you could enhance this with additional context or cross-references:
/** * Represents a generated Java class for a Metaschema definition. + * + * @see IGeneratedClass + * @see IModelDefinition */However, the current documentation is appropriate for this simple interface.
As per coding guidelines, public interfaces require Javadoc coverage.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.java (1)
40-46: Consider correcting the @return tag description.The
@returntag on line 43 states "the namespace" but should describe the values array. Consider updating it to "@return the property values" or "@return the values".🔎 Proposed fix
/** * The values for the property's name and namespace. * - * @return the namespace + * @return the property values */cli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.java (2)
21-21: Consider adding@NonNullannotation for consistency.Since all constructors enforce
@NonNullon thecodeparameter and the field isfinal, adding@NonNullto the field declaration would improve consistency with the constructor parameters and strengthen static null-safety analysis.🔎 Proposed addition
+ @NonNull private final ExitCode exitCode;
14-14: Fix typo in class-level Javadoc.The word "short-circut" should be "short-circuit".
🔎 Proposed fix
- * For use in commands to short-circut command execution. + * For use in commands to short-circuit command execution.databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java (1)
1484-1490: Generated Javadoc meets requirements; consider enhancing description at generator level.The field declaration and Javadoc are correctly formatted and meet the coding guidelines. The
@BoundFieldValueannotation and field are properly defined.The Javadoc description "The field value" is generic. Since the class-level Javadoc describes this as a "fully qualified Java type for collection items," consider updating the generator to produce more specific field documentation like "The fully qualified Java type name for collection items."
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java (1)
694-707: LGTM! Robust fallback mechanism for missing descriptions.The three-tier fallback logic ensures that generated classes always have Javadoc, even when description metadata is missing:
- Uses description when available (existing behavior)
- Falls back to effective formal name
- Last resort uses definition name with descriptive template
The null handling is correct, and all code paths produce valid Javadoc. This improves the robustness of the code generator as intended by the PR objectives.
Optional: Consider enriching the formal name fallback format
The formal name fallback (line 702) produces minimal Javadoc like
"Metadata."which, while valid, might be less informative than the last-resort format. If desired, you could use a similar template format:if (formalName != null) { - builder.addJavadoc("$L.", formalName); + builder.addJavadoc("A binding class for the $L definition.", formalName); } else {However, the current minimal format may be preferable to keep the formal name clean and unmodified.
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.java (1)
77-90: LGTM! Implements Javadoc generation hooks.The three override methods appropriately implement Javadoc generation for field value access. The generated Javadoc content is simple but functional for the generic field value concept.
As per coding guidelines, these methods inherit documentation from the interface they override.
💡 Optional future enhancement: Enrich generated Javadoc
Consider enhancing the generated Javadoc to incorporate metaschema-specific information when available:
- Include the actual value key name from the definition
- Reference the data type adapter
- Include default value information if present
For example:
@Override public void buildGetterJavadoc(@NonNull MethodSpec.Builder builder) { - builder.addJavadoc("Get the field value.\n\n@return the value"); + IFieldDefinition def = getParentTypeInfo().getDefinition(); + builder.addJavadoc("Get the $L.\n\n@return the value", def.getEffectiveJsonValueKeyName()); }This would make the generated code's Javadoc more specific and informative, though the current generic implementation is acceptable for field values.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (101)
CLAUDE.mdcli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.javacli-processor/src/main/java/module-info.javadatabind-metaschema/modulesdatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind-metaschema/src/main/java/module-info.javadatabind/pom-bootstrap-config.xmldatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.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/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/MetaschemaMetaConstraints.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/module-info.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmlmetaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javametaschema-cli/src/main/java/module-info.javametaschema-maven-plugin/pom.xmlmetaschema-maven-plugin/src/main/java/module-info.javametaschema-testing/pom-bootstrap.xmlmetaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javametaschema-testing/src/main/java/module-info.javapom.xmlschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.javaschemagen/src/test/java/gov/nist/secauto/metaschema/schemagen/AbstractSchemaGeneratorTestSuite.java
💤 Files with no reviewable changes (1)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.java
✅ Files skipped from review due to trivial changes (13)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.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/UseName.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.java
- metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.java
🚧 Files skipped from review as they are similar to previous changes (52)
- metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.java
- metaschema-testing/pom-bootstrap.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/JsonValueKeyFlag.java
- pom.xml
- metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.java
- schemagen/src/test/java/gov/nist/secauto/metaschema/schemagen/AbstractSchemaGeneratorTestSuite.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.java
- databind/pom-bootstrap-config.xml
- CLAUDE.md
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.java
- metaschema-maven-plugin/pom.xml
- databind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.java
- metaschema-maven-plugin/src/main/java/module-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.java
- databind/pom-bootstrap-model.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.java
- schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.java
- cli-processor/src/main/java/module-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.java
- metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.java
- databind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.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:
schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.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/MetaschemaMetaConstraints.javacli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javametaschema-cli/src/main/java/module-info.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.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/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.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/codegen/JavadocGenerationTest.java
🧠 Learnings (14)
📓 Common learnings
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
📚 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:
schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.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/MetaschemaMetaConstraints.javacli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javametaschema-cli/src/main/java/module-info.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.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/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.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:
schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.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/MetaschemaMetaConstraints.javacli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.javadatabind/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javametaschema-cli/src/main/java/module-info.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.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/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.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-metaschema/modulesdatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.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/TargetedMatchesConstraint.javadatabind/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.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/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 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-metaschema/modulesdatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.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/TargetedMatchesConstraint.javadatabind/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javametaschema-cli/src/main/java/module-info.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmlschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.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/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.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-metaschema/modulesdatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.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/TargetedMatchesConstraint.javadatabind/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javametaschema-cli/src/main/java/module-info.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2025-12-30T04:19:49.192Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
Applied to files:
databind-metaschema/modulesdatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.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/TargetedMatchesConstraint.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind-metaschema/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javametaschema-testing/src/main/java/module-info.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.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/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java
📚 Learning: 2024-11-15T20:00:59.203Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 245
File: cli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/impl/DefaultExtraArgument.java:15-15
Timestamp: 2024-11-15T20:00:59.203Z
Learning: The `DefaultExtraArgument` class in `cli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/impl/DefaultExtraArgument.java` is currently a stub for future exploration.
Applied to files:
cli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.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:
databind-metaschema/src/main/java/module-info.javametaschema-cli/src/main/java/module-info.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.java
📚 Learning: 2025-12-30T19:01:32.147Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:508-512
Timestamp: 2025-12-30T19:01:32.147Z
Learning: DefaultMetaschemaClassFactory.extendsIBoundObject logs a warning when a configured superinterface cannot be loaded from the classpath during code generation, advising users to add the class as a Maven plugin dependency to avoid redundant IBoundObject additions.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.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/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.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 **/*Test.java : Test methods do not require Javadoc if they use descriptive method names. Use JUnit 5 for testing with parallel execution enabled.
Applied to files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.java
📚 Learning: 2025-12-30T04:37:04.944Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 0
File: :0-0
Timestamp: 2025-12-30T04:37:04.944Z
Learning: In metaschema-framework/metaschema-java, assert statements on loop variables (e.g., `assert item != null;`) are intentionally kept to satisfy Eclipse's null-safety analysis when the list elements have a `NonNull` contract, ensuring static analysis tools recognize the non-null guarantee for subsequent method calls.
Applied to files:
databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.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/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.java
🧬 Code graph analysis (1)
metaschema-cli/src/main/java/module-info.java (6)
metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.java (1)
ValidateModuleCommand(46-129)metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.java (1)
GenerateSchemaCommand(47-171)metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.java (1)
GenerateDiagramCommand(44-152)metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.java (1)
ValidateContentUsingModuleCommand(49-153)metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.java (1)
ConvertContentUsingModuleCommand(43-131)metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/metapath/MetapathCommand.java (1)
MetapathCommand(14-35)
⏰ 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). (1)
- GitHub Check: Code
…#613) fix: run formatter after code generation in bootstrap POMs The formatter and license plugins were running before code generation in the generate-sources phase. Changed to process-sources phase so they run after code generation completes.
91d4964 to
191cb81
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (5)
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.java (1)
8-23: Javadoc coverage complete and meets requirements.The added Javadoc provides 100% coverage as required by the coding guidelines. The documentation is clear and appropriate for this simple enum.
As per coding guidelines, the mandatory Javadoc coverage requirement is satisfied.
Optional enhancement: Consider adding more context to help users understand when to use each constant. For example, explain what "namespace-qualified" means in the Metaschema binding context, clarify what the "default behavior" is for UNSET, or provide usage examples in the type-level documentation.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.java (1)
55-135: Javadoc successfully added for field value accessors.The code generator now produces Javadoc for the field value and its getter/setter methods, meeting the 100% coverage requirement with proper
@paramand@returntags. This addresses the PR objective to fixFieldValueTypeInfoImplJavadoc generation.The Javadoc descriptions are generic ("The field value", "Get the field value", "Set the field value"). While functionally correct for generated code, consider enhancing the code generator in a future iteration to produce more descriptive Javadoc similar to the flag accessors (e.g., "A remark providing explanatory or helpful information in MarkupMultiline format").
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.java (1)
24-26: Consider a more descriptive class-level Javadoc.The current Javadoc "Property." simply repeats the class name without explaining the class's purpose or how it fits within the metaschema binding model. A more informative description would explain what a property represents (e.g., a name-value pair with optional namespace).
Since this is a generated class (lines 5-6), improvements should be addressed at the code generator level (metaschema-maven-plugin) to ensure all regenerated classes benefit from enhanced documentation.
Based on learnings, generated binding classes should have documentation improvements tracked at the generator level.
cli-processor/src/main/java/module-info.java (1)
1-35: Module descriptor is well-structured with complete Javadoc.The module descriptor correctly:
- Follows the package naming convention
gov.nist.secauto.metaschema.*- Declares transitive dependency on core module for consumers
- Uses static requires for annotation-only dependencies
- Includes module-level Javadoc with
@usestag documenting the service loader patternConsider the necessity of exporting the impl package.
Line 31 exports
gov.nist.secauto.metaschema.cli.processor.command.impl. Typically,implpackages are considered internal implementation details and not part of the public API. If external code doesn't need to directly access or extend classes in this package, consider whether this export is necessary.If the export is intentional (e.g., to allow external command implementations to extend base classes), this is acceptable.
metaschema-cli/src/main/java/module-info.java (1)
16-16: Optional: Remove redundantrequires java.base.The
java.basemodule is implicitly required by all modules and does not need to be explicitly declared.🔎 Proposed fix
- // requirements - requires java.base; - + // requirements requires transitive gov.nist.secauto.metaschema.core;
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (102)
CLAUDE.mdcli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.javacli-processor/src/main/java/module-info.javacore/src/main/java/module-info.javadatabind-metaschema/modulesdatabind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.javadatabind-metaschema/src/main/java/module-info.javadatabind/pom-bootstrap-config.xmldatabind/pom-bootstrap-model.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.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/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/MetaschemaMetaConstraints.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/module-info.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/test/resources/metaschema/no_description/metaschema.xmlmetaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.javametaschema-cli/src/main/java/module-info.javametaschema-maven-plugin/pom.xmlmetaschema-maven-plugin/src/main/java/module-info.javametaschema-testing/pom-bootstrap.xmlmetaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.javametaschema-testing/src/main/java/module-info.javapom.xmlschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.javaschemagen/src/test/java/gov/nist/secauto/metaschema/schemagen/AbstractSchemaGeneratorTestSuite.java
💤 Files with no reviewable changes (1)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.java
✅ Files skipped from review due to trivial changes (14)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagMatches.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/GroupAs.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedHasCardinalityConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagAllowedValues.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ValueConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/FormatDetector.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IValuedMutable.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaPackage.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedAllowedValuesConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NsBinding.java
🚧 Files skipped from review as they are similar to previous changes (56)
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintValueEnum.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineAssembly.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/GroupingAs.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.java
- metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateSchemaCommand.java
- pom.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.java
- metaschema-maven-plugin/pom.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.java
- databind/src/test/resources/metaschema/no_description/metaschema.xml
- databind/pom-bootstrap-model.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/YamlOperations.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.java
- metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateContentUsingModuleCommand.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/KeyConstraintField.java
- databind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelNamed.java
- cli-processor/src/main/java/gov/nist/secauto/metaschema/cli/processor/command/CommandExecutionException.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedMatchesConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyReference.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/NullJavaTypeAdapter.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/Property.java
- schemagen/src/test/java/gov/nist/secauto/metaschema/schemagen/AbstractSchemaGeneratorTestSuite.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagIndexHasKey.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineFlag.java
- 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/AssemblyConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundModule.java
- databind-metaschema/modules
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedExpectConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/InlineDefineField.java
- databind-metaschema/src/main/java/module-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Any.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/AssemblyConstraints.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Example.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedReportConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java
- metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ValidateModuleCommand.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldReference.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.java
- databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/JavadocGenerationTest.java
- schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/ChoiceNotInlineStrategy.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IFeatureJavaField.java
- databind/pom-bootstrap-config.xml
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIsUniqueConstraint.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReference.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetapathContext.java
- metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/package-info.java
- databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/UseName.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/binding/FlagReport.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/module-info.javacli-processor/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.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/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javametaschema-cli/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javametaschema-maven-plugin/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javacore/src/main/java/module-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.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/ChoiceValidationTest.java
🧠 Learnings (14)
📓 Common learnings
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
📚 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/model/metaschema/binding/FlagReport.javaCLAUDE.mdmetaschema-testing/pom-bootstrap.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.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/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javametaschema-maven-plugin/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.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.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/model/metaschema/binding/FlagReport.javaCLAUDE.mdmetaschema-testing/pom-bootstrap.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javametaschema-testing/src/main/java/module-info.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.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/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javametaschema-cli/src/main/java/module-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/Property.javametaschema-maven-plugin/src/main/java/module-info.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/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.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.java
📚 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/model/metaschema/binding/FlagReport.javaCLAUDE.mdmetaschema-testing/pom-bootstrap.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javametaschema-testing/src/main/java/module-info.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.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/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javametaschema-cli/src/main/java/module-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/Property.javametaschema-maven-plugin/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.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.java
📚 Learning: 2025-12-30T04:19:49.192Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:480-484
Timestamp: 2025-12-30T04:19:49.192Z
Learning: In metaschema-framework/metaschema-java, when users configure custom superinterfaces via binding configuration, david-waltermire prefers both documentation (explaining how to add dependencies to the Maven plugin) and validation mechanisms (warnings when classes aren't on classpath) to prevent redundant IBoundObject interface additions during code generation.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.javaCLAUDE.mdmetaschema-testing/pom-bootstrap.xmldatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javametaschema-testing/src/main/java/module-info.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javadatabind/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.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/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javametaschema-maven-plugin/src/main/java/module-info.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/FlagExpect.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.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/FlagReport.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/module-info.javacli-processor/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.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/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javametaschema-cli/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javametaschema-maven-plugin/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javacore/src/main/java/module-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.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/binding/FlagReport.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.javametaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.javadatabind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Remarks.javadatabind/src/main/java/module-info.javacli-processor/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.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/ConstraintLetExpression.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.javametaschema-cli/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/Property.javametaschema-maven-plugin/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.javaschemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/XmlNsForm.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.javacore/src/main/java/module-info.javametaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.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:
CLAUDE.mdmetaschema-testing/pom-bootstrap.xmlmetaschema-maven-plugin/src/main/java/module-info.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:
CLAUDE.mdmetaschema-testing/pom-bootstrap.xmlmetaschema-maven-plugin/src/main/java/module-info.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:
CLAUDE.mddatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.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:
metaschema-testing/src/main/java/module-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.javadatabind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.javametaschema-cli/src/main/java/module-info.javametaschema-maven-plugin/src/main/java/module-info.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 : 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/model/metaschema/binding/FieldConstraints.java
📚 Learning: 2025-12-30T19:01:32.147Z
Learnt from: david-waltermire
Repo: metaschema-framework/metaschema-java PR: 605
File: databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java:508-512
Timestamp: 2025-12-30T19:01:32.147Z
Learning: DefaultMetaschemaClassFactory.extendsIBoundObject logs a warning when a configured superinterface cannot be loaded from the classpath during code generation, advising users to add the class as a Maven plugin dependency to avoid redundant IBoundObject additions.
Applied to files:
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.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:
core/src/main/java/module-info.java
🧬 Code graph analysis (1)
databind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.java (2)
core/src/main/java/gov/nist/secauto/metaschema/core/model/MetaschemaException.java (1)
MetaschemaException(11-70)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: Website
- GitHub Check: Code
🔇 Additional comments (38)
schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/DomDatatypeContent.java (1)
22-24: LGTM!The import reordering has no semantic impact and maintains the existing code organization.
databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.java (1)
17-22: LGTM! Class-level Javadoc is properly documented.The added Javadoc clearly describes the deserializer's purpose and correctly documents the generic type parameter. This follows the repository's Javadoc style guide and contributes to the 100% coverage goal.
As per coding guidelines, the Javadoc includes the required
@paramtag for the type parameter in the correct order.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagReport.java (1)
35-37: LGTM! Class-level Javadoc added successfully.The added class-level Javadoc appropriately documents the generated binding class and aligns with the PR objective to regenerate binding classes with improved Javadoc coverage.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/TargetedIndexHasKeyConstraint.java (1)
36-38: LGTM! Class-level Javadoc added successfully.The addition of class-level Javadoc improves documentation coverage for this generated binding class. The description appropriately matches the formal name defined in the
@MetaschemaAssemblyannotation and follows the Javadoc style guide.As per coding guidelines, this change ensures 100% Javadoc coverage on the public class definition as required.
databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.java (2)
42-49: LGTM! Comprehensive class-level Javadoc.The Javadoc clearly describes the purpose of
DefaultBindingConfigurationand its key capabilities. The documentation follows the repository's Javadoc style guide and provides appropriate detail for users of this class.
670-675: LGTM! Clear inner class documentation.The Javadoc effectively describes the purpose and structure of
MetaschemaBindingConfiguration. The documentation follows the repository's Javadoc style guide and provides appropriate context for this inner class.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/METASCHEMA.java (1)
1301-1303: LGTM! Generated Javadoc improvements successfully address PR objectives.The regenerated binding class now includes Javadoc for:
- Field value documentation (RootName._name)
- Field value getters/setters (getName/setName)
- Global definition classes (DefineField, DefineFlag)
All added Javadoc follows the required structure with proper @param and @return tags in the correct order. These improvements directly address the PR's stated objective of fixing FieldValueTypeInfoImpl to produce Javadoc for field value getters/setters.
Based on learnings, this is generated code from metaschema-maven-plugin and the improvements were correctly made at the code generator level.
Also applies to: 1361-1379, 1388-1390, 2076-2078
schemagen/src/main/java/gov/nist/secauto/metaschema/schemagen/xml/impl/IXmlGenerationState.java (1)
124-134: Javadoc and annotations meet coding guidelines.The new method overload is well-documented with complete Javadoc including proper
@paramand@throwstags in the correct order, and appropriate@NonNullannotations on both parameters. The parameter order aligns with the standardXMLStreamWriter.writeStartElement(String namespaceURI, String localName)signature. The implementing classXmlGenerationStatehas been properly updated with this method, including identical Javadoc and annotations.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FieldConstraints.java (1)
26-28: LGTM: Class-level Javadoc added via code generator.The class-level Javadoc provides a clear description of the binding class purpose and was properly generated via the bootstrap POMs (as confirmed in past review comments).
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/ConstraintLetExpression.java (1)
23-25: LGTM: Class-level Javadoc added via code generator.The class-level Javadoc provides a concise description consistent with the formal name in the
@MetaschemaAssemblyannotation.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IGroupAs.java (1)
19-22: LGTM: Field-level Javadoc added for public constant.The Javadoc clearly describes the singleton instance purpose for non-grouped items, meeting the coding guidelines requirement for 100% Javadoc coverage on public members.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/FlagExpect.java (1)
35-37: LGTM: Class-level Javadoc added via code generator.The class-level Javadoc provides a concise description matching the formal name in the
@MetaschemaAssemblyannotation.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/package-info.java (1)
6-8: LGTM: Package-level Javadoc added.The package-level Javadoc provides a clear and concise description of the package purpose, enhancing overall project documentation.
databind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.java (1)
520-625: LGTM! Documentation improvements align with repository standards.The addition of
@throwstags forConstraintValidationExceptionandIllegalArgumentExceptionacross the validation methods improves the API documentation completeness and follows the repository's Javadoc style guide requirement for complete exception documentation.databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaMetaConstraints.java (1)
400-554: LGTM! Generated binding class follows established patterns.The new
DefinitionContextinner class is properly structured with complete Javadoc coverage, following the same patterns as other generated binding classes in this file. The class correctly implementsIBoundObject, includes proper annotations, and provides standard accessors.Based on learnings, this is generated code from metaschema-maven-plugin and follows the expected structure.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/MetaschemaModuleConstraints.java (4)
446-640: LGTM! Generated Scope binding class follows established patterns.The new
Scopeinner class is properly structured with complete Javadoc coverage on all members, following the same patterns as other generated binding classes in this file.Based on learnings, this is generated code from metaschema-maven-plugin.
642-762: LGTM! Generated Assembly binding class follows established patterns.The new
Scope.Assemblyinner class correctly implementsIValueTargetedConstraintsBasewith complete Javadoc coverage and proper binding annotations.Based on learnings, this is generated code from metaschema-maven-plugin.
764-878: LGTM! Generated Field binding class follows established patterns.The new
Scope.Fieldinner class correctly implementsIValueTargetedConstraintsBasewith complete Javadoc coverage and proper binding annotations.Based on learnings, this is generated code from metaschema-maven-plugin.
880-994: LGTM! Generated Flag binding class follows established patterns.The new
Scope.Flaginner class correctly implementsIValueConstraintsBasewith complete Javadoc coverage and proper binding annotations.Based on learnings, this is generated code from metaschema-maven-plugin.
metaschema-testing/pom-bootstrap.xml (3)
6-6: LGTM! Usage comment correctly updated.The usage comment accurately reflects the new Maven invocation using
process-sourcesphase, which now encompasses code generation, licensing, and formatting steps.
94-94: LGTM! Phase change improves build lifecycle sequencing.Moving the license header addition to
process-sourcesphase ensures it runs after code generation completes (which remains ingenerate-sourcesphase at line 71), preventing race conditions and ensuring generated sources exist before licensing.
117-117: LGTM! Phase change improves build lifecycle sequencing.Moving source formatting to
process-sourcesphase ensures it runs after both code generation and license header addition, maintaining proper execution order for generated binding classes.metaschema-testing/src/main/java/module-info.java (1)
1-30: LGTM! Well-structured module declaration.The module declaration follows JPMS conventions with appropriate exports, opens for reflection access, and transitive dependencies. The module-level Javadoc provides clear context for the testing support module.
databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/binding/AssemblyModel.java (1)
1-2350: Generated code with comprehensive Javadoc - LGTM!This is a generated binding class (as indicated by the header comments on lines 5-6) that adds new nested classes
Choice,ChoiceGroup, and related nested types to support choice validation. The generated code includes comprehensive Javadoc coverage at both type and method levels, which aligns with the PR's objective to improve code generator Javadoc output.Per project learnings, improvements to generated binding classes should be addressed at the code generator level rather than through manual edits.
Based on learnings, generated binding classes are produced by metaschema-maven-plugin.
CLAUDE.md (1)
131-133: LGTM! Documentation updated to reflect phase change.The bootstrap regeneration commands have been correctly updated from
generate-sourcestoprocess-sourcesphase, maintaining consistency with the bootstrap POM changes in this PR.databind/src/test/java/gov/nist/secauto/metaschema/databind/io/ChoiceValidationTest.java (1)
1-107: Excellent test implementation with comprehensive documentation!This regression test validates choice element handling during deserialization. The test implementation demonstrates several strengths:
- Complete Javadoc coverage: Class-level documentation explains the testing context and references related issues (#308, #613), and both test methods include proper
@paramand@throwstags per coding guidelines- Parameterized testing: Uses
@ValueSourceto test both JSON and XML formats efficiently- Clear assertions: Uses
assertDoesNotThrowwith descriptive failure messages that explain expected behavior- Feature validation: Tests the specific fix that one choice alternative should satisfy the choice requirement without flagging other alternatives as missing
The test follows TDD principles and integrates well with the existing test infrastructure by extending
AbstractMetaschemaTest.As per coding guidelines, the test methods exceed the Javadoc requirements for test code.
databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.java (6)
16-21: Javadoc coverage looks excellent.The interface-level Javadoc properly documents the generic type parameter and follows the repository's style guide requirements.
23-29: Well-documented accessor method.The Javadoc properly includes the @return tag and the method signature uses appropriate null-safety annotations.
31-44: Complete Javadoc with proper tag ordering.The method documentation includes all required @param and @throws tags in the correct order as per the style guide.
46-51: Well-documented functional interface.The interface-level Javadoc properly documents the generic type parameter and its constraint, following the repository's style guide.
55-65: Functional interface method properly documented.The accept() method has complete Javadoc with @param and @throws tags in the correct order, and uses appropriate null-safety annotations.
67-81: Excellent combinator implementation.The andThen() method follows standard Java functional patterns and has complete Javadoc with proper tag ordering. The use of contravariant generics (
ObjectWriter<? super T>) is appropriate for the combinator pattern, and the sequential composition with fail-fast behavior is correct for IO operations.metaschema-maven-plugin/src/main/java/module-info.java (1)
1-27: LGTM! Well-documented module descriptor.The module descriptor is properly structured with clear Javadoc explaining the Maven plugin's purpose and JPMS compatibility constraints. The transitive dependencies on core, databind, and schemagen are appropriate for a plugin that generates code and schemas.
metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/GenerateDiagramCommand.java (1)
44-44: LGTM! Visibility change supports service registration.The change from package-private to public aligns with the CLI service mechanism updates mentioned in the PR objectives, where this command is now registered as an ICommand service implementation in the module descriptor.
metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/ConvertContentUsingModuleCommand.java (1)
43-43: LGTM! Visibility change supports service registration.The change from package-private to public is consistent with the broader CLI command visibility updates in this PR, enabling service registration in the module descriptor.
core/src/main/java/module-info.java (2)
21-21: LGTM! Appropriate suppression for automatic modules.The
@SuppressWarnings("requires-transitive-automatic")annotation correctly suppresses warnings about transitive dependencies on automatic modules (libraries without module descriptors). This is standard practice in JPMS when working with libraries that haven't fully migrated to the module system.
46-47: LGTM! Improved comment clarity.The updated comment clarifies that these are automatic modules, which better explains why the
@SuppressWarningsannotation is needed.databind/src/main/java/module-info.java (1)
22-22: Change correctly improves encapsulation by not exposing implementation dependencies.Removing
transitivefromcom.squareup.javapoetandorg.apache.commons.lang3is safe and correct. The javapoet package (codegen.typeinfo) is not exported from the module, and commons-lang3 is used only for internal utilities like string formatting. Neither library exposes types in the public API, so downstream consumers have no dependency on transitive access to them.This change aligns with best practices by narrowing the exposed API surface.
- Add detectOfflineLinks=false to avoid JPMS named/unnamed module mismatch warnings during per-module site generation - Add aggregate javadoc report configuration to provide full cross-module linking in a single combined API documentation - Exclude maven-plugin from aggregate due to Maven API split packages
ff0b762 to
eb03eb8
Compare
- Add maven-javadoc-plugin execution bound to package phase - Generates combined API documentation for all modules - Excludes maven-plugin due to Maven API split package issues - Output at target/reports/apidocs with full cross-module linking
d547f80
into
metaschema-framework:develop
Summary
Changes
Test Coverage
ChoiceValidationTestregression test for choice block validationJavadoc Improvements
FieldValueTypeInfoImplto produce Javadoc for field value getters/settersDefaultMetaschemaClassFactorypackage-info generation to avoid empty<p>tagsdetectOfflineLinks=falseto fix JPMS named/unnamed module mismatch warningstarget/reports/apidocs)JPMS Module System
module-info.javato: cli-processor, databind-metaschema, metaschema-cli, metaschema-maven-plugin, metaschema-testingrequires org.apache.commons.lang3to metaschema-testingrequires transitivefor automatic modules in databind (javapoet, commons-lang3)@SuppressWarnings("requires-transitive-automatic")to core module for flexmark/everit dependenciesBootstrap POM Fixes
generate-sourcestoprocess-sourcesphaseWarning Fixes
DefaultBindingContext.javadeprecatedfinalize()warning (add deprecation to SuppressWarnings)IXmlGenerationState.javaoverloaded method order (checkstyle)DomDatatypeContent.javaimport order (checkstyle)AbstractSchemaGeneratorTestSuite.javaimport order (checkstyle)Test plan
ChoiceValidationTestvalidates choice block behaviormvn clean install -PCI -Prelease)mvn site site:stage)target/reports/apidocsSummary by CodeRabbit
Documentation
Tests
Build & Distribution
Public API / CLI
✏️ Tip: You can customize this high-level summary in your review settings.