Skip to content

Changes in 4.5.1

Compare
Choose a tag to compare
@nschejtman nschejtman released this 16 Dec 19:39
· 2784 commits to master since this release
68006a1

Released Dec 15, 2020.

JS asset

JVM asset

Model changes (AMF model version 2.2.0 -> 2.3.0)

PropertySource and PropertyTarget properties in the AMF model where modified from Uri to String.

In JSON Schema definitions which use the dependencies facet, the source and target of such dependencies were stored in the graph as Uri references to the parsed properties. Now the graph stores the raw names of such properties (as defined in the JSON Schema) rather than the ID of the parsed properties.

New Features

JSON parsing recovery

  • More entries saved in case or error
  • Some optimizations in SYAML JSON parser enables AMF to recover from JSON syntax errors and parse parts of a JSON file.
    This translates into more entries in the model in case of syntax error and more precise error messages.
  • Multiline JSON strings now are validated
  • According to the JSON definition, a line break in a JSON string MUST be escaped ('\n').
    This was not working correctly in some cases but now a syntax error will be shown in case of a line break in a string.

JSON Schema 2019

AMF can now parse and emit JSON Schema 2019 referenced in other specs.

Caveats

  • We are still waiting for validator support for JSON Schema 2019. Therefore, AMF Shapes containing fields of said draft that are incompatible with draft-7 will not be used in validation. A warning will be emitted for each incompatible field. The incompatible fields are:
    • unevaluatedProperties
    • unevaluatedItems
    • minContains
    • maxContains

Interface Changes

AML Links

Added

  • amf.client.model.domain.Scope.isExternalLink(..)
  • amf.client.model.domain.Scope.withIsExternalLink(..)
  • amf.client.model.domain.CreativeWork.isExternalLink(..)
  • amf.client.model.domain.CreativeWork.withIsExternalLink(..)
  • amf.client.model.domain.MqttOperationBinding.isExternalLink(..)
  • amf.client.model.domain.MqttOperationBinding.withIsExternalLink(..)
  • amf.client.model.domain.CustomDomainProperty.isExternalLink(..)
  • amf.client.model.domain.CustomDomainProperty.withIsExternalLink(..)
  • amf.client.model.domain.ParametrizedSecurityScheme.isExternalLink(..)
  • amf.client.model.domain.ParametrizedSecurityScheme.withIsExternalLink(..)
  • amf.client.model.domain.Example.isExternalLink(..)
  • amf.client.model.domain.Example.withIsExternalLink(..)
  • amf.client.model.domain.MqttMessageBinding.isExternalLink(..)
  • amf.client.model.domain.MqttMessageBinding.withIsExternalLink(..)
  • amf.client.model.domain.MessageBindings.isExternalLink(..)
  • amf.client.model.domain.MessageBindings.withIsExternalLink(..)
  • amf.client.model.domain.Callback.isExternalLink(..)
  • amf.client.model.domain.Callback.withIsExternalLink(..)
  • amf.client.model.domain.ParametrizedTrait.isExternalLink(..)
  • amf.client.model.domain.ParametrizedTrait.withIsExternalLink(..)
  • amf.client.model.domain.Amqp091OperationBinding.isExternalLink(..)
  • amf.client.model.domain.Amqp091OperationBinding.withIsExternalLink(..)
  • amf.client.model.domain.KafkaOperationBinding.isExternalLink(..)
  • amf.client.model.domain.KafkaOperationBinding.withIsExternalLink(..)
  • amf.client.model.domain.ResourceType.isExternalLink(..)
  • amf.client.model.domain.ResourceType.withIsExternalLink(..)
  • amf.client.model.domain.NodeShape.isExternalLink(..)
  • amf.client.model.domain.NodeShape.withIsExternalLink(..)
  • amf.client.model.domain.WebApi.isExternalLink(..)
  • amf.client.model.domain.WebApi.withIsExternalLink(..)
  • amf.client.model.domain.TemplatedLink.isExternalLink(..)
  • amf.client.model.domain.TemplatedLink.withIsExternalLink(..)
  • amf.client.model.domain.SchemaShape.isExternalLink(..)
  • amf.client.model.domain.SchemaShape.withIsExternalLink(..)
  • amf.client.model.domain.ServerBindings.isExternalLink(..)
  • amf.client.model.domain.ServerBindings.withIsExternalLink(..)
  • amf.client.model.domain.KafkaMessageBinding.isExternalLink(..)
  • amf.client.model.domain.KafkaMessageBinding.withIsExternalLink(..)
  • amf.client.model.domain.HttpMessageBinding.isExternalLink(..)
  • amf.client.model.domain.HttpMessageBinding.withIsExternalLink(..)
  • amf.client.model.domain.ParametrizedDeclaration.isExternalLink(..)
  • amf.client.model.domain.ParametrizedDeclaration.withIsExternalLink(..)
  • amf.client.model.domain.Operation.isExternalLink(..)
  • amf.client.model.domain.Operation.withIsExternalLink(..)
  • amf.client.model.domain.Amqp091MessageBinding.isExternalLink(..)
  • amf.client.model.domain.Amqp091MessageBinding.withIsExternalLink(..)
  • amf.client.model.domain.SecurityRequirement.isExternalLink(..)
  • amf.client.model.domain.SecurityRequirement.withIsExternalLink(..)
  • amf.client.model.domain.Settings.isExternalLink(..)
  • amf.client.model.domain.Settings.withIsExternalLink(..)
  • amf.client.model.domain.VariableValue.isExternalLink(..)
  • amf.client.model.domain.VariableValue.withIsExternalLink(..)
  • amf.client.model.domain.DialectDomainElement.isExternalLink(..)
  • amf.client.model.domain.DialectDomainElement.withIsExternalLink(..)
  • amf.client.model.domain.MqttServerBinding.isExternalLink(..)
  • amf.client.model.domain.MqttServerBinding.withIsExternalLink(..)
  • amf.client.model.domain.OAuth2Flow.isExternalLink(..)
  • amf.client.model.domain.OAuth2Flow.withIsExternalLink(..)
  • amf.client.model.domain.MqttServerLastWill.isExternalLink(..)
  • amf.client.model.domain.MqttServerLastWill.withIsExternalLink(..)
  • amf.client.model.domain.HttpOperationBinding.isExternalLink(..)
  • amf.client.model.domain.HttpOperationBinding.withIsExternalLink(..)
  • amf.client.model.domain.Amqp091ChannelBinding.isExternalLink(..)
  • amf.client.model.domain.Amqp091ChannelBinding.withIsExternalLink(..)
  • amf.client.model.domain.Response.isExternalLink(..)
  • amf.client.model.domain.Response.withIsExternalLink(..)
  • amf.client.model.domain.MatrixShape.isExternalLink(..)
  • amf.client.model.domain.MatrixShape.withIsExternalLink(..)
  • amf.client.model.domain.TupleShape.isExternalLink(..)
  • amf.client.model.domain.TupleShape.withIsExternalLink(..)
  • amf.client.model.domain.XMLSerializer.isExternalLink(..)
  • amf.client.model.domain.XMLSerializer.withIsExternalLink(..)
  • amf.client.model.domain.Parameter.isExternalLink(..)
  • amf.client.model.domain.Parameter.withIsExternalLink(..)
  • amf.client.model.domain.ArrayShape.isExternalLink(..)
  • amf.client.model.domain.ArrayShape.withIsExternalLink(..)
  • amf.client.model.domain.NodeMapping.isExternalLink(..)
  • amf.client.model.domain.NodeMapping.withIsExternalLink(..)
  • amf.client.model.domain.PropertyDependencies.isExternalLink(..)
  • amf.client.model.domain.PropertyDependencies.withIsExternalLink(..)
  • amf.client.model.domain.License.isExternalLink(..)
  • amf.client.model.domain.License.withIsExternalLink(..)
  • amf.client.model.domain.DataNode.isExternalLink(..)
  • amf.client.model.domain.DataNode.withIsExternalLink(..)
  • amf.client.model.domain.FileShape.isExternalLink(..)
  • amf.client.model.domain.FileShape.withIsExternalLink(..)
  • amf.client.model.domain.DomainExtension.isExternalLink(..)
  • amf.client.model.domain.DomainExtension.withIsExternalLink(..)
  • amf.client.model.domain.EndPoint.isExternalLink(..)
  • amf.client.model.domain.EndPoint.withIsExternalLink(..)
  • amf.client.model.domain.PropertyShape.isExternalLink(..)
  • amf.client.model.domain.PropertyShape.withIsExternalLink(..)
  • amf.client.model.domain.ClassTerm.isExternalLink(..)
  • amf.client.model.domain.ClassTerm.withIsExternalLink(..)
  • amf.client.model.domain.AbstractDeclaration.isExternalLink(..)
  • amf.client.model.domain.AbstractDeclaration.withIsExternalLink(..)
  • amf.client.model.domain.Message.isExternalLink(..)
  • amf.client.model.domain.Message.withIsExternalLink(..)
  • amf.client.model.domain.ObjectNode.isExternalLink(..)
  • amf.client.model.domain.ObjectNode.withIsExternalLink(..)
  • amf.client.model.domain.DataArrangeShape.isExternalLink(..)
  • amf.client.model.domain.DataArrangeShape.withIsExternalLink(..)
  • amf.client.model.domain.WebSocketsChannelBinding.isExternalLink(..)
  • amf.client.model.domain.WebSocketsChannelBinding.withIsExternalLink(..)
  • amf.client.model.domain.UnionShape.isExternalLink(..)
  • amf.client.model.domain.UnionShape.withIsExternalLink(..)
  • amf.client.model.domain.ShapeExtension.isExternalLink(..)
  • amf.client.model.domain.ShapeExtension.withIsExternalLink(..)
  • amf.client.model.domain.ExternalDomainElement.isExternalLink(..)
  • amf.client.model.domain.ExternalDomainElement.withIsExternalLink(..)
  • amf.client.model.domain.Organization.isExternalLink(..)
  • amf.client.model.domain.Organization.withIsExternalLink(..)
  • amf.client.model.domain.Request.isExternalLink(..)
  • amf.client.model.domain.Request.withIsExternalLink(..)
  • amf.client.model.domain.AnyShape.isExternalLink(..)
  • amf.client.model.domain.AnyShape.withIsExternalLink(..)
  • amf.client.model.domain.Encoding.isExternalLink(..)
  • amf.client.model.domain.Encoding.withIsExternalLink(..)
  • amf.client.model.domain.PropertyMapping.externallyLinkable(..)
  • amf.client.model.domain.PropertyMapping.isExternalLink(..)
  • amf.client.model.domain.PropertyMapping.withExternallyLinkable(..)
  • amf.client.model.domain.PropertyMapping.withIsExternalLink(..)
  • amf.client.model.domain.RecursiveShape.isExternalLink(..)
  • amf.client.model.domain.RecursiveShape.withIsExternalLink(..)
  • amf.client.model.domain.Server.isExternalLink(..)
  • amf.client.model.domain.Server.withIsExternalLink(..)
  • amf.client.model.domain.SecurityScheme.isExternalLink(..)
  • amf.client.model.domain.SecurityScheme.withIsExternalLink(..)
  • amf.client.model.domain.OperationBindings.isExternalLink(..)
  • amf.client.model.domain.OperationBindings.withIsExternalLink(..)
  • amf.client.model.domain.VocabularyReference.isExternalLink(..)
  • amf.client.model.domain.VocabularyReference.withIsExternalLink(..)
  • amf.client.model.domain.Tag.isExternalLink(..)
  • amf.client.model.domain.Tag.withIsExternalLink(..)
  • amf.client.model.domain.ScalarShape.isExternalLink(..)
  • amf.client.model.domain.ScalarShape.withIsExternalLink(..)
  • amf.client.model.domain.PublicNodeMapping.isExternalLink(..)
  • amf.client.model.domain.PublicNodeMapping.withIsExternalLink(..)
  • amf.client.model.domain.ParametrizedResourceType.isExternalLink(..)
  • amf.client.model.domain.ParametrizedResourceType.withIsExternalLink(..)
  • amf.client.model.domain.CorrelationId.isExternalLink(..)
  • amf.client.model.domain.CorrelationId.withIsExternalLink(..)
  • amf.client.model.domain.PropertyTerm.isExternalLink(..)
  • amf.client.model.domain.PropertyTerm.withIsExternalLink(..)
  • amf.client.model.domain.NilShape.isExternalLink(..)
  • amf.client.model.domain.NilShape.withIsExternalLink(..)
  • amf.client.model.domain.DomainElement.isExternalLink(..)
  • amf.client.model.domain.DomainElement.withIsExternalLink(..)
  • amf.client.model.domain.Payload.isExternalLink(..)
  • amf.client.model.domain.Payload.withIsExternalLink(..)
  • amf.client.model.domain.ChannelBindings.isExternalLink(..)
  • amf.client.model.domain.ChannelBindings.withIsExternalLink(..)
  • amf.client.model.domain.External.isExternalLink(..)
  • amf.client.model.domain.External.withIsExternalLink(..)
  • amf.client.model.domain.AsyncApi.isExternalLink(..)
  • amf.client.model.domain.AsyncApi.withIsExternalLink(..)
  • amf.client.model.domain.ArrayNode.isExternalLink(..)
  • amf.client.model.domain.ArrayNode.withIsExternalLink(..)
  • amf.client.model.domain.Trait.isExternalLink(..)
  • amf.client.model.domain.Trait.withIsExternalLink(..)
  • amf.client.model.domain.Shape.isExternalLink(..)
  • amf.client.model.domain.Shape.withIsExternalLink(..)
  • amf.client.model.domain.IriTemplateMapping.isExternalLink(..)
  • amf.client.model.domain.IriTemplateMapping.withIsExternalLink(..)

Validation Changes

The JSON parsing recovery feature allows a better validation of JSON files with syntax errors. This effect is twofold:

  • JSON syntax errors are now more isolated
  • More JSON content is now parsed and can be subject of validation

This can have an impact on OAS API specifications using JSON syntax.

AMF Fixed issues

APIMF-2714 - Investigate the SBT plugin publication process
APIMF-2706 - Fix cycle tests
APIMF-2705 - Analysis graphql schema
APIMF-2685 - Recursive fixpoint without jsonld base when using compactUris
APIMF-2682 - Analyze - Canonical Transformation validation low valid percentage in tckutor sets
APIMF-2667 - wrong validation with query parameters of type ""any"""
APIMF-2664 - Design a new examples project
APIMF-2663 - DocBook refactor analysis
APIMF-2662 - Analyze creation and use of ExtensionProvenance annotations
APIMF-2654 - Invalid json schemas generated
APIMF-2651 - Issue validating enum at example using json schema
APIMF-2625 - Analyze performance when validating large amount of enums
APIMF-2623 - Release first version of new documentation - add features
APIMF-2615 - Compatibility matrix for types support
APIMF-2186 - RAML 1.0 nested union types not resolved correctly :octocat: Github Issue #356