Skip to content

Commit 4f328aa

Browse files
refactor: consolidate IMetaschemaData implementations into SimpleResourceLocation
- Change SimpleResourceLocation to implement IMetaschemaData instead of just IResourceLocation, enabling reuse for bound object metadata - Remove duplicate private MetaschemaData inner classes from both MetaschemaJsonReader and MetaschemaXmlReader - Update factory methods to return IMetaschemaData for consistency - This avoids duplicate creation of location data during parsing
1 parent 6bfebfe commit 4f328aa

File tree

3 files changed

+12
-77
lines changed

3 files changed

+12
-77
lines changed

core/src/main/java/gov/nist/secauto/metaschema/core/model/SimpleResourceLocation.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,16 @@
1212
import edu.umd.cs.findbugs.annotations.NonNull;
1313

1414
/**
15-
* A simple implementation of {@link IResourceLocation} that stores location
15+
* A simple implementation of {@link IMetaschemaData} that stores location
1616
* information from various parser sources.
17+
* <p>
18+
* This class can be used both for bound object metadata during parsing and for
19+
* validation context in error messages.
1720
*/
18-
public final class SimpleResourceLocation implements IResourceLocation {
21+
public final class SimpleResourceLocation implements IMetaschemaData {
1922
/** A constant representing an unknown location. */
2023
@NonNull
21-
public static final IResourceLocation UNKNOWN = new SimpleResourceLocation(-1, -1, -1L, -1L);
24+
public static final IMetaschemaData UNKNOWN = new SimpleResourceLocation(-1, -1, -1L, -1L);
2225

2326
private final int line;
2427
private final int column;
@@ -52,7 +55,7 @@ public SimpleResourceLocation(int line, int column, long charOffset, long byteOf
5255
* @return a new resource location, or {@link #UNKNOWN} if the input is null
5356
*/
5457
@NonNull
55-
public static IResourceLocation fromXmlLocation(Location location) {
58+
public static IMetaschemaData fromXmlLocation(Location location) {
5659
if (location == null) {
5760
return UNKNOWN;
5861
}
@@ -71,7 +74,7 @@ public static IResourceLocation fromXmlLocation(Location location) {
7174
* @return a new resource location, or {@link #UNKNOWN} if the input is null
7275
*/
7376
@NonNull
74-
public static IResourceLocation fromJsonLocation(JsonLocation location) {
77+
public static IMetaschemaData fromJsonLocation(JsonLocation location) {
7578
if (location == null) {
7679
return UNKNOWN;
7780
}
@@ -92,7 +95,7 @@ public static IResourceLocation fromJsonLocation(JsonLocation location) {
9295
* @return a new resource location
9396
*/
9497
@NonNull
95-
public static IResourceLocation of(int line, int column) {
98+
public static IMetaschemaData of(int line, int column) {
9699
return new SimpleResourceLocation(line, column, -1L, -1L);
97100
}
98101

databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/MetaschemaJsonReader.java

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import com.fasterxml.jackson.databind.node.ObjectNode;
1313

1414
import gov.nist.secauto.metaschema.core.model.IBoundObject;
15-
import gov.nist.secauto.metaschema.core.model.IMetaschemaData;
1615
import gov.nist.secauto.metaschema.core.model.IResourceLocation;
1716
import gov.nist.secauto.metaschema.core.model.SimpleResourceLocation;
1817
import gov.nist.secauto.metaschema.core.model.util.JsonUtil;
@@ -496,7 +495,7 @@ private IBoundObject readComplexDefinitionObject(
496495
IBoundObject item = definition.newInstance(
497496
JsonLocation.NA.equals(location)
498497
? null
499-
: () -> new MetaschemaData(ObjectUtils.requireNonNull(location)));
498+
: () -> SimpleResourceLocation.fromJsonLocation(ObjectUtils.requireNonNull(location)));
500499

501500
try {
502501
// call pre-parse initialization hook
@@ -921,41 +920,6 @@ public ITEM readItem() throws IOException {
921920
}
922921
}
923922

924-
@SuppressWarnings("PMD.DataClass")
925-
private static class MetaschemaData implements IMetaschemaData {
926-
private final int line;
927-
private final int column;
928-
private final long charOffset;
929-
private final long byteOffset;
930-
931-
public MetaschemaData(@NonNull JsonLocation location) {
932-
this.line = location.getLineNr();
933-
this.column = location.getColumnNr();
934-
this.charOffset = location.getCharOffset();
935-
this.byteOffset = location.getByteOffset();
936-
}
937-
938-
@Override
939-
public int getLine() {
940-
return line;
941-
}
942-
943-
@Override
944-
public int getColumn() {
945-
return column;
946-
}
947-
948-
@Override
949-
public long getCharOffset() {
950-
return charOffset;
951-
}
952-
953-
@Override
954-
public long getByteOffset() {
955-
return byteOffset;
956-
}
957-
}
958-
959923
@FunctionalInterface
960924
private interface DefinitionBodyHandler<DEF extends IBoundDefinitionModelComplex> {
961925
void accept(

databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/MetaschemaXmlReader.java

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
package gov.nist.secauto.metaschema.databind.io.xml;
77

88
import gov.nist.secauto.metaschema.core.model.IBoundObject;
9-
import gov.nist.secauto.metaschema.core.model.IMetaschemaData;
109
import gov.nist.secauto.metaschema.core.model.IResourceLocation;
1110
import gov.nist.secauto.metaschema.core.model.SimpleResourceLocation;
1211
import gov.nist.secauto.metaschema.core.model.util.XmlEventUtil;
@@ -511,7 +510,8 @@ private <DEF extends IBoundDefinitionModelComplex> IBoundObject readDefinitionEl
511510
Location location = start.getLocation();
512511

513512
// construct the item
514-
IBoundObject item = definition.newInstance(location == null ? null : () -> new MetaschemaData(location));
513+
IBoundObject item = definition.newInstance(
514+
location == null ? null : () -> SimpleResourceLocation.fromXmlLocation(location));
515515

516516
// call pre-parse initialization hook
517517
definition.callBeforeDeserialize(item, parent);
@@ -705,38 +705,6 @@ public IBoundObject readChoiceGroupItem(IBoundObject parent, IBoundInstanceModel
705705
}
706706
}
707707

708-
private static class MetaschemaData implements IMetaschemaData {
709-
private final int line;
710-
private final int column;
711-
private final long charOffset;
712-
713-
public MetaschemaData(@NonNull Location location) {
714-
this.line = location.getLineNumber();
715-
this.column = location.getColumnNumber();
716-
this.charOffset = location.getCharacterOffset();
717-
}
718-
719-
@Override
720-
public int getLine() {
721-
return line;
722-
}
723-
724-
@Override
725-
public int getColumn() {
726-
return column;
727-
}
728-
729-
@Override
730-
public long getCharOffset() {
731-
return charOffset;
732-
}
733-
734-
@Override
735-
public long getByteOffset() {
736-
return -1;
737-
}
738-
}
739-
740708
@FunctionalInterface
741709
private interface DefinitionBodyHandler<DEF extends IBoundDefinitionModelComplex, ITEM> {
742710
void accept(

0 commit comments

Comments
 (0)