diff --git a/build.sbt b/build.sbt index b92face4dd..6677a9fa11 100644 --- a/build.sbt +++ b/build.sbt @@ -24,19 +24,18 @@ coberturaFile := target.value / "coverage" / "coverage-report" / "cobertura.xml" inThisBuild( Seq( + scalacOptions ++= Seq("-encoding", "UTF-8"), scalacOptions ++= Seq( - "-encoding", - "UTF-8", "-feature", "-deprecation", "-unchecked", - "-Wunused:all", - "-Wconf:any:warning", // TODO: change unused imports to errors, Wconf configuration string is different from scala 2, figure out how! - // TODO "-feature", - // TODO "-Xfatal-warnings", - // TODO "-Yexplicit-nulls", - // "-Ysafe-init", - ) + ), + scalacOptions += "-Wunused:all", + scalacOptions += "-Wconf:cat=deprecation:warning,any:error", // "-Wconf:help", + // scalacOptions += "-Yexplicit-nulls", + // scalacOptions += "-Ysafe-init", + // scalacOptions += "-Werror", // <=> "-Xfatal-warnings" + scalacOptions += "-Dquill.macro.log=false", // disable quill macro logs // TODO https://github.com/zio/zio-protoquill/issues/470 ) ) @@ -455,11 +454,19 @@ val commonSetttings = Seq( } ) +lazy val commonConfigure: Project => Project = _.settings( + Compile / scalacOptions += "-Yimports:java.lang,scala,scala.Predef,org.hyperledger.identus.Predef", + Test / scalacOptions -= "-Yimports:java.lang,scala,scala.Predef,org.hyperledger.identus.Predef", +).dependsOn(predef) + // ##################### // ##### shared ###### // ##################### +lazy val predef = (project in file("shared/predef")) + lazy val shared = (project in file("shared/core")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "shared", @@ -477,6 +484,7 @@ lazy val sharedJson = (project in file("shared/json")) .dependsOn(shared) lazy val sharedCrypto = (project in file("shared/crypto")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "shared-crypto", @@ -486,6 +494,7 @@ lazy val sharedCrypto = (project in file("shared/crypto")) .dependsOn(shared) lazy val sharedTest = (project in file("shared/test")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "shared-test", @@ -504,6 +513,7 @@ lazy val sharedTest = (project in file("shared/test")) */ lazy val models = project .in(file("mercury/models")) + .configure(commonConfigure) .settings(name := "mercury-data-models") .settings( libraryDependencies ++= Seq(D.zio), @@ -531,6 +541,7 @@ models implementation for didcommx () */ lazy val protocolConnection = project .in(file("mercury/protocol-connection")) + .configure(commonConfigure) .settings(name := "mercury-protocol-connection") .settings(libraryDependencies += D.zio) .settings(libraryDependencies ++= Seq(D.circeCore, D.circeGeneric, D.circeParser)) @@ -539,6 +550,7 @@ lazy val protocolConnection = project lazy val protocolCoordinateMediation = project .in(file("mercury/protocol-coordinate-mediation")) + .configure(commonConfigure) .settings(name := "mercury-protocol-coordinate-mediation") .settings(libraryDependencies += D.zio) .settings(libraryDependencies ++= Seq(D.circeCore, D.circeGeneric, D.circeParser)) @@ -547,6 +559,7 @@ lazy val protocolCoordinateMediation = project lazy val protocolDidExchange = project .in(file("mercury/protocol-did-exchange")) + .configure(commonConfigure) .settings(name := "mercury-protocol-did-exchange") .settings(libraryDependencies += D.zio) .settings(libraryDependencies ++= Seq(D.circeCore, D.circeGeneric, D.circeParser)) @@ -554,6 +567,7 @@ lazy val protocolDidExchange = project lazy val protocolInvitation = project .in(file("mercury/protocol-invitation")) + .configure(commonConfigure) .settings(name := "mercury-protocol-invitation") .settings(libraryDependencies += D.zio) .settings( @@ -567,14 +581,16 @@ lazy val protocolInvitation = project ) .dependsOn(models) -lazy val protocolMercuryMailbox = project - .in(file("mercury/protocol-mercury-mailbox")) - .settings(name := "mercury-protocol-mailbox") - .settings(libraryDependencies += D.zio) - .dependsOn(models, protocolInvitation, protocolRouting) +// lazy val protocolMercuryMailbox = project +// .in(file("mercury/protocol-mercury-mailbox")) +// .settings(predefSetttings) +// .settings(name := "mercury-protocol-mailbox") +// .settings(libraryDependencies += D.zio) +// .dependsOn(models, protocolInvitation, protocolRouting) lazy val protocolLogin = project .in(file("mercury/protocol-outofband-login")) + .configure(commonConfigure) .settings(name := "mercury-protocol-outofband-login") .settings(libraryDependencies += D.zio) .settings(libraryDependencies += D.zio) @@ -584,18 +600,21 @@ lazy val protocolLogin = project lazy val protocolReportProblem = project .in(file("mercury/protocol-report-problem")) + .configure(commonConfigure) .settings(name := "mercury-protocol-report-problem") .settings(libraryDependencies += D.munitZio) .dependsOn(models) lazy val protocolRouting = project .in(file("mercury/protocol-routing")) + .configure(commonConfigure) .settings(name := "mercury-protocol-routing-2-0") .settings(libraryDependencies += D.zio) .dependsOn(models) lazy val protocolIssueCredential = project .in(file("mercury/protocol-issue-credential")) + .configure(commonConfigure) .settings(name := "mercury-protocol-issue-credential") .settings(libraryDependencies += D.zio) .settings(libraryDependencies ++= Seq(D.circeCore, D.circeGeneric, D.circeParser)) @@ -604,6 +623,7 @@ lazy val protocolIssueCredential = project lazy val protocolRevocationNotification = project .in(file("mercury/protocol-revocation-notification")) + .configure(commonConfigure) .settings(name := "mercury-protocol-revocation-notification") .settings(libraryDependencies += D.zio) .settings(libraryDependencies ++= Seq(D.circeCore, D.circeGeneric, D.circeParser)) @@ -612,6 +632,7 @@ lazy val protocolRevocationNotification = project lazy val protocolPresentProof = project .in(file("mercury/protocol-present-proof")) + .configure(commonConfigure) .settings(name := "mercury-protocol-present-proof") .settings(libraryDependencies += D.zio) .settings(libraryDependencies ++= Seq(D.circeCore, D.circeGeneric, D.circeParser)) @@ -620,11 +641,13 @@ lazy val protocolPresentProof = project lazy val vc = project .in(file("mercury/vc")) + .configure(commonConfigure) .settings(name := "mercury-verifiable-credentials") .dependsOn(protocolIssueCredential, protocolPresentProof) //TODO merge those two modules into this one lazy val protocolTrustPing = project .in(file("mercury/protocol-trust-ping")) + .configure(commonConfigure) .settings(name := "mercury-protocol-trust-ping") .settings(libraryDependencies += D.zio) .settings(libraryDependencies ++= Seq(D.circeCore, D.circeGeneric, D.circeParser)) @@ -638,6 +661,7 @@ lazy val protocolTrustPing = project // TODO move stuff to the models module lazy val resolver = project // maybe merge into models .in(file("mercury/resolver")) + .configure(commonConfigure) .settings(name := "mercury-resolver") .settings( libraryDependencies ++= Seq( @@ -657,6 +681,7 @@ lazy val resolver = project // maybe merge into models lazy val agent = project // maybe merge into models .in(file("mercury/agent")) + .configure(commonConfigure) .settings(name := "mercury-agent-core") .settings(libraryDependencies ++= Seq(D.zioLog, D.zioSLF4J)) .dependsOn( @@ -665,7 +690,7 @@ lazy val agent = project // maybe merge into models protocolCoordinateMediation, protocolInvitation, protocolRouting, - protocolMercuryMailbox, + // protocolMercuryMailbox, protocolLogin, protocolIssueCredential, protocolRevocationNotification, @@ -679,6 +704,7 @@ lazy val agent = project // maybe merge into models /** agents implementation with didcommx */ lazy val agentDidcommx = project .in(file("mercury/agent-didcommx")) + .configure(commonConfigure) .settings(name := "mercury-agent-didcommx") .settings(libraryDependencies += D.didcommx) .settings(libraryDependencies += D.munitZio) @@ -697,6 +723,7 @@ lazy val agentDidcommx = project // #################### val prismNodeClient = project .in(file("prism-node/client/scala-client")) + .configure(commonConfigure) .settings( name := "prism-node-client", libraryDependencies ++= Seq(D.scalaPbGrpc, D.scalaPbRuntime, D.grpcOkHttp), @@ -715,6 +742,7 @@ val prismNodeClient = project lazy val castorCore = project .in(file("castor")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "castor-core", @@ -729,6 +757,7 @@ lazy val castorCore = project lazy val polluxVcJWT = project .in(file("pollux/vc-jwt")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "pollux-vc-jwt", @@ -738,6 +767,7 @@ lazy val polluxVcJWT = project lazy val polluxCore = project .in(file("pollux/core")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "pollux-core", @@ -759,6 +789,7 @@ lazy val polluxCore = project lazy val polluxDoobie = project .in(file("pollux/sql-doobie")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "pollux-sql-doobie", @@ -780,6 +811,7 @@ lazy val polluxPreX = project lazy val polluxAnoncreds = project .in(file("pollux/anoncreds")) + .configure(commonConfigure) .settings( name := "pollux-anoncreds", Compile / unmanagedJars += baseDirectory.value / "anoncreds-jvm-1.0-SNAPSHOT.jar", @@ -791,11 +823,13 @@ lazy val polluxAnoncreds = project lazy val polluxAnoncredsTest = project .in(file("pollux/anoncredsTest")) + .configure(commonConfigure) .settings(libraryDependencies += D.scalaTest) .dependsOn(polluxAnoncreds % "compile->test") lazy val polluxSDJWT = project .in(file("pollux/sd-jwt")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "pollux-sd-jwt", @@ -809,6 +843,7 @@ lazy val polluxSDJWT = project lazy val connectCore = project .in(file("connect/core")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "connect-core", @@ -820,6 +855,7 @@ lazy val connectCore = project lazy val connectDoobie = project .in(file("connect/sql-doobie")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "connect-sql-doobie", @@ -835,6 +871,7 @@ lazy val connectDoobie = project lazy val eventNotification = project .in(file("event-notification")) + .configure(commonConfigure) .settings( name := "event-notification", libraryDependencies ++= D_EventNotification.baseDependencies @@ -847,6 +884,7 @@ lazy val eventNotification = project lazy val agentWalletAPI = project .in(file("cloud-agent/service/wallet-api")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "cloud-agent-wallet-api", @@ -866,6 +904,7 @@ lazy val agentWalletAPI = project lazy val cloudAgentServer = project .in(file("cloud-agent/service/server")) + .configure(commonConfigure) .settings(commonSetttings) .settings( name := "identus-cloud-agent", @@ -926,7 +965,7 @@ lazy val aggregatedProjects: Seq[ProjectReference] = Seq( protocolCoordinateMediation, protocolDidExchange, protocolInvitation, - protocolMercuryMailbox, + // protocolMercuryMailbox, protocolLogin, protocolReportProblem, protocolRouting, diff --git a/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/agent/server/jobs/IssueBackgroundJobs.scala b/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/agent/server/jobs/IssueBackgroundJobs.scala index fee94e7a43..ffc617df3c 100644 --- a/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/agent/server/jobs/IssueBackgroundJobs.scala +++ b/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/agent/server/jobs/IssueBackgroundJobs.scala @@ -641,7 +641,7 @@ object IssueBackgroundJobs extends BackgroundJobsHelper { case walletNotFound: WalletNotFoundError => ZIO.unit case CredentialServiceError.RecordNotFound(_, _) => ZIO.unit case CredentialServiceError.UnsupportedDidFormat(_) => ZIO.unit - case failure: Failure => ??? // FIXME + case failure: Failure => ZIO.unit case ((walletAccessContext, failure)) => for { credentialService <- ZIO.service[CredentialService] diff --git a/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/oid4vci/controller/CredentialIssuerController.scala b/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/oid4vci/controller/CredentialIssuerController.scala index 29d81e4321..ff6f64ec20 100644 --- a/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/oid4vci/controller/CredentialIssuerController.scala +++ b/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/oid4vci/controller/CredentialIssuerController.scala @@ -203,9 +203,9 @@ case class CredentialIssuerControllerImpl( ) .mapError(ue => serverError(Some(s"Unexpected error while issuing credential: ${ue.userFacingMessage}"))) } yield ImmediateCredentialResponse(credential.value) - case None => ZIO.fail(badRequestInvalidProof(jwt = "empty", details = "No proof provided")) - // case Some(CwtProof(_, _)) => ??? // TODO - // case Some(LdpProof(_, _)) => ??? // TODO + case None => ZIO.fail(badRequestInvalidProof(jwt = "empty", details = "No proof provided")) + case Some(CwtProof(_, _)) => FeatureNotImplemented + case Some(LdpProof(_, _)) => FeatureNotImplemented } } diff --git a/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/presentproof/controller/http/PresentationStatus.scala b/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/presentproof/controller/http/PresentationStatus.scala index 7d4ba13f47..559b6c7c23 100644 --- a/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/presentproof/controller/http/PresentationStatus.scala +++ b/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/presentproof/controller/http/PresentationStatus.scala @@ -60,7 +60,7 @@ object PresentationStatus { case Base64(data) => val base64Decoded = new String(java.util.Base64.getUrlDecoder.decode(data)) Seq(base64Decoded) - case any => ??? + case any => FeatureNotImplemented } case None => Seq.empty PresentationStatus( diff --git a/connect/sql-doobie/src/main/scala/org/hyperledger/identus/connect/sql/repository/JdbcConnectionRepository.scala b/connect/sql-doobie/src/main/scala/org/hyperledger/identus/connect/sql/repository/JdbcConnectionRepository.scala index 8b8b450394..44a3e5912d 100644 --- a/connect/sql-doobie/src/main/scala/org/hyperledger/identus/connect/sql/repository/JdbcConnectionRepository.scala +++ b/connect/sql-doobie/src/main/scala/org/hyperledger/identus/connect/sql/repository/JdbcConnectionRepository.scala @@ -37,13 +37,15 @@ class JdbcConnectionRepository(xa: Transactor[ContextAwareTask], xb: Transactor[ given roleGet: Get[Role] = Get[String].map(Role.valueOf) given rolePut: Put[Role] = Put[String].contramap(_.toString) - given invitationGet: Get[Invitation] = Get[String].map(decode[Invitation](_).getOrElse(???)) + given invitationGet: Get[Invitation] = Get[String].map(decode[Invitation](_).getOrElse(UnexpectedCodeExecutionPath)) given invitationPut: Put[Invitation] = Put[String].contramap(_.asJson.toString) - given connectionRequestGet: Get[ConnectionRequest] = Get[String].map(decode[ConnectionRequest](_).getOrElse(???)) + given connectionRequestGet: Get[ConnectionRequest] = + Get[String].map(decode[ConnectionRequest](_).getOrElse(UnexpectedCodeExecutionPath)) given connectionRequestPut: Put[ConnectionRequest] = Put[String].contramap(_.asJson.toString) - given connectionResponseGet: Get[ConnectionResponse] = Get[String].map(decode[ConnectionResponse](_).getOrElse(???)) + given connectionResponseGet: Get[ConnectionResponse] = + Get[String].map(decode[ConnectionResponse](_).getOrElse(UnexpectedCodeExecutionPath)) given connectionResponsePut: Put[ConnectionResponse] = Put[String].contramap(_.asJson.toString) given failureGet: Get[Failure] = Get[String].temap(_.fromJson[FailureInfo]) diff --git a/mercury/agent-didcommx/src/main/scala/org/hyperledger/identus/mercury/model/Conversions.scala b/mercury/agent-didcommx/src/main/scala/org/hyperledger/identus/mercury/model/Conversions.scala index c5b9d3d082..8ad56dc2d4 100644 --- a/mercury/agent-didcommx/src/main/scala/org/hyperledger/identus/mercury/model/Conversions.scala +++ b/mercury/agent-didcommx/src/main/scala/org/hyperledger/identus/mercury/model/Conversions.scala @@ -81,10 +81,6 @@ def mapValueToJson(obj: java.lang.Object): Json = { .toMap ) } - case any => { - println("*****NotImplemented***" + any.getClass().getCanonicalName() + "**********") // FIXME - ??? - } } } @@ -101,7 +97,7 @@ given Conversion[AttachmentDescriptor, XAttachment] with { } case LinkData(links, hash) => new XAttachment.Data.Links(links.asJava, hash, null) case Base64(d) => new XAttachment.Data.Base64(d, null, null) - case _ => ??? // FIXME later attachment data of other types + case _ => FeatureNotImplemented } new XAttachment.Builder(id, data) @@ -128,10 +124,7 @@ given Conversion[XAttachment, AttachmentDescriptor] with { val list = aux.asInstanceOf[java.util.AbstractList[String]] val linksSeq = list.iterator().asScala.toSeq LinkData(linksSeq, hash = attachment.getData().getHash()) - case e if e contains ("jws") => - val aux = e("jws") - println(aux.getClass().getCanonicalName()) // TODO - ??? + case e if e contains ("jws") => FeatureNotImplemented } AttachmentDescriptor( diff --git a/mercury/agent/src/main/scala/org/hyperledger/identus/mercury/CoordinateMediationPrograms.scala b/mercury/agent/src/main/scala/org/hyperledger/identus/mercury/CoordinateMediationPrograms.scala index 2bd1aaea45..c686ff9ce0 100644 --- a/mercury/agent/src/main/scala/org/hyperledger/identus/mercury/CoordinateMediationPrograms.scala +++ b/mercury/agent/src/main/scala/org/hyperledger/identus/mercury/CoordinateMediationPrograms.scala @@ -1,15 +1,13 @@ package org.hyperledger.identus.mercury +import io.circe._ import io.circe.parser.* -import io.circe.JsonObject import org.hyperledger.identus.* import org.hyperledger.identus.mercury.model.* import org.hyperledger.identus.mercury.protocol.coordinatemediation.* import org.hyperledger.identus.mercury.protocol.invitation.v2.Invitation import zio.* -import scala.util.chaining.* - object CoordinateMediationPrograms { def replyToInvitation(replier: DidId, invitation: Invitation) = { @@ -22,8 +20,8 @@ object CoordinateMediationPrograms { ) } - private def toPrettyJson(parseToJson: String) = { - parse(parseToJson).getOrElse(???).spaces2 + private def toPrettyJson(parseToJson: String): Either[ParsingFailure, String] = { + parse(parseToJson).map(_.spaces2) } def senderMediationRequestProgram(mediatorURL: String = "http://localhost:8000") = { @@ -55,18 +53,18 @@ object CoordinateMediationPrograms { messageReceived <- opsService.unpack(res.bodyAsString) _ <- Console.printLine("Unpacking and decrypting the received message ...") _ <- Console.printLine("*" * 100) - _ <- Console.printLine(toPrettyJson(messageReceived.message.toString)) + tmp <- ZIO.fromEither(toPrettyJson(messageReceived.message.toString)) + _ <- Console.printLine(tmp) _ <- Console.printLine("*" * 100) - ret = parse(messageReceived.message.toString) - .getOrElse(???) - // .flatMap() - .pipe { json => + ret <- ZIO + .fromEither(parse(messageReceived.message.toString)) + .flatMap { json => json.as[MediateGrant] match { - case Right(mediateGrant) => Right(mediateGrant) + case Right(mediateGrant) => ZIO.succeed(mediateGrant) case Left(_) => json.as[MediateDeny] match { - case Right(mediateDeny) => Left(mediateDeny) - case Left(_) => ??? + case Right(mediateDeny) => ZIO.succeed(mediateDeny) + case Left(ex) => ZIO.fail(ex) } } } diff --git a/mercury/models/src/main/scala/org/hyperledger/identus/mercury/model/EncryptedMessage.scala b/mercury/models/src/main/scala/org/hyperledger/identus/mercury/model/EncryptedMessage.scala index c79b186d4d..4796544b0e 100644 --- a/mercury/models/src/main/scala/org/hyperledger/identus/mercury/model/EncryptedMessage.scala +++ b/mercury/models/src/main/scala/org/hyperledger/identus/mercury/model/EncryptedMessage.scala @@ -9,7 +9,18 @@ trait EncryptedMessage { // (private val msg: PackEncryptedResult) { def string: String // = msg.getPackedMessage def base64: String = Base64.getUrlEncoder.encodeToString(string.getBytes) def asJson: JsonObject = { - val aux = parse(string).getOrElse(???) // .getOrElse(Json.Null) - aux.asObject.getOrElse(???) // TODO + parse(string) + .flatMap(o => + o.asObject match + case None => + Left( + ParsingFailure( + "Expecting the Json to be a Json Object", + RuntimeException(s"Expecting Json Object got '$o'") + ) + ) + case Some(value) => Right(value) + ) + .getOrElse(UnexpectedCodeExecutionPath) } } diff --git a/mercury/protocol-issue-credential/src/main/scala/org/hyperledger/identus/mercury/protocol/issuecredential/Utils.scala b/mercury/protocol-issue-credential/src/main/scala/org/hyperledger/identus/mercury/protocol/issuecredential/Utils.scala index 16aa55f1eb..9d3fbb91e1 100644 --- a/mercury/protocol-issue-credential/src/main/scala/org/hyperledger/identus/mercury/protocol/issuecredential/Utils.scala +++ b/mercury/protocol-issue-credential/src/main/scala/org/hyperledger/identus/mercury/protocol/issuecredential/Utils.scala @@ -15,9 +15,9 @@ private trait ReadAttachmentsUtils { .flatMap(attachment => attachment.format.map { formatName => attachment.data match { - case obj: JwsData => ??? // TODO + case obj: JwsData => FeatureNotImplemented case obj: Base64 => (attachment.id, formatName, obj.base64.getBytes()) - case obj: LinkData => ??? // TODO + case obj: LinkData => FeatureNotImplemented case obj: JsonData => ( attachment.id, diff --git a/mercury/protocol-report-problem/src/main/scala/org/hyperledger/identus/mercury/protocol/reportproblem/v1/ReportProblem.scala b/mercury/protocol-report-problem/src/main/scala/org/hyperledger/identus/mercury/protocol/reportproblem/v1/ReportProblem.scala index 1cb90df8ca..4b8ce3745c 100644 --- a/mercury/protocol-report-problem/src/main/scala/org/hyperledger/identus/mercury/protocol/reportproblem/v1/ReportProblem.scala +++ b/mercury/protocol-report-problem/src/main/scala/org/hyperledger/identus/mercury/protocol/reportproblem/v1/ReportProblem.scala @@ -1,6 +1,6 @@ package org.hyperledger.identus.mercury.protocol.reportproblem.v1 -import org.hyperledger.identus.mercury.model.{Message, PIURI} +import org.hyperledger.identus.mercury.model.PIURI /** ReportProblem * @@ -43,20 +43,6 @@ final case class ReportProblem( def `@type`: PIURI = "https://didcomm.org/report-problem/1.0/problem-report" } -object ReportProblem { - def toMessage(obj: ReportProblem): Message = { - // FIXME this doesn't seems to full fit the DIDComm message - Message( - from = ???, - to = ???, - body = ???, - id = obj.`@id`.getOrElse(java.util.UUID.randomUUID.toString()), - `type` = obj.`@type`, - ) - } - def fromMessage(msg: Message): ReportProblem = ??? // TODO FIXME -} - final case class Description( // TODO this will be +- a Map en: Option[String] = None, code: String diff --git a/mercury/protocol-trust-ping/src/main/scala/org/hyperledger/identus/mercury/protocol/trustping/TrustPingResponse.scala b/mercury/protocol-trust-ping/src/main/scala/org/hyperledger/identus/mercury/protocol/trustping/TrustPingResponse.scala index d5dd40d192..bd68d61ba9 100644 --- a/mercury/protocol-trust-ping/src/main/scala/org/hyperledger/identus/mercury/protocol/trustping/TrustPingResponse.scala +++ b/mercury/protocol-trust-ping/src/main/scala/org/hyperledger/identus/mercury/protocol/trustping/TrustPingResponse.scala @@ -37,7 +37,7 @@ object TrustPingResponse { Right( TrustPingResponse( id = message.id, - thid = message.thid.getOrElse(???), // TODO + thid = message.thid.getOrElse(message.id), `type` = piuri, from = from, to = onlyOneRecipient, diff --git a/mercury/resolver/src/main/scala/org/hyperledger/identus/resolvers/PeerDidResolver.scala b/mercury/resolver/src/main/scala/org/hyperledger/identus/resolvers/PeerDidResolver.scala index 2d34b50a84..e4d09b1892 100644 --- a/mercury/resolver/src/main/scala/org/hyperledger/identus/resolvers/PeerDidResolver.scala +++ b/mercury/resolver/src/main/scala/org/hyperledger/identus/resolvers/PeerDidResolver.scala @@ -35,17 +35,17 @@ object PeerDidResolver { def getDIDDoc(didPeer: String): DIDDoc = { val json = resolveUnsafe(didPeer) val cursor: HCursor = json.hcursor - val did = cursor.downField("id").as[String].getOrElse(???) + val did = cursor.downField("id").as[String].getOrElse(UnexpectedCodeExecutionPath) val service = cursor.downField("service").as[List[Json]] val didCommServices: List[DIDCommService] = service .map { _.map { item => - val id = item.hcursor.downField("id").as[String].getOrElse(???) - // val typ = item.hcursor.downField("type").as[String].getOrElse(???) + val id = item.hcursor.downField("id").as[String].getOrElse(UnexpectedCodeExecutionPath) + // val typ = item.hcursor.downField("type").as[String].getOrElse(UnexpectedCodeExecutionPath) val serviceEndpointJson = item.hcursor.downField("serviceEndpoint") - // val serviceEndpoint = item.hcursor.downField("serviceEndpoint").as[String].getOrElse(???) - val uri = serviceEndpointJson.downField("uri").as[String].getOrElse(???) + // val serviceEndpoint = item.hcursor.downField("serviceEndpoint").as[String].getOrElse(UnexpectedCodeExecutionPath) + val uri = serviceEndpointJson.downField("uri").as[String].getOrElse(UnexpectedCodeExecutionPath) val routingKeys: Seq[String] = serviceEndpointJson.downField("routingKeys").as[List[String]].getOrElse(Seq.empty) val accept: Seq[String] = serviceEndpointJson.downField("accept").as[List[String]].getOrElse(Seq.empty) @@ -58,51 +58,51 @@ object PeerDidResolver { val verificationMethodList1: List[VerificationMethod] = authentications1 .map { _.map(item => - val id = item.hcursor.downField("id").as[String].getOrElse(???) + val id = item.hcursor.downField("id").as[String].getOrElse(UnexpectedCodeExecutionPath) val publicKeyJwk = item.hcursor .downField("publicKeyJwk") .as[Json] .map(_.toString) - .getOrElse(???) + .getOrElse(UnexpectedCodeExecutionPath) - val controller = item.hcursor.downField("controller").as[String].getOrElse(???) + val controller = item.hcursor.downField("controller").as[String].getOrElse(UnexpectedCodeExecutionPath) val verificationMaterial = new VerificationMaterial(VerificationMaterialFormat.JWK, publicKeyJwk) new VerificationMethod(id, VerificationMethodType.JSON_WEB_KEY_2020, verificationMaterial, controller) ) } - .getOrElse(???) + .getOrElse(UnexpectedCodeExecutionPath) val keyIdAuthentications: List[String] = authentications1 .map { - _.map(item => item.hcursor.downField("id").as[String].getOrElse(???)) + _.map(item => item.hcursor.downField("id").as[String].getOrElse(UnexpectedCodeExecutionPath)) } - .getOrElse(???) + .getOrElse(UnexpectedCodeExecutionPath) val keyAgreements1 = cursor.downField("keyAgreement").as[List[Json]] val verificationMethodList: List[VerificationMethod] = keyAgreements1 .map { _.map(item => - val id = item.hcursor.downField("id").as[String].getOrElse(???) + val id = item.hcursor.downField("id").as[String].getOrElse(UnexpectedCodeExecutionPath) val publicKeyJwk = item.hcursor .downField("publicKeyJwk") .as[Json] .map(_.toString) - .getOrElse(???) + .getOrElse(UnexpectedCodeExecutionPath) - val controller = item.hcursor.downField("controller").as[String].getOrElse(???) + val controller = item.hcursor.downField("controller").as[String].getOrElse(UnexpectedCodeExecutionPath) val verificationMaterial = new VerificationMaterial(VerificationMaterialFormat.JWK, publicKeyJwk) new VerificationMethod(id, VerificationMethodType.JSON_WEB_KEY_2020, verificationMaterial, controller) ) } - .getOrElse(???) + .getOrElse(UnexpectedCodeExecutionPath) val keyIds: List[String] = keyAgreements1 .map { - _.map(item => item.hcursor.downField("id").as[String].getOrElse(???)) + _.map(item => item.hcursor.downField("id").as[String].getOrElse(UnexpectedCodeExecutionPath)) } - .getOrElse(???) + .getOrElse(UnexpectedCodeExecutionPath) val mergedList = verificationMethodList ++ verificationMethodList1 val didDoc = diff --git a/pollux/core/src/main/scala/org/hyperledger/identus/pollux/core/service/CredentialDefinitionServiceImpl.scala b/pollux/core/src/main/scala/org/hyperledger/identus/pollux/core/service/CredentialDefinitionServiceImpl.scala index 68e76e8f22..cf6a468b21 100644 --- a/pollux/core/src/main/scala/org/hyperledger/identus/pollux/core/service/CredentialDefinitionServiceImpl.scala +++ b/pollux/core/src/main/scala/org/hyperledger/identus/pollux/core/service/CredentialDefinitionServiceImpl.scala @@ -97,8 +97,10 @@ class CredentialDefinitionServiceImpl( CredentialDefinitionCreationError(s"An error occurred while storing the CredDef secret: ${t.getMessage}") ) } yield createdCredentialDefinition - }.mapError { case e: JsonSchemaError => - CredentialDefinitionValidationError(CredentialSchemaValidationError(e)) + }.mapError { + case error: JsonSchemaError => + CredentialDefinitionValidationError(CredentialSchemaValidationError(error)) + case error: CredentialDefinitionCreationError => error } override def delete(guid: UUID): Result[CredentialDefinition] = diff --git a/pollux/sql-doobie/src/main/scala/org/hyperledger/identus/pollux/sql/repository/JdbcCredentialRepository.scala b/pollux/sql-doobie/src/main/scala/org/hyperledger/identus/pollux/sql/repository/JdbcCredentialRepository.scala index fc6cd23348..dd9a5ea7c5 100644 --- a/pollux/sql-doobie/src/main/scala/org/hyperledger/identus/pollux/sql/repository/JdbcCredentialRepository.scala +++ b/pollux/sql-doobie/src/main/scala/org/hyperledger/identus/pollux/sql/repository/JdbcCredentialRepository.scala @@ -41,17 +41,20 @@ class JdbcCredentialRepository(xa: Transactor[ContextAwareTask], xb: Transactor[ given roleGet: Get[Role] = Get[String].map(Role.valueOf) given rolePut: Put[Role] = Put[String].contramap(_.toString) - given offerCredentialGet: Get[OfferCredential] = Get[String].map(decode[OfferCredential](_).getOrElse(???)) + given offerCredentialGet: Get[OfferCredential] = + Get[String].map(decode[OfferCredential](_).getOrElse(UnexpectedCodeExecutionPath)) given offerCredentialPut: Put[OfferCredential] = Put[String].contramap(_.asJson.toString) - given requestCredentialGet: Get[RequestCredential] = Get[String].map(decode[RequestCredential](_).getOrElse(???)) + given requestCredentialGet: Get[RequestCredential] = + Get[String].map(decode[RequestCredential](_).getOrElse(UnexpectedCodeExecutionPath)) given requestCredentialPut: Put[RequestCredential] = Put[String].contramap(_.asJson.toString) given acRequestMetadataGet: Get[AnoncredCredentialRequestMetadata] = - Get[String].map(_.fromJson[AnoncredCredentialRequestMetadata].getOrElse(???)) + Get[String].map(_.fromJson[AnoncredCredentialRequestMetadata].getOrElse(UnexpectedCodeExecutionPath)) given acRequestMetadataPut: Put[AnoncredCredentialRequestMetadata] = Put[String].contramap(_.toJson) - given issueCredentialGet: Get[IssueCredential] = Get[String].map(decode[IssueCredential](_).getOrElse(???)) + given issueCredentialGet: Get[IssueCredential] = + Get[String].map(decode[IssueCredential](_).getOrElse(UnexpectedCodeExecutionPath)) given issueCredentialPut: Put[IssueCredential] = Put[String].contramap(_.asJson.toString) given keyIdGet: Get[KeyId] = Get[String].map(KeyId(_)) @@ -60,7 +63,7 @@ class JdbcCredentialRepository(xa: Transactor[ContextAwareTask], xb: Transactor[ given failureGet: Get[Failure] = Get[String].temap(_.fromJson[FailureInfo]) given failurePut: Put[Failure] = Put[String].contramap(_.asFailureInfo.toJson) - given invitationGet: Get[Invitation] = Get[String].map(decode[Invitation](_).getOrElse(???)) + given invitationGet: Get[Invitation] = Get[String].map(decode[Invitation](_).getOrElse(UnexpectedCodeExecutionPath)) given invitationPut: Put[Invitation] = Put[String].contramap(_.asJson.toString) override def create(record: IssueCredentialRecord): URIO[WalletAccessContext, Unit] = { diff --git a/pollux/sql-doobie/src/main/scala/org/hyperledger/identus/pollux/sql/repository/JdbcPresentationRepository.scala b/pollux/sql-doobie/src/main/scala/org/hyperledger/identus/pollux/sql/repository/JdbcPresentationRepository.scala index 1711b4ac6c..1a4a962d3a 100644 --- a/pollux/sql-doobie/src/main/scala/org/hyperledger/identus/pollux/sql/repository/JdbcPresentationRepository.scala +++ b/pollux/sql-doobie/src/main/scala/org/hyperledger/identus/pollux/sql/repository/JdbcPresentationRepository.scala @@ -152,15 +152,16 @@ class JdbcPresentationRepository( given roleGet: Get[Role] = Get[String].map(Role.valueOf) given rolePut: Put[Role] = Put[String].contramap(_.toString) - given presentationGet: Get[Presentation] = Get[String].map(decode[Presentation](_).getOrElse(???)) + given presentationGet: Get[Presentation] = + Get[String].map(decode[Presentation](_).getOrElse(UnexpectedCodeExecutionPath)) given presentationPut: Put[Presentation] = Put[String].contramap(_.asJson.toString) given requestPresentationGet: Get[RequestPresentation] = - Get[String].map(decode[RequestPresentation](_).getOrElse(???)) + Get[String].map(decode[RequestPresentation](_).getOrElse(UnexpectedCodeExecutionPath)) given requestPresentationPut: Put[RequestPresentation] = Put[String].contramap(_.asJson.toString) given proposePresentationGet: Get[ProposePresentation] = - Get[String].map(decode[ProposePresentation](_).getOrElse(???)) + Get[String].map(decode[ProposePresentation](_).getOrElse(UnexpectedCodeExecutionPath)) given proposePresentationPut: Put[ProposePresentation] = Put[String].contramap(_.asJson.toString) given failureGet: Get[Failure] = Get[String].temap(_.fromJson[FailureInfo]) @@ -169,7 +170,7 @@ class JdbcPresentationRepository( given walletIdGet: Get[WalletId] = Get[UUID].map(id => WalletId.fromUUID(id)) given walletIdPut: Put[WalletId] = Put[UUID].contramap[WalletId](_.toUUID) - given invitationGet: Get[Invitation] = Get[String].map(decode[Invitation](_).getOrElse(???)) + given invitationGet: Get[Invitation] = Get[String].map(decode[Invitation](_).getOrElse(UnexpectedCodeExecutionPath)) given invitationPut: Put[Invitation] = Put[String].contramap(_.asJson.toString) override def createPresentationRecord(record: PresentationRecord): URIO[WalletAccessContext, Unit] = { diff --git a/pollux/vc-jwt/src/main/scala/org/hyperledger/identus/pollux/vc/jwt/VerifiableCredentialPayload.scala b/pollux/vc-jwt/src/main/scala/org/hyperledger/identus/pollux/vc/jwt/VerifiableCredentialPayload.scala index 64ebc7902d..0019db7792 100644 --- a/pollux/vc-jwt/src/main/scala/org/hyperledger/identus/pollux/vc/jwt/VerifiableCredentialPayload.scala +++ b/pollux/vc-jwt/src/main/scala/org/hyperledger/identus/pollux/vc/jwt/VerifiableCredentialPayload.scala @@ -843,6 +843,7 @@ object W3CCredential { jsonProof <- proof match case b: EcdsaSecp256k1Signature2019Proof => ZIO.succeed(b.asJson.dropNullValues) case c: EddsaJcs2022Proof => ZIO.succeed(c.asJson.dropNullValues) + case _: DataIntegrityProof => UnexpectedCodeExecutionPath verifiableCredentialWithProof = jsonCred.deepMerge(Map("proof" -> jsonProof).asJson) } yield verifiableCredentialWithProof diff --git a/shared/predef/src/main/scala/org/hyperledger/identus/Predef.scala b/shared/predef/src/main/scala/org/hyperledger/identus/Predef.scala new file mode 100644 index 0000000000..d856df6213 --- /dev/null +++ b/shared/predef/src/main/scala/org/hyperledger/identus/Predef.scala @@ -0,0 +1,25 @@ +package org.hyperledger.identus + +/** Note this is a Error not a Exception. It's not supposed to be catch. */ +final class FeatureNotImplemented(msg: String) extends Error(msg) { + def this() = this( + "This feature was not implemented." + + " This path of execution was never expected to pass here." + + " Please open a open the issue on https://github.com/hyperledger/identus-cloud-agent/issues" + ) +} + +object Predef { + // @deprecated("Do not use this in the code ", "2.14") + inline def ??? : Nothing = + scala.compiletime.error("You are not allowed to have a ??? (NotImplementedError) in the identus main code base") + + // TODO review and try to REMOVE + def UnexpectedCodeExecutionPath: Nothing = scala.Predef.??? + + // FIXME + def FIXME: Nothing = scala.Predef.??? + + // TODO Open tickets and REMOVE + def FeatureNotImplemented: Nothing = throw new FeatureNotImplemented +}