diff --git a/core/metaschema b/core/metaschema index 9527c9441..69a728312 160000 --- a/core/metaschema +++ b/core/metaschema @@ -1 +1 @@ -Subproject commit 9527c9441f02fa8d31bf03b6e16190f6de8554eb +Subproject commit 69a728312999c8779942b06acc89cd223f32edeb diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/DocumentNodeItemImpl.java b/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/DocumentNodeItemImpl.java index 1df682916..424069ef3 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/DocumentNodeItemImpl.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/DocumentNodeItemImpl.java @@ -27,6 +27,7 @@ package gov.nist.secauto.metaschema.core.metapath.item.node; import gov.nist.secauto.metaschema.core.model.IAssemblyDefinition; +import gov.nist.secauto.metaschema.core.model.IResourceLocation; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import java.net.URI; @@ -80,4 +81,9 @@ public ModelContainer getModel() { public Object getValue() { return getRootAssemblyNodeItem().getValue(); } + + @Override + public IResourceLocation getLocation() { + return getRootAssemblyNodeItem().getLocation(); + } } diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/IDefinitionNodeItem.java b/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/IDefinitionNodeItem.java index 771c30399..6b05f0a09 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/IDefinitionNodeItem.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/IDefinitionNodeItem.java @@ -28,6 +28,7 @@ import gov.nist.secauto.metaschema.core.model.IDefinition; import gov.nist.secauto.metaschema.core.model.INamedInstance; +import gov.nist.secauto.metaschema.core.model.IResourceLocation; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import java.net.URI; @@ -35,6 +36,7 @@ import javax.xml.namespace.QName; import edu.umd.cs.findbugs.annotations.NonNull; +import edu.umd.cs.findbugs.annotations.Nullable; public interface IDefinitionNodeItem extends INodeItem { /** @@ -69,4 +71,11 @@ default URI getNamespace() { * @return the instance of the segment, or {@code null} if it doesn't have one */ I getInstance(); + + @Override + @Nullable + default IResourceLocation getLocation() { + Object value = getValue(); + return value == null ? null : getDefinition().getLocation(value); + } } diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/INodeItem.java b/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/INodeItem.java index e22c4aa4d..005a75fbf 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/INodeItem.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/INodeItem.java @@ -29,6 +29,7 @@ import gov.nist.secauto.metaschema.core.metapath.format.IPathFormatter; import gov.nist.secauto.metaschema.core.metapath.format.IPathSegment; import gov.nist.secauto.metaschema.core.metapath.item.IItem; +import gov.nist.secauto.metaschema.core.model.IResourceLocation; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import java.net.URI; @@ -300,4 +301,7 @@ default Stream flags() { default Stream> modelItems() { return getModelItems().stream().flatMap(Collection::stream); } + + @Nullable + IResourceLocation getLocation(); } diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/ModuleNodeItemImpl.java b/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/ModuleNodeItemImpl.java index 6c108e9f3..9d1ad4cf9 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/ModuleNodeItemImpl.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/metapath/item/node/ModuleNodeItemImpl.java @@ -27,6 +27,7 @@ package gov.nist.secauto.metaschema.core.metapath.item.node; import gov.nist.secauto.metaschema.core.model.IModule; +import gov.nist.secauto.metaschema.core.model.IResourceLocation; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import java.net.URI; @@ -65,4 +66,9 @@ public ModelContainer getModel() { return model.get(); } + @Override + public IResourceLocation getLocation() { + // no location + return null; + } } diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundObject.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/IBoundObject.java similarity index 97% rename from databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundObject.java rename to core/src/main/java/gov/nist/secauto/metaschema/core/model/IBoundObject.java index 841dcc094..11cb5bb0a 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundObject.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/IBoundObject.java @@ -24,7 +24,7 @@ * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. */ -package gov.nist.secauto.metaschema.databind.model; +package gov.nist.secauto.metaschema.core.model; import edu.umd.cs.findbugs.annotations.Nullable; diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/IDefinition.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/IDefinition.java index b4f6c1131..2d2af4a88 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/IDefinition.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/IDefinition.java @@ -33,6 +33,7 @@ import javax.xml.namespace.QName; import edu.umd.cs.findbugs.annotations.NonNull; +import edu.umd.cs.findbugs.annotations.Nullable; public interface IDefinition extends INamedModelElement, IAttributable, IFeatureValueConstrained { @@ -107,4 +108,8 @@ default String toCoordinates() { hashCode()); } + @Nullable + default IResourceLocation getLocation(@NonNull Object itemValue) { + return itemValue instanceof IBoundObject ? ((IBoundObject) itemValue).getMetaschemaData() : null; + } } diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IMetaschemaData.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/IMetaschemaData.java similarity index 90% rename from databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IMetaschemaData.java rename to core/src/main/java/gov/nist/secauto/metaschema/core/model/IMetaschemaData.java index c60c62415..87ebc718f 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IMetaschemaData.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/IMetaschemaData.java @@ -24,14 +24,8 @@ * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. */ -package gov.nist.secauto.metaschema.databind.model; +package gov.nist.secauto.metaschema.core.model; -public interface IMetaschemaData { - int getLine(); - - int getColumn(); - - long getCharOffset(); - - long getByteOffset(); +public interface IMetaschemaData extends IResourceLocation { + // no additional methods } diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/IResourceLocation.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/IResourceLocation.java new file mode 100644 index 000000000..eaa511cab --- /dev/null +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/IResourceLocation.java @@ -0,0 +1,47 @@ +/* + * Portions of this software was developed by employees of the National Institute + * of Standards and Technology (NIST), an agency of the Federal Government and is + * being made available as a public service. Pursuant to title 17 United States + * Code Section 105, works of NIST employees are not subject to copyright + * protection in the United States. This software may be subject to foreign + * copyright. Permission in the United States and in foreign countries, to the + * extent that NIST may hold copyright, to use, copy, modify, create derivative + * works, and distribute this software and its documentation without fee is hereby + * granted on a non-exclusive basis, provided that this notice and disclaimer + * of warranty appears in all copies. + * + * THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND, EITHER + * EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY + * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM + * INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE + * SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE. IN NO EVENT + * SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, + * INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, + * OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY, + * CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR + * PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT + * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. + */ + +package gov.nist.secauto.metaschema.core.model; + +public interface IResourceLocation { + /** + * Get the line for a location within a resource. + * + * @return the line number or {@code -1} if unknown + */ + int getLine(); + + /** + * Get the line column for a location within a resource. + * + * @return the column number or {@code -1} if unknown + */ + int getColumn(); + + long getCharOffset(); + + long getByteOffset(); +} diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/AbstractConstraintValidationHandler.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/AbstractConstraintValidationHandler.java index 0307dad4e..e45aa20a4 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/AbstractConstraintValidationHandler.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/AbstractConstraintValidationHandler.java @@ -261,14 +261,14 @@ protected String newMatchDatatypeViolationMessage( */ @SuppressWarnings("null") @NonNull - protected CharSequence newExpectViolationMessage( + protected String newExpectViolationMessage( @NonNull IExpectConstraint constraint, @SuppressWarnings("unused") @NonNull INodeItem node, @NonNull INodeItem target, @NonNull DynamicContext dynamicContext) { - CharSequence message; + String message; if (constraint.getMessage() != null) { - message = constraint.generateMessage(target, dynamicContext); + message = constraint.generateMessage(target, dynamicContext).toString(); } else { message = String.format("Expect constraint '%s' did not match the data at path '%s'", constraint.getTest(), @@ -289,7 +289,7 @@ protected CharSequence newExpectViolationMessage( */ @SuppressWarnings("null") @NonNull - protected CharSequence newAllowedValuesViolationMessage( + protected String newAllowedValuesViolationMessage( @NonNull List constraints, @NonNull INodeItem target) { @@ -318,7 +318,7 @@ protected CharSequence newAllowedValuesViolationMessage( */ @SuppressWarnings("null") @NonNull - protected CharSequence newIndexDuplicateViolationMessage( + protected String newIndexDuplicateViolationMessage( @NonNull IIndexConstraint constraint, @NonNull INodeItem node) { return String.format("Duplicate index named '%s' found at path '%s'", @@ -342,7 +342,7 @@ protected CharSequence newIndexDuplicateViolationMessage( */ @SuppressWarnings("null") @NonNull - protected CharSequence newIndexMissMessage( + protected String newIndexMissMessage( @NonNull IIndexHasKeyConstraint constraint, @NonNull INodeItem node, @NonNull INodeItem target, @@ -372,7 +372,7 @@ protected CharSequence newIndexMissMessage( */ @SuppressWarnings("null") @NonNull - protected CharSequence newGenericValidationViolationMessage( + protected String newGenericValidationViolationMessage( @NonNull IConstraint constraint, @NonNull INodeItem node, @NonNull INodeItem target, diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/ConstraintValidationFinding.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/ConstraintValidationFinding.java index 257a6ecdb..92324c199 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/ConstraintValidationFinding.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/ConstraintValidationFinding.java @@ -27,12 +27,13 @@ package gov.nist.secauto.metaschema.core.model.constraint; import gov.nist.secauto.metaschema.core.metapath.item.node.INodeItem; +import gov.nist.secauto.metaschema.core.model.IResourceLocation; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint.Level; import gov.nist.secauto.metaschema.core.model.validation.IValidationFinding; import gov.nist.secauto.metaschema.core.util.CollectionUtil; +import gov.nist.secauto.metaschema.core.util.ObjectUtils; import java.net.URI; -import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -45,45 +46,92 @@ public class ConstraintValidationFinding implements IValidationFinding { // NOPMD - intentional @NonNull private final List constraints; - @NonNull - private final CharSequence message; + @Nullable + private final String message; @NonNull private final INodeItem node; @NonNull - private final List targets; + private final INodeItem target; + @NonNull + private final List subjects; private final Throwable cause; + @NonNull + private final Kind kind; + @NonNull private final Level severity; private ConstraintValidationFinding( @NonNull List constraints, @NonNull INodeItem node, - @NonNull CharSequence message, - @NonNull List targets, + @Nullable String message, + @NonNull INodeItem target, + @NonNull List subjects, + @NonNull Kind kind, @NonNull Level severity, @Nullable Throwable cause) { this.constraints = constraints; this.node = node; this.message = message; - this.targets = targets; + this.target = target; + this.subjects = subjects; + this.kind = kind; this.severity = severity; this.cause = cause; } + @Override + public String getIdentifier() { + return constraints.size() == 1 ? constraints.get(0).getId() : null; + } + + @NonNull public List getConstraints() { return constraints; } @Override - public CharSequence getMessage() { + public String getMessage() { return message; } + @NonNull public INodeItem getNode() { return node; } - public List getTargets() { - return targets; + @NonNull + public INodeItem getTarget() { + return target; + } + + @NonNull + public List getSubjects() { + return subjects; + } + + @Override + public IResourceLocation getLocation() { + // first try the target + INodeItem node = getTarget(); + IResourceLocation retval = node.getLocation(); + if (retval == null) { + // if no location, try the parent + node = node.getParentContentNodeItem(); + if (node != null) { + retval = node.getLocation(); + } + } + return retval; + } + + @Override + public String getPathKind() { + return "metapath"; + } + + @Override + public String getPath() { + return getTarget().getMetapath(); } @Override @@ -91,7 +139,11 @@ public Throwable getCause() { return cause; } - @SuppressWarnings("null") + @Override + public Kind getKind() { + return kind; + } + @Override public Level getSeverity() { return severity; @@ -118,31 +170,34 @@ public static final class Builder { private final List constraints; @NonNull private final INodeItem node; - private CharSequence message; - private List targets; + @NonNull + private INodeItem target; + private String message; + private List subjects; private Throwable cause; + private Kind kind; private Level severity; private Builder(@NonNull List constraints, @NonNull INodeItem node) { this.constraints = constraints; this.node = node; + this.target = node; } - @NonNull - public Builder message(@NonNull CharSequence message) { - this.message = message; + public Builder target(@NonNull INodeItem target) { + this.target = target; return this; } @NonNull - public Builder target(@NonNull INodeItem target) { - this.targets = Collections.singletonList(target); + public Builder message(@NonNull String message) { + this.message = message; return this; } @NonNull - public Builder targets(@NonNull List targets) { - this.targets = CollectionUtil.unmodifiableList(targets); + public Builder subjects(@NonNull List targets) { + this.subjects = CollectionUtil.unmodifiableList(targets); return this; } @@ -152,6 +207,12 @@ public Builder cause(@NonNull Throwable cause) { return this; } + @NonNull + public Builder kind(@NonNull Kind kind) { + this.kind = kind; + return this; + } + @NonNull public Builder severity(@NonNull Level severity) { this.severity = severity; @@ -160,26 +221,23 @@ public Builder severity(@NonNull Level severity) { @NonNull public ConstraintValidationFinding build() { - if (message == null) { - throw new IllegalStateException("Missing message"); - } - - Level severity = this.severity == null ? constraints.stream() + Level severity = ObjectUtils.notNull(this.severity == null ? constraints.stream() .map(IConstraint::getLevel) .max(Comparator.comparing(Level::ordinal)) - .get() : this.severity; + .get() : this.severity); - List targets = this.targets == null ? CollectionUtil.emptyList() : this.targets; + List subjects = this.subjects == null ? CollectionUtil.emptyList() : this.subjects; - assert message != null; - assert targets != null; - assert severity != null; + assert subjects != null; + assert kind != null; return new ConstraintValidationFinding( constraints, node, message, - targets, + target, + subjects, + kind, severity, cause); } diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/DefaultConstraintValidator.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/DefaultConstraintValidator.java index e446c540e..6b7071f17 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/DefaultConstraintValidator.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/DefaultConstraintValidator.java @@ -26,6 +26,9 @@ package gov.nist.secauto.metaschema.core.model.constraint; +import gov.nist.secauto.metaschema.core.configuration.DefaultConfiguration; +import gov.nist.secauto.metaschema.core.configuration.IConfiguration; +import gov.nist.secauto.metaschema.core.configuration.IMutableConfiguration; import gov.nist.secauto.metaschema.core.datatype.IDataTypeAdapter; import gov.nist.secauto.metaschema.core.metapath.DynamicContext; import gov.nist.secauto.metaschema.core.metapath.ISequence; @@ -45,6 +48,7 @@ import gov.nist.secauto.metaschema.core.model.IFlagDefinition; import gov.nist.secauto.metaschema.core.util.CollectionUtil; +import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -68,7 +72,8 @@ * This class is not thread safe. */ @SuppressWarnings("PMD.CouplingBetweenObjects") -public class DefaultConstraintValidator implements IConstraintValidator { // NOPMD - intentional +public class DefaultConstraintValidator + implements IConstraintValidator, IMutableConfiguration> { // NOPMD - intentional private static final Logger LOGGER = LogManager.getLogger(DefaultConstraintValidator.class); @NonNull @@ -79,6 +84,8 @@ public class DefaultConstraintValidator implements IConstraintValidator { // NOP private final Map> indexNameToKeyRefMap = new ConcurrentHashMap<>(); @NonNull private final IConstraintValidationHandler handler; + @NonNull + private final IMutableConfiguration> configuration; /** * Construct a new constraint validator instance. @@ -86,8 +93,53 @@ public class DefaultConstraintValidator implements IConstraintValidator { // NOP * @param handler * the validation handler to use for handling constraint violations */ - public DefaultConstraintValidator(@NonNull IConstraintValidationHandler handler) { + public DefaultConstraintValidator( + @NonNull IConstraintValidationHandler handler) { this.handler = handler; + this.configuration = new DefaultConfiguration<>(); + } + + /** + * Get the current configuration of the serializer/deserializer. + * + * @return the configuration + */ + @NonNull + protected IMutableConfiguration> getConfiguration() { + return configuration; + } + + @Override + public DefaultConstraintValidator enableFeature(ValidationFeature feature) { + return set(feature, true); + } + + @Override + public DefaultConstraintValidator disableFeature(ValidationFeature feature) { + return set(feature, false); + } + + @Override + public DefaultConstraintValidator applyConfiguration( + @NonNull IConfiguration> other) { + getConfiguration().applyConfiguration(other); + return this; + } + + @Override + public DefaultConstraintValidator set(ValidationFeature feature, Object value) { + getConfiguration().set(feature, value); + return this; + } + + @Override + public boolean isFeatureEnabled(ValidationFeature feature) { + return getConfiguration().isFeatureEnabled(feature); + } + + @Override + public Map, Object> getFeatureValues() { + return getConfiguration().getFeatureValues(); } /** @@ -224,14 +276,23 @@ private void validateHasCardinality( @NonNull ISequence targets) { int itemCount = targets.size(); + IConstraintValidationHandler handler = getConstraintValidationHandler(); + + boolean violation = false; Integer minOccurs = constraint.getMinOccurs(); if (minOccurs != null && itemCount < minOccurs) { - getConstraintValidationHandler().handleCardinalityMinimumViolation(constraint, node, targets); + handler.handleCardinalityMinimumViolation(constraint, node, targets); + violation = true; } Integer maxOccurs = constraint.getMaxOccurs(); if (maxOccurs != null && itemCount > maxOccurs) { - getConstraintValidationHandler().handleCardinalityMaximumViolation(constraint, node, targets); + handler.handleCardinalityMaximumViolation(constraint, node, targets); + violation = true; + } + + if (!violation) { + handlePass(constraint, node, node); } } @@ -283,27 +344,39 @@ private void validateIndex( @NonNull ISequence targets, @NonNull DynamicContext dynamicContext) { String indexName = constraint.getName(); - if (indexNameToIndexMap.containsKey(indexName)) { - getConstraintValidationHandler().handleIndexDuplicateViolation(constraint, node); - return; // NOPMD - readability - } - IIndex index = IIndex.newInstance(constraint.getKeyFields()); - targets.stream() - .forEachOrdered(item -> { - assert item != null; - if (item.hasValue()) { - try { - INodeItem oldItem = index.put(item, dynamicContext); - if (oldItem != null) { - getConstraintValidationHandler().handleIndexDuplicateKeyViolation(constraint, node, oldItem, item); + IConstraintValidationHandler handler = getConstraintValidationHandler(); + if (indexNameToIndexMap.containsKey(indexName)) { + handler.handleIndexDuplicateViolation(constraint, node); + } else { + IIndex index = IIndex.newInstance(constraint.getKeyFields()); + targets.stream() + .forEachOrdered(item -> { + assert item != null; + if (item.hasValue()) { + try { + INodeItem oldItem = index.put(item, dynamicContext); + if (oldItem == null) { + handlePass(constraint, node, item); + } else { + handler.handleIndexDuplicateKeyViolation(constraint, node, oldItem, item); + } + } catch (MetapathException ex) { + handler.handleKeyMatchError(constraint, node, item, ex); } - } catch (MetapathException ex) { - getConstraintValidationHandler().handleKeyMatchError(constraint, node, item, ex); } - } - }); - indexNameToIndexMap.put(indexName, index); + }); + indexNameToIndexMap.put(indexName, index); + } + } + + private void handlePass( + @NonNull IConstraint constraint, + @NonNull INodeItem node, + @NonNull INodeItem item) { + if (isFeatureEnabled(ValidationFeature.VALIDATE_GENERATE_PASS_FINDINGS)) { + getConstraintValidationHandler().handlePass(constraint, node, item); + } } /** @@ -353,6 +426,8 @@ private void validateUnique( @NonNull IAssemblyNodeItem node, @NonNull ISequence targets, @NonNull DynamicContext dynamicContext) { + + IConstraintValidationHandler handler = getConstraintValidationHandler(); IIndex index = IIndex.newInstance(constraint.getKeyFields()); targets.stream() .forEachOrdered(item -> { @@ -360,11 +435,13 @@ private void validateUnique( if (item.hasValue()) { try { INodeItem oldItem = index.put(item, dynamicContext); - if (oldItem != null) { - getConstraintValidationHandler().handleUniqueKeyViolation(constraint, node, oldItem, item); + if (oldItem == null) { + handlePass(constraint, node, item); + } else { + handler.handleUniqueKeyViolation(constraint, node, oldItem, item); } } catch (MetapathException ex) { - getConstraintValidationHandler().handleKeyMatchError(constraint, node, item, ex); + handler.handleKeyMatchError(constraint, node, item, ex); throw ex; } } @@ -415,16 +492,19 @@ private void validateMatches( @NonNull IMatchesConstraint constraint, @NonNull INodeItem node, @NonNull ISequence targets) { + IConstraintValidationHandler handler = getConstraintValidationHandler(); targets.stream() .forEachOrdered(item -> { assert item != null; if (item.hasValue()) { String value = FnData.fnDataItem(item).asString(); + boolean violation = false; Pattern pattern = constraint.getPattern(); if (pattern != null && !pattern.asMatchPredicate().test(value)) { // failed pattern match - getConstraintValidationHandler().handleMatchPatternViolation(constraint, node, item, value); + handler.handleMatchPatternViolation(constraint, node, item, value); + violation = true; } IDataTypeAdapter adapter = constraint.getDataType(); @@ -432,9 +512,14 @@ private void validateMatches( try { adapter.parse(value); } catch (IllegalArgumentException ex) { - getConstraintValidationHandler().handleMatchDatatypeViolation(constraint, node, item, value, ex); + handler.handleMatchDatatypeViolation(constraint, node, item, value, ex); + violation = true; } } + + if (!violation) { + handlePass(constraint, node, item); + } } }); } @@ -537,6 +622,8 @@ private void validateExpect( MetapathExpression metapath = MetapathExpression.compile( constraint.getTest(), dynamicContext.getStaticContext()); + + IConstraintValidationHandler handler = getConstraintValidationHandler(); targets.stream() .map(item -> (INodeItem) item) .forEachOrdered(item -> { @@ -545,7 +632,9 @@ private void validateExpect( try { ISequence result = metapath.evaluate(item, dynamicContext); if (!FnBoolean.fnBoolean(result).toBoolean()) { - getConstraintValidationHandler().handleExpectViolation(constraint, node, item, dynamicContext); + handler.handleExpectViolation(constraint, node, item, dynamicContext); + } else { + handlePass(constraint, node, item); } } catch (MetapathException ex) { rethrowConstraintError(constraint, item, ex); @@ -572,7 +661,7 @@ private void validateAllowedValues( @NonNull DynamicContext dynamicContext) { for (IAllowedValuesConstraint constraint : constraints) { ISequence> targets = constraint.matchTargets(item, dynamicContext); - validateAllowedValues(constraint, targets); + validateAllowedValues(constraint, item, targets); } } @@ -582,18 +671,22 @@ private void validateAllowedValues( * * @param constraint * the constraint to execute + * @param node + * the original focus of Metapath evaluation for identifying the + * targets * @param targets * the focus of Metapath evaluation for evaluating any constraint * Metapath clauses */ private void validateAllowedValues( @NonNull IAllowedValuesConstraint constraint, + @NonNull IDefinitionNodeItem node, @NonNull ISequence> targets) { targets.stream().forEachOrdered(item -> { assert item != null; if (item.hasValue()) { try { - updateValueStatus(item, constraint); + updateValueStatus(item, constraint, node); } catch (MetapathException ex) { rethrowConstraintError(constraint, item, ex); } @@ -635,9 +728,15 @@ private static void rethrowConstraintError( * @param targetItem * the item whose value is targeted by the constraint * @param allowedValues - * the set of allowed values + * the allowed values constraint + * @param node + * the original focus of Metapath evaluation for identifying the + * targets */ - protected void updateValueStatus(@NonNull INodeItem targetItem, @NonNull IAllowedValuesConstraint allowedValues) { + protected void updateValueStatus( + @NonNull INodeItem targetItem, + @NonNull IAllowedValuesConstraint allowedValues, + @NonNull IDefinitionNodeItem node) { // constraint.getAllowedValues().containsKey(value) @Nullable ValueStatus valueStatus = valueMap.get(targetItem); @@ -646,7 +745,7 @@ protected void updateValueStatus(@NonNull INodeItem targetItem, @NonNull IAllowe valueMap.put(targetItem, valueStatus); } - valueStatus.registerAllowedValue(allowedValues); + valueStatus.registerAllowedValue(allowedValues, node); } /** @@ -672,27 +771,32 @@ public void finalizeValidation(DynamicContext dynamicContext) { List keyRefs = entry.getValue(); + IConstraintValidationHandler handler = getConstraintValidationHandler(); for (KeyRef keyRef : keyRefs) { IIndexHasKeyConstraint constraint = keyRef.getConstraint(); - for (INodeItem item : keyRef.getTargets()) { + + INodeItem node = keyRef.getNode(); + List targets = keyRef.getTargets(); + for (INodeItem item : targets) { assert item != null; try { List key = IIndex.toKey(item, constraint.getKeyFields(), dynamicContext); if (index == null) { - getConstraintValidationHandler().handleGenericValidationViolation(constraint, keyRef.getNode(), item, + handler.handleGenericValidationViolation(constraint, node, item, String.format("Key reference to undefined index with name '%s'", indexName)); } else { - INodeItem referencedItem = index.get(key); if (referencedItem == null) { - getConstraintValidationHandler().handleIndexMiss(constraint, keyRef.getNode(), item, key); + handler.handleIndexMiss(constraint, node, item, key); + } else { + handlePass(constraint, node, item); } } } catch (MetapathException ex) { - getConstraintValidationHandler().handleKeyMatchError(constraint, keyRef.getNode(), item, ex); + handler.handleKeyMatchError(constraint, node, item, ex); } } } @@ -701,7 +805,7 @@ public void finalizeValidation(DynamicContext dynamicContext) { private class ValueStatus { @NonNull - private final List constraints = new LinkedList<>(); + private final List>> constraints = new LinkedList<>(); @NonNull private final String value; @NonNull @@ -715,8 +819,10 @@ public ValueStatus(@NonNull INodeItem item) { this.value = FnData.fnDataItem(item).asString(); } - public void registerAllowedValue(@NonNull IAllowedValuesConstraint allowedValues) { - this.constraints.add(allowedValues); + public void registerAllowedValue( + @NonNull IAllowedValuesConstraint allowedValues, + @NonNull IDefinitionNodeItem node) { + this.constraints.add(Pair.of(allowedValues, node)); if (!allowedValues.isAllowedOther()) { // record the most restrictive value allowOthers = false; @@ -745,10 +851,14 @@ public void validate() { if (!constraints.isEmpty()) { boolean match = false; List failedConstraints = new LinkedList<>(); - for (IAllowedValuesConstraint allowedValues : constraints) { + IConstraintValidationHandler handler = getConstraintValidationHandler(); + for (Pair> pair : constraints) { + IAllowedValuesConstraint allowedValues = pair.getLeft(); + IDefinitionNodeItem node = pair.getRight(); IAllowedValue matchingValue = allowedValues.getAllowedValue(value); if (matchingValue != null) { match = true; + handlePass(allowedValues, node, item); } else if (IAllowedValuesConstraint.Extensible.NONE.equals(allowedValues.getExtensible())) { // hard failure, since no other values can satisfy this constraint failedConstraints = CollectionUtil.singletonList(allowedValues); @@ -761,7 +871,7 @@ public void validate() { // it's not a failure if allow others is true if (!match && !allowOthers) { - getConstraintValidationHandler().handleAllowedValuesViolation(failedConstraints, item); + handler.handleAllowedValuesViolation(failedConstraints, item); } } } diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/FindingCollectingConstraintValidationHandler.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/FindingCollectingConstraintValidationHandler.java index 57abb5f06..f01a15b6d 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/FindingCollectingConstraintValidationHandler.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/FindingCollectingConstraintValidationHandler.java @@ -31,8 +31,10 @@ import gov.nist.secauto.metaschema.core.metapath.MetapathException; import gov.nist.secauto.metaschema.core.metapath.item.node.INodeItem; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint.Level; +import gov.nist.secauto.metaschema.core.model.validation.IValidationFinding.Kind; import gov.nist.secauto.metaschema.core.model.validation.IValidationResult; import gov.nist.secauto.metaschema.core.util.CollectionUtil; +import gov.nist.secauto.metaschema.core.util.ObjectUtils; import java.util.LinkedList; import java.util.List; @@ -74,13 +76,39 @@ protected void addFinding(@NonNull ConstraintValidationFinding finding) { } } + @NonNull + private static Kind toKind(@NonNull Level level) { + Kind retval; + switch (level) { + case CRITICAL: + case ERROR: + retval = Kind.FAIL; + break; + case INFORMATIONAL: + case DEBUG: + case NONE: + retval = Kind.INFORMATIONAL; + break; + case WARNING: + retval = Kind.PASS; + break; + default: + throw new IllegalArgumentException(String.format("Unsupported level '%s'.", level)); + } + + return retval; + } + @Override public void handleCardinalityMinimumViolation( @NonNull ICardinalityConstraint constraint, @NonNull INodeItem node, @NonNull ISequence targets) { addFinding(ConstraintValidationFinding.builder(constraint, node) - .targets(targets.getValue()) + .severity(constraint.getLevel()) + .kind(toKind(constraint.getLevel())) + .target(node) + .subjects(targets.getValue()) .message(newCardinalityMinimumViolationMessage(constraint, node, targets)) .build()); } @@ -91,7 +119,10 @@ public void handleCardinalityMaximumViolation( @NonNull INodeItem node, @NonNull ISequence targets) { addFinding(ConstraintValidationFinding.builder(constraint, node) - .targets(targets.getValue()) + .severity(constraint.getLevel()) + .kind(toKind(constraint.getLevel())) + .target(node) + .subjects(targets.getValue()) .message(newCardinalityMaximumViolationMessage(constraint, node, targets)) .build()); } @@ -103,6 +134,8 @@ public void handleIndexDuplicateKeyViolation( @NonNull INodeItem oldItem, @NonNull INodeItem target) { addFinding(ConstraintValidationFinding.builder(constraint, node) + .severity(constraint.getLevel()) + .kind(toKind(constraint.getLevel())) .target(target) .message(newIndexDuplicateKeyViolationMessage(constraint, node, oldItem, target)) .build()); @@ -115,6 +148,8 @@ public void handleUniqueKeyViolation( @NonNull INodeItem oldItem, @NonNull INodeItem target) { addFinding(ConstraintValidationFinding.builder(constraint, node) + .severity(constraint.getLevel()) + .kind(toKind(constraint.getLevel())) .target(target) .message(newUniqueKeyViolationMessage(constraint, node, oldItem, target)) .build()); @@ -128,6 +163,8 @@ public void handleKeyMatchError( @NonNull INodeItem target, @NonNull MetapathException cause) { addFinding(ConstraintValidationFinding.builder(constraint, node) + .severity(constraint.getLevel()) + .kind(toKind(constraint.getLevel())) .target(target) .message(cause.getLocalizedMessage()) .cause(cause) @@ -141,6 +178,8 @@ public void handleMatchPatternViolation( @NonNull INodeItem target, @NonNull String value) { addFinding(ConstraintValidationFinding.builder(constraint, node) + .severity(constraint.getLevel()) + .kind(toKind(constraint.getLevel())) .target(target) .message(newMatchPatternViolationMessage(constraint, node, target, value)) .build()); @@ -154,6 +193,8 @@ public void handleMatchDatatypeViolation( @NonNull String value, @NonNull IllegalArgumentException cause) { addFinding(ConstraintValidationFinding.builder(constraint, node) + .severity(constraint.getLevel()) + .kind(toKind(constraint.getLevel())) .target(target) .message(newMatchDatatypeViolationMessage(constraint, node, target, value)) .cause(cause) @@ -167,15 +208,24 @@ public void handleExpectViolation( @NonNull INodeItem target, @NonNull DynamicContext dynamicContext) { addFinding(ConstraintValidationFinding.builder(constraint, node) + .severity(constraint.getLevel()) + .kind(toKind(constraint.getLevel())) .target(target) .message(newExpectViolationMessage(constraint, node, target, dynamicContext)) .build()); } @Override - public void handleAllowedValuesViolation(@NonNull List failedConstraints, + public void handleAllowedValuesViolation( + @NonNull List failedConstraints, @NonNull INodeItem target) { + Level maxLevel = ObjectUtils.notNull(failedConstraints.stream() + .map(IAllowedValuesConstraint::getLevel) + .reduce(Level.NONE, (l1, l2) -> l1.ordinal() >= l2.ordinal() ? l1 : l2)); + addFinding(ConstraintValidationFinding.builder(failedConstraints, target) + .severity(maxLevel) + .kind(toKind(maxLevel)) .target(target) .message(newAllowedValuesViolationMessage(failedConstraints, target)) .build()); @@ -184,6 +234,7 @@ public void handleAllowedValuesViolation(@NonNull List @Override public void handleIndexDuplicateViolation(IIndexConstraint constraint, INodeItem node) { addFinding(ConstraintValidationFinding.builder(constraint, node) + .kind(Kind.FAIL) .message(newIndexDuplicateViolationMessage(constraint, node)) .severity(Level.CRITICAL) .build()); @@ -192,6 +243,8 @@ public void handleIndexDuplicateViolation(IIndexConstraint constraint, INodeItem @Override public void handleIndexMiss(IIndexHasKeyConstraint constraint, INodeItem node, INodeItem target, List key) { addFinding(ConstraintValidationFinding.builder(constraint, node) + .severity(constraint.getLevel()) + .kind(toKind(constraint.getLevel())) .message(newIndexMissMessage(constraint, node, target, key)) .build()); } @@ -200,7 +253,17 @@ public void handleIndexMiss(IIndexHasKeyConstraint constraint, INodeItem node, I public void handleGenericValidationViolation(IConstraint constraint, INodeItem node, INodeItem target, String message) { addFinding(ConstraintValidationFinding.builder(constraint, node) + .severity(constraint.getLevel()) + .kind(toKind(constraint.getLevel())) .message(newGenericValidationViolationMessage(constraint, node, target, message)) .build()); } + + @Override + public void handlePass(IConstraint constraint, INodeItem node, INodeItem target) { + addFinding(ConstraintValidationFinding.builder(constraint, node) + .severity(Level.NONE) + .kind(Kind.PASS) + .build()); + } } diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/IConstraint.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/IConstraint.java index 26daee64e..d2c79cccb 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/IConstraint.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/IConstraint.java @@ -42,16 +42,32 @@ * flag. Provides a common interface for all constraint definitions. */ public interface IConstraint extends IAttributable, IDescribable { + enum Kind { + NOT_APPLICABLE, + PASS, + FAIL, + INFORMATIONAL; + } + /** * The degree to which a constraint violation is significant. *

* These values are ordered from least significant to most significant. */ enum Level { + /** + * No violation. + */ + NONE, /** * A violation of the constraint represents a point of interest. */ INFORMATIONAL, + /** + * A violation of the constraint represents a fault in the content that may + * warrant review by a developer when performing model or tool development. + */ + DEBUG, /** * A violation of the constraint represents a potential issue with the content. */ diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/IConstraintValidationHandler.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/IConstraintValidationHandler.java index afc5fed65..c1688e811 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/IConstraintValidationHandler.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/IConstraintValidationHandler.java @@ -103,4 +103,13 @@ void handleGenericValidationViolation( @NonNull INodeItem node, @NonNull INodeItem target, @NonNull String message); + + void handlePass( + @NonNull IConstraint constraint, + @NonNull INodeItem node, + @NonNull INodeItem target); + // void handlePass( + // @NonNull IConstraint constraint, + // @NonNull INodeItem node, + // @NonNull List targets); } diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/ISource.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/ISource.java index 631db147f..38fffe004 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/ISource.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/ISource.java @@ -26,9 +26,9 @@ package gov.nist.secauto.metaschema.core.model.constraint; -import gov.nist.secauto.metaschema.core.model.constraint.impl.ExternalModelSource; import gov.nist.secauto.metaschema.core.model.constraint.impl.ExternalSource; import gov.nist.secauto.metaschema.core.model.constraint.impl.InternalModelSource; +import gov.nist.secauto.metaschema.core.model.constraint.impl.UnknownInternalModelSource; import java.net.URI; @@ -59,7 +59,7 @@ enum SourceType { */ @NonNull static ISource modelSource() { - return InternalModelSource.singleton(); + return UnknownInternalModelSource.instance(); } /** @@ -74,7 +74,7 @@ static ISource modelSource() { */ @NonNull static ISource modelSource(@Nullable URI location) { - return location == null ? modelSource() : ExternalModelSource.instance(location); + return location == null ? modelSource() : InternalModelSource.instance(location); } /** diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/LoggingConstraintValidationHandler.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/LoggingConstraintValidationHandler.java index 990bb48cb..a45a73b64 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/LoggingConstraintValidationHandler.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/LoggingConstraintValidationHandler.java @@ -250,4 +250,8 @@ public void handleGenericValidationViolation(IConstraint constraint, INodeItem n } } + @Override + public void handlePass(IConstraint constraint, INodeItem node, INodeItem target) { + // do nothing + } } diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/ValidationFeature.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/ValidationFeature.java new file mode 100644 index 000000000..929cc6938 --- /dev/null +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/ValidationFeature.java @@ -0,0 +1,48 @@ +/* + * Portions of this software was developed by employees of the National Institute + * of Standards and Technology (NIST), an agency of the Federal Government and is + * being made available as a public service. Pursuant to title 17 United States + * Code Section 105, works of NIST employees are not subject to copyright + * protection in the United States. This software may be subject to foreign + * copyright. Permission in the United States and in foreign countries, to the + * extent that NIST may hold copyright, to use, copy, modify, create derivative + * works, and distribute this software and its documentation without fee is hereby + * granted on a non-exclusive basis, provided that this notice and disclaimer + * of warranty appears in all copies. + * + * THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND, EITHER + * EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY + * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM + * INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE + * SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE. IN NO EVENT + * SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, + * INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, + * OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY, + * CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR + * PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT + * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. + */ + +package gov.nist.secauto.metaschema.core.model.constraint; + +import gov.nist.secauto.metaschema.core.configuration.AbstractConfigurationFeature; + +import edu.umd.cs.findbugs.annotations.NonNull; + +@SuppressWarnings("PMD.DataClass") // not a data class +public final class ValidationFeature + extends AbstractConfigurationFeature { + /** + * If enabled, generate findings for passing constraints. + */ + @NonNull + public static final ValidationFeature VALIDATE_GENERATE_PASS_FINDINGS + = new ValidationFeature<>(Boolean.class, false); + + private ValidationFeature( + @NonNull Class valueClass, + @NonNull V defaultValue) { + super(valueClass, defaultValue); + } +} diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/impl/InternalModelSource.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/impl/InternalModelSource.java index 440c6881c..219f2c1e7 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/impl/InternalModelSource.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/impl/InternalModelSource.java @@ -29,6 +29,8 @@ import gov.nist.secauto.metaschema.core.model.constraint.ISource; import java.net.URI; +import java.util.HashMap; +import java.util.Map; import edu.umd.cs.findbugs.annotations.NonNull; @@ -39,20 +41,33 @@ */ public final class InternalModelSource implements ISource { @NonNull - private static final ISource INSTANCE = new InternalModelSource(); + private static final Map sources = new HashMap<>(); // NOPMD - intentional + @NonNull + private final URI modelUri; /** - * Get a new instance of a model source that is not associated with a resource. + * Get a new instance of an external source associated with a resource + * {@code location}. * + * @param location + * the resource location containing a constraint * @return the source */ @NonNull - public static ISource singleton() { - return INSTANCE; + public static ISource instance(@NonNull URI location) { + ISource retval; + synchronized (sources) { + retval = sources.get(location); + if (retval == null) { + retval = new InternalModelSource(location); + } + } + return retval; } - private InternalModelSource() { + private InternalModelSource(@NonNull URI modelSource) { // reduce visibility + this.modelUri = modelSource; } @Override @@ -62,7 +77,6 @@ public SourceType getSourceType() { @Override public URI getSource() { - // always null - return null; + return modelUri; } } diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/impl/UnknownInternalModelSource.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/impl/UnknownInternalModelSource.java new file mode 100644 index 000000000..06c4202ae --- /dev/null +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/constraint/impl/UnknownInternalModelSource.java @@ -0,0 +1,71 @@ +/* + * Portions of this software was developed by employees of the National Institute + * of Standards and Technology (NIST), an agency of the Federal Government and is + * being made available as a public service. Pursuant to title 17 United States + * Code Section 105, works of NIST employees are not subject to copyright + * protection in the United States. This software may be subject to foreign + * copyright. Permission in the United States and in foreign countries, to the + * extent that NIST may hold copyright, to use, copy, modify, create derivative + * works, and distribute this software and its documentation without fee is hereby + * granted on a non-exclusive basis, provided that this notice and disclaimer + * of warranty appears in all copies. + * + * THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND, EITHER + * EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY + * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM + * INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE + * SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE. IN NO EVENT + * SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, + * INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, + * OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY, + * CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR + * PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT + * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. + */ + +package gov.nist.secauto.metaschema.core.model.constraint.impl; + +import gov.nist.secauto.metaschema.core.model.constraint.ISource; + +import java.net.URI; + +import edu.umd.cs.findbugs.annotations.NonNull; + +/** + * Implements a + * {@link gov.nist.secauto.metaschema.core.model.constraint.ISource.SourceType#MODEL} + * source with no associated resource. + */ +public final class UnknownInternalModelSource implements ISource { + @NonNull + private static final ISource INSTANCE = new UnknownInternalModelSource(); + + /** + * Get a new instance of an internal source associated without a resource + * location. + * + * @param location + * the resource location containing a constraint + * @return the source + */ + @NonNull + public static ISource instance() { + return INSTANCE; + } + + private UnknownInternalModelSource() { + // reduce visibility + } + + @Override + public SourceType getSourceType() { + return SourceType.MODEL; + } + + @Override + public URI getSource() { + // always null + return null; + } +} diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/IValidationFinding.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/IValidationFinding.java index dc2df351e..a659837b7 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/IValidationFinding.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/IValidationFinding.java @@ -26,17 +26,29 @@ package gov.nist.secauto.metaschema.core.model.validation; +import gov.nist.secauto.metaschema.core.model.IResourceLocation; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import java.net.URI; import edu.umd.cs.findbugs.annotations.NonNull; +import edu.umd.cs.findbugs.annotations.Nullable; /** * Provides information about an individual finding that is the result of a * completed content validation. */ public interface IValidationFinding { + enum Kind { + NOT_APPLICABLE, + PASS, + FAIL, + INFORMATIONAL; + } + + @Nullable + String getIdentifier(); + /** * Get the finding's severity. * @@ -45,6 +57,9 @@ public interface IValidationFinding { @NonNull IConstraint.Level getSeverity(); + @NonNull + Kind getKind(); + /** * Get the document's URI. * @@ -52,28 +67,38 @@ public interface IValidationFinding { */ @NonNull URI getDocumentUri(); - // - // /** - // * Get the line on which the finding occurred. - // * - // * @return the line number or {@code null} if unknown - // */ - // Integer getLineNumber(); - // - // /** - // * Get the line column on which the finding occurred. - // * - // * @return the column umber or {@code null} if unknown - // */ - // Integer getColumnNumber(); + + /** + * Get the location in the associated resource associated with the finding. + * + * @return the location or {@code null} if no location is known + */ + @Nullable + IResourceLocation getLocation(); + + /** + * Get the path expression type provided by the {@link #getPath()} method. + * + * @return the path type identifier or {@code null} if unknown + */ + @Nullable + String getPathKind(); + + /** + * A format specific path to the finding in the source document. + * + * @return the path or {@code null} if unknown + */ + @Nullable + String getPath(); /** * Get the finding message. * - * @return the message + * @return the message or {@code null} if there is no message */ - @NonNull - CharSequence getMessage(); + @Nullable + String getMessage(); /** * Get the exception associated with the finding. diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/JsonSchemaContentValidator.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/JsonSchemaContentValidator.java index 8c8c1eb90..09ca0e259 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/JsonSchemaContentValidator.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/JsonSchemaContentValidator.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.core.model.validation; +import gov.nist.secauto.metaschema.core.model.IResourceLocation; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; @@ -116,11 +117,24 @@ public static class JsonValidationFinding implements IValidationFinding { @NonNull private final URI documentUri; - public JsonValidationFinding(@NonNull ValidationException exception, @NonNull URI documentUri) { + public JsonValidationFinding( + @NonNull ValidationException exception, + @NonNull URI documentUri) { this.exception = ObjectUtils.requireNonNull(exception, "exception"); this.documentUri = ObjectUtils.requireNonNull(documentUri, "documentUri"); } + @Override + public String getIdentifier() { + // always null + return null; + } + + @Override + public Kind getKind() { + return IValidationFinding.Kind.FAIL; + } + @Override public IConstraint.Level getSeverity() { return IConstraint.Level.ERROR; @@ -131,6 +145,22 @@ public URI getDocumentUri() { return documentUri; } + @Override + public IResourceLocation getLocation() { + // not known + return null; + } + + @Override + public String getPathKind() { + return "JSON-pointer"; + } + + @Override + public String getPath() { + return getCause().getPointerToViolation(); + } + @SuppressWarnings("null") @Override public String getMessage() { diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/XmlSchemaContentValidator.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/XmlSchemaContentValidator.java index d841dd425..120598929 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/XmlSchemaContentValidator.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/validation/XmlSchemaContentValidator.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.core.model.validation; +import gov.nist.secauto.metaschema.core.model.IResourceLocation; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint.Level; import gov.nist.secauto.metaschema.core.util.ObjectUtils; @@ -96,7 +97,7 @@ public IValidationResult validate(InputStream is, URI documentUri) throws IOExce return errorHandler; } - public static class XmlValidationFinding implements IValidationFinding { + public static class XmlValidationFinding implements IValidationFinding, IResourceLocation { @NonNull private final URI documentUri; @NonNull @@ -104,13 +105,26 @@ public static class XmlValidationFinding implements IValidationFinding { @NonNull private final Level severity; - public XmlValidationFinding(@NonNull Level severity, @NonNull SAXParseException exception, + public XmlValidationFinding( + @NonNull Level severity, + @NonNull SAXParseException exception, @NonNull URI documentUri) { this.documentUri = ObjectUtils.requireNonNull(documentUri, "documentUri"); this.exception = ObjectUtils.requireNonNull(exception, "exception"); this.severity = ObjectUtils.requireNonNull(severity, "severity"); } + @Override + public String getIdentifier() { + // always null + return null; + } + + @Override + public Kind getKind() { + return Level.WARNING.equals(getSeverity()) ? Kind.PASS : Kind.FAIL; + } + @Override public Level getSeverity() { return severity; @@ -123,6 +137,46 @@ public URI getDocumentUri() { return systemId == null ? documentUri : URI.create(systemId); } + @Override + public int getLine() { + return getCause().getLineNumber(); + } + + @Override + public int getColumn() { + return getCause().getColumnNumber(); + } + + @Override + public long getCharOffset() { + // not known + return -1; + } + + @Override + public long getByteOffset() { + // not known + return -1; + } + + @Override + public IResourceLocation getLocation() { + // TODO Auto-generated method stub + return this; + } + + @Override + public String getPathKind() { + // not known + return null; + } + + @Override + public String getPath() { + // not known + return null; + } + @SuppressWarnings("null") @Override public String getMessage() { diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/impl/IXmlObjectBinding.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/impl/IXmlObjectBinding.java new file mode 100644 index 000000000..7c6970d81 --- /dev/null +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/impl/IXmlObjectBinding.java @@ -0,0 +1,47 @@ +/* + * Portions of this software was developed by employees of the National Institute + * of Standards and Technology (NIST), an agency of the Federal Government and is + * being made available as a public service. Pursuant to title 17 United States + * Code Section 105, works of NIST employees are not subject to copyright + * protection in the United States. This software may be subject to foreign + * copyright. Permission in the United States and in foreign countries, to the + * extent that NIST may hold copyright, to use, copy, modify, create derivative + * works, and distribute this software and its documentation without fee is hereby + * granted on a non-exclusive basis, provided that this notice and disclaimer + * of warranty appears in all copies. + * + * THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND, EITHER + * EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY + * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM + * INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE + * SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE. IN NO EVENT + * SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, + * INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, + * OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY, + * CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR + * PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT + * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. + */ + +package gov.nist.secauto.metaschema.core.model.xml.impl; + +import gov.nist.secauto.metaschema.core.model.IResourceLocation; + +import org.apache.xmlbeans.XmlObject; + +import edu.umd.cs.findbugs.annotations.NonNull; + +public interface IXmlObjectBinding { + /** + * Get the underlying XML data. + * + * @return the underlying XML data + */ + @NonNull + XmlObject getXmlObject(); + + default IResourceLocation getLocation() { + return XmlBeansLocation.toLocation(getXmlObject()); + } +} diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/impl/XmlBeansLocation.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/impl/XmlBeansLocation.java new file mode 100644 index 000000000..66c91ada4 --- /dev/null +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/impl/XmlBeansLocation.java @@ -0,0 +1,73 @@ +/* + * Portions of this software was developed by employees of the National Institute + * of Standards and Technology (NIST), an agency of the Federal Government and is + * being made available as a public service. Pursuant to title 17 United States + * Code Section 105, works of NIST employees are not subject to copyright + * protection in the United States. This software may be subject to foreign + * copyright. Permission in the United States and in foreign countries, to the + * extent that NIST may hold copyright, to use, copy, modify, create derivative + * works, and distribute this software and its documentation without fee is hereby + * granted on a non-exclusive basis, provided that this notice and disclaimer + * of warranty appears in all copies. + * + * THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND, EITHER + * EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY + * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM + * INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE + * SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE. IN NO EVENT + * SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, + * INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, + * OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY, + * CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR + * PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT + * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. + */ + +package gov.nist.secauto.metaschema.core.model.xml.impl; + +import gov.nist.secauto.metaschema.core.model.IResourceLocation; + +import org.apache.xmlbeans.XmlCursor; +import org.apache.xmlbeans.XmlCursor.XmlBookmark; +import org.apache.xmlbeans.XmlLineNumber; +import org.apache.xmlbeans.XmlObject; + +import edu.umd.cs.findbugs.annotations.NonNull; + +public class XmlBeansLocation implements IResourceLocation { + @NonNull + private final XmlLineNumber lineNumber; + + public static IResourceLocation toLocation(@NonNull XmlObject xmlObject) { + try (XmlCursor cursor = xmlObject.newCursor()) { + XmlBookmark bookmark = cursor.getBookmark(XmlLineNumber.class); + return bookmark == null ? null : new XmlBeansLocation((XmlLineNumber) bookmark); + } + } + + public XmlBeansLocation(@NonNull XmlLineNumber lineNumber) { + this.lineNumber = lineNumber; + } + + @Override + public int getLine() { + return lineNumber.getLine(); + } + + @Override + public int getColumn() { + return lineNumber.getColumn(); + } + + @Override + public long getCharOffset() { + return lineNumber.getOffset(); + } + + @Override + public long getByteOffset() { + // not supported + return -1; + } +} diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/impl/XmlGlobalAssemblyDefinition.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/impl/XmlGlobalAssemblyDefinition.java index aff654c94..81b305036 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/impl/XmlGlobalAssemblyDefinition.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/impl/XmlGlobalAssemblyDefinition.java @@ -40,6 +40,7 @@ import gov.nist.secauto.metaschema.core.model.IFlagInstance; import gov.nist.secauto.metaschema.core.model.IModelInstanceAbsolute; import gov.nist.secauto.metaschema.core.model.INamedModelInstanceAbsolute; +import gov.nist.secauto.metaschema.core.model.IResourceLocation; import gov.nist.secauto.metaschema.core.model.ModuleScopeEnum; import gov.nist.secauto.metaschema.core.model.constraint.AssemblyConstraintSet; import gov.nist.secauto.metaschema.core.model.constraint.IModelConstrained; @@ -66,7 +67,8 @@ class XmlGlobalAssemblyDefinition IFieldInstanceAbsolute, IAssemblyInstanceAbsolute, IChoiceInstance, - IChoiceGroupInstance> { + IChoiceGroupInstance> + implements IXmlObjectBinding { @NonNull private final GlobalAssemblyDefinitionType xmlAssembly; @@ -140,11 +142,17 @@ public IModelConstrained getConstraintSupport() { * * @return the underlying XML data */ + @Override @NonNull - protected GlobalAssemblyDefinitionType getXmlObject() { + public GlobalAssemblyDefinitionType getXmlObject() { return xmlAssembly; } + @Override + public IResourceLocation getLocation(Object itemValue) { + return null; + } + @Override public String getName() { return ObjectUtils.requireNonNull(getXmlObject().getName()); diff --git a/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/xmlbeans/handler/ConstraintLevelType.java b/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/xmlbeans/handler/ConstraintLevelType.java index 13f61a9a0..7570cd61a 100644 --- a/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/xmlbeans/handler/ConstraintLevelType.java +++ b/core/src/main/java/gov/nist/secauto/metaschema/core/model/xml/xmlbeans/handler/ConstraintLevelType.java @@ -56,6 +56,9 @@ public static void encodeConstraintLevelType(IConstraint.Level obj, org.apache.x case INFORMATIONAL: target.setStringValue("INFORMATIONAL"); break; + case DEBUG: + target.setStringValue("DEBUG"); + break; default: throw new UnsupportedOperationException(obj.name()); } @@ -85,6 +88,9 @@ public static IConstraint.Level decodeConstraintLevelType(org.apache.xmlbeans.Si case "INFORMATIONAL": retval = IConstraint.Level.INFORMATIONAL; break; + case "DEBUG": + retval = IConstraint.Level.DEBUG; + break; default: throw new UnsupportedOperationException(value); } diff --git a/databind-metaschema/pom.xml b/databind-metaschema/pom.xml index fe954bf62..260bfe7d0 100644 --- a/databind-metaschema/pom.xml +++ b/databind-metaschema/pom.xml @@ -7,9 +7,9 @@ 1.0.0-M2-SNAPSHOT - metaschema-databind-metaschema + metaschema-databind-modules - Metaschema Format Databinding + Metaschema Modules ${site.url}${project.artifactId}/ @@ -58,6 +58,27 @@ + + org.apache.maven.plugins + maven-toolchains-plugin + ${plugin.maven-toolchains.version} + + + + toolchain + + + + + + + 11 + temurin + + + + + org.apache.maven.plugins maven-pmd-plugin @@ -75,6 +96,13 @@ **/gov/nist/secauto/metaschema/metaschema/model/**/* + + com.github.spotbugs + spotbugs-maven-plugin + + spotbugs-exclude.xml + + @@ -83,8 +111,59 @@ metaschema-maven-plugin ${project.version} + + + + + + + + + + + + + + + + + + + metaschema-xml-schema + generate-sources + + generate-schemas + + + ${project.basedir}/../core/metaschema/schema/metaschema + ${project.build.directory}/generated-resources/schema/xml + + metaschema-module-metaschema.xml + + + xsd + + + + + metaschema-json-schema + generate-sources + + generate-schemas + + + ${project.basedir}/../core/metaschema/schema/metaschema + ${project.build.directory}/generated-resources/schema/json + + metaschema-module-metaschema.xml + + + json + + + - metaschema-codegen + sarif-codegen generate-sources generate-sources @@ -92,47 +171,45 @@ ${project.basedir}/../core/metaschema/schema/metaschema ${project.build.directory}/generated-sources/metaschema - - - ${project.basedir}/src/main/metaschema-bindings/metaschema-metaschema-bindings.xml - - metaschema-module-metaschema.xml + sarif-module.xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + sarif-xml-schema + generate-sources + + generate-schemas + + + ${project.basedir}/../core/metaschema/schema/metaschema + ${project.build.directory}/generated-resources/schema/xml + + sarif-module.xml + + + xsd + + + + + sarif-json-schema + generate-sources + + generate-schemas + + + ${project.basedir}/../core/metaschema/schema/metaschema + ${project.build.directory}/generated-resources/schema/json + + sarif-module.xml + + + json + + + diff --git a/databind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.java b/databind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.java new file mode 100644 index 000000000..58e3df306 --- /dev/null +++ b/databind-metaschema/src/main/java/gov/nist/secauto/metaschema/modules/sarif/SarifValidationHandler.java @@ -0,0 +1,366 @@ +/* + * Portions of this software was developed by employees of the National Institute + * of Standards and Technology (NIST), an agency of the Federal Government and is + * being made available as a public service. Pursuant to title 17 United States + * Code Section 105, works of NIST employees are not subject to copyright + * protection in the United States. This software may be subject to foreign + * copyright. Permission in the United States and in foreign countries, to the + * extent that NIST may hold copyright, to use, copy, modify, create derivative + * works, and distribute this software and its documentation without fee is hereby + * granted on a non-exclusive basis, provided that this notice and disclaimer + * of warranty appears in all copies. + * + * THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND, EITHER + * EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY + * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM + * INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE + * SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE. IN NO EVENT + * SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, + * INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, + * OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY, + * CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR + * PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT + * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. + */ + +package gov.nist.secauto.metaschema.modules.sarif; + +import gov.nist.csrc.ns.oscal.metaschema.validation.results.x10.Location; +import gov.nist.csrc.ns.oscal.metaschema.validation.results.x10.Message; +import gov.nist.csrc.ns.oscal.metaschema.validation.results.x10.PhysicalLocation; +import gov.nist.csrc.ns.oscal.metaschema.validation.results.x10.Region; +import gov.nist.csrc.ns.oscal.metaschema.validation.results.x10.Result; +import gov.nist.csrc.ns.oscal.metaschema.validation.results.x10.Run; +import gov.nist.csrc.ns.oscal.metaschema.validation.results.x10.Sarif; +import gov.nist.secauto.metaschema.core.model.IResourceLocation; +import gov.nist.secauto.metaschema.core.model.constraint.ConstraintValidationFinding; +import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; +import gov.nist.secauto.metaschema.core.model.constraint.IConstraint.Level; +import gov.nist.secauto.metaschema.core.model.validation.IValidationFinding; +import gov.nist.secauto.metaschema.core.model.validation.IValidationResult; +import gov.nist.secauto.metaschema.core.model.validation.JsonSchemaContentValidator.JsonValidationFinding; +import gov.nist.secauto.metaschema.core.model.validation.XmlSchemaContentValidator.XmlValidationFinding; +import gov.nist.secauto.metaschema.databind.IBindingContext; +import gov.nist.secauto.metaschema.databind.io.Format; +import gov.nist.secauto.metaschema.databind.io.SerializationFeature; + +import java.io.IOException; +import java.math.BigInteger; +import java.net.URI; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.util.LinkedList; +import java.util.List; + +import edu.umd.cs.findbugs.annotations.NonNull; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; + +public final class SarifValidationHandler { + private enum Kind { + NOT_APPLICABLE("notApplicable"), + PASS("pass"), + FAIL("fail"), + REVIEW("review"), + OPEN("open"), + INFORMATIONAL("informational"); + + @NonNull + private final String label; + + Kind(@NonNull String label) { + this.label = label; + } + + @NonNull + public String getLabel() { + return label; + } + } + + private enum SeverityLevel { + NONE("none"), + NOTE("note"), + WARNING("warning"), + ERROR("error"); + + @NonNull + private final String label; + + SeverityLevel(@NonNull String label) { + this.label = label; + } + + @NonNull + public String getLabel() { + return label; + } + } + + private static final SarifValidationHandler INSTANCE = new SarifValidationHandler(); + + @SuppressFBWarnings(value = "SING_SINGLETON_GETTER_NOT_SYNCHRONIZED", + justification = "both values are class initialized") + public static SarifValidationHandler instance() { + return INSTANCE; + } + + private SarifValidationHandler() { + // disable construction + } + + public boolean handleValidationResults( + @NonNull URI source, + @NonNull Path outputFile, + @NonNull IValidationResult validationResult, + @NonNull IBindingContext bindingContext) throws IOException { + + Sarif sarif = new Sarif(); + sarif.setVersion("2.1.0"); + + Run run = new Run(); + sarif.addRun(run); + + handleValidationFindings(validationResult.getFindings(), run); + + bindingContext.newSerializer(Format.JSON, Sarif.class) + .disableFeature(SerializationFeature.SERIALIZE_ROOT) + .serialize( + sarif, + outputFile, + StandardOpenOption.CREATE, + StandardOpenOption.WRITE, + StandardOpenOption.TRUNCATE_EXISTING); + + return validationResult.isPassing(); + } + + public void handleValidationFindings( + @NonNull List findings, + @NonNull Run run) { + + for (IValidationFinding finding : findings) { + if (finding instanceof JsonValidationFinding) { + run.addResult(handleJsonValidationFinding((JsonValidationFinding) finding)); + } else if (finding instanceof XmlValidationFinding) { + run.addResult(handleXmlValidationFinding((XmlValidationFinding) finding)); + } else if (finding instanceof ConstraintValidationFinding) { + handleConstraintValidationFinding((ConstraintValidationFinding) finding).stream() + .forEachOrdered(run::addResult); + } else { + throw new IllegalStateException(); + } + } + } + + private Result handleJsonValidationFinding(@NonNull JsonValidationFinding finding) { + Result result = new Result(); + + result.setKind(kind(finding).getLabel()); + result.setLevel(level(finding.getSeverity()).getLabel()); + message(finding, result); + location(finding, result); + // retval.setMessage(message(finding.getMessage())); + // + // + // getLogger(finding).log( + // ansi.a('[') + // .a(finding.getCause().getPointerToViolation()) + // .reset() + // .a(']') + // .format(" %s [%s]", + // finding.getMessage(), + // finding.getDocumentUri().toString())); + + return result; + } + + @NonNull + private Kind kind(@NonNull IValidationFinding finding) { + IValidationFinding.Kind kind = finding.getKind(); + + Kind retval; + switch (kind) { + case FAIL: + retval = Kind.FAIL; + break; + case INFORMATIONAL: + retval = Kind.INFORMATIONAL; + break; + case NOT_APPLICABLE: + retval = Kind.NOT_APPLICABLE; + break; + case PASS: + retval = Kind.PASS; + break; + default: + throw new IllegalArgumentException(String.format("Invalid finding kind '%s'.", kind)); + } + return retval; + } + + @NonNull + private SeverityLevel level(@NonNull Level severity) { + SeverityLevel retval; + switch (severity) { + case CRITICAL: + case ERROR: + retval = SeverityLevel.ERROR; + break; + case INFORMATIONAL: + case DEBUG: + retval = SeverityLevel.NOTE; + break; + case WARNING: + retval = SeverityLevel.WARNING; + break; + case NONE: + retval = SeverityLevel.NONE; + break; + default: + throw new IllegalArgumentException(String.format("Invalid severity '%s'.", severity)); + } + return retval; + } + + private void message(@NonNull IValidationFinding finding, @NonNull Result result) { + String message = finding.getMessage(); + if (message != null) { + Message msg = new Message(); + msg.setText(message); + result.setMessage(msg); + } + } + + private void location(@NonNull IValidationFinding finding, @NonNull Result result) { + IResourceLocation location = finding.getLocation(); + if (location != null) { + Region region = new Region(); + + if (location.getLine() > -1) { + region.setStartLine(BigInteger.valueOf(location.getLine())); + } + if (location.getColumn() > -1) { + region.setStartColumn(BigInteger.valueOf(location.getColumn())); + } + if (location.getByteOffset() > -1) { + region.setByteOffset(BigInteger.valueOf(location.getByteOffset())); + } + if (location.getCharOffset() > -1) { + region.setCharOffset(BigInteger.valueOf(location.getCharOffset())); + } + + PhysicalLocation physical = new PhysicalLocation(); + physical.setRegion(region); + + Location loc = new Location(); + loc.setPhysicalLocation(physical); + result.setLocation(loc); + } + } + + private Result handleXmlValidationFinding(@NonNull XmlValidationFinding finding) { + Result result = new Result(); + + result.setKind(kind(finding).getLabel()); + result.setLevel(level(finding.getSeverity()).getLabel()); + message(finding, result); + location(finding, result); + + // SAXParseException ex = finding.getCause(); + // + // getLogger(finding).log( + // ansi.format("%s [%s{%d,%d}]", + // finding.getMessage(), + // finding.getDocumentUri().toString(), + // ex.getLineNumber(), + // ex.getColumnNumber())); + + return result; + } + + private List handleConstraintValidationFinding(@NonNull ConstraintValidationFinding finding) { + List retval = new LinkedList<>(); + + Kind kind = kind(finding); + SeverityLevel level = level(finding.getSeverity()); + + for (IConstraint constraint : finding.getConstraints()) { + + Result result = new Result(); + + String id = constraint.getId(); + if (id != null) { + result.setRuleId(id); + } + result.setKind(kind.getLabel()); + result.setLevel(level.getLabel()); + message(finding, result); + location(finding, result); + + // getLogger(finding).log( + // ansi.format("[%s] %s", finding.getNode().getMetapath(), + // finding.getMessage())); + + retval.add(result); + } + return retval; + } + // + // @NonNull + // private LogBuilder getLogger(@NonNull IValidationFinding finding) { + // LogBuilder retval; + // switch (finding.getSeverity()) { + // case CRITICAL: + // retval = LOGGER.atFatal(); + // break; + // case ERROR: + // retval = LOGGER.atError(); + // break; + // case WARNING: + // retval = LOGGER.atWarn(); + // break; + // case INFORMATIONAL: + // retval = LOGGER.atInfo(); + // break; + // default: + // throw new IllegalArgumentException("Unknown level: " + + // finding.getSeverity().name()); + // } + // + // assert retval != null; + // + // if (finding.getCause() != null && isLogExceptions()) { + // retval.withThrowable(finding.getCause()); + // } + // + // return retval; + // } + // + // @SuppressWarnings("static-method") + // @NonNull + // private Ansi generatePreamble(@NonNull Level level) { + // + // switch (level) { + // case CRITICAL: + // ansi = ansi.fgRed().a("CRITICAL").reset(); + // break; + // case ERROR: + // ansi = ansi.fgBrightRed().a("ERROR").reset(); + // break; + // case WARNING: + // ansi = ansi.fgBrightYellow().a("WARNING").reset(); + // break; + // case INFORMATIONAL: + // ansi = ansi.fgBrightBlue().a("INFO").reset(); + // break; + // default: + // ansi = ansi().a(level.name()).reset(); + // break; + // } + // ansi = ansi.a("] ").reset(); + // + // assert ansi != null; + // return ansi; + // } +} diff --git a/databind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xml b/databind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xml index 1f8aa36da..580b79e35 100644 --- a/databind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xml +++ b/databind-metaschema/src/main/metaschema-bindings/metaschema-metaschema-bindings.xml @@ -25,7 +25,7 @@ - gov.nist.secauto.metaschema.databind.model.metaschema.IValueConstraintsBase + gov.nist.secauto.metaschema.databind.model.metaschema.IValueTargetedConstraintsBase diff --git a/databind-metaschema/src/main/metaschema-bindings/sarif-module-bindings.xml b/databind-metaschema/src/main/metaschema-bindings/sarif-module-bindings.xml new file mode 100644 index 000000000..4d2a5ceda --- /dev/null +++ b/databind-metaschema/src/main/metaschema-bindings/sarif-module-bindings.xml @@ -0,0 +1,9 @@ + + + + + gov.nist.secauto.metaschema.databind.binding.sarif + + + diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.java index 1976172e4..e052ebcba 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/DefaultBindingContext.java @@ -28,6 +28,7 @@ import gov.nist.secauto.metaschema.core.datatype.DataTypeService; import gov.nist.secauto.metaschema.core.datatype.IDataTypeAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IModule; import gov.nist.secauto.metaschema.core.model.IModuleLoader; import gov.nist.secauto.metaschema.core.util.ObjectUtils; @@ -47,7 +48,6 @@ import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; import gov.nist.secauto.metaschema.databind.model.IBoundModule; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; import java.nio.file.Files; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.java index 9d8a1bdd9..22026d483 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/IBindingContext.java @@ -26,16 +26,19 @@ package gov.nist.secauto.metaschema.databind; +import gov.nist.secauto.metaschema.core.configuration.IConfiguration; import gov.nist.secauto.metaschema.core.datatype.IDataTypeAdapter; import gov.nist.secauto.metaschema.core.metapath.DynamicContext; import gov.nist.secauto.metaschema.core.metapath.StaticContext; import gov.nist.secauto.metaschema.core.metapath.item.node.IDocumentNodeItem; import gov.nist.secauto.metaschema.core.metapath.item.node.INodeItem; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IModule; import gov.nist.secauto.metaschema.core.model.constraint.DefaultConstraintValidator; import gov.nist.secauto.metaschema.core.model.constraint.FindingCollectingConstraintValidationHandler; import gov.nist.secauto.metaschema.core.model.constraint.IConstraintValidationHandler; import gov.nist.secauto.metaschema.core.model.constraint.IConstraintValidator; +import gov.nist.secauto.metaschema.core.model.constraint.ValidationFeature; import gov.nist.secauto.metaschema.core.model.validation.AggregateValidationResult; import gov.nist.secauto.metaschema.core.model.validation.IValidationResult; import gov.nist.secauto.metaschema.core.model.validation.JsonSchemaContentValidator; @@ -52,7 +55,6 @@ import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; import gov.nist.secauto.metaschema.databind.model.IBoundModule; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaField; @@ -308,17 +310,25 @@ CLASS deepCopy(@NonNull CLASS other, IBoundObject p * * @param handler * the validation handler to use to process the validation results + * @param config + * the validation configuration * * @return the validator */ - default IConstraintValidator newValidator(@NonNull IConstraintValidationHandler handler) { + default IConstraintValidator newValidator( + @NonNull IConstraintValidationHandler handler, + @Nullable IConfiguration> config) { IBoundLoader loader = newBoundLoader(); loader.disableFeature(DeserializationFeature.DESERIALIZE_VALIDATE_CONSTRAINTS); DynamicContext context = new DynamicContext(); context.setDocumentLoader(loader); - return new DefaultConstraintValidator(handler); + DefaultConstraintValidator retval = new DefaultConstraintValidator(handler); + if (config != null) { + retval.applyConfiguration(config); + } + return retval; } /** @@ -329,13 +339,18 @@ default IConstraintValidator newValidator(@NonNull IConstraintValidationHandler * the node item to validate * @param loader * a module loader used to load and resolve referenced resources + * @param config + * the validation configuration * @return the validation result * @throws IllegalArgumentException * if the provided class is not bound to a Module assembly or field */ - default IValidationResult validate(@NonNull INodeItem nodeItem, @NonNull IBoundLoader loader) { + default IValidationResult validate( + @NonNull INodeItem nodeItem, + @NonNull IBoundLoader loader, + @Nullable IConfiguration> config) { FindingCollectingConstraintValidationHandler handler = new FindingCollectingConstraintValidationHandler(); - IConstraintValidator validator = newValidator(handler); + IConstraintValidator validator = newValidator(handler, config); StaticContext staticContext = StaticContext.builder() .defaultModelNamespace(nodeItem.getNamespace()) @@ -358,6 +373,8 @@ default IValidationResult validate(@NonNull INodeItem nodeItem, @NonNull IBoundL * the schema format to use to validate the target * @param schemaProvider * provides callbacks to get the appropriate schemas + * @param config + * the validation configuration * @return the validation result * @throws IOException * if an error occurred while reading the target @@ -365,12 +382,13 @@ default IValidationResult validate(@NonNull INodeItem nodeItem, @NonNull IBoundL default IValidationResult validate( @NonNull URI target, @NonNull Format asFormat, - @NonNull ISchemaValidationProvider schemaProvider) throws IOException { + @NonNull ISchemaValidationProvider schemaProvider, + @Nullable IConfiguration> config) throws IOException { IValidationResult retval = schemaProvider.validate(target, asFormat); if (retval.isPassing()) { - IValidationResult constraintValidationResult = validateWithConstraints(target); + IValidationResult constraintValidationResult = validateWithConstraints(target, config); retval = AggregateValidationResult.aggregate(retval, constraintValidationResult); } return retval; @@ -382,17 +400,21 @@ default IValidationResult validate( * * @param target * the file to load and validate + * @param config + * the validation configuration * @return the validation results * @throws IOException * if an error occurred while parsing the target */ - default IValidationResult validateWithConstraints(@NonNull URI target) + default IValidationResult validateWithConstraints( + @NonNull URI target, + @Nullable IConfiguration> config) throws IOException { IBoundLoader loader = newBoundLoader(); loader.disableFeature(DeserializationFeature.DESERIALIZE_VALIDATE_CONSTRAINTS); IDocumentNodeItem nodeItem = loader.loadAsNodeItem(target); - return validate(nodeItem, loader); + return validate(nodeItem, loader, config); } interface IModuleLoaderStrategy { diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/PostProcessingModuleLoaderStrategy.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/PostProcessingModuleLoaderStrategy.java index 67578f0f9..d6995b20c 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/PostProcessingModuleLoaderStrategy.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/PostProcessingModuleLoaderStrategy.java @@ -26,11 +26,11 @@ package gov.nist.secauto.metaschema.databind; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IModule; import gov.nist.secauto.metaschema.core.model.IModuleLoader; import gov.nist.secauto.metaschema.core.util.CollectionUtil; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.util.ArrayList; import java.util.HashSet; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/RootAssemblyBindingMatcher.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/RootAssemblyBindingMatcher.java index 2480a6ed4..927207299 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/RootAssemblyBindingMatcher.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/RootAssemblyBindingMatcher.java @@ -26,9 +26,9 @@ package gov.nist.secauto.metaschema.databind; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.IBindingContext.IBindingMatcher; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import javax.xml.namespace.QName; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/SimpleModuleLoaderStrategy.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/SimpleModuleLoaderStrategy.java index eb4f292ac..bdb4d4c39 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/SimpleModuleLoaderStrategy.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/SimpleModuleLoaderStrategy.java @@ -26,11 +26,11 @@ package gov.nist.secauto.metaschema.databind; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.model.AbstractBoundModule; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; import gov.nist.secauto.metaschema.databind.model.IBoundModule; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaField; import gov.nist.secauto.metaschema.databind.model.impl.DefinitionAssembly; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/impl/AnnotationGenerator.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/impl/AnnotationGenerator.java index c9202298d..14d94e43b 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/impl/AnnotationGenerator.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/impl/AnnotationGenerator.java @@ -144,6 +144,7 @@ public static void buildValueConstraints( @NonNull IFlagDefinition definition) { if (!definition.getConstraints().isEmpty()) { AnnotationSpec.Builder annotation = AnnotationSpec.builder(ValueConstraints.class); + assert annotation != null; applyAllowedValuesConstraints(annotation, definition.getAllowedValuesConstraints()); applyIndexHasKeyConstraints(annotation, definition.getIndexHasKeyConstraints()); @@ -165,6 +166,7 @@ public static void buildValueConstraints( if (!allowedValues.isEmpty() || !indexHasKey.isEmpty() || !matches.isEmpty() || !expects.isEmpty()) { AnnotationSpec.Builder annotation = AnnotationSpec.builder(ValueConstraints.class); + assert annotation != null; applyAllowedValuesConstraints(annotation, allowedValues); applyIndexHasKeyConstraints(annotation, indexHasKey); @@ -194,8 +196,9 @@ public static void buildAssemblyConstraints( } } - private static void applyAllowedValuesConstraints(AnnotationSpec.Builder annotation, - List constraints) { + private static void applyAllowedValuesConstraints( + @NonNull AnnotationSpec.Builder annotation, + @NonNull List constraints) { for (IAllowedValuesConstraint constraint : constraints) { AnnotationSpec.Builder constraintAnnotation = AnnotationSpec.builder(AllowedValues.class); buildConstraint(AllowedValues.class, constraintAnnotation, constraint); @@ -222,8 +225,9 @@ private static void applyAllowedValuesConstraints(AnnotationSpec.Builder annotat } } - private static void applyIndexHasKeyConstraints(AnnotationSpec.Builder annotation, - List constraints) { + private static void applyIndexHasKeyConstraints( + @NonNull AnnotationSpec.Builder annotation, + @NonNull List constraints) { for (IIndexHasKeyConstraint constraint : constraints) { AnnotationSpec.Builder constraintAnnotation = AnnotationSpec.builder(IndexHasKey.class); buildConstraint(IndexHasKey.class, constraintAnnotation, constraint); @@ -241,7 +245,8 @@ private static void applyIndexHasKeyConstraints(AnnotationSpec.Builder annotatio } } - private static void buildKeyFields(@NonNull Builder constraintAnnotation, + private static void buildKeyFields( + @NonNull Builder constraintAnnotation, @NonNull List keyFields) { for (IKeyField key : keyFields) { AnnotationSpec.Builder keyAnnotation = AnnotationSpec.builder(KeyField.class); @@ -265,8 +270,9 @@ private static void buildKeyFields(@NonNull Builder constraintAnnotation, } } - private static void applyMatchesConstraints(AnnotationSpec.Builder annotation, - List constraints) { + private static void applyMatchesConstraints( + @NonNull AnnotationSpec.Builder annotation, + @NonNull List constraints) { for (IMatchesConstraint constraint : constraints) { AnnotationSpec.Builder constraintAnnotation = AnnotationSpec.builder(Matches.class); buildConstraint(Matches.class, constraintAnnotation, constraint); @@ -289,8 +295,9 @@ private static void applyMatchesConstraints(AnnotationSpec.Builder annotation, } } - private static void applyExpectConstraints(AnnotationSpec.Builder annotation, - List constraints) { + private static void applyExpectConstraints( + @NonNull AnnotationSpec.Builder annotation, + @NonNull List constraints) { for (IExpectConstraint constraint : constraints) { AnnotationSpec.Builder constraintAnnotation = AnnotationSpec.builder(Expect.class); @@ -311,8 +318,9 @@ private static void applyExpectConstraints(AnnotationSpec.Builder annotation, } } - private static void applyIndexConstraints(AnnotationSpec.Builder annotation, - List constraints) { + private static void applyIndexConstraints( + @NonNull AnnotationSpec.Builder annotation, + @NonNull List constraints) { for (IIndexConstraint constraint : constraints) { AnnotationSpec.Builder constraintAnnotation = AnnotationSpec.builder(Index.class); @@ -331,8 +339,9 @@ private static void applyIndexConstraints(AnnotationSpec.Builder annotation, } } - private static void applyUniqueConstraints(AnnotationSpec.Builder annotation, - List constraints) { + private static void applyUniqueConstraints( + @NonNull AnnotationSpec.Builder annotation, + @NonNull List constraints) { for (IUniqueConstraint constraint : constraints) { AnnotationSpec.Builder constraintAnnotation = ObjectUtils.notNull(AnnotationSpec.builder(IsUnique.class)); diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/AbstractGroupedNamedModelInstanceTypeInfo.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/AbstractGroupedNamedModelInstanceTypeInfo.java index c054ec25f..fa31d23e8 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/AbstractGroupedNamedModelInstanceTypeInfo.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/AbstractGroupedNamedModelInstanceTypeInfo.java @@ -106,7 +106,7 @@ public Set generateMemberAnnotation( TypeSpec.Builder subClass = TypeSpec.classBuilder(itemTypeName); subClass.superclass(extendedClassName); - subClass.addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL); + subClass.addModifiers(Modifier.PUBLIC, Modifier.STATIC); // , Modifier.FINAL); // subClass.addField( // FieldSpec.builder(String.class, "DISCRIMINATOR", Modifier.PUBLIC, // Modifier.STATIC, Modifier.FINAL) diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java index f60f15282..b60dfc86e 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/codegen/typeinfo/DefaultMetaschemaClassFactory.java @@ -38,8 +38,10 @@ import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; import gov.nist.secauto.metaschema.core.model.IAssemblyDefinition; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IDefinition; import gov.nist.secauto.metaschema.core.model.IFieldDefinition; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.IModelDefinition; import gov.nist.secauto.metaschema.core.model.IModule; import gov.nist.secauto.metaschema.core.util.CollectionUtil; @@ -57,8 +59,6 @@ import gov.nist.secauto.metaschema.databind.codegen.typeinfo.def.IModelDefinitionTypeInfo; import gov.nist.secauto.metaschema.databind.model.AbstractBoundModule; import gov.nist.secauto.metaschema.databind.model.IBoundModule; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaField; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaModule; @@ -267,7 +267,9 @@ protected TypeSpec.Builder newClassBuilder( @NonNull ClassName className) { // NOPMD - long, but readable // create the class - TypeSpec.Builder builder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC, Modifier.FINAL); + TypeSpec.Builder builder = TypeSpec.classBuilder(className) + .addModifiers(Modifier.PUBLIC) + .addModifiers(Modifier.FINAL); builder.superclass(AbstractBoundModule.class); @@ -420,12 +422,13 @@ protected TypeSpec.Builder newClassBuilder( @NonNull IModelDefinitionTypeInfo typeInfo, boolean isChild) throws IOException { // create the class - TypeSpec.Builder builder = TypeSpec.classBuilder(typeInfo.getClassName()).addModifiers(Modifier.PUBLIC); + TypeSpec.Builder builder = TypeSpec.classBuilder(typeInfo.getClassName()) + .addModifiers(Modifier.PUBLIC); assert builder != null; if (isChild) { builder.addModifiers(Modifier.STATIC); } - builder.addModifiers(Modifier.FINAL); + // builder.addModifiers(Modifier.FINAL); builder.addSuperinterface(ClassName.get(IBoundObject.class)); diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractDeserializer.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractDeserializer.java index fe019b4c2..7961b697d 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractDeserializer.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractDeserializer.java @@ -31,12 +31,12 @@ import gov.nist.secauto.metaschema.core.metapath.DynamicContext; import gov.nist.secauto.metaschema.core.metapath.StaticContext; import gov.nist.secauto.metaschema.core.metapath.item.node.INodeItem; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.constraint.DefaultConstraintValidator; import gov.nist.secauto.metaschema.core.model.constraint.IConstraintValidationHandler; import gov.nist.secauto.metaschema.core.model.constraint.LoggingConstraintValidationHandler; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; import java.io.Reader; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractProblemHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractProblemHandler.java index edc96dbd3..494dadfee 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractProblemHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractProblemHandler.java @@ -26,8 +26,8 @@ package gov.nist.secauto.metaschema.databind.io; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundProperty; import java.io.IOException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractSerializer.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractSerializer.java index 1e3d635e6..5046aa386 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractSerializer.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/AbstractSerializer.java @@ -28,8 +28,8 @@ import gov.nist.secauto.metaschema.core.configuration.IConfiguration; import gov.nist.secauto.metaschema.core.configuration.IMutableConfiguration; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import edu.umd.cs.findbugs.annotations.NonNull; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/DefaultBoundLoader.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/DefaultBoundLoader.java index 452495f33..f2086d331 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/DefaultBoundLoader.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/DefaultBoundLoader.java @@ -31,11 +31,11 @@ import gov.nist.secauto.metaschema.core.configuration.IMutableConfiguration; import gov.nist.secauto.metaschema.core.metapath.item.node.IDocumentNodeItem; import gov.nist.secauto.metaschema.core.metapath.item.node.INodeItem; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.resource.AbstractResourceResolver; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.IBindingContext; import gov.nist.secauto.metaschema.databind.io.ModelDetector.Result; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; import java.io.InputStream; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IBoundLoader.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IBoundLoader.java index fa39c7958..3db3a8448 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IBoundLoader.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IBoundLoader.java @@ -30,10 +30,10 @@ import gov.nist.secauto.metaschema.core.configuration.IMutableConfiguration; import gov.nist.secauto.metaschema.core.metapath.IDocumentLoader; import gov.nist.secauto.metaschema.core.metapath.item.node.IDocumentNodeItem; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.DefaultBindingContext; import gov.nist.secauto.metaschema.databind.IBindingContext; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import org.xml.sax.InputSource; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IDeserializer.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IDeserializer.java index 60930336c..d1e814f44 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IDeserializer.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IDeserializer.java @@ -29,9 +29,9 @@ import gov.nist.secauto.metaschema.core.configuration.IConfiguration; import gov.nist.secauto.metaschema.core.configuration.IMutableConfiguration; import gov.nist.secauto.metaschema.core.metapath.item.node.INodeItem; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.constraint.IConstraintValidationHandler; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.File; import java.io.IOException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IProblemHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IProblemHandler.java index 75a92d9ec..91da912c7 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IProblemHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IProblemHandler.java @@ -26,8 +26,8 @@ package gov.nist.secauto.metaschema.databind.io; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundProperty; import java.io.IOException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/ISerializer.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/ISerializer.java index 250f84fab..1a868eef3 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/ISerializer.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/ISerializer.java @@ -28,8 +28,8 @@ import gov.nist.secauto.metaschema.core.configuration.IConfiguration; import gov.nist.secauto.metaschema.core.configuration.IMutableConfiguration; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.File; import java.io.IOException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.java index 4435c322b..9e6c7e304 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/IWritingContext.java @@ -26,8 +26,8 @@ package gov.nist.secauto.metaschema.databind.io; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.info.IFeatureComplexItemValueHandler; import java.io.IOException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/ModelDetector.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/ModelDetector.java index 0271e3f26..f39a5ce29 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/ModelDetector.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/ModelDetector.java @@ -34,12 +34,12 @@ import gov.nist.secauto.metaschema.core.configuration.DefaultConfiguration; import gov.nist.secauto.metaschema.core.configuration.IConfiguration; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.util.JsonUtil; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.IBindingContext; import gov.nist.secauto.metaschema.databind.io.json.JsonFactoryFactory; import gov.nist.secauto.metaschema.databind.io.yaml.impl.YamlFactoryFactory; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import org.codehaus.stax2.XMLEventReader2; import org.codehaus.stax2.XMLInputFactory2; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonDeserializer.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonDeserializer.java index 971486b44..bfe011308 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonDeserializer.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonDeserializer.java @@ -32,11 +32,11 @@ import gov.nist.secauto.metaschema.core.configuration.IConfiguration; import gov.nist.secauto.metaschema.core.metapath.item.node.INodeItem; import gov.nist.secauto.metaschema.core.metapath.item.node.INodeItemFactory; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.AbstractDeserializer; import gov.nist.secauto.metaschema.databind.io.DeserializationFeature; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; import java.io.Reader; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonProblemHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonProblemHandler.java index d994921e2..0aae1feff 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonProblemHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonProblemHandler.java @@ -28,10 +28,10 @@ import com.fasterxml.jackson.core.JsonParser; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.util.JsonUtil; import gov.nist.secauto.metaschema.databind.io.AbstractProblemHandler; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; import java.util.HashSet; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonSerializer.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonSerializer.java index 34d4d9cfd..ecc7a3f3f 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonSerializer.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/DefaultJsonSerializer.java @@ -31,11 +31,11 @@ import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; import gov.nist.secauto.metaschema.core.configuration.IMutableConfiguration; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.AbstractSerializer; import gov.nist.secauto.metaschema.databind.io.SerializationFeature; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; import java.io.Writer; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/IJsonProblemHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/IJsonProblemHandler.java index 5ba6c0dac..2f163fc7b 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/IJsonProblemHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/IJsonProblemHandler.java @@ -28,9 +28,9 @@ import com.fasterxml.jackson.core.JsonParser; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.io.IProblemHandler; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/MetaschemaJsonReader.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/MetaschemaJsonReader.java index fc84c68b8..24fd2abdd 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/MetaschemaJsonReader.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/MetaschemaJsonReader.java @@ -33,6 +33,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.util.JsonUtil; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.BindingException; @@ -50,9 +52,7 @@ import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedField; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedNamed; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundProperty; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.info.AbstractModelInstanceReadHandler; import gov.nist.secauto.metaschema.databind.model.info.IFeatureScalarItemValueHandler; import gov.nist.secauto.metaschema.databind.model.info.IItemReadHandler; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/MetaschemaJsonWriter.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/MetaschemaJsonWriter.java index d42552439..095d46204 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/MetaschemaJsonWriter.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/json/MetaschemaJsonWriter.java @@ -28,6 +28,7 @@ import com.fasterxml.jackson.core.JsonGenerator; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; @@ -43,7 +44,6 @@ import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedField; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedNamed; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundProperty; import gov.nist.secauto.metaschema.databind.model.info.AbstractModelInstanceWriteHandler; import gov.nist.secauto.metaschema.databind.model.info.IFeatureComplexItemValueHandler; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlDeserializer.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlDeserializer.java index 6db2f1420..7cb7da9e1 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlDeserializer.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlDeserializer.java @@ -30,12 +30,12 @@ import gov.nist.secauto.metaschema.core.metapath.item.node.IDocumentNodeItem; import gov.nist.secauto.metaschema.core.metapath.item.node.INodeItemFactory; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.AutoCloser; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.AbstractDeserializer; import gov.nist.secauto.metaschema.databind.io.DeserializationFeature; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import org.codehaus.stax2.XMLEventReader2; import org.codehaus.stax2.XMLInputFactory2; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlProblemHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlProblemHandler.java index ee06ad3a0..b1e87d3bc 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlProblemHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlProblemHandler.java @@ -26,10 +26,10 @@ package gov.nist.secauto.metaschema.databind.io.xml; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.util.XmlEventUtil; import gov.nist.secauto.metaschema.databind.io.AbstractProblemHandler; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlSerializer.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlSerializer.java index 9afea8725..1db851889 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlSerializer.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/DefaultXmlSerializer.java @@ -29,11 +29,11 @@ import com.ctc.wstx.api.WstxOutputProperties; import com.ctc.wstx.stax.WstxOutputFactory; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.AbstractSerializer; import gov.nist.secauto.metaschema.databind.io.SerializationFeature; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import org.codehaus.stax2.XMLOutputFactory2; import org.codehaus.stax2.XMLStreamWriter2; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.java index f11cf8073..a6158044b 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlParsingContext.java @@ -26,10 +26,10 @@ package gov.nist.secauto.metaschema.databind.io.xml; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.io.IParsingContext; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModel; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import org.codehaus.stax2.XMLEventReader2; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.java index b87f7d3b3..4b7de4af0 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlProblemHandler.java @@ -26,12 +26,12 @@ package gov.nist.secauto.metaschema.databind.io.xml; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.io.IProblemHandler; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceFlag; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModel; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; import java.util.Collection; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlWritingContext.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlWritingContext.java index e1a843dba..8a9eb6ec5 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlWritingContext.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/IXmlWritingContext.java @@ -26,9 +26,9 @@ package gov.nist.secauto.metaschema.databind.io.xml; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.io.IWritingContext; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import org.codehaus.stax2.XMLStreamWriter2; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/MetaschemaXmlReader.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/MetaschemaXmlReader.java index e4f85d479..ac82d27d5 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/MetaschemaXmlReader.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/MetaschemaXmlReader.java @@ -26,6 +26,8 @@ package gov.nist.secauto.metaschema.databind.io.xml; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.util.XmlEventUtil; import gov.nist.secauto.metaschema.core.util.CollectionUtil; import gov.nist.secauto.metaschema.core.util.ObjectUtils; @@ -44,8 +46,6 @@ import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedField; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedNamed; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.info.AbstractModelInstanceReadHandler; import gov.nist.secauto.metaschema.databind.model.info.IFeatureScalarItemValueHandler; import gov.nist.secauto.metaschema.databind.model.info.IItemReadHandler; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/MetaschemaXmlWriter.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/MetaschemaXmlWriter.java index c57bcb10d..79ad75850 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/MetaschemaXmlWriter.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/xml/MetaschemaXmlWriter.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.io.xml; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.json.DefaultJsonProblemHandler; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModel; @@ -43,7 +44,6 @@ import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedField; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedNamed; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelNamed; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.info.AbstractModelInstanceWriteHandler; import gov.nist.secauto.metaschema.databind.model.info.IFeatureComplexItemValueHandler; import gov.nist.secauto.metaschema.databind.model.info.IItemWriteHandler; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.java index ae389b862..3fa3e9545 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlDeserializer.java @@ -28,10 +28,10 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.io.json.DefaultJsonDeserializer; import gov.nist.secauto.metaschema.databind.io.yaml.impl.YamlFactoryFactory; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import edu.umd.cs.findbugs.annotations.NonNull; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.java index 7f8317df4..70d290366 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/io/yaml/DefaultYamlSerializer.java @@ -28,10 +28,10 @@ import com.fasterxml.jackson.core.JsonFactory; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.io.json.DefaultJsonSerializer; import gov.nist.secauto.metaschema.databind.io.yaml.impl.YamlFactoryFactory; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import edu.umd.cs.findbugs.annotations.NonNull; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/AbstractBoundModule.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/AbstractBoundModule.java index bb8a6aa55..a48f0adee 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/AbstractBoundModule.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/AbstractBoundModule.java @@ -27,6 +27,7 @@ package gov.nist.secauto.metaschema.databind.model; import gov.nist.secauto.metaschema.core.model.AbstractModule; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.CollectionUtil; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.IBindingContext; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelAssembly.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelAssembly.java index 9abc7add2..4aa60ce34 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelAssembly.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelAssembly.java @@ -27,6 +27,7 @@ package gov.nist.secauto.metaschema.databind.model; import gov.nist.secauto.metaschema.core.model.IAssemblyDefinition; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.model.info.IItemReadHandler; import gov.nist.secauto.metaschema.databind.model.info.IItemWriteHandler; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelComplex.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelComplex.java index 7fd244fff..b5b6c6bc6 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelComplex.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelComplex.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.io.BindingException; import gov.nist.secauto.metaschema.databind.model.info.IFeatureComplexItemValueHandler; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelFieldComplex.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelFieldComplex.java index 19aeb3655..b690ab861 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelFieldComplex.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundDefinitionModelFieldComplex.java @@ -27,6 +27,7 @@ package gov.nist.secauto.metaschema.databind.model; import gov.nist.secauto.metaschema.core.datatype.IDataTypeAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.model.info.IItemReadHandler; import gov.nist.secauto.metaschema.databind.model.info.IItemWriteHandler; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundFieldValue.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundFieldValue.java index 85f089df8..67e79cf7d 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundFieldValue.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundFieldValue.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.BindingException; import gov.nist.secauto.metaschema.databind.model.info.IFeatureScalarItemValueHandler; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstance.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstance.java index af4ed6202..7a6622e35 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstance.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstance.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IInstance; import edu.umd.cs.findbugs.annotations.NonNull; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceFlag.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceFlag.java index 866a5af1b..b3f94c8e2 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceFlag.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceFlag.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IFeatureDefinitionInstanceInlined; import gov.nist.secauto.metaschema.core.model.IFlagInstance; import gov.nist.secauto.metaschema.core.util.ObjectUtils; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelAssembly.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelAssembly.java index 0b1a91047..fbb2feb07 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelAssembly.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelAssembly.java @@ -27,6 +27,7 @@ package gov.nist.secauto.metaschema.databind.model; import gov.nist.secauto.metaschema.core.model.IAssemblyInstanceAbsolute; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.IBindingContext; import gov.nist.secauto.metaschema.databind.io.BindingException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelChoiceGroup.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelChoiceGroup.java index 7ec549508..138f46cd6 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelChoiceGroup.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelChoiceGroup.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IChoiceGroupInstance; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.BindingException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelField.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelField.java index e2555fdc6..9890314a1 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelField.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelField.java @@ -27,6 +27,7 @@ package gov.nist.secauto.metaschema.databind.model; import gov.nist.secauto.metaschema.core.datatype.IDataTypeAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IFieldInstanceAbsolute; import gov.nist.secauto.metaschema.databind.IBindingContext; import gov.nist.secauto.metaschema.databind.model.impl.DefinitionField; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.java index 95ef3bc0f..c75b52c79 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldComplex.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.BindingException; import gov.nist.secauto.metaschema.databind.model.info.IFeatureComplexItemValueHandler; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.java index e5bc25702..76033a9cb 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelFieldScalar.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IContainerFlagSupport; import gov.nist.secauto.metaschema.core.model.IFeatureDefinitionInstanceInlined; import gov.nist.secauto.metaschema.core.util.ObjectUtils; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedAssembly.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedAssembly.java index 23a64d1c4..249cd94f2 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedAssembly.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedAssembly.java @@ -27,6 +27,7 @@ package gov.nist.secauto.metaschema.databind.model; import gov.nist.secauto.metaschema.core.model.IAssemblyInstanceGrouped; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.IBindingContext; import gov.nist.secauto.metaschema.databind.model.annotations.BoundGroupedAssembly; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedField.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedField.java index 55c49bb1f..3fbf85bec 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedField.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedField.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IFieldInstanceGrouped; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.IBindingContext; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedNamed.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedNamed.java index 108234b5a..a0954d608 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedNamed.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundInstanceModelGroupedNamed.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.INamedModelInstanceGrouped; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.util.ObjectUtils; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundProperty.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundProperty.java index b0d02a80c..a76bb1919 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundProperty.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/IBoundProperty.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IJsonNamed; import gov.nist.secauto.metaschema.databind.io.BindingException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/BoundGroupedAssembly.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/BoundGroupedAssembly.java index 5a9da23b1..42b5e4420 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/BoundGroupedAssembly.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/BoundGroupedAssembly.java @@ -31,7 +31,7 @@ import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import java.lang.annotation.Documented; import java.lang.annotation.Retention; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/BoundGroupedField.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/BoundGroupedField.java index e7da948ee..f75f6042b 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/BoundGroupedField.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/BoundGroupedField.java @@ -31,7 +31,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; import gov.nist.secauto.metaschema.core.datatype.IDataTypeAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import java.lang.annotation.Documented; import java.lang.annotation.Retention; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.java index b197e8880..a31e0a01c 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/MetaschemaModule.java @@ -28,8 +28,8 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundModule; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.java index ee371be05..07de1c305 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/annotations/ModelUtil.java @@ -30,6 +30,8 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.MetaschemaDataTypeProvider; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.IModule; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.IBindingContext; @@ -38,6 +40,7 @@ import java.lang.annotation.Annotation; import java.lang.reflect.Field; +import java.net.URI; import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.Nullable; @@ -264,4 +267,27 @@ public static IGroupAs resolveDefaultGroupAs( ? IGroupAs.SINGLETON_GROUP_AS : new DefaultGroupAs(groupAs, module); } + + public static String toLocation(@NonNull IBoundObject obj) { + IMetaschemaData data = obj.getMetaschemaData(); + + String retval = ""; + if (data != null) { + int line = data.getLine(); + if (line > -1) { + retval = line + ":" + data.getColumn(); + } + } + return retval; + } + + public static String toLocation(@NonNull IBoundObject obj, @Nullable URI uri) { + String retval = uri == null ? "" : uri.toASCIIString(); + + String location = toLocation(obj); + if (!location.isEmpty()) { + retval = retval.isEmpty() ? location : retval + "@" + location; + } + return retval; + } } diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Any.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Any.java index 230d65816..48fdd769c 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Any.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Any.java @@ -26,8 +26,8 @@ package gov.nist.secauto.metaschema.databind.model.binding.metaschema; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; @@ -40,7 +40,7 @@ formalName = "Any Additional Content", name = "any", moduleClass = MetaschemaModelModule.class) -public class Any implements IBoundObject { +public final class Any implements IBoundObject { private final IMetaschemaData __metaschemaData; public Any() { diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyConstraints.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyConstraints.java index 3f4e07a22..43dfa19b1 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyConstraints.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyConstraints.java @@ -26,10 +26,10 @@ package gov.nist.secauto.metaschema.databind.model.binding.metaschema; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.BoundChoiceGroup; import gov.nist.secauto.metaschema.databind.model.annotations.BoundGroupedAssembly; @@ -52,7 +52,7 @@ @MetaschemaAssembly( name = "assembly-constraints", moduleClass = MetaschemaModelModule.class) -public class AssemblyConstraints implements IBoundObject, IModelConstraintsBase { +public final class AssemblyConstraints implements IBoundObject, IModelConstraintsBase { private final IMetaschemaData __metaschemaData; @BoundAssembly( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyModel.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyModel.java index 498cee80a..b5adcfdb2 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyModel.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyModel.java @@ -32,11 +32,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyReference.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyReference.java index ad0600cd1..b7418ab62 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyReference.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/AssemblyReference.java @@ -32,11 +32,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/ConstraintLetExpression.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/ConstraintLetExpression.java index e644d9d69..dcdacaf08 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/ConstraintLetExpression.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/ConstraintLetExpression.java @@ -28,8 +28,8 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.StringAdapter; import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; @@ -45,7 +45,7 @@ formalName = "Constraint Let Expression", name = "constraint-let-expression", moduleClass = MetaschemaModelModule.class) -public class ConstraintLetExpression implements IBoundObject { +public final class ConstraintLetExpression implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/ConstraintValueEnum.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/ConstraintValueEnum.java index fdcc353d4..74ef8a33f 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/ConstraintValueEnum.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/ConstraintValueEnum.java @@ -29,8 +29,8 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.StringAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFieldValue; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaField; @@ -48,7 +48,7 @@ formalName = "Allowed Value Enumeration", name = "constraint-value-enum", moduleClass = MetaschemaModelModule.class) -public class ConstraintValueEnum +public final class ConstraintValueEnum extends AbstractAllowedValue implements IBoundObject { private final IMetaschemaData __metaschemaData; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Example.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Example.java index 86668f378..803d07c3f 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Example.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Example.java @@ -30,8 +30,8 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.UriReferenceAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; @@ -49,7 +49,7 @@ formalName = "Example", name = "example", moduleClass = MetaschemaModelModule.class) -public class Example implements IBoundObject { +public final class Example implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FieldConstraints.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FieldConstraints.java index a33d3699c..f36f2a29e 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FieldConstraints.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FieldConstraints.java @@ -26,17 +26,17 @@ package gov.nist.secauto.metaschema.databind.model.binding.metaschema; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.BoundChoiceGroup; import gov.nist.secauto.metaschema.databind.model.annotations.BoundGroupedAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.GroupAs; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; -import gov.nist.secauto.metaschema.databind.model.metaschema.IConstraintBase; -import gov.nist.secauto.metaschema.databind.model.metaschema.IValueConstraintsBase; +import gov.nist.secauto.metaschema.databind.model.metaschema.ITargetedConstraintBase; +import gov.nist.secauto.metaschema.databind.model.metaschema.IValueTargetedConstraintsBase; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -51,7 +51,7 @@ @MetaschemaAssembly( name = "field-constraints", moduleClass = MetaschemaModelModule.class) -public class FieldConstraints implements IBoundObject, IValueConstraintsBase { +public final class FieldConstraints implements IBoundObject, IValueTargetedConstraintsBase { private final IMetaschemaData __metaschemaData; @BoundAssembly( @@ -75,7 +75,7 @@ public class FieldConstraints implements IBoundObject, IValueConstraintsBase { binding = TargetedMatchesConstraint.class) }, groupAs = @GroupAs(name = "rules", inJson = JsonGroupAsBehavior.LIST)) - private List _rules; + private List _rules; public FieldConstraints() { this(null); @@ -128,11 +128,11 @@ public boolean removeLet(ConstraintLetExpression item) { } @Override - public List getRules() { + public List getRules() { return _rules; } - public void setRules(List value) { + public void setRules(List value) { _rules = value; } diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FieldReference.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FieldReference.java index 08c202721..2580a5c97 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FieldReference.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FieldReference.java @@ -32,11 +32,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -62,7 +62,7 @@ formalName = "Field Reference", name = "field-reference", moduleClass = MetaschemaModelModule.class) -public class FieldReference implements IBoundObject { +public final class FieldReference implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagAllowedValues.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagAllowedValues.java index caa58d0f6..86ff5aeea 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagAllowedValues.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagAllowedValues.java @@ -29,11 +29,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -58,7 +58,7 @@ formalName = "Allowed Values Constraint", name = "flag-allowed-values", moduleClass = MetaschemaModelModule.class) -public class FlagAllowedValues implements IBoundObject, IConstraintBase { +public final class FlagAllowedValues implements IBoundObject, IConstraintBase { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagConstraints.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagConstraints.java index fdc348343..89fe9fc83 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagConstraints.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagConstraints.java @@ -26,10 +26,10 @@ package gov.nist.secauto.metaschema.databind.model.binding.metaschema; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.BoundChoiceGroup; import gov.nist.secauto.metaschema.databind.model.annotations.BoundGroupedAssembly; @@ -52,7 +52,7 @@ @MetaschemaAssembly( name = "flag-constraints", moduleClass = MetaschemaModelModule.class) -public class FlagConstraints implements IBoundObject, IValueConstraintsBase { +public final class FlagConstraints implements IBoundObject, IValueConstraintsBase { private final IMetaschemaData __metaschemaData; @BoundAssembly( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagExpect.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagExpect.java index 37e4de3cb..2aac6157b 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagExpect.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagExpect.java @@ -30,11 +30,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -59,7 +59,7 @@ formalName = "Expect Condition Constraint", name = "flag-expect", moduleClass = MetaschemaModelModule.class) -public class FlagExpect implements IBoundObject, IConstraintBase { +public final class FlagExpect implements IBoundObject, IConstraintBase { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagIndexHasKey.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagIndexHasKey.java index d97eacf46..6fc58fa21 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagIndexHasKey.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagIndexHasKey.java @@ -29,11 +29,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -58,7 +58,7 @@ formalName = "Index Has Key Constraint", name = "flag-index-has-key", moduleClass = MetaschemaModelModule.class) -public class FlagIndexHasKey implements IBoundObject, IConstraintBase { +public final class FlagIndexHasKey implements IBoundObject, IConstraintBase { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagMatches.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagMatches.java index 77cc2e914..b42962021 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagMatches.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagMatches.java @@ -30,11 +30,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -59,8 +59,7 @@ formalName = "Value Matches Constraint", name = "flag-matches", moduleClass = MetaschemaModelModule.class) -public class FlagMatches - implements IBoundObject, IConstraintBase { +public final class FlagMatches implements IBoundObject, IConstraintBase { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagReference.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagReference.java index 0aa6b1f6d..467ee737b 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagReference.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/FlagReference.java @@ -31,11 +31,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -60,7 +60,7 @@ formalName = "Flag Reference", name = "flag-reference", moduleClass = MetaschemaModelModule.class) -public class FlagReference implements IBoundObject { +public final class FlagReference implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/GroupingAs.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/GroupingAs.java index 89422bda6..9c0c78347 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/GroupingAs.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/GroupingAs.java @@ -27,9 +27,9 @@ package gov.nist.secauto.metaschema.databind.model.binding.metaschema; import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; @@ -47,7 +47,7 @@ formalName = "Group As", name = "group-as", moduleClass = MetaschemaModelModule.class) -public class GroupingAs implements IBoundObject { +public final class GroupingAs implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineAssembly.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineAssembly.java index ab8811d8b..4cfdb0f22 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineAssembly.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineAssembly.java @@ -32,11 +32,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.BoundChoiceGroup; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; @@ -63,7 +63,7 @@ formalName = "Inline Assembly Definition", name = "inline-define-assembly", moduleClass = MetaschemaModelModule.class) -public class InlineDefineAssembly implements IBoundObject { +public final class InlineDefineAssembly implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineField.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineField.java index a00f5657d..35662ed05 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineField.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineField.java @@ -32,11 +32,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -66,7 +66,7 @@ formalName = "Inline Field Definition", name = "inline-define-field", moduleClass = MetaschemaModelModule.class) -public class InlineDefineField implements IBoundObject { +public final class InlineDefineField implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineFlag.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineFlag.java index c43540b5d..f9e7b9122 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineFlag.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/InlineDefineFlag.java @@ -31,11 +31,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -61,7 +61,7 @@ formalName = "Inline Flag Definition", name = "inline-define-flag", moduleClass = MetaschemaModelModule.class) -public class InlineDefineFlag implements IBoundObject { +public final class InlineDefineFlag implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/JsonKey.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/JsonKey.java index 48e0d1db7..c66f7435e 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/JsonKey.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/JsonKey.java @@ -27,8 +27,8 @@ package gov.nist.secauto.metaschema.databind.model.binding.metaschema; import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; @@ -49,7 +49,7 @@ description = "Used in JSON (and similar formats) to identify a flag that will be used as the property name in an object hold a collection of sibling objects. Requires that siblings must never share `json-key` values.", name = "json-key", moduleClass = MetaschemaModelModule.class) -public class JsonKey implements IBoundObject { +public final class JsonKey implements IBoundObject { private final IMetaschemaData __metaschemaData; /** diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/JsonValueKeyFlag.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/JsonValueKeyFlag.java index 86ec6a335..d1765ae70 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/JsonValueKeyFlag.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/JsonValueKeyFlag.java @@ -27,8 +27,8 @@ package gov.nist.secauto.metaschema.databind.model.binding.metaschema; import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; @@ -43,7 +43,7 @@ formalName = "Flag Used as the Field Value's JSON Property Name", name = "json-value-key-flag", moduleClass = MetaschemaModelModule.class) -public class JsonValueKeyFlag implements IBoundObject { +public final class JsonValueKeyFlag implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/KeyConstraintField.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/KeyConstraintField.java index 76af1baca..eec58ff41 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/KeyConstraintField.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/KeyConstraintField.java @@ -27,8 +27,8 @@ package gov.nist.secauto.metaschema.databind.model.binding.metaschema; import gov.nist.secauto.metaschema.core.datatype.adapter.StringAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; @@ -44,7 +44,7 @@ formalName = "Key Constraint", name = "key-constraint-field", moduleClass = MetaschemaModelModule.class) -public class KeyConstraintField implements IBoundObject { +public final class KeyConstraintField implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/METASCHEMA.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/METASCHEMA.java index 52a5068a7..0b6d748d2 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/METASCHEMA.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/METASCHEMA.java @@ -34,11 +34,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.UriReferenceAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -77,7 +77,7 @@ name = "METASCHEMA", moduleClass = MetaschemaModelModule.class, rootName = "METASCHEMA") -public class METASCHEMA implements IBoundObject { +public final class METASCHEMA implements IBoundObject { private final IMetaschemaData __metaschemaData; /** diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetapathContext.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetapathContext.java index 1eea0397b..8f50cf5e8 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetapathContext.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetapathContext.java @@ -26,10 +26,10 @@ package gov.nist.secauto.metaschema.databind.model.binding.metaschema; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; import gov.nist.secauto.metaschema.databind.model.annotations.GroupAs; @@ -48,7 +48,7 @@ @MetaschemaAssembly( name = "metapath-context", moduleClass = MetaschemaModelModule.class) -public class MetapathContext implements IBoundObject { +public final class MetapathContext implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundAssembly( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaMetaConstraints.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaMetaConstraints.java index cf35b787c..aaa2d0734 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaMetaConstraints.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaMetaConstraints.java @@ -28,11 +28,10 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.adapter.UriAdapter; -import gov.nist.secauto.metaschema.core.datatype.adapter.UriReferenceAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; @@ -60,7 +59,7 @@ name = "metaschema-meta-constraints", moduleClass = MetaschemaModelModule.class, rootName = "metaschema-meta-constraints") -public class MetaschemaMetaConstraints implements IBoundObject { +public final class MetaschemaMetaConstraints implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundAssembly( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaMetapath.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaMetapath.java index 3f9baf5b8..c36b854ca 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaMetapath.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaMetapath.java @@ -27,8 +27,8 @@ package gov.nist.secauto.metaschema.databind.model.binding.metaschema; import gov.nist.secauto.metaschema.core.datatype.adapter.StringAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; @@ -47,7 +47,7 @@ description = "A Metapath expression identifying the model node that the constraints will be applied to.", name = "metaschema-metapath", moduleClass = MetaschemaModelModule.class) -public class MetaschemaMetapath implements IBoundObject { +public final class MetaschemaMetapath implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaModuleConstraints.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaModuleConstraints.java index 7b5ab2cbc..75881f8e8 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaModuleConstraints.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/MetaschemaModuleConstraints.java @@ -30,11 +30,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.adapter.UriAdapter; import gov.nist.secauto.metaschema.core.datatype.adapter.UriReferenceAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.util.CollectionUtil; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.BoundChoiceGroup; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; @@ -68,7 +68,7 @@ name = "metaschema-module-constraints", moduleClass = MetaschemaModelModule.class, rootName = "METASCHEMA-CONSTRAINTS") -public class MetaschemaModuleConstraints implements IBoundObject { +public final class MetaschemaModuleConstraints implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundField( @@ -277,7 +277,7 @@ public static final class Scope implements IBoundObject { @BoundGroupedAssembly(useName = "flag", binding = Flag.class) }, groupAs = @GroupAs(name = "constraints", inJson = JsonGroupAsBehavior.LIST)) - private List _constraints; + private List _constraints; @BoundField( formalName = "Remarks", @@ -314,11 +314,11 @@ public void setMetaschemaShortName(String value) { _metaschemaShortName = value; } - public List getConstraints() { + public List getConstraints() { return _constraints; } - public void setConstraints(List value) { + public void setConstraints(List value) { _constraints = value; } diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Property.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Property.java index 59dbfaeb1..55d9793ce 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Property.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Property.java @@ -28,8 +28,8 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.adapter.UriAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; @@ -46,7 +46,7 @@ formalName = "Property", name = "property", moduleClass = MetaschemaModelModule.class) -public class Property implements IBoundObject { +public final class Property implements IBoundObject { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Remarks.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Remarks.java index 74b74be56..b1a49d561 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Remarks.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/Remarks.java @@ -29,9 +29,9 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultilineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFieldValue; @@ -55,7 +55,7 @@ description = "Any explanatory or helpful information to be provided about the remarks parent.", name = "remarks", moduleClass = MetaschemaModelModule.class) -public class Remarks implements IBoundObject { +public final class Remarks implements IBoundObject { private final IMetaschemaData __metaschemaData; /** diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedAllowedValuesConstraint.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedAllowedValuesConstraint.java index 07b1ff4dd..679bb6d3e 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedAllowedValuesConstraint.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedAllowedValuesConstraint.java @@ -30,11 +30,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -59,7 +59,7 @@ formalName = "Allowed Values Constraint", name = "targeted-allowed-values-constraint", moduleClass = MetaschemaModelModule.class) -public class TargetedAllowedValuesConstraint implements IBoundObject, ITargetedConstraintBase { +public final class TargetedAllowedValuesConstraint implements IBoundObject, ITargetedConstraintBase { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedExpectConstraint.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedExpectConstraint.java index 95c98a641..236e6110e 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedExpectConstraint.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedExpectConstraint.java @@ -30,11 +30,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -59,7 +59,7 @@ formalName = "Expect Condition Constraint", name = "targeted-expect-constraint", moduleClass = MetaschemaModelModule.class) -public class TargetedExpectConstraint implements IBoundObject, ITargetedConstraintBase { +public final class TargetedExpectConstraint implements IBoundObject, ITargetedConstraintBase { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedHasCardinalityConstraint.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedHasCardinalityConstraint.java index 41fe12735..2d68bf488 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedHasCardinalityConstraint.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedHasCardinalityConstraint.java @@ -31,11 +31,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -62,8 +62,7 @@ formalName = "Targeted Cardinality Constraint", name = "targeted-has-cardinality-constraint", moduleClass = MetaschemaModelModule.class) -public class TargetedHasCardinalityConstraint - implements IBoundObject, ITargetedConstraintBase { +public final class TargetedHasCardinalityConstraint implements IBoundObject, ITargetedConstraintBase { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIndexConstraint.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIndexConstraint.java index 2753b51ae..1843c4418 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIndexConstraint.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIndexConstraint.java @@ -30,11 +30,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -59,8 +59,7 @@ formalName = "Targeted Index Constraint", name = "targeted-index-constraint", moduleClass = MetaschemaModelModule.class) -public class TargetedIndexConstraint - implements IBoundObject, ITargetedConstraintBase { +public final class TargetedIndexConstraint implements IBoundObject, ITargetedConstraintBase { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIndexHasKeyConstraint.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIndexHasKeyConstraint.java index 0201c20c7..88e57b316 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIndexHasKeyConstraint.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIndexHasKeyConstraint.java @@ -30,11 +30,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -59,8 +59,7 @@ formalName = "Targeted Index Has Key Constraint", name = "targeted-index-has-key-constraint", moduleClass = MetaschemaModelModule.class) -public class TargetedIndexHasKeyConstraint - implements IBoundObject, ITargetedConstraintBase { +public final class TargetedIndexHasKeyConstraint implements IBoundObject, ITargetedConstraintBase { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIsUniqueConstraint.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIsUniqueConstraint.java index 6f6f1a99f..4e30d1bd8 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIsUniqueConstraint.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedIsUniqueConstraint.java @@ -30,11 +30,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -59,8 +59,7 @@ formalName = "Targeted Unique Constraint", name = "targeted-is-unique-constraint", moduleClass = MetaschemaModelModule.class) -public class TargetedIsUniqueConstraint - implements IBoundObject, ITargetedConstraintBase { +public final class TargetedIsUniqueConstraint implements IBoundObject, ITargetedConstraintBase { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedMatchesConstraint.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedMatchesConstraint.java index 3ecb2c524..7080fc363 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedMatchesConstraint.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/TargetedMatchesConstraint.java @@ -30,11 +30,11 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLineAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.constraint.IConstraint; import gov.nist.secauto.metaschema.core.util.ObjectUtils; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValue; import gov.nist.secauto.metaschema.databind.model.annotations.AllowedValues; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; @@ -59,8 +59,7 @@ formalName = "Value Matches Constraint", name = "targeted-matches-constraint", moduleClass = MetaschemaModelModule.class) -public class TargetedMatchesConstraint - implements IBoundObject, ITargetedConstraintBase { +public final class TargetedMatchesConstraint implements IBoundObject, ITargetedConstraintBase { private final IMetaschemaData __metaschemaData; @BoundFlag( diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/UseName.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/UseName.java index a0cdfd826..e5defee6b 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/UseName.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/binding/metaschema/UseName.java @@ -28,8 +28,8 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.NonNegativeIntegerAdapter; import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFieldValue; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaField; @@ -51,7 +51,7 @@ description = "Allows the name of the definition to be overridden.", name = "use-name", moduleClass = MetaschemaModelModule.class) -public class UseName implements IBoundObject { +public final class UseName implements IBoundObject { private final IMetaschemaData __metaschemaData; /** diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/AbstractBoundDefinitionModelComplex.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/AbstractBoundDefinitionModelComplex.java index ca31b39e9..9924c4882 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/AbstractBoundDefinitionModelComplex.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/AbstractBoundDefinitionModelComplex.java @@ -26,13 +26,13 @@ package gov.nist.secauto.metaschema.databind.model.impl; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.IBindingContext; import gov.nist.secauto.metaschema.databind.io.BindingException; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceFlag; import gov.nist.secauto.metaschema.databind.model.IBoundModule; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.lang.annotation.Annotation; import java.lang.reflect.Method; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/DefinitionAssembly.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/DefinitionAssembly.java index 6b2282f91..9f8ec771a 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/DefinitionAssembly.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/DefinitionAssembly.java @@ -28,6 +28,7 @@ import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.constraint.AssemblyConstraintSet; import gov.nist.secauto.metaschema.core.model.constraint.IModelConstrained; import gov.nist.secauto.metaschema.core.model.constraint.ISource; @@ -41,7 +42,6 @@ import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelField; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelNamed; import gov.nist.secauto.metaschema.databind.model.IBoundModule; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundProperty; import gov.nist.secauto.metaschema.databind.model.annotations.AssemblyConstraints; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/DefinitionField.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/DefinitionField.java index e97a42aa8..3bba46ee1 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/DefinitionField.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/DefinitionField.java @@ -29,6 +29,7 @@ import gov.nist.secauto.metaschema.core.datatype.IDataTypeAdapter; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.constraint.AssemblyConstraintSet; import gov.nist.secauto.metaschema.core.model.constraint.IModelConstrained; import gov.nist.secauto.metaschema.core.model.constraint.ISource; @@ -40,7 +41,6 @@ import gov.nist.secauto.metaschema.databind.model.IBoundFieldValue; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceFlag; import gov.nist.secauto.metaschema.databind.model.IBoundModule; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundProperty; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFieldValue; import gov.nist.secauto.metaschema.databind.model.annotations.Ignore; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/IFeatureInstanceModelGroupAs.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/IFeatureInstanceModelGroupAs.java index f57920a60..4b1aa25a7 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/IFeatureInstanceModelGroupAs.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/IFeatureInstanceModelGroupAs.java @@ -26,11 +26,11 @@ package gov.nist.secauto.metaschema.databind.model.impl; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.XmlGroupAsBehavior; import gov.nist.secauto.metaschema.databind.io.BindingException; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModel; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IGroupAs; import edu.umd.cs.findbugs.annotations.NonNull; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceFlagInline.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceFlagInline.java index e9dd08b9a..17b512bfa 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceFlagInline.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceFlagInline.java @@ -30,6 +30,7 @@ import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; import gov.nist.secauto.metaschema.core.model.AbstractInlineFlagDefinition; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.constraint.ISource; import gov.nist.secauto.metaschema.core.model.constraint.IValueConstrained; import gov.nist.secauto.metaschema.core.model.constraint.ValueConstraintSet; @@ -37,7 +38,6 @@ import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionFlag; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModel; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceFlag; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.JsonFieldValueKeyFlag; import gov.nist.secauto.metaschema.databind.model.annotations.JsonKey; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelAssemblyComplex.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelAssemblyComplex.java index 62e711556..621719762 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelAssemblyComplex.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelAssemblyComplex.java @@ -29,11 +29,11 @@ import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; import gov.nist.secauto.metaschema.core.model.AbstractAssemblyInstance; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceFlag; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundProperty; import gov.nist.secauto.metaschema.databind.model.IGroupAs; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelChoiceGroup.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelChoiceGroup.java index ef64a2e02..21d6354f6 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelChoiceGroup.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelChoiceGroup.java @@ -27,6 +27,7 @@ package gov.nist.secauto.metaschema.databind.model.impl; import gov.nist.secauto.metaschema.core.model.AbstractChoiceGroupInstance; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IContainerModelSupport; import gov.nist.secauto.metaschema.core.util.CollectionUtil; import gov.nist.secauto.metaschema.core.util.CustomCollectors; @@ -37,7 +38,6 @@ import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedField; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedNamed; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IGroupAs; import gov.nist.secauto.metaschema.databind.model.annotations.BoundChoiceGroup; import gov.nist.secauto.metaschema.databind.model.annotations.BoundGroupedAssembly; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelFieldComplex.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelFieldComplex.java index 3a64c02df..a7186a2fb 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelFieldComplex.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelFieldComplex.java @@ -29,13 +29,13 @@ import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; import gov.nist.secauto.metaschema.core.model.AbstractFieldInstance; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelFieldComplex; import gov.nist.secauto.metaschema.databind.model.IBoundFieldValue; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceFlag; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelFieldComplex; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundProperty; import gov.nist.secauto.metaschema.databind.model.IGroupAs; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelGroupedAssembly.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelGroupedAssembly.java index dde3b5452..c2f2e0a4b 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelGroupedAssembly.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelGroupedAssembly.java @@ -29,11 +29,11 @@ import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; import gov.nist.secauto.metaschema.core.model.AbstractAssemblyInstance; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelChoiceGroup; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedAssembly; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundProperty; import gov.nist.secauto.metaschema.databind.model.annotations.BoundGroupedAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.ModelUtil; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelGroupedFieldComplex.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelGroupedFieldComplex.java index 70984ac8e..ff86319e9 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelGroupedFieldComplex.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/impl/InstanceModelGroupedFieldComplex.java @@ -29,13 +29,13 @@ import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine; import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; import gov.nist.secauto.metaschema.core.model.AbstractFieldInstance; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelFieldComplex; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceFlag; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelChoiceGroup; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedField; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundProperty; import gov.nist.secauto.metaschema.databind.model.annotations.BoundGroupedField; import gov.nist.secauto.metaschema.databind.model.annotations.ModelUtil; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/AbstractModelInstanceReadHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/AbstractModelInstanceReadHandler.java index 1c67ed847..d226e3c3b 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/AbstractModelInstanceReadHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/AbstractModelInstanceReadHandler.java @@ -26,10 +26,10 @@ package gov.nist.secauto.metaschema.databind.model.info; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceFlag; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModel; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelNamed; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import edu.umd.cs.findbugs.annotations.NonNull; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IFeatureComplexItemValueHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IFeatureComplexItemValueHandler.java index 9b864a5f8..caf280beb 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IFeatureComplexItemValueHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IFeatureComplexItemValueHandler.java @@ -26,12 +26,12 @@ package gov.nist.secauto.metaschema.databind.model.info; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.BindingException; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundProperty; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IFeatureScalarItemValueHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IFeatureScalarItemValueHandler.java index 190a7f83d..1fa7cfd24 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IFeatureScalarItemValueHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IFeatureScalarItemValueHandler.java @@ -27,8 +27,8 @@ package gov.nist.secauto.metaschema.databind.model.info; import gov.nist.secauto.metaschema.core.datatype.IDataTypeAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.io.BindingException; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IValuedMutable; import edu.umd.cs.findbugs.annotations.NonNull; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemReadHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemReadHandler.java index 9c5bf0072..761e4a4b0 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemReadHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemReadHandler.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model.info; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelFieldComplex; import gov.nist.secauto.metaschema.databind.model.IBoundFieldValue; @@ -36,7 +37,6 @@ import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelFieldScalar; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedField; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemValueHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemValueHandler.java index 58a8d1441..88a3bfd1c 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemValueHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemValueHandler.java @@ -26,8 +26,8 @@ package gov.nist.secauto.metaschema.databind.model.info; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.io.BindingException; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemWriteHandler.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemWriteHandler.java index f377364db..f99da605e 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemWriteHandler.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IItemWriteHandler.java @@ -26,6 +26,7 @@ package gov.nist.secauto.metaschema.databind.model.info; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelFieldComplex; import gov.nist.secauto.metaschema.databind.model.IBoundFieldValue; @@ -36,7 +37,6 @@ import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelFieldScalar; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedAssembly; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedField; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IModelInstanceCollectionInfo.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IModelInstanceCollectionInfo.java index 3dd1c6639..b8b7f7ff3 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IModelInstanceCollectionInfo.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/IModelInstanceCollectionInfo.java @@ -26,10 +26,10 @@ package gov.nist.secauto.metaschema.databind.model.info; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.databind.io.BindingException; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModel; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; import java.lang.reflect.Field; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/ListCollectionInfo.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/ListCollectionInfo.java index 4af702a3a..2da9cc92b 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/ListCollectionInfo.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/ListCollectionInfo.java @@ -26,11 +26,11 @@ package gov.nist.secauto.metaschema.databind.model.info; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.CollectionUtil; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.BindingException; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModel; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; import java.lang.reflect.ParameterizedType; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/MapCollectionInfo.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/MapCollectionInfo.java index 0579557cd..648d2e0bd 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/MapCollectionInfo.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/MapCollectionInfo.java @@ -26,12 +26,12 @@ package gov.nist.secauto.metaschema.databind.model.info; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.CollectionUtil; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.BindingException; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceFlag; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModel; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; import java.lang.reflect.ParameterizedType; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/SingletonCollectionInfo.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/SingletonCollectionInfo.java index 12992926d..3a7cc8894 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/SingletonCollectionInfo.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/info/SingletonCollectionInfo.java @@ -26,11 +26,11 @@ package gov.nist.secauto.metaschema.databind.model.info; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.CollectionUtil; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.io.BindingException; import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModel; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import java.io.IOException; import java.util.List; diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/BindingConstraintLoader.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/BindingConstraintLoader.java index e02ebb5f8..d262919e0 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/BindingConstraintLoader.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/BindingConstraintLoader.java @@ -55,6 +55,7 @@ import gov.nist.secauto.metaschema.databind.IBindingContext; import gov.nist.secauto.metaschema.databind.io.DeserializationFeature; import gov.nist.secauto.metaschema.databind.io.IBoundLoader; +import gov.nist.secauto.metaschema.databind.model.binding.metaschema.AssemblyConstraints; import gov.nist.secauto.metaschema.databind.model.binding.metaschema.MetapathContext; import gov.nist.secauto.metaschema.databind.model.binding.metaschema.MetaschemaMetaConstraints; import gov.nist.secauto.metaschema.databind.model.binding.metaschema.MetaschemaMetapath; @@ -174,7 +175,7 @@ protected List parseScopedConstraints( List targetedConstraints = new LinkedList<>(); try { - for (Object constraintsObj : CollectionUtil.listOrEmpty(scope.getConstraints())) { + for (IValueConstraintsBase constraintsObj : CollectionUtil.listOrEmpty(scope.getConstraints())) { if (constraintsObj instanceof MetaschemaModuleConstraints.Scope.Assembly) { targetedConstraints.add(handleScopedAssembly( (MetaschemaModuleConstraints.Scope.Assembly) constraintsObj, @@ -263,8 +264,11 @@ private Context parseContext( .collect(Collectors.toList()); } + AssemblyConstraints contextConstraints = contextObj.getConstraints(); IModelConstrained constraints = new AssemblyConstraintSet(); - ConstraintBindingSupport.parse(constraints, ObjectUtils.notNull(contextObj.getConstraints()), source); + if (contextConstraints != null) { + ConstraintBindingSupport.parse(constraints, contextConstraints, source); + } Context context = new Context(metapaths, constraints); List childContexts = CollectionUtil.listOrEmpty(contextObj.getMetapathContexts()).stream() diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueConstraintsBase.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueConstraintsBase.java index 43d8302ff..81dccb38d 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueConstraintsBase.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueConstraintsBase.java @@ -26,11 +26,12 @@ package gov.nist.secauto.metaschema.databind.model.metaschema; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.binding.metaschema.ConstraintLetExpression; import java.util.List; -public interface IValueConstraintsBase { +public interface IValueConstraintsBase extends IBoundObject { List getLets(); List getRules(); diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.java new file mode 100644 index 000000000..439efbf77 --- /dev/null +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/IValueTargetedConstraintsBase.java @@ -0,0 +1,39 @@ +/* + * Portions of this software was developed by employees of the National Institute + * of Standards and Technology (NIST), an agency of the Federal Government and is + * being made available as a public service. Pursuant to title 17 United States + * Code Section 105, works of NIST employees are not subject to copyright + * protection in the United States. This software may be subject to foreign + * copyright. Permission in the United States and in foreign countries, to the + * extent that NIST may hold copyright, to use, copy, modify, create derivative + * works, and distribute this software and its documentation without fee is hereby + * granted on a non-exclusive basis, provided that this notice and disclaimer + * of warranty appears in all copies. + * + * THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND, EITHER + * EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY + * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM + * INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE + * SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE. IN NO EVENT + * SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, + * INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, + * OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY, + * CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR + * PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT + * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. + */ + +package gov.nist.secauto.metaschema.databind.model.metaschema; + +import gov.nist.secauto.metaschema.databind.model.binding.metaschema.ConstraintLetExpression; + +import java.util.List; + +public interface IValueTargetedConstraintsBase extends IValueConstraintsBase { + @Override + List getLets(); + + @Override + List getRules(); +} diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/ConstraintBindingSupport.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/ConstraintBindingSupport.java index 1f40f8c37..f1621475c 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/ConstraintBindingSupport.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/ConstraintBindingSupport.java @@ -63,6 +63,7 @@ import gov.nist.secauto.metaschema.databind.model.metaschema.IConstraintBase; import gov.nist.secauto.metaschema.databind.model.metaschema.IModelConstraintsBase; import gov.nist.secauto.metaschema.databind.model.metaschema.IValueConstraintsBase; +import gov.nist.secauto.metaschema.databind.model.metaschema.IValueTargetedConstraintsBase; import java.math.BigInteger; import java.util.List; @@ -102,6 +103,30 @@ public static void parse( } } + public static void parse( + @NonNull IValueConstrained constraintSet, + @NonNull IValueTargetedConstraintsBase constraints, + @NonNull ISource source) { + parseLet(constraintSet, constraints, source); + + // parse rules + for (IConstraintBase ruleObj : constraints.getRules()) { + if (ruleObj instanceof TargetedAllowedValuesConstraint) { + IAllowedValuesConstraint constraint = newAllowedValues((TargetedAllowedValuesConstraint) ruleObj, source); + constraintSet.addConstraint(constraint); + } else if (ruleObj instanceof TargetedExpectConstraint) { + IExpectConstraint constraint = newExpect((TargetedExpectConstraint) ruleObj, source); + constraintSet.addConstraint(constraint); + } else if (ruleObj instanceof TargetedIndexHasKeyConstraint) { + IIndexHasKeyConstraint constraint = newIndexHasKey((TargetedIndexHasKeyConstraint) ruleObj, source); + constraintSet.addConstraint(constraint); + } else if (ruleObj instanceof TargetedMatchesConstraint) { + IMatchesConstraint constraint = newMatches((TargetedMatchesConstraint) ruleObj, source); + constraintSet.addConstraint(constraint); + } + } + } + public static void parse( @NonNull IModelConstrained constraintSet, @NonNull IModelConstraintsBase constraints, @@ -394,6 +419,9 @@ private static IConstraint.Level level(@Nullable String level) { case "INFORMATIONAL": retval = IConstraint.Level.INFORMATIONAL; break; + case "DEBUG": + retval = IConstraint.Level.DEBUG; + break; default: throw new UnsupportedOperationException(level); } diff --git a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/DefinitionAssemblyGlobal.java b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/DefinitionAssemblyGlobal.java index b3964e935..5af790274 100644 --- a/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/DefinitionAssemblyGlobal.java +++ b/databind/src/main/java/gov/nist/secauto/metaschema/databind/model/metaschema/impl/DefinitionAssemblyGlobal.java @@ -124,8 +124,7 @@ public DefinitionAssemblyGlobal( })); this.modelContainer = ObjectUtils.notNull(Lazy.lazy(() -> AssemblyModelContainerSupport.of( binding.getModel(), - ObjectUtils - .requireNonNull(bindingInstance.getDefinition().getAssemblyInstanceByName(MODEL_QNAME)), + ObjectUtils.requireNonNull(bindingInstance.getDefinition().getAssemblyInstanceByName(MODEL_QNAME)), this, nodeItemFactory))); this.modelConstraints = ObjectUtils.notNull(Lazy.lazy(() -> { diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/AbstractMetaschemaTest.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/AbstractMetaschemaTest.java index 4824f8a8d..3131d6a03 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/AbstractMetaschemaTest.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/codegen/AbstractMetaschemaTest.java @@ -28,6 +28,7 @@ import static org.junit.jupiter.api.Assertions.assertAll; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.model.IMetaschemaModule; import gov.nist.secauto.metaschema.core.model.MetaschemaException; import gov.nist.secauto.metaschema.core.util.ObjectUtils; @@ -37,7 +38,6 @@ import gov.nist.secauto.metaschema.databind.io.BindingException; import gov.nist.secauto.metaschema.databind.io.Format; import gov.nist.secauto.metaschema.databind.io.IDeserializer; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; import gov.nist.secauto.metaschema.databind.model.metaschema.BindingModuleLoader; import org.apache.logging.log4j.LogManager; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/AbstractBoundModelTestSupport.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/AbstractBoundModelTestSupport.java index 3fc3eafe2..6095d4dd3 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/AbstractBoundModelTestSupport.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/AbstractBoundModelTestSupport.java @@ -30,6 +30,7 @@ import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonParser; +import gov.nist.secauto.metaschema.core.model.IBoundObject; import gov.nist.secauto.metaschema.core.util.ObjectUtils; import gov.nist.secauto.metaschema.databind.DefaultBindingContext; import gov.nist.secauto.metaschema.databind.IBindingContext; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/DefaultValueKeyField.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/DefaultValueKeyField.java index 6765a5f7b..f55d81df6 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/DefaultValueKeyField.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/DefaultValueKeyField.java @@ -26,8 +26,8 @@ package gov.nist.secauto.metaschema.databind.model.test; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFieldValue; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaField; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/EmptyBoundAssembly.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/EmptyBoundAssembly.java index ada210e09..71678aa01 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/EmptyBoundAssembly.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/EmptyBoundAssembly.java @@ -26,8 +26,8 @@ package gov.nist.secauto.metaschema.databind.model.test; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; @MetaschemaAssembly(name = "empty-bound-assembly", rootName = "root", moduleClass = TestMetaschema.class) diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedAssembly.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedAssembly.java index baa3425cb..57e16ce76 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedAssembly.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedAssembly.java @@ -27,8 +27,8 @@ package gov.nist.secauto.metaschema.databind.model.test; import gov.nist.secauto.metaschema.core.datatype.adapter.IntegerAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedBoundAssembly.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedBoundAssembly.java index 2ca3c7c50..79be9da8e 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedBoundAssembly.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedBoundAssembly.java @@ -27,8 +27,8 @@ package gov.nist.secauto.metaschema.databind.model.test; import gov.nist.secauto.metaschema.core.datatype.adapter.BooleanAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.JsonKey; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedBoundField.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedBoundField.java index 29cfb288b..6796528a9 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedBoundField.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/FlaggedBoundField.java @@ -28,8 +28,8 @@ import gov.nist.secauto.metaschema.core.datatype.adapter.BooleanAdapter; import gov.nist.secauto.metaschema.core.datatype.adapter.TokenAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFieldValue; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.JsonKey; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/MultiFieldAssembly.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/MultiFieldAssembly.java index b724e1a4c..b881d9bee 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/MultiFieldAssembly.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/MultiFieldAssembly.java @@ -26,10 +26,10 @@ package gov.nist.secauto.metaschema.databind.model.test; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.XmlGroupAsBehavior; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFieldValue; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/OnlyModelBoundAssembly.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/OnlyModelBoundAssembly.java index 901830208..2c549a352 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/OnlyModelBoundAssembly.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/OnlyModelBoundAssembly.java @@ -26,9 +26,9 @@ package gov.nist.secauto.metaschema.databind.model.test; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; import gov.nist.secauto.metaschema.databind.model.annotations.GroupAs; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/RootBoundAssembly.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/RootBoundAssembly.java index ed78ac236..41009ff70 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/RootBoundAssembly.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/RootBoundAssembly.java @@ -27,9 +27,9 @@ package gov.nist.secauto.metaschema.databind.model.test; import gov.nist.secauto.metaschema.core.datatype.adapter.UuidAdapter; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/SimpleAssembly.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/SimpleAssembly.java index 398c4da15..e19c2b475 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/SimpleAssembly.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/SimpleAssembly.java @@ -27,8 +27,8 @@ package gov.nist.secauto.metaschema.databind.model.test; import gov.nist.secauto.metaschema.core.datatype.adapter.IntegerAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/ValueKeyField.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/ValueKeyField.java index 6ce513c83..38d77ac97 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/ValueKeyField.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/model/test/ValueKeyField.java @@ -26,8 +26,8 @@ package gov.nist.secauto.metaschema.databind.model.test; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFieldValue; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaField; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/testing/model/RootAssemblyWithFields.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/testing/model/RootAssemblyWithFields.java index 587c21e69..451ce0b7b 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/testing/model/RootAssemblyWithFields.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/testing/model/RootAssemblyWithFields.java @@ -26,10 +26,10 @@ package gov.nist.secauto.metaschema.databind.testing.model; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; import gov.nist.secauto.metaschema.core.model.XmlGroupAsBehavior; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFieldValue; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; diff --git a/databind/src/test/java/gov/nist/secauto/metaschema/databind/testing/model/RootAssemblyWithFlags.java b/databind/src/test/java/gov/nist/secauto/metaschema/databind/testing/model/RootAssemblyWithFlags.java index 1c033cf46..6c5aee574 100644 --- a/databind/src/test/java/gov/nist/secauto/metaschema/databind/testing/model/RootAssemblyWithFlags.java +++ b/databind/src/test/java/gov/nist/secauto/metaschema/databind/testing/model/RootAssemblyWithFlags.java @@ -27,8 +27,8 @@ package gov.nist.secauto.metaschema.databind.testing.model; import gov.nist.secauto.metaschema.core.datatype.adapter.IntegerAdapter; -import gov.nist.secauto.metaschema.databind.model.IBoundObject; -import gov.nist.secauto.metaschema.databind.model.IMetaschemaData; +import gov.nist.secauto.metaschema.core.model.IBoundObject; +import gov.nist.secauto.metaschema.core.model.IMetaschemaData; import gov.nist.secauto.metaschema.databind.model.annotations.BoundFlag; import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; diff --git a/metaschema-cli/pom.xml b/metaschema-cli/pom.xml index af66c9c47..2488ccfcf 100644 --- a/metaschema-cli/pom.xml +++ b/metaschema-cli/pom.xml @@ -35,6 +35,10 @@ ${project.groupId} metaschema-databind + + ${project.groupId} + metaschema-databind-modules + com.google.auto.service @@ -62,33 +66,6 @@ - - gov.nist.secauto.metaschema - metaschema-maven-plugin - ${project.version} - - - metaschema-codegen - generate-sources - - generate-sources - - - ${project.basedir}/../core/metaschema/schema/metaschema - ${project.build.directory}/generated-sources/metaschema - - - sarif-metaschema.xml - - - - - org.codehaus.mojo appassembler-maven-plugin diff --git a/metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/AbstractValidateContentCommand.java b/metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/AbstractValidateContentCommand.java index 8c4889311..006a22ca5 100644 --- a/metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/AbstractValidateContentCommand.java +++ b/metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/AbstractValidateContentCommand.java @@ -37,9 +37,12 @@ import gov.nist.secauto.metaschema.cli.processor.command.DefaultExtraArgument; import gov.nist.secauto.metaschema.cli.processor.command.ExtraArgument; import gov.nist.secauto.metaschema.cli.util.LoggingValidationHandler; +import gov.nist.secauto.metaschema.core.configuration.DefaultConfiguration; +import gov.nist.secauto.metaschema.core.configuration.IMutableConfiguration; import gov.nist.secauto.metaschema.core.model.IConstraintLoader; import gov.nist.secauto.metaschema.core.model.MetaschemaException; import gov.nist.secauto.metaschema.core.model.constraint.IConstraintSet; +import gov.nist.secauto.metaschema.core.model.constraint.ValidationFeature; import gov.nist.secauto.metaschema.core.model.validation.IValidationResult; import gov.nist.secauto.metaschema.core.util.CollectionUtil; import gov.nist.secauto.metaschema.core.util.CustomCollectors; @@ -50,6 +53,7 @@ import gov.nist.secauto.metaschema.databind.io.Format; import gov.nist.secauto.metaschema.databind.io.IBoundLoader; import gov.nist.secauto.metaschema.databind.model.metaschema.BindingConstraintLoader; +import gov.nist.secauto.metaschema.modules.sarif.SarifValidationHandler; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; @@ -61,6 +65,7 @@ import java.net.URI; import java.net.URISyntaxException; import java.net.UnknownHostException; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; import java.util.Collection; @@ -87,6 +92,7 @@ public abstract class AbstractValidateContentCommand .hasArg() .argName("FORMAT") .desc("source format: xml, json, or yaml") + .numberOfArgs(1) .build()); @NonNull private static final Option CONSTRAINTS_OPTION = ObjectUtils.notNull( @@ -95,6 +101,14 @@ public abstract class AbstractValidateContentCommand .argName("URI") .desc("additional constraint definitions") .build()); + @NonNull + private static final Option OUTPUT_FILE_OPTION = ObjectUtils.notNull( + Option.builder("o") + .hasArg() + .argName("FILE") + .desc("write SARIF results to the provided FILE") + .numberOfArgs(1) + .build()); @Override public String getName() { @@ -106,7 +120,8 @@ public String getName() { public Collection gatherOptions() { return List.of( AS_OPTION, - CONSTRAINTS_OPTION); + CONSTRAINTS_OPTION, + OUTPUT_FILE_OPTION); } @Override @@ -233,9 +248,14 @@ public ExitStatus execute() { LOGGER.info("Validating '{}' as {}.", source, asFormat.name()); } + IMutableConfiguration> configuration = new DefaultConfiguration<>(); + if (cmdLine.hasOption(OUTPUT_FILE_OPTION)) { + configuration.enableFeature(ValidationFeature.VALIDATE_GENERATE_PASS_FINDINGS); + } + IValidationResult validationResult; try { - validationResult = bindingContext.validate(source, asFormat, this); + validationResult = bindingContext.validate(source, asFormat, this, configuration); } catch (FileNotFoundException ex) { return ExitCode.IO_ERROR.exitMessage(String.format("Resource not found at '%s'", source)).withThrowable(ex); @@ -246,11 +266,19 @@ public ExitStatus execute() { return ExitCode.PROCESSING_ERROR.exit().withThrowable(ex); } - if (LOGGER.isInfoEnabled() && !validationResult.isPassing()) { + if (cmdLine.hasOption(OUTPUT_FILE_OPTION) && LOGGER.isInfoEnabled()) { + Path sarifFile = Paths.get(cmdLine.getOptionValue(OUTPUT_FILE_OPTION)); + try { + SarifValidationHandler.instance().handleValidationResults(source, sarifFile, validationResult, + bindingContext); + } catch (IOException ex) { + return ExitCode.PROCESSING_ERROR.exit().withThrowable(ex); + } + } else if (!validationResult.isPassing()) { LOGGER.info("Validation identified the following issues:", source); - } - LoggingValidationHandler.instance().handleValidationResults(validationResult); + LoggingValidationHandler.instance().handleValidationResults(validationResult); + } if (validationResult.isPassing() && !cmdLine.hasOption(CLIProcessor.QUIET_OPTION) && LOGGER.isInfoEnabled()) { LOGGER.info("The file '{}' is valid.", source); diff --git a/metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/AbstractTestSuite.java b/metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/AbstractTestSuite.java index 4fabd7c1f..78d16eb18 100644 --- a/metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/AbstractTestSuite.java +++ b/metaschema-testing/src/main/java/gov/nist/secauto/metaschema/model/testing/AbstractTestSuite.java @@ -495,6 +495,9 @@ private static void logFinding(@NonNull IValidationFinding finding) { case INFORMATIONAL: logBuilder = LOGGER.atInfo(); break; + case DEBUG: + logBuilder = LOGGER.atDebug(); + break; default: throw new IllegalArgumentException("Unknown level: " + finding.getSeverity().name()); } diff --git a/pom.xml b/pom.xml index e31dd3e7c..bd71a1ae1 100644 --- a/pom.xml +++ b/pom.xml @@ -211,6 +211,11 @@ metaschema-databind ${project.version} + + ${project.groupId} + metaschema-databind-modules + ${project.version} + ${project.groupId} metaschema-freemarker-support