Skip to content

Commit 7aec3bb

Browse files
docs: add Javadoc to databind module for complete coverage
Add type-level and method-level Javadoc documentation to achieve complete Javadoc coverage in the databind module: - Add interface/class Javadoc to config, io, model packages - Add Javadoc to annotation types and enum constants - Fix code generator to produce Javadoc for field value getters/setters - Fix package-info generation to avoid empty <p> tags - Regenerate binding classes with improved Javadoc This enables failOnWarnings=true for the maven-javadoc-plugin.
1 parent 06f0297 commit 7aec3bb

75 files changed

Lines changed: 466 additions & 5 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

databind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,9 @@ default IConstraintValidator newValidator(
519519
* the validation configuration
520520
* @return the validation result
521521
* @throws ConstraintValidationException
522+
* if a constraint violation prevents validation from completing
522523
* @throws IllegalArgumentException
524+
* if the node item is not valid for validation
523525
*/
524526
default IValidationResult validate(
525527
@NonNull IDocumentNodeItem nodeItem,
@@ -541,7 +543,9 @@ default IValidationResult validate(
541543
* the validation configuration
542544
* @return the validation result
543545
* @throws ConstraintValidationException
546+
* if a constraint violation prevents validation from completing
544547
* @throws IllegalArgumentException
548+
* if the node item is not valid for validation
545549
*/
546550
default IValidationResult validate(
547551
@NonNull IDefinitionNodeItem<?, ?> nodeItem,
@@ -577,6 +581,7 @@ default IValidationResult validate(
577581
* @throws IOException
578582
* if an error occurred while reading the target
579583
* @throws ConstraintValidationException
584+
* if a constraint violation prevents validation from completing
580585
*/
581586
default IValidationResult validate(
582587
@NonNull URI target,
@@ -605,6 +610,7 @@ default IValidationResult validate(
605610
* @throws IOException
606611
* if an error occurred while parsing the target
607612
* @throws ConstraintValidationException
613+
* if a constraint violation prevents validation from completing
608614
*/
609615
default IValidationResult validateWithConstraints(
610616
@NonNull URI target,

databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/IGeneratedDefinitionClass.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99

1010
import edu.umd.cs.findbugs.annotations.NonNull;
1111

12+
/**
13+
* Represents a generated Java class for a Metaschema definition.
14+
*/
1215
public interface IGeneratedDefinitionClass extends IGeneratedClass {
1316

1417
/**

databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultBindingConfiguration.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@
3939
import edu.umd.cs.findbugs.annotations.NonNull;
4040
import edu.umd.cs.findbugs.annotations.Nullable;
4141

42+
/**
43+
* Default implementation of {@link IBindingConfiguration} that provides binding
44+
* configuration for Java class generation from Metaschema modules.
45+
* <p>
46+
* This implementation supports loading configuration from XML files and
47+
* provides namespace-to-package mappings and definition-specific binding
48+
* configurations.
49+
*/
4250
public class DefaultBindingConfiguration implements IBindingConfiguration {
4351
private static final Logger LOGGER = LogManager.getLogger(DefaultBindingConfiguration.class);
4452

@@ -659,6 +667,12 @@ private static IMutableDefinitionBindingConfiguration processDefinitionBindingCo
659667
return config;
660668
}
661669

670+
/**
671+
* Holds binding configurations for a specific Metaschema module.
672+
* <p>
673+
* This class maintains mappings from definition names to their binding
674+
* configurations for both assembly and field definitions.
675+
*/
662676
public static final class MetaschemaBindingConfiguration {
663677
private final Map<String, IDefinitionBindingConfiguration> assemblyBindingConfigs = new ConcurrentHashMap<>();
664678
private final Map<String, IDefinitionBindingConfiguration> fieldBindingConfigs = new ConcurrentHashMap<>();

databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/DefaultDefinitionBindingConfiguration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
import edu.umd.cs.findbugs.annotations.NonNull;
1616
import edu.umd.cs.findbugs.annotations.Nullable;
1717

18+
/**
19+
* Default implementation of {@link IMutableDefinitionBindingConfiguration} that
20+
* provides mutable binding configuration for a specific Metaschema definition.
21+
*/
1822
public class DefaultDefinitionBindingConfiguration implements IMutableDefinitionBindingConfiguration {
1923
@Nullable
2024
private String className;

databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IBindingConfiguration.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@
1313
import edu.umd.cs.findbugs.annotations.NonNull;
1414
import edu.umd.cs.findbugs.annotations.Nullable;
1515

16+
/**
17+
* Provides configuration for Java class binding generation from Metaschema
18+
* modules.
19+
* <p>
20+
* This interface defines how Metaschema module elements are mapped to Java
21+
* classes, including package names, class names, base classes, and
22+
* superinterfaces.
23+
*/
1624
public interface IBindingConfiguration {
1725

1826
/**

databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/config/IDefinitionBindingConfiguration.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@
1111
import edu.umd.cs.findbugs.annotations.NonNull;
1212
import edu.umd.cs.findbugs.annotations.Nullable;
1313

14+
/**
15+
* Provides binding configuration for a specific Metaschema definition.
16+
* <p>
17+
* This interface defines how an individual field or assembly definition is
18+
* mapped to a generated Java class, including the class name, base class, and
19+
* interfaces to implement.
20+
*/
1421
public interface IDefinitionBindingConfiguration {
1522
/**
1623
* Get the class name to use for the generated class associated with this

databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ public IGeneratedClass generatePackageInfoClass(
312312
writer.format(" * version %s%n", module.getVersion());
313313
MarkupMultiline remarks = module.getRemarks();
314314
if (remarks != null) {
315-
writer.format(" * <p>%n");
315+
// Remarks already include proper HTML formatting
316316
writer.format(" * %s%n", remarks.toHtml());
317317
}
318318
}
@@ -691,9 +691,19 @@ protected Set<IModelDefinition> buildClass(
691691
protected Set<IModelDefinition> buildClass(
692692
@NonNull IModelDefinitionTypeInfo typeInfo,
693693
@NonNull TypeSpec.Builder builder) {
694-
MarkupLine description = typeInfo.getDefinition().getDescription();
694+
IModelDefinition definition = typeInfo.getDefinition();
695+
MarkupLine description = definition.getDescription();
695696
if (description != null) {
696697
builder.addJavadoc(description.toHtml());
698+
} else {
699+
// Fallback to formal-name or definition name when description is missing
700+
String formalName = definition.getEffectiveFormalName();
701+
if (formalName != null) {
702+
builder.addJavadoc("$L.", formalName);
703+
} else {
704+
// Last resort: use the definition name
705+
builder.addJavadoc("A binding class for the {@code $L} definition.", definition.getName());
706+
}
697707
}
698708

699709
Set<IModelDefinition> additionalChildClasses = new LinkedHashSet<>();

databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/FieldValueTypeInfoImpl.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.squareup.javapoet.AnnotationSpec;
99
import com.squareup.javapoet.ClassName;
1010
import com.squareup.javapoet.FieldSpec;
11+
import com.squareup.javapoet.MethodSpec;
1112
import com.squareup.javapoet.TypeName;
1213
import com.squareup.javapoet.TypeSpec;
1314

@@ -72,4 +73,19 @@ protected Set<IModelDefinition> buildField(
7273
fieldBuilder.addAnnotation(fieldValue.build());
7374
return retval;
7475
}
76+
77+
@Override
78+
public void buildFieldJavadoc(@NonNull FieldSpec.Builder builder) {
79+
builder.addJavadoc("The field value.");
80+
}
81+
82+
@Override
83+
public void buildGetterJavadoc(@NonNull MethodSpec.Builder builder) {
84+
builder.addJavadoc("Get the field value.\n\n@return the value");
85+
}
86+
87+
@Override
88+
public void buildSetterJavadoc(@NonNull MethodSpec.Builder builder, @NonNull String paramName) {
89+
builder.addJavadoc("Set the field value.\n\n@param $L\n the value to set", paramName);
90+
}
7591
}

databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/MetaschemaBindings.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1481,6 +1481,9 @@ public static class ItemType implements IBoundObject {
14811481
typeAdapter = BooleanAdapter.class)
14821482
private Boolean _useWildcard;
14831483

1484+
/**
1485+
* The field value.
1486+
*/
14841487
@BoundFieldValue(
14851488
valueKeyName = "STRVALUE",
14861489
typeAdapter = TokenAdapter.class)
@@ -1540,11 +1543,22 @@ public void setUseWildcard(@Nullable Boolean value) {
15401543
_useWildcard = value;
15411544
}
15421545

1546+
/**
1547+
* Get the field value.
1548+
*
1549+
* @return the value
1550+
*/
15431551
@Nullable
15441552
public String getValue() {
15451553
return _value;
15461554
}
15471555

1556+
/**
1557+
* Set the field value.
1558+
*
1559+
* @param value
1560+
* the value to set
1561+
*/
15481562
public void setValue(@Nullable String value) {
15491563
_value = value;
15501564
}

databind/src/main/java/gov/nist/secauto/metaschema/databind/config/binding/package-info.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
* <p>
1111
* version 1.0.0
1212
* <p>
13-
* <p>
1413
* This module defines the binding configuration format used to customize Java
1514
* code generation from Metaschema modules. It allows specifying package names,
1615
* class names, interface implementations, base classes, and collection types

0 commit comments

Comments
 (0)