Skip to content

Commit 7109d39

Browse files
fix: add missing imports and correct API usage in documentation
- validating-with-constraints.md.vm: Fixed incorrect API examples - Replaced non-existent setConstraintValidationEnabled with correct API - Updated to use IBoundLoader.enableFeature() and validateWithConstraints() - Replaced custom handler example with FindingCollectingConstraintValidationHandler - reading-writing-data.md.vm: Added missing imports - Added Stream, Files, Path, IOException, UncheckedIOException imports - executing-metapath.md.vm: Added missing imports - Added Map, ConcurrentHashMap imports to MetapathQueryCache example
1 parent a1ee16c commit 7109d39

File tree

3 files changed

+54
-36
lines changed

3 files changed

+54
-36
lines changed

src/site/markdown/guides/executing-metapath.md.vm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,9 @@ try {
212212
For repeated queries, cache compiled expressions:
213213

214214
```java
215+
import java.util.Map;
216+
import java.util.concurrent.ConcurrentHashMap;
217+
215218
public class MetapathQueryCache {
216219
private final Map<String, IMetapathExpression> cache =
217220
new ConcurrentHashMap<>();

src/site/markdown/guides/reading-writing-data.md.vm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,12 @@ jsonWriter.serialize(catalog, Path.of("catalog.json"));
142142
### Batch Conversion
143143

144144
```java
145+
import java.io.IOException;
146+
import java.io.UncheckedIOException;
147+
import java.nio.file.Files;
148+
import java.nio.file.Path;
149+
import java.util.stream.Stream;
150+
145151
public void convertDirectory(Path inputDir, Path outputDir,
146152
Format inputFormat, Format outputFormat) throws IOException {
147153

src/site/markdown/guides/validating-with-constraints.md.vm

Lines changed: 45 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,36 @@ Metaschema constraints provide validation beyond schema compliance:
1818
### Validate During Deserialization
1919

2020
```java
21+
import dev.metaschema.databind.io.DeserializationFeature;
22+
import dev.metaschema.databind.io.IBoundLoader;
2123
import dev.metaschema.oscal.lib.OscalBindingContext;
2224
import dev.metaschema.oscal.lib.model.Catalog;
23-
import dev.metaschema.databind.io.Format;
24-
import dev.metaschema.databind.io.IDeserializer;
25-
import dev.metaschema.core.model.constraint.IConstraintValidationHandler;
26-
import dev.metaschema.core.model.validation.IValidationResult;
25+
26+
import java.nio.file.Path;
2727

2828
OscalBindingContext context = OscalBindingContext.instance();
29-
IDeserializer<Catalog> deserializer = context.newDeserializer(
30-
Format.JSON, Catalog.class);
29+
IBoundLoader loader = context.newBoundLoader();
3130

32-
// Enable constraint validation
33-
deserializer.setConstraintValidationEnabled(true);
31+
// Enable constraint validation during loading
32+
loader.enableFeature(DeserializationFeature.DESERIALIZE_VALIDATE_CONSTRAINTS);
3433

35-
Catalog catalog = deserializer.deserialize(Path.of("catalog.json"));
34+
Catalog catalog = loader.load(Catalog.class, Path.of("catalog.json"));
3635
```
3736

3837
### Validate Existing Objects
3938

4039
```java
41-
import dev.metaschema.databind.model.IBoundObject;
4240
import dev.metaschema.core.model.validation.IValidationResult;
41+
import dev.metaschema.oscal.lib.OscalBindingContext;
42+
43+
import java.net.URI;
44+
import java.nio.file.Path;
45+
46+
OscalBindingContext context = OscalBindingContext.instance();
47+
URI target = Path.of("catalog.json").toUri();
4348

44-
// Validate an already-loaded object
45-
IValidationResult result = context.validate(catalog);
49+
// Validate against constraints
50+
IValidationResult result = context.validateWithConstraints(target, null);
4651

4752
if (!result.isPassing()) {
4853
result.getFindings().forEach(finding -> {
@@ -55,10 +60,18 @@ if (!result.isPassing()) {
5560
## Working with Validation Results
5661

5762
```java
63+
import dev.metaschema.core.model.constraint.IConstraint.Level;
5864
import dev.metaschema.core.model.validation.IValidationFinding;
5965
import dev.metaschema.core.model.validation.IValidationResult;
66+
import dev.metaschema.oscal.lib.OscalBindingContext;
67+
68+
import java.net.URI;
69+
import java.nio.file.Path;
6070

61-
IValidationResult result = context.validate(catalog);
71+
OscalBindingContext context = OscalBindingContext.instance();
72+
URI target = Path.of("catalog.json").toUri();
73+
74+
IValidationResult result = context.validateWithConstraints(target, null);
6275

6376
// Check if validation passed
6477
if (result.isPassing()) {
@@ -85,34 +98,30 @@ for (IValidationFinding finding : result.getFindings()) {
8598
| `WARNING` | Potential issue, may be intentional |
8699
| `INFORMATIONAL` | Note for awareness |
87100

88-
## Custom Validation Handler
101+
## Using FindingCollectingConstraintValidationHandler
89102

90-
```java
91-
import dev.metaschema.core.model.constraint.IConstraintValidationHandler;
92-
import dev.metaschema.core.model.constraint.IFinding;
103+
The framework provides `FindingCollectingConstraintValidationHandler` for collecting validation findings:
93104

94-
public class CustomValidationHandler implements IConstraintValidationHandler {
95-
96-
private final List<IFinding> findings = new ArrayList<>();
97-
98-
@Override
99-
public void handleFinding(IFinding finding) {
100-
findings.add(finding);
105+
```java
106+
import dev.metaschema.core.model.constraint.FindingCollectingConstraintValidationHandler;
107+
import dev.metaschema.core.model.constraint.IConstraint.Level;
101108

102-
// Log immediately
103-
if (finding.getSeverity().ordinal() >= Severity.ERROR.ordinal()) {
104-
System.err.println("Validation error: " + finding.getMessage());
105-
}
106-
}
109+
// The handler implements IValidationResult
110+
FindingCollectingConstraintValidationHandler handler =
111+
new FindingCollectingConstraintValidationHandler();
107112

108-
public List<IFinding> getFindings() {
109-
return findings;
110-
}
113+
// After validation completes, check results
114+
if (!handler.isPassing()) {
115+
handler.getFindings().forEach(finding -> {
116+
System.err.println(finding.getSeverity() + ": " +
117+
finding.getMessage());
118+
});
119+
}
111120

112-
public boolean hasErrors() {
113-
return findings.stream()
114-
.anyMatch(f -> f.getSeverity().ordinal() >= Severity.ERROR.ordinal());
115-
}
121+
// Check highest severity level
122+
Level highestSeverity = handler.getHighestSeverity();
123+
if (highestSeverity.ordinal() >= Level.ERROR.ordinal()) {
124+
System.err.println("Validation failed with errors");
116125
}
117126
```
118127

0 commit comments

Comments
 (0)