From db6d40b4ec709f686f611bd0c89c5c2f047c3f26 Mon Sep 17 00:00:00 2001 From: Loose Date: Wed, 27 Jul 2022 09:27:29 -0300 Subject: [PATCH 1/4] Publish 6.1.0-SNAPSHOT --- build.sbt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sbt b/build.sbt index 082e9739b..35d5ce007 100644 --- a/build.sbt +++ b/build.sbt @@ -7,7 +7,7 @@ val ivyLocal = Resolver.file("ivy", file(Path.userHome.absolutePath + "/.ivy2/lo name := "amf-aml" -ThisBuild / version := "6.0.11" +ThisBuild / version := "6.1.0-SNAPSHOT" ThisBuild / scalaVersion := "2.12.11" publish := {} @@ -34,7 +34,7 @@ lazy val workspaceDirectory: File = case _ => Path.userHome / "mulesoft" } -val amfCoreVersion = "5.0.11" +val amfCoreVersion = "5.1.0-SNAPSHOT" lazy val amfCoreJVMRef = ProjectRef(workspaceDirectory / "amf-core", "coreJVM") lazy val amfCoreJSRef = ProjectRef(workspaceDirectory / "amf-core", "coreJS") From 08dedf7bf2a6d74847b82d7dacff85232d1199ae Mon Sep 17 00:00:00 2001 From: arielmirra Date: Wed, 27 Jul 2022 17:54:06 -0300 Subject: [PATCH 2/4] W-11425840: add position and location to validation results and reports --- .../shacl/custom/CustomShaclValidator.scala | 39 +++++++++++-------- .../shacl/custom/CustomValidationReport.scala | 18 ++++++--- .../shacl/custom/CustomValidationResult.scala | 5 ++- 3 files changed, 39 insertions(+), 23 deletions(-) diff --git a/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomShaclValidator.scala b/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomShaclValidator.scala index 17a12a1a6..71a1cf7f1 100644 --- a/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomShaclValidator.scala +++ b/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomShaclValidator.scala @@ -5,7 +5,7 @@ import amf.core.client.scala.model.DataType import amf.core.client.scala.model.document.BaseUnit import amf.core.client.scala.model.domain._ import amf.core.client.scala.vocabulary.Namespace -import amf.core.internal.annotations.{SourceAST, SourceYPart} +import amf.core.internal.annotations.{LexicalInformation, SourceAST, SourceYPart} import amf.core.internal.metamodel.Field import amf.core.internal.parser.domain.Annotations import amf.core.internal.utils._ @@ -189,14 +189,29 @@ class CustomShaclValidator( // depending if propertyInfo is provided, violation is thrown at a given property, or by default on element val onValidation = (validationInfo: Option[ValidationInfo]) => validationInfo match { - case Some(ValidationInfo(field, customMessage, _)) => // why annotations are never used? - reportFailure(validationSpecification, element.id, field.toString, customMessage, reportBuilder) - case _ => reportFailure(validationSpecification, element.id, "", reportBuilder = reportBuilder) + case Some(ValidationInfo(field, customMessage, ann)) => + reportBuilder.reportFailure( + validationSpecification, + element.id, + field.toString, + customMessage, + getPosition(ann), + getLocation(ann) + ) + case _ => reportBuilder.reportFailure(validationSpecification, element.id, "") } validationFunction.run(element, onValidation) }) } + private def getPosition(annotations: Option[Annotations]): Option[LexicalInformation] = { + annotations flatMap (_.find(classOf[LexicalInformation])) + } + + private def getLocation(annotations: Option[Annotations]): Option[String] = { + annotations flatMap (_.location()) + } + private def getFunctionForName(name: String): CustomShaclFunction = customFunctions.get(name) match { case Some(validationFunction) => validationFunction case None => @@ -219,7 +234,7 @@ class CustomShaclValidator( validationSpecification.targetObject.foreach { targetObject => extractor.extractPlainPredicateValue(targetObject, element).foreach { case ExtractedPropertyValue(_: AmfScalar, Some(value: String)) if !value.contains("://") => - reportFailure(validationSpecification, element.id, "", reportBuilder = reportBuilder) + reportBuilder.reportFailure(validationSpecification, element.id, "", None) case _ => // ignore } } @@ -353,7 +368,7 @@ class CustomShaclValidator( case ExtractedPropertyValue(obj: AmfObject, _) => val current = obj.meta.`type`.map(_.iri()) if (!propertyConstraint.`class`.exists(t => current.contains(t))) - reportBuilder.reportFailure(validationSpecification, propertyConstraint, element.id) + reportBuilder.reportFailure(validationSpecification, propertyConstraint, element.id, None, None) case _ => // ignore } } @@ -866,16 +881,6 @@ class CustomShaclValidator( id: String, reportBuilder: ReportBuilder ): Unit = { - reportBuilder.reportFailure(validationSpecification, propertyConstraint, id) - } - - private def reportFailure( - validationSpec: ValidationSpecification, - id: String, - path: String, - customMessage: Option[String] = None, - reportBuilder: ReportBuilder - ): Unit = { - reportBuilder.reportFailure(validationSpec, id, path, customMessage) + reportBuilder.reportFailure(validationSpecification, propertyConstraint, id, None, None) } } diff --git a/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomValidationReport.scala b/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomValidationReport.scala index 69c5a6395..cab61e390 100644 --- a/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomValidationReport.scala +++ b/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomValidationReport.scala @@ -1,6 +1,7 @@ package amf.validation.internal.shacl.custom import amf.core.client.common.validation.{MessageStyle, OASStyle, RAMLStyle, SeverityLevels} +import amf.core.internal.annotations.LexicalInformation import amf.core.internal.validation.core._ import scala.collection.mutable @@ -20,16 +21,20 @@ class ReportBuilder(messageStyle: MessageStyle) { def reportFailure( validationSpecification: ValidationSpecification, propertyConstraint: PropertyConstraint, - id: String + id: String, + position: Option[LexicalInformation], + location: Option[String] ): Unit = { - reportFailure(validationSpecification, id, propertyConstraint.ramlPropertyId) + reportFailure(validationSpecification, id, propertyConstraint.ramlPropertyId, None, position, location) } def reportFailure( validationSpec: ValidationSpecification, id: String, path: String, - customMessage: Option[String] = None + customMessage: Option[String] = None, + position: Option[LexicalInformation] = None, + location: Option[String] = None ): Unit = { registerResult( CustomValidationResult( @@ -38,13 +43,16 @@ class ReportBuilder(messageStyle: MessageStyle) { sourceConstraintComponent = validationSpec.id, focusNode = id, severity = ShaclSeverityUris.amfSeverity(validationSpec.severity), - sourceShape = validationSpec.id + sourceShape = validationSpec.id, + position = position, + location = location ) ) } private def registerResult(result: ValidationResult): Unit = { - val key = result.sourceShape + result.sourceConstraintComponent + result.focusNode + result.message.getOrElse("") + val key = + result.sourceShape + result.sourceConstraintComponent + result.focusNode + result.message + result.position + result.location if (!duplicates.contains(key)) { duplicates += key results.append(result) diff --git a/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomValidationResult.scala b/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomValidationResult.scala index b78af113d..24169a4fa 100644 --- a/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomValidationResult.scala +++ b/amf-validation/shared/src/main/scala/amf/validation/internal/shacl/custom/CustomValidationResult.scala @@ -1,5 +1,6 @@ package amf.validation.internal.shacl.custom +import amf.core.internal.annotations.LexicalInformation import amf.core.internal.validation.core.ValidationResult case class CustomValidationResult( @@ -8,5 +9,7 @@ case class CustomValidationResult( sourceConstraintComponent: String, focusNode: String, severity: String, - sourceShape: String + sourceShape: String, + position: Option[LexicalInformation], + location: Option[String] ) extends ValidationResult From 2bea93ac4b0e74e30f5cdff7b4a2338785afcf34 Mon Sep 17 00:00:00 2001 From: Loose Date: Wed, 17 Aug 2022 14:15:53 -0300 Subject: [PATCH 3/4] Publish 6.0.12-RC.0 --- Jenkinsfile | 1 + build.sbt | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index f0d137378..431e919f5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -41,6 +41,7 @@ pipeline { anyOf { branch 'master' branch 'develop' + branch 'release/*' } } steps { diff --git a/build.sbt b/build.sbt index 35d5ce007..dc7c964c5 100644 --- a/build.sbt +++ b/build.sbt @@ -7,7 +7,7 @@ val ivyLocal = Resolver.file("ivy", file(Path.userHome.absolutePath + "/.ivy2/lo name := "amf-aml" -ThisBuild / version := "6.1.0-SNAPSHOT" +ThisBuild / version := "6.0.12-RC.0" ThisBuild / scalaVersion := "2.12.11" publish := {} @@ -34,7 +34,7 @@ lazy val workspaceDirectory: File = case _ => Path.userHome / "mulesoft" } -val amfCoreVersion = "5.1.0-SNAPSHOT" +val amfCoreVersion = "5.0.12-RC.0" lazy val amfCoreJVMRef = ProjectRef(workspaceDirectory / "amf-core", "coreJVM") lazy val amfCoreJSRef = ProjectRef(workspaceDirectory / "amf-core", "coreJS") From bca748639ec3d919508dcfe97b95e891806357df Mon Sep 17 00:00:00 2001 From: Loose Date: Tue, 23 Aug 2022 15:07:09 -0300 Subject: [PATCH 4/4] Publish 6.0.12 --- Jenkinsfile | 1 - build.sbt | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 431e919f5..f0d137378 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -41,7 +41,6 @@ pipeline { anyOf { branch 'master' branch 'develop' - branch 'release/*' } } steps { diff --git a/build.sbt b/build.sbt index dc7c964c5..02e82bec1 100644 --- a/build.sbt +++ b/build.sbt @@ -7,7 +7,7 @@ val ivyLocal = Resolver.file("ivy", file(Path.userHome.absolutePath + "/.ivy2/lo name := "amf-aml" -ThisBuild / version := "6.0.12-RC.0" +ThisBuild / version := "6.0.12" ThisBuild / scalaVersion := "2.12.11" publish := {} @@ -34,7 +34,7 @@ lazy val workspaceDirectory: File = case _ => Path.userHome / "mulesoft" } -val amfCoreVersion = "5.0.12-RC.0" +val amfCoreVersion = "5.0.12" lazy val amfCoreJVMRef = ProjectRef(workspaceDirectory / "amf-core", "coreJVM") lazy val amfCoreJSRef = ProjectRef(workspaceDirectory / "amf-core", "coreJS")