• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

input-output-hk / atala-prism-building-blocks / 5553345276

14 Jul 2023 10:56AM UTC coverage: 28.759% (+0.1%) from 28.655%
5553345276

Pull #595

web-flow
Merge branch 'main' into fix/align-dod-doc-translation
Pull Request #595: fix(castor): align DID document translation logic

81 of 81 new or added lines in 8 files covered. (100.0%)

2825 of 9823 relevant lines covered (28.76%)

0.29 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

42.31
/pollux/lib/core/src/main/scala/io/iohk/atala/pollux/core/model/schema/common/JsonSchemaUtils.scala
1
package io.iohk.atala.pollux.core.model.schema.common
2

3
import com.fasterxml.jackson.databind.{JsonNode, ObjectMapper}
4
import com.networknt.schema.*
5
import com.networknt.schema.SpecVersion.VersionFlag
6
import io.iohk.atala.pollux.core.model.error.CredentialSchemaError
7
import io.iohk.atala.pollux.core.model.error.CredentialSchemaError.*
8
import zio.*
9
import zio.json.ast.Json
10

11
object JsonSchemaUtils {
1✔
12
  def jsonSchema(
13
      schema: String,
1✔
14
      supportedVersions: IndexedSeq[VersionFlag] = IndexedSeq.empty
15
  ): IO[CredentialSchemaError, JsonSchema] = {
1✔
16
    for {
×
17
      jsonSchemaNode <- toJsonNode(schema)
1✔
18
      specVersion <- ZIO
×
19
        .attempt(SpecVersionDetector.detect(jsonSchemaNode))
×
20
        .mapError(t => UnexpectedError(t.getMessage))
1✔
21
      _ <-
×
22
        if (supportedVersions.nonEmpty && !supportedVersions.contains(specVersion))
23
          ZIO.fail(
24
            UnsupportedJsonSchemaSpecVersion(
25
              s"Unsupported JsonSchemaVersion. Current:$specVersion ExpectedOneOf:${supportedVersions.map(_.getId)}"
26
            )
27
          )
×
28
        else ZIO.unit
×
29
      mapper <- ZIO.attempt(new ObjectMapper()).mapError(t => UnexpectedError(t.getMessage))
×
30
      factory <- ZIO
×
31
        .attempt(JsonSchemaFactory.builder(JsonSchemaFactory.getInstance(specVersion)).objectMapper(mapper).build)
×
32
        .mapError(t => UnexpectedError(t.getMessage))
×
33
      jsonSchema <- ZIO.attempt(factory.getSchema(jsonSchemaNode)).mapError(t => UnexpectedError(t.getMessage))
34
    } yield jsonSchema
35
  }
36

1✔
37
  def from(
38
      schema: Json,
×
39
      supportedVersions: IndexedSeq[VersionFlag] = IndexedSeq.empty
40
  ): IO[CredentialSchemaError, JsonSchema] = {
1✔
41
    jsonSchema(schema.toString(), supportedVersions)
42
  }
43

1✔
44
  def toJsonNode(json: Json): IO[CredentialSchemaError, JsonNode] = {
1✔
45
    toJsonNode(json.toString())
46
  }
47

1✔
48
  def toJsonNode(json: String): IO[CredentialSchemaError, JsonNode] = {
1✔
49
    for {
×
50
      mapper <- ZIO.attempt(new ObjectMapper()).mapError(t => UnexpectedError(t.getMessage))
×
51
      jsonSchemaNode <- ZIO
×
52
        .attempt(mapper.readTree(json))
×
53
        .mapError(t => JsonSchemaParsingError(t.getMessage))
54
    } yield jsonSchemaNode
55
  }
56
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc