diff --git a/Dockerfile b/Dockerfile index 58a76c26..211ff2e7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM ubuntu:18.04 ARG USER_HOME_DIR="/root" ENV SCALA_VERSION 2.12.11 -ENV SBT_VERSION 1.3.9 +ENV SBT_VERSION 1.6.1 # Update the repository sources list and install dependencies RUN apt-get update @@ -43,7 +43,7 @@ RUN \ curl -L -o sbt-$SBT_VERSION.deb https://scala.jfrog.io/artifactory/debian/sbt-$SBT_VERSION.deb && \ dpkg -i sbt-$SBT_VERSION.deb && \ rm sbt-$SBT_VERSION.deb && \ - sbt sbtVersion + sbt -Dsbt.rootdir=true sbtVersion VOLUME "$USER_HOME_DIR/.sbt" diff --git a/amf-aml/shared/src/main/scala/amf/aml/client/platform/model/domain/AnnotationMapping.scala b/amf-aml/shared/src/main/scala/amf/aml/client/platform/model/domain/AnnotationMapping.scala index dca92ed9..eb2ac40c 100644 --- a/amf-aml/shared/src/main/scala/amf/aml/client/platform/model/domain/AnnotationMapping.scala +++ b/amf-aml/shared/src/main/scala/amf/aml/client/platform/model/domain/AnnotationMapping.scala @@ -59,6 +59,10 @@ case class AnnotationMapping(override private[amf] val _internal: InternalAnnota _internal.withAllowMultiple(allow) this } + def withDomain(domains: ClientList[String]): AnnotationMapping = { + _internal.withDomain(domains.asInternal) + this + } def withEnum(values: ClientList[Any]): AnnotationMapping = { _internal.withEnum(values.asInternal) this diff --git a/amf-aml/shared/src/main/scala/amf/aml/client/scala/model/document/Dialect.scala b/amf-aml/shared/src/main/scala/amf/aml/client/scala/model/document/Dialect.scala index bfab8a59..68993ec7 100644 --- a/amf-aml/shared/src/main/scala/amf/aml/client/scala/model/document/Dialect.scala +++ b/amf-aml/shared/src/main/scala/amf/aml/client/scala/model/document/Dialect.scala @@ -103,6 +103,8 @@ case class Dialect(fields: Fields, annotations: Annotations) usesKeyProperty.contains(true) } + private[amf] def hasExtensions(): Boolean = this.extensions().nonEmpty + private[amf] def usesHeaderMatching: Boolean = !usesKeyPropertyMatching private[amf] def extensionIndex: Map[String, Dialect] = extensions().map(e => e.extensionName().value() -> this).toMap diff --git a/amf-aml/shared/src/main/scala/amf/aml/internal/parse/instances/DialectInstancePatchParser.scala b/amf-aml/shared/src/main/scala/amf/aml/internal/parse/instances/DialectInstancePatchParser.scala index ad064a62..ef45e568 100644 --- a/amf-aml/shared/src/main/scala/amf/aml/internal/parse/instances/DialectInstancePatchParser.scala +++ b/amf-aml/shared/src/main/scala/amf/aml/internal/parse/instances/DialectInstancePatchParser.scala @@ -4,6 +4,7 @@ import amf.core.internal.parser.{Root, YMapOps} import amf.aml.client.scala.model.document.DialectInstancePatch import amf.aml.internal.validate.DialectValidations.DialectError import amf.core.internal.unsafe.PlatformSecrets +import amf.core.internal.utils.UriUtils import org.yaml.model.YType class DialectInstancePatchParser(root: Root)(implicit override val ctx: DialectInstanceContext) @@ -20,7 +21,7 @@ class DialectInstancePatchParser(root: Root)(implicit override val ctx: DialectI private def checkTarget(patch: DialectInstancePatch): DialectInstancePatch = { map.key("$target") match { case Some(entry) if entry.value.tagType == YType.Str => - patch.withExtendsModel(platform.resolvePath(entry.value.as[String])) + patch.withExtendsModel(UriUtils.resolvePath(entry.value.as[String])) case Some(entry) => ctx.eh.violation(DialectError, patch.id, "Patch $target must be a valid URL", entry.value.location) diff --git a/amf-aml/shared/src/main/scala/amf/aml/internal/parse/instances/JsonPointerResolver.scala b/amf-aml/shared/src/main/scala/amf/aml/internal/parse/instances/JsonPointerResolver.scala index d64f5bf1..71544e9b 100644 --- a/amf-aml/shared/src/main/scala/amf/aml/internal/parse/instances/JsonPointerResolver.scala +++ b/amf-aml/shared/src/main/scala/amf/aml/internal/parse/instances/JsonPointerResolver.scala @@ -6,6 +6,7 @@ import org.yaml.model.YMap import amf.core.internal.parser.domain.BaseSpecParser import amf.core.internal.parser.{Root, YMapOps} import amf.core.internal.unsafe.PlatformSecrets +import amf.core.internal.utils.UriUtils /* * TODO: should be a class which is passed as parameter to the dialect instance parser. Most of all because of the resolvedPath(String) and basePath(String) methods. @@ -51,9 +52,9 @@ object JsonPointerResolver extends NodeMappableHelper with PlatformSecrets { else basePath(base) + str if (fullPath.contains("#")) { val parts = fullPath.split("#") - platform.resolvePath(parts.head) + "#" + parts.last + UriUtils.resolvePath(parts.head) + "#" + parts.last } else { - platform.resolvePath(fullPath) + UriUtils.resolvePath(fullPath) } } diff --git a/amf-aml/shared/src/main/scala/amf/aml/internal/utils/VocabulariesRegister.scala b/amf-aml/shared/src/main/scala/amf/aml/internal/utils/VocabulariesRegister.scala index 5c2d7657..36e965b3 100644 --- a/amf-aml/shared/src/main/scala/amf/aml/internal/utils/VocabulariesRegister.scala +++ b/amf-aml/shared/src/main/scala/amf/aml/internal/utils/VocabulariesRegister.scala @@ -5,18 +5,17 @@ import amf.aml.client.platform.model.domain._ import amf.aml.client.scala.model.{document, domain} import amf.aml.internal.metamodel.document._ import amf.aml.internal.metamodel.domain._ -import amf.core.internal.convert.CoreRegister +import amf.core.internal.convert.UniqueInitializer import amf.core.internal.metamodel.Obj import amf.core.internal.remote.Platform import amf.core.internal.unsafe.PlatformSecrets -object VocabulariesRegister extends PlatformSecrets { +object VocabulariesRegister extends UniqueInitializer with PlatformSecrets { // TODO ARM remove when APIMF-3000 is done def register(): Unit = register(platform) - def register(platform: Platform): Unit = { - CoreRegister.register(platform) + def register(platform: Platform): Unit = if (shouldInitialize) { val p: (Obj) => Boolean = (x: Obj) => x.isInstanceOf[DialectDomainElementModel] platform.registerWrapperPredicate(p) { diff --git a/amf-aml/shared/src/test/scala/amf/testing/common/cycling/BuildCycleTestCommon.scala b/amf-aml/shared/src/test/scala/amf/testing/common/cycling/BuildCycleTestCommon.scala index 6dc1de00..c720efe7 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/common/cycling/BuildCycleTestCommon.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/common/cycling/BuildCycleTestCommon.scala @@ -2,11 +2,11 @@ package amf.testing.common.cycling import amf.aml.client.scala.AMLConfiguration import amf.core.client.scala.AMFGraphConfiguration -import amf.core.io.FileAssertionTest import amf.core.client.scala.model.document.BaseUnit -import amf.core.internal.remote.Syntax.Syntax -import amf.core.internal.remote.{Hint, Spec} import amf.core.internal.parser.{AMFCompiler, CompilerContextBuilder} +import amf.core.internal.remote.Spec +import amf.core.internal.remote.Syntax.Syntax +import amf.core.io.FileAssertionTest import amf.testing.common.utils.AMFRenderer import scala.concurrent.{ExecutionContext, Future} diff --git a/amf-aml/shared/src/test/scala/amf/testing/common/jsonld/MultiJsonLDAsyncFunSuite.scala b/amf-aml/shared/src/test/scala/amf/testing/common/jsonld/MultiJsonLDAsyncFunSuite.scala index 1e6f2dc2..6af149ce 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/common/jsonld/MultiJsonLDAsyncFunSuite.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/common/jsonld/MultiJsonLDAsyncFunSuite.scala @@ -4,7 +4,8 @@ import amf.core.client.scala.config.RenderOptions import amf.core.internal.plugins.document.graph.{EmbeddedForm, FlattenedForm, JsonLdDocumentForm} import amf.testing.common.jsonld import org.scalactic.Fail -import org.scalatest.{Assertion, AsyncFunSuite} +import org.scalatest.Assertion +import org.scalatest.funsuite.AsyncFunSuite import scala.concurrent.Future diff --git a/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectInstanceTester.scala b/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectInstanceTester.scala index 37aa50af..dd0e1537 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectInstanceTester.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectInstanceTester.scala @@ -2,7 +2,6 @@ package amf.testing.common.utils import amf.core.client.scala.config.RenderOptions import amf.core.internal.remote.Syntax.Syntax -import amf.core.internal.remote.{Hint, Spec} import amf.testing.common.cycling.FunSuiteCycleTests import org.scalatest.Assertion diff --git a/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectInstanceValidation.scala b/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectInstanceValidation.scala index e3b1085c..d36de38e 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectInstanceValidation.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectInstanceValidation.scala @@ -3,7 +3,7 @@ package amf.testing.common.utils import amf.aml.client.scala.AMLConfiguration import amf.core.client.scala.validation.AMFValidationReport import amf.core.internal.unsafe.PlatformSecrets -import org.scalatest.AsyncFunSuite +import org.scalatest.funsuite.AsyncFunSuite import scala.concurrent.Future diff --git a/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectRegistrationHelper.scala b/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectRegistrationHelper.scala index 85cc5952..be618dc5 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectRegistrationHelper.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectRegistrationHelper.scala @@ -6,7 +6,6 @@ import amf.aml.internal.transform.pipelines.DialectTransformationPipeline import amf.core.client.scala.errorhandling.DefaultErrorHandler import amf.core.client.scala.transform.TransformationPipelineRunner import amf.core.internal.parser.{AMFCompiler, CompilerContextBuilder} -import amf.core.internal.remote.Aml import amf.core.internal.unsafe.PlatformBuilder.platform import scala.concurrent.{ExecutionContext, Future} diff --git a/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectValidation.scala b/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectValidation.scala index df0561fd..10abfff5 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectValidation.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/common/utils/DialectValidation.scala @@ -1,13 +1,10 @@ package amf.testing.common.utils import amf.aml.client.scala.AMLConfiguration -import amf.core.client.scala.errorhandling.DefaultErrorHandler -import amf.core.internal.validation.ValidationConfiguration -import amf.core.internal.unsafe.PlatformSecrets import amf.core.client.scala.validation.AMFValidationReport -import amf.core.internal.parser.{AMFCompiler, CompilerContextBuilder} -import amf.aml.client.scala.model.document.Dialect -import org.scalatest.{Assertion, AsyncFunSuite} +import amf.core.internal.unsafe.PlatformSecrets +import org.scalatest.Assertion +import org.scalatest.funsuite.AsyncFunSuite import scala.concurrent.Future diff --git a/amf-aml/shared/src/test/scala/amf/testing/common/utils/DomainElementCycleTests.scala b/amf-aml/shared/src/test/scala/amf/testing/common/utils/DomainElementCycleTests.scala index f7b34264..93eb050e 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/common/utils/DomainElementCycleTests.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/common/utils/DomainElementCycleTests.scala @@ -1,8 +1,6 @@ package amf.testing.common.utils import amf.aml.client.scala.AMLConfiguration -import amf.aml.client.scala.model.document.DialectInstanceUnit -import amf.aml.internal.render.plugin.AMLDialectInstanceRenderingPlugin import amf.core.client.scala.model.document.BaseUnit import amf.core.client.scala.model.domain.DomainElement import amf.core.client.scala.parse.document.SyamlParsedDocument @@ -10,7 +8,8 @@ import amf.core.internal.plugins.syntax.SyamlSyntaxRenderPlugin import amf.core.internal.remote.Hint import amf.core.internal.remote.Mimes._ import amf.core.io.FileAssertionTest -import org.scalatest.{Assertion, AsyncFunSuite} +import org.scalatest.Assertion +import org.scalatest.funsuite.AsyncFunSuite import org.yaml.model.{YDocument, YNode} import java.io.StringWriter diff --git a/amf-aml/shared/src/test/scala/amf/testing/common/utils/ReportComparator.scala b/amf-aml/shared/src/test/scala/amf/testing/common/utils/ReportComparator.scala index 5549d184..c9891a93 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/common/utils/ReportComparator.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/common/utils/ReportComparator.scala @@ -1,10 +1,11 @@ package amf.testing.common.utils -import amf.core.io.FileAssertionTest -import amf.core.internal.unsafe.PlatformSecrets import amf.core.client.scala.validation.AMFValidationReport +import amf.core.internal.unsafe.PlatformSecrets +import amf.core.io.FileAssertionTest import amf.validation.internal.emitters.ValidationReportJSONLDEmitter -import org.scalatest.{Assertion, Matchers} +import org.scalatest.Assertion +import org.scalatest.matchers.should.Matchers import scala.concurrent.{ExecutionContext, Future} diff --git a/amf-aml/shared/src/test/scala/amf/testing/config/AMLConfigurationPluginTest.scala b/amf-aml/shared/src/test/scala/amf/testing/config/AMLConfigurationPluginTest.scala index b5342ed6..dc65219c 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/config/AMLConfigurationPluginTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/config/AMLConfigurationPluginTest.scala @@ -5,7 +5,9 @@ import amf.aml.client.scala.model.domain.NodeMapping import amf.aml.internal.parse.plugin.AMLDialectInstanceParsingPlugin import amf.aml.internal.render.plugin.AMLDialectInstanceRenderingPlugin import amf.core.internal.resource.AMFResolvers.platform.fs -import org.scalatest.{Assertion, AsyncFunSuite, Matchers} +import org.scalatest.Assertion +import org.scalatest.funsuite.AsyncFunSuite +import org.scalatest.matchers.should.Matchers import scala.concurrent.{ExecutionContext, Future} diff --git a/amf-aml/shared/src/test/scala/amf/testing/rdf/DialectRDFTest.scala b/amf-aml/shared/src/test/scala/amf/testing/rdf/DialectRDFTest.scala index 577f550d..d5096f55 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/rdf/DialectRDFTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/rdf/DialectRDFTest.scala @@ -2,8 +2,7 @@ package amf.testing.rdf import amf.aml.client.scala.AMLConfiguration import amf.core.client.scala.config.RenderOptions -import amf.core.internal.remote.Syntax.Syntax -import amf.core.internal.remote.{Amf, Aml, Syntax, VocabularyYamlHint} +import amf.core.internal.remote.Syntax import amf.core.internal.unsafe.PlatformSecrets import amf.testing.common.cycling.FunSuiteRdfCycleTests import amf.testing.common.utils.AMLParsingHelper diff --git a/amf-aml/shared/src/test/scala/amf/testing/render/ParsedDialectRenderTest.scala b/amf-aml/shared/src/test/scala/amf/testing/render/ParsedDialectRenderTest.scala index 4434317a..4345eb57 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/render/ParsedDialectRenderTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/render/ParsedDialectRenderTest.scala @@ -1,8 +1,6 @@ package amf.testing.render -import amf.core.client.scala.errorhandling.DefaultErrorHandler -import amf.core.client.scala.errorhandling.UnhandledErrorHandler -import amf.core.internal.remote.VocabularyYamlHint +import amf.core.client.scala.errorhandling.{DefaultErrorHandler, UnhandledErrorHandler} import amf.core.internal.unsafe.PlatformSecrets import amf.testing.common.cycling.FunSuiteCycleTests diff --git a/amf-aml/shared/src/test/scala/amf/testing/resolution/DialectProductionResolutionTest.scala b/amf-aml/shared/src/test/scala/amf/testing/resolution/DialectProductionResolutionTest.scala index 53b6a267..bc1f9b9f 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/resolution/DialectProductionResolutionTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/resolution/DialectProductionResolutionTest.scala @@ -1,9 +1,9 @@ package amf.testing.resolution import amf.aml.client.scala.AMLConfiguration -import amf.core.client.scala.model.document.BaseUnit -import amf.core.internal.remote.{Aml, Syntax, VocabularyYamlHint} import amf.aml.internal.transform.pipelines.DefaultAMLTransformationPipeline +import amf.core.client.scala.model.document.BaseUnit +import amf.core.internal.remote.Syntax import amf.testing.common.cycling.FunSuiteCycleTests import amf.testing.common.utils.DialectInstanceTester diff --git a/amf-aml/shared/src/test/scala/amf/testing/semantic/AppliedExtensionTest.scala b/amf-aml/shared/src/test/scala/amf/testing/semantic/AppliedExtensionTest.scala index 5304278b..9263f69f 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/semantic/AppliedExtensionTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/semantic/AppliedExtensionTest.scala @@ -1,19 +1,21 @@ package amf.testing.semantic -import amf.aml.client.scala.model.domain.DialectDomainElement -import amf.aml.client.scala.model.document.DialectInstance import amf.aml.client.scala.AMLConfiguration +import amf.aml.client.scala.model.document.DialectInstance +import amf.aml.client.scala.model.domain.DialectDomainElement import amf.core.client.scala.errorhandling.UnhandledErrorHandler import amf.core.internal.annotations.LexicalInformation import amf.core.internal.parser.domain.Value -import org.scalatest.{Assertion, AsyncFunSuite, Matchers} +import org.scalatest.Assertion +import org.scalatest.funsuite.AsyncFunSuite +import org.scalatest.matchers.should.Matchers import scala.concurrent.{ExecutionContext, Future} class AppliedExtensionTest extends AsyncFunSuite with Matchers { - val basePath = "file://amf-aml/shared/src/test/resources/vocabularies2/semantic/" - override implicit val executionContext = ExecutionContext.Implicits.global + val basePath = "file://amf-aml/shared/src/test/resources/vocabularies2/semantic/" + override implicit val executionContext: ExecutionContext = ExecutionContext.Implicits.global test("Applied extensions") { assertModel("dialect-extensions.yaml", "instance.yaml") { instance => diff --git a/amf-aml/shared/src/test/scala/amf/testing/semantic/JsonLdSemanticExtensionsParserTest.scala b/amf-aml/shared/src/test/scala/amf/testing/semantic/JsonLdSemanticExtensionsParserTest.scala index 38258145..4a5fd181 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/semantic/JsonLdSemanticExtensionsParserTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/semantic/JsonLdSemanticExtensionsParserTest.scala @@ -4,7 +4,8 @@ import amf.aml.client.scala.AMLConfiguration import amf.aml.client.scala.model.document.DialectInstance import amf.core.client.scala.config.RenderOptions import amf.core.client.scala.errorhandling.UnhandledErrorHandler -import org.scalatest.{AsyncFunSuite, Matchers} +import org.scalatest.funsuite.AsyncFunSuite +import org.scalatest.matchers.should.Matchers import scala.concurrent.{ExecutionContext, Future} diff --git a/amf-aml/shared/src/test/scala/amf/testing/semantic/JsonLdSemanticExtensionsRenderTest.scala b/amf-aml/shared/src/test/scala/amf/testing/semantic/JsonLdSemanticExtensionsRenderTest.scala index 9039b979..198e5af5 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/semantic/JsonLdSemanticExtensionsRenderTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/semantic/JsonLdSemanticExtensionsRenderTest.scala @@ -7,7 +7,6 @@ import amf.core.client.scala.model.document.BaseUnit import amf.core.internal.remote.Syntax.JsonLd import amf.testing.common.cycling.FunSuiteCycleTests import org.mulesoft.common.test.AsyncBeforeAndAfterEach -import org.scalatest.{AsyncFunSuite, BeforeAndAfterEachTestData, Matchers} import scala.concurrent.Future diff --git a/amf-aml/shared/src/test/scala/amf/testing/semantic/SemanticTransformationStageTest.scala b/amf-aml/shared/src/test/scala/amf/testing/semantic/SemanticTransformationStageTest.scala index 74e56b82..c10fb551 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/semantic/SemanticTransformationStageTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/semantic/SemanticTransformationStageTest.scala @@ -4,7 +4,9 @@ import amf.aml.client.scala.AMLConfiguration import amf.aml.client.scala.model.document.DialectInstance import amf.aml.client.scala.model.domain.DialectDomainElement import amf.core.client.scala.errorhandling.UnhandledErrorHandler -import org.scalatest.{Assertion, AsyncFunSuite, Matchers} +import org.scalatest.Assertion +import org.scalatest.funsuite.AsyncFunSuite +import org.scalatest.matchers.should.Matchers import scala.concurrent.{ExecutionContext, Future} diff --git a/amf-aml/shared/src/test/scala/amf/testing/unclassified/DialectForInstanceTest.scala b/amf-aml/shared/src/test/scala/amf/testing/unclassified/DialectForInstanceTest.scala index e10529a8..5ceaee2d 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/unclassified/DialectForInstanceTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/unclassified/DialectForInstanceTest.scala @@ -1,7 +1,9 @@ package amf.testing.unclassified import amf.aml.client.scala.AMLConfiguration -import org.scalatest.{Assertion, AsyncFunSuite, Matchers} +import org.scalatest.Assertion +import org.scalatest.funsuite.AsyncFunSuite +import org.scalatest.matchers.should.Matchers import scala.concurrent.{ExecutionContext, Future} diff --git a/amf-aml/shared/src/test/scala/amf/testing/unclassified/IteratorTest.scala b/amf-aml/shared/src/test/scala/amf/testing/unclassified/IteratorTest.scala index 325e586d..f4cdb31f 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/unclassified/IteratorTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/unclassified/IteratorTest.scala @@ -1,9 +1,8 @@ package amf.testing.unclassified import amf.core.client.scala.model.domain.DomainElement -import amf.core.internal.remote.VocabularyYamlHint import amf.testing.common.utils.DialectTests -import org.scalatest.Matchers +import org.scalatest.matchers.should.Matchers import scala.concurrent.ExecutionContext diff --git a/amf-aml/shared/src/test/scala/amf/testing/unclassified/OOInterfaceTest.scala b/amf-aml/shared/src/test/scala/amf/testing/unclassified/OOInterfaceTest.scala index 92c8922c..781d766b 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/unclassified/OOInterfaceTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/unclassified/OOInterfaceTest.scala @@ -2,7 +2,8 @@ package amf.testing.unclassified import amf.aml.client.scala.AMLConfiguration import amf.aml.client.scala.model.domain.DialectDomainElement -import org.scalatest.{AsyncFunSuite, Matchers} +import org.scalatest.funsuite.AsyncFunSuite +import org.scalatest.matchers.should.Matchers import scala.concurrent.ExecutionContext diff --git a/amf-aml/shared/src/test/scala/amf/testing/unclassified/SemanticExtensionParserTest.scala b/amf-aml/shared/src/test/scala/amf/testing/unclassified/SemanticExtensionParserTest.scala index d363978e..1594e1ec 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/unclassified/SemanticExtensionParserTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/unclassified/SemanticExtensionParserTest.scala @@ -1,7 +1,9 @@ package amf.testing.unclassified import amf.aml.client.scala.AMLConfiguration -import org.scalatest.{Assertion, AsyncFunSuite, Matchers} +import org.scalatest.Assertion +import org.scalatest.funsuite.AsyncFunSuite +import org.scalatest.matchers.should.Matchers import scala.concurrent.{ExecutionContext, Future} diff --git a/amf-aml/shared/src/test/scala/amf/testing/validation/DialectDefinitionValidationTest.scala b/amf-aml/shared/src/test/scala/amf/testing/validation/DialectDefinitionValidationTest.scala index f160ba47..b44c1750 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/validation/DialectDefinitionValidationTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/validation/DialectDefinitionValidationTest.scala @@ -1,7 +1,8 @@ package amf.testing.validation import amf.testing.common.utils.DialectValidation -import org.scalatest.{AsyncFunSuite, Matchers} +import org.scalatest.funsuite.AsyncFunSuite +import org.scalatest.matchers.should.Matchers import scala.concurrent.ExecutionContext diff --git a/amf-aml/shared/src/test/scala/amf/testing/validation/VocabularyDefinitionValidationTest.scala b/amf-aml/shared/src/test/scala/amf/testing/validation/VocabularyDefinitionValidationTest.scala index b5009345..6b9e7353 100644 --- a/amf-aml/shared/src/test/scala/amf/testing/validation/VocabularyDefinitionValidationTest.scala +++ b/amf-aml/shared/src/test/scala/amf/testing/validation/VocabularyDefinitionValidationTest.scala @@ -1,15 +1,13 @@ package amf.testing.validation import amf.aml.client.scala.AMLConfiguration -import amf.core.client.scala.errorhandling.DefaultErrorHandler -import amf.core.internal.validation.ValidationConfiguration -import amf.core.io.FileAssertionTest -import amf.core.internal.unsafe.PlatformSecrets import amf.core.client.scala.validation.AMFValidationReport -import amf.core.internal.parser.{AMFCompiler, CompilerContextBuilder} +import amf.core.internal.unsafe.PlatformSecrets +import amf.core.io.FileAssertionTest import amf.validation.internal.emitters.ValidationReportJSONLDEmitter import org.scalatest -import org.scalatest.{AsyncFunSuite, Matchers} +import org.scalatest.funsuite.AsyncFunSuite +import org.scalatest.matchers.should.Matchers import scala.concurrent.{ExecutionContext, Future} diff --git a/amf-rdf/shared/src/main/scala/amf/rdf/client/platform/RdfUnitConverter.scala b/amf-rdf/shared/src/main/scala/amf/rdf/client/platform/RdfUnitConverter.scala index 9a5d942e..79974717 100644 --- a/amf-rdf/shared/src/main/scala/amf/rdf/client/platform/RdfUnitConverter.scala +++ b/amf-rdf/shared/src/main/scala/amf/rdf/client/platform/RdfUnitConverter.scala @@ -20,6 +20,10 @@ object RdfUnitConverter extends RdfPlatformSecrets { } def toNativeRdfModel(unit: BaseUnit, renderOptions: RenderOptions = new RenderOptions()): RdfModel = { - framework.unitToRdfModel(unit, renderOptions) + toNativeRdfModel(unit, AMFGraphConfiguration.predefined(), renderOptions) + } + + def toNativeRdfModel(unit: BaseUnit, config: AMFGraphConfiguration, renderOptions: RenderOptions): RdfModel = { + framework.unitToRdfModel(unit, config, renderOptions) } } diff --git a/amf-rdf/shared/src/main/scala/amf/rdf/client/scala/RdfFramework.scala b/amf-rdf/shared/src/main/scala/amf/rdf/client/scala/RdfFramework.scala index e57fa974..13ade905 100644 --- a/amf-rdf/shared/src/main/scala/amf/rdf/client/scala/RdfFramework.scala +++ b/amf-rdf/shared/src/main/scala/amf/rdf/client/scala/RdfFramework.scala @@ -1,8 +1,14 @@ package amf.rdf.client.scala +import amf.core.client.scala.AMFGraphConfiguration import amf.core.client.scala.config.RenderOptions import amf.core.client.scala.model.document.BaseUnit import amf.core.client.scala.parse.document.ParsedDocument +import amf.core.internal.metamodel.Type +import amf.core.internal.plugins.document.graph.emitter.{ + SemanticExtensionAwareFieldRenderProvision, + SemanticExtensionAwareMetaFieldRenderProvider +} import amf.rdf.internal.RdfModelEmitter import org.mulesoft.common.io.Output @@ -12,9 +18,10 @@ trait RdfFramework { def emptyRdfModel(): RdfModel - def unitToRdfModel(unit: BaseUnit, options: RenderOptions): RdfModel = { - val model = emptyRdfModel() - new RdfModelEmitter(model).emit(unit, options) + def unitToRdfModel(unit: BaseUnit, config: AMFGraphConfiguration, options: RenderOptions): RdfModel = { + val model = emptyRdfModel() + val extensions = config.registry.getEntitiesRegistry.extensionTypes + new RdfModelEmitter(model, SemanticExtensionAwareMetaFieldRenderProvider(extensions, options)).emit(unit, options) model } diff --git a/amf-rdf/shared/src/main/scala/amf/rdf/client/scala/RdfUnitConverter.scala b/amf-rdf/shared/src/main/scala/amf/rdf/client/scala/RdfUnitConverter.scala index 1eb51d14..9bd09281 100644 --- a/amf-rdf/shared/src/main/scala/amf/rdf/client/scala/RdfUnitConverter.scala +++ b/amf-rdf/shared/src/main/scala/amf/rdf/client/scala/RdfUnitConverter.scala @@ -3,6 +3,7 @@ package amf.rdf.client.scala import amf.core.client.scala.config.RenderOptions import amf.core.client.scala.model.document.BaseUnit import amf.core.client.scala.{AMFGraphConfiguration, config} +import amf.core.internal.metamodel.Type import amf.core.internal.unsafe.PlatformSecrets import amf.rdf.internal.RdfModelParser import amf.rdf.internal.unsafe.RdfPlatformSecrets @@ -14,6 +15,10 @@ object RdfUnitConverter extends RdfPlatformSecrets { } def toNativeRdfModel(unit: BaseUnit, renderOptions: RenderOptions = config.RenderOptions()): RdfModel = { - framework.unitToRdfModel(unit, renderOptions) + toNativeRdfModel(unit, AMFGraphConfiguration.predefined(), renderOptions) + } + + def toNativeRdfModel(unit: BaseUnit, configuration: AMFGraphConfiguration, renderOptions: RenderOptions): RdfModel = { + framework.unitToRdfModel(unit, configuration, renderOptions) } } diff --git a/amf-rdf/shared/src/main/scala/amf/rdf/internal/RdfModelEmitter.scala b/amf-rdf/shared/src/main/scala/amf/rdf/internal/RdfModelEmitter.scala index 7c8511fb..60110e8d 100644 --- a/amf-rdf/shared/src/main/scala/amf/rdf/internal/RdfModelEmitter.scala +++ b/amf-rdf/shared/src/main/scala/amf/rdf/internal/RdfModelEmitter.scala @@ -15,7 +15,7 @@ import amf.core.internal.metamodel.document.SourceMapModel import amf.core.internal.metamodel.domain.extensions.DomainExtensionModel import amf.core.internal.metamodel.domain.{DomainElementModel, LinkableElementModel, ShapeModel} import amf.core.internal.parser.domain.{Annotations, FieldEntry, Value} -import amf.core.internal.plugins.document.graph.emitter.CommonEmitter +import amf.core.internal.plugins.document.graph.emitter.{ApplicableMetaFieldRenderProvider, CommonEmitter} import amf.rdf.client.scala.RdfModel import org.mulesoft.common.time.SimpleDateTime @@ -24,7 +24,9 @@ import scala.collection.mutable.ListBuffer /** * AMF RDF Model emitter */ -class RdfModelEmitter(rdfmodel: RdfModel) extends MetaModelTypeMapping with CommonEmitter { +class RdfModelEmitter(rdfModel: RdfModel, fieldProvision: ApplicableMetaFieldRenderProvider) + extends MetaModelTypeMapping + with CommonEmitter { def emit(unit: BaseUnit, options: RenderOptions): Unit = Emitter(options).root(unit) @@ -53,7 +55,7 @@ class RdfModelEmitter(rdfmodel: RdfModel) extends MetaModelTypeMapping with Comm createTypeNode(id, obj, Some(element)) // workaround for lazy values in shape - val modelFields = obj.fields ++ (obj match { + val modelFields = fieldProvision.fieldsFor(element, options) ++ (obj match { case _: ShapeModel => Seq( ShapeModel.CustomShapePropertyDefinitions, @@ -136,17 +138,17 @@ class RdfModelEmitter(rdfmodel: RdfModel) extends MetaModelTypeMapping with Comm uri: String, extension: DomainExtension, field: Option[Field] = None): Unit = { - rdfmodel.addTriple(subject, uri, extension.extension.id) - rdfmodel.addTriple(uri, DomainExtensionModel.Name.value.iri(), extension.name.value(), None) + rdfModel.addTriple(subject, uri, extension.extension.id) + rdfModel.addTriple(uri, DomainExtensionModel.Name.value.iri(), extension.name.value(), None) field.foreach { f => - rdfmodel.addTriple(uri, DomainExtensionModel.Element.value.iri(), f.value.iri()) + rdfModel.addTriple(uri, DomainExtensionModel.Element.value.iri(), f.value.iri()) } traverse(extension.extension) } def createSortedArray(subject: String, property: String, seq: Seq[AmfElement], element: Type): Unit = { val id = s"$subject/list" - rdfmodel + rdfModel .addTriple(subject, property, id) .addTriple(id, (Namespace.Rdf + "type").iri(), (Namespace.Rdfs + "Seq").iri()) seq.zipWithIndex.foreach { @@ -165,7 +167,7 @@ class RdfModelEmitter(rdfmodel: RdfModel) extends MetaModelTypeMapping with Comm .isExternalLink .option() .getOrElse(false) => - rdfmodel.addTriple(subject, property, v.value.asInstanceOf[DomainElement].id) + rdfModel.addTriple(subject, property, v.value.asInstanceOf[DomainElement].id) case t: DomainElement with Linkable if t.isLink => link(subject, property, t) case _: Obj => @@ -181,16 +183,16 @@ class RdfModelEmitter(rdfmodel: RdfModel) extends MetaModelTypeMapping with Comm case Some(annotation) => typedScalar(subject, property, v.value.asInstanceOf[AmfScalar].toString, annotation.datatype) case None => - rdfmodel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, None) + rdfModel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, None) } case Bool => - rdfmodel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, Some(DataType.Boolean)) + rdfModel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, Some(DataType.Boolean)) case Type.Int => emitIntLiteral(subject, property, v.value.asInstanceOf[AmfScalar].toString) case Type.Double => // this will transform the value to double and will not emit @type TODO: ADD YType.Double // @TODO: see also in the Type.Any emitter - rdfmodel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, Some(DataType.Double)) + rdfModel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, Some(DataType.Double)) case Type.Float => emitFloatLiteral(subject, property, v.value.asInstanceOf[AmfScalar].toString) case Type.DateTime => @@ -213,19 +215,19 @@ class RdfModelEmitter(rdfmodel: RdfModel) extends MetaModelTypeMapping with Comm case Type.Any => v.value.asInstanceOf[AmfScalar].value match { case bool: Boolean => - rdfmodel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, Some(DataType.Boolean)) + rdfModel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, Some(DataType.Boolean)) case i: Int => emitIntLiteral(subject, property, v.value.asInstanceOf[AmfScalar].toString) case f: Float => emitFloatLiteral(subject, property, v.value.asInstanceOf[AmfScalar].toString) case d: Double => - rdfmodel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, Some(DataType.Double)) + rdfModel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, Some(DataType.Double)) case _ => v.annotations.find(classOf[ScalarType]) match { case Some(annotation) => typedScalar(subject, property, v.value.asInstanceOf[AmfScalar].toString, annotation.datatype) case None => - rdfmodel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, None) + rdfModel.addTriple(subject, property, v.value.asInstanceOf[AmfScalar].toString, None) } } } @@ -233,24 +235,24 @@ class RdfModelEmitter(rdfmodel: RdfModel) extends MetaModelTypeMapping with Comm def emitIntLiteral(subject: String, property: String, v: String): Unit = { try { - rdfmodel.addTriple(subject, property, v.toInt.toString, Some(DataType.Long)) + rdfModel.addTriple(subject, property, v.toInt.toString, Some(DataType.Long)) } catch { case _: NumberFormatException => - rdfmodel.addTriple(subject, property, v, None) + rdfModel.addTriple(subject, property, v, None) } } def emitFloatLiteral(subject: String, property: String, v: String): Unit = { try { - rdfmodel.addTriple(subject, property, v.toDouble.toString, Some(DataType.Double)) + rdfModel.addTriple(subject, property, v.toDouble.toString, Some(DataType.Double)) } catch { case _: NumberFormatException => - rdfmodel.addTriple(subject, property, v, None) + rdfModel.addTriple(subject, property, v, None) } } private def obj(subject: String, property: String, element: AmfObject): Unit = { - rdfmodel.addTriple(subject, property, element.id) + rdfModel.addTriple(subject, property, element.id) traverse(element) } @@ -264,7 +266,7 @@ class RdfModelEmitter(rdfmodel: RdfModel) extends MetaModelTypeMapping with Comm } // add the liking triplea - rdfmodel.addTriple(subject, property, elementWithLink.id) + rdfModel.addTriple(subject, property, elementWithLink.id) // recursion on the object traverse(elementWithLink) @@ -277,18 +279,18 @@ class RdfModelEmitter(rdfmodel: RdfModel) extends MetaModelTypeMapping with Comm private def iri(subject: String, property: String, content: String): Unit = { // Last update, we assume that the iris are valid and han been encoded. Other option could be use the previous custom lcoal object URLEncoder but not search for %. // That can be a problem, because some chars could not being encoded - rdfmodel.addTriple(subject, property, content) + rdfModel.addTriple(subject, property, content) } private def safeIri(subject: String, property: String, content: String): Unit = { - rdfmodel.addTriple(subject, property, content) + rdfModel.addTriple(subject, property, content) } private def typedScalar(subject: String, property: String, content: String, dataType: String): Unit = { dataType match { case _ if dataType == DataType.Integer => - rdfmodel.addTriple(subject, property, content, Some(DataType.Long)) - case _ => rdfmodel.addTriple(subject, property, content, Some(dataType)) + rdfModel.addTriple(subject, property, content, Some(DataType.Long)) + case _ => rdfModel.addTriple(subject, property, content, Some(dataType)) } } @@ -296,13 +298,13 @@ class RdfModelEmitter(rdfmodel: RdfModel) extends MetaModelTypeMapping with Comm val allTypes = obj.`type`.map(_.iri()) allTypes.foreach { t => //if (t != "http://a.ml/vocabularies/document#DomainElement" && t != "http://www.w3.org/ns/shacl#Shape" && t != "http://a.ml/vocabularies/shapes#Shape") - rdfmodel.addTriple(id, (Namespace.Rdf + "type").iri(), t) + rdfModel.addTriple(id, (Namespace.Rdf + "type").iri(), t) } } private def createSourcesNode(id: String, sources: SourceMap, sourceMapId: String): Unit = { if (options.isWithSourceMaps && sources.nonEmpty) { - rdfmodel.addTriple(id, DomainElementModel.Sources.value.iri(), sourceMapId) + rdfModel.addTriple(id, DomainElementModel.Sources.value.iri(), sourceMapId) createTypeNode(sourceMapId, SourceMapModel, None) createAnnotationNodes(sourceMapId, sources) } @@ -315,9 +317,9 @@ class RdfModelEmitter(rdfmodel: RdfModel) extends MetaModelTypeMapping with Comm values.zipWithIndex.foreach { case ((iri, v), j) => val valueNodeId = s"${id}_${i}_$j" - rdfmodel.addTriple(id, ValueType(Namespace.SourceMaps, a).iri(), valueNodeId) - rdfmodel.addTriple(valueNodeId, SourceMapModel.Element.value.iri(), iri) - rdfmodel.addTriple(valueNodeId, SourceMapModel.Value.value.iri(), v, None) + rdfModel.addTriple(id, ValueType(Namespace.SourceMaps, a).iri(), valueNodeId) + rdfModel.addTriple(valueNodeId, SourceMapModel.Element.value.iri(), iri) + rdfModel.addTriple(valueNodeId, SourceMapModel.Value.value.iri(), v, None) } }) } diff --git a/amf-rdf/shared/src/main/scala/amf/rdf/internal/parsers/ObjectParser.scala b/amf-rdf/shared/src/main/scala/amf/rdf/internal/parsers/ObjectParser.scala index 8c5b5595..a10e49c7 100644 --- a/amf-rdf/shared/src/main/scala/amf/rdf/internal/parsers/ObjectParser.scala +++ b/amf-rdf/shared/src/main/scala/amf/rdf/internal/parsers/ObjectParser.scala @@ -2,10 +2,10 @@ package amf.rdf.internal.parsers import amf.core.client.scala.model.document.SourceMap import amf.core.client.scala.model.domain.{DataNode, _} -import amf.core.client.scala.vocabulary.Namespace +import amf.core.client.scala.vocabulary.{Namespace, ValueType} import amf.core.internal.metamodel.Type.{Any, Array, Iri, Scalar, SortedArray, Str} import amf.core.internal.metamodel.domain.{DataNodeModel, ExternalSourceElementModel, LinkableElementModel, ShapeModel} -import amf.core.internal.metamodel.{Field, Obj, Type} +import amf.core.internal.metamodel.{Field, ModelDefaultBuilder, Obj, Type} import amf.core.internal.parser.domain.Annotations import amf.core.internal.validation.CoreValidations.UnableToParseRdfDocument import amf.rdf.client.scala.{Literal, Node, PropertyObject, Uri} @@ -24,6 +24,18 @@ class ObjectParser(val rootId: String, private def isSelfEncoded(node: Node) = node.subject == rootId + private lazy val extensions = ctx.config.registryContext.getRegistry.getEntitiesRegistry.extensionTypes + private lazy val extensionFields = extensions.map { + case (iriDomain, extensions) => + iriDomain -> extensions.map { + case (iri, fieldType) => Field(fieldType, ValueType(iri)) + } + } + + private def extensionsFor(model: ModelDefaultBuilder): Seq[Field] = { + model.`type`.flatMap(valueType => extensionFields.get(valueType.iri())).flatten + } + def parse(node: Node, findBaseUnit: Boolean = false, visitedSelfEncoded: Boolean = false): Option[AmfElement] = { if (recursionControl.hasVisited(node) && !isSelfEncoded(node)) ctx.nodes.get(node.subject) else { @@ -38,7 +50,7 @@ class ObjectParser(val rootId: String, checkLinkables(instance) // workaround for lazy values in shape - val modelFields = extractModelFields(model) + val modelFields = extractModelFields(model) ++ extensionsFor(model) modelFields.foreach(f => { val k = f.value.iri() diff --git a/amf-rdf/shared/src/test/scala/amf/rdf/PlatformRdfModelTests.scala b/amf-rdf/shared/src/test/scala/amf/rdf/PlatformRdfModelTests.scala index 0f802645..0741a585 100644 --- a/amf-rdf/shared/src/test/scala/amf/rdf/PlatformRdfModelTests.scala +++ b/amf-rdf/shared/src/test/scala/amf/rdf/PlatformRdfModelTests.scala @@ -3,9 +3,9 @@ package amf.rdf import amf.core.internal.convert.NativeOps import amf.rdf.client.platform.RdfModel import amf.rdf.internal.unsafe.RdfPlatformSecrets -import org.scalatest.FunSuite +import org.scalatest.funsuite.AnyFunSuite -trait PlatformRdfModelTests extends FunSuite with RdfPlatformSecrets with NativeOps { +trait PlatformRdfModelTests extends AnyFunSuite with RdfPlatformSecrets with NativeOps { test("Basic triple manipulation") { val model = RdfModel.empty() diff --git a/amf-rdf/shared/src/test/scala/amf/rdf/RdfModelTests.scala b/amf-rdf/shared/src/test/scala/amf/rdf/RdfModelTests.scala index 31884664..572221f1 100644 --- a/amf-rdf/shared/src/test/scala/amf/rdf/RdfModelTests.scala +++ b/amf-rdf/shared/src/test/scala/amf/rdf/RdfModelTests.scala @@ -1,9 +1,9 @@ package amf.rdf import amf.rdf.internal.unsafe.RdfPlatformSecrets -import org.scalatest.FunSuite +import org.scalatest.funsuite.AnyFunSuite -class RdfModelTests extends FunSuite with RdfPlatformSecrets { +class RdfModelTests extends AnyFunSuite with RdfPlatformSecrets { test("Manipulation of triples should invalidate cache") { val model = framework.emptyRdfModel() diff --git a/build.sbt b/build.sbt index 975d88ac..0eba6791 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.3" +ThisBuild / version := "6.0.4" ThisBuild / scalaVersion := "2.12.11" publish := {} @@ -35,7 +35,7 @@ lazy val workspaceDirectory: File = case _ => Path.userHome / "mulesoft" } -val amfCoreVersion = "5.0.3" +val amfCoreVersion = "5.0.4" lazy val amfCoreJVMRef = ProjectRef(workspaceDirectory / "amf-core", "coreJVM") lazy val amfCoreJSRef = ProjectRef(workspaceDirectory / "amf-core", "coreJS") @@ -47,9 +47,8 @@ val commonSettings = Common.settings ++ Common.publish ++ Seq( resolvers ++= List(ivyLocal, Common.releases, Common.snapshots, Resolver.mavenLocal, Resolver.mavenCentral), credentials ++= Common.credentials(), libraryDependencies ++= Seq( - "org.scalatest" %%% "scalatest" % "3.0.5" % Test, - "org.mule.common" %%% "scala-common-test" % "0.0.6" % Test, - "org.slf4j" % "slf4j-nop" % "1.7.30" % Test + "org.mule.common" %%% "scala-common-test" % "0.0.10" % Test, + "org.slf4j" % "slf4j-nop" % "1.7.32" % Test ), Test / logBuffered := false ) diff --git a/project/build.properties b/project/build.properties index 1e70b0c1..3161d214 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.6.0 +sbt.version=1.6.1 diff --git a/project/plugins.sbt b/project/plugins.sbt index 1d1fd70c..c500aeda 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,7 +1,7 @@ -addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.0.0") -addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.32") -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.1") -addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0") -addSbtPlugin("com.github.mwz" % "sbt-sonar" % "2.1.0") -addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.10.0-RC1") -addSbtPlugin("com.eed3si9n" % "sbt-sriracha" % "0.1.0") \ No newline at end of file +addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.1.0") +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.33") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.1") +addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0") +addSbtPlugin("com.sonar-scala" % "sbt-sonar" % "2.3.0") +addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.10.0-RC1") +addSbtPlugin("com.eed3si9n" % "sbt-sriracha" % "0.1.0")