Skip to content

Commit

Permalink
[Error codes] Use scala.deprecated instead of a custom annotation [DP…
Browse files Browse the repository at this point in the history
…P-776] (#13163)

changelog_begin
changelog_end
  • Loading branch information
pbatko-da committed Mar 10, 2022
1 parent 78112f1 commit d891a9a
Show file tree
Hide file tree
Showing 11 changed files with 277 additions and 251 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,22 @@
package com.daml.error.generator.app

import com.daml.error.Grouping
import com.daml.error.generator.{ErrorCodeDocumentationGenerator, ErrorDocItem, GroupDocItem}
import com.daml.error.generator.{
ErrorCodeDocItem,
ErrorCodeDocumentationGenerator,
ErrorGroupDocItem,
}
import io.circe.Encoder
import io.circe.syntax._

import java.nio.file.{Files, Paths, StandardOpenOption}

import com.daml.error.generator.ErrorCodeDocumentationGenerator.DeprecatedItem

/** Outputs information about self-service error codes needed for generating documentation to a json file.
*/
object Main {

case class Output(errorCodes: Seq[ErrorDocItem], groups: Seq[GroupDocItem])
case class Output(errorCodes: Seq[ErrorCodeDocItem], groups: Seq[ErrorGroupDocItem])

implicit val groupingEncode: Encoder[Grouping] =
Encoder.forProduct2(
Expand All @@ -27,7 +32,14 @@ object Main {
)
)

implicit val errorCodeEncode: Encoder[ErrorDocItem] =
implicit val deprecatedEncode: Encoder[DeprecatedItem] = {
Encoder.forProduct2(
"message",
"since",
)(i => (i.message, i.since))
}

implicit val errorCodeEncode: Encoder[ErrorCodeDocItem] =
Encoder.forProduct8(
"className",
"category",
Expand All @@ -44,13 +56,13 @@ object Main {
i.hierarchicalGrouping.groupings,
i.conveyance,
i.code,
i.deprecation.fold("")(_.deprecation),
i.deprecation,
i.explanation.fold("")(_.explanation),
i.resolution.fold("")(_.resolution),
)
)

implicit val groupEncode: Encoder[GroupDocItem] =
implicit val groupEncode: Encoder[ErrorGroupDocItem] =
Encoder.forProduct2(
"className",
"explanation",
Expand All @@ -65,7 +77,8 @@ object Main {
Encoder.forProduct2("errorCodes", "groups")(i => (i.errorCodes, i.groups))

def main(args: Array[String]): Unit = {
val (errorCodes, groups) = new ErrorCodeDocumentationGenerator().getDocItems
val errorCodes = ErrorCodeDocumentationGenerator.getErrorCodeItems()
val groups = ErrorCodeDocumentationGenerator.getErrorGroupItems()
val output = Output(errorCodes, groups)
val outputText: String = output.asJson.spaces2

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@

package com.daml.error.generator

case class ErrorCategoryAnnotations(
case class ErrorCategoryDocItem(
description: Option[String],
resolution: Option[String],
retryStrategy: Option[String],
)

object ErrorCategoryAnnotations {
def empty: ErrorCategoryAnnotations = ErrorCategoryAnnotations(None, None, None)
object ErrorCategoryDocItem {
def empty: ErrorCategoryDocItem = ErrorCategoryDocItem(None, None, None)
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ object ErrorCategoryInventoryDocsGenerator {

private def collectErrorCodesAsReStructuredTextSubsections(): Seq[String] = {
ErrorCategory.all.map { errorCategory: ErrorCategory =>
val annotations = ErrorCodeDocumentationGenerator.getErrorCategoryAnnotations(errorCategory)
val annotations = ErrorCodeDocumentationGenerator.getErrorCategoryItem(errorCategory)

val categoryId: String = errorCategory.asInt.toString
val grpcCode: String = errorCategory.grpcCode.fold("N/A")(_.toString)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

package com.daml.error.generator

import com.daml.error.{DeprecatedDocs, ErrorClass, Explanation, Resolution}
import com.daml.error.generator.ErrorCodeDocumentationGenerator.DeprecatedItem
import com.daml.error.{ErrorClass, Explanation, Resolution}

/** Contains error presentation data to be used for documentation rendering on the website.
*
Expand All @@ -16,13 +17,13 @@ import com.daml.error.{DeprecatedDocs, ErrorClass, Explanation, Resolution}
* @param explanation The detailed error explanation.
* @param resolution The suggested error resolution.
*/
case class ErrorDocItem(
case class ErrorCodeDocItem(
className: String, // TODO error codes: Rename to `errorCodeName` or `errorCodeClassName` to prevent confusion
category: String,
hierarchicalGrouping: ErrorClass,
conveyance: Option[String],
code: String,
deprecation: Option[DeprecatedDocs],
deprecation: Option[DeprecatedItem],
explanation: Option[Explanation],
resolution: Option[Resolution],
)

0 comments on commit d891a9a

Please sign in to comment.