diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 465ca02505..4bdb0692d5 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -1,2 +1,5 @@ # Scala Steward: Reformat with scalafmt 3.7.14 d389b41fac321833b103ba17f86fcb3e209f5596 + +# Scala Steward: Reformat with scalafmt 3.10.0 +ec3821b42db57c70a158eb6546cbc79e2c1fed01 diff --git a/.scalafmt.conf b/.scalafmt.conf index 7f160698ef..84c01fad41 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,4 +1,4 @@ -version="3.7.17" +version="3.10.0" project.git = true diff --git a/modules/cli/src/main/scala/dev/guardrail/cli/CLICommon.scala b/modules/cli/src/main/scala/dev/guardrail/cli/CLICommon.scala index 73d270782d..99b485e87b 100644 --- a/modules/cli/src/main/scala/dev/guardrail/cli/CLICommon.scala +++ b/modules/cli/src/main/scala/dev/guardrail/cli/CLICommon.scala @@ -110,11 +110,11 @@ trait CLICommon extends GuardrailRunner { def Return(x: To): Target[Either[From, To]] = Target.pure(Either.right(x)) def Bail(x: Error): Target[Either[From, To]] = Target.raiseError(x) for { - _ <- debug(s"Processing: ${rest.take(5).mkString(" ")}${if (rest.length > 3) "..." else ""} of ${rest.length}") + _ <- debug(s"Processing: ${rest.take(5).mkString(" ")}${if (rest.length > 3) "..." else ""} of ${rest.length}") step <- pair match { case (already, Nil) => debug("Finished") >> Return(already) - case (Nil, xs @ (_ :: _)) => Continue((empty :: Nil, xs)) + case (Nil, xs @ (_ :: _)) => Continue((empty :: Nil, xs)) case (sofar :: already, "--defaults" :: xs) => Continue((empty.withDefaults(true) :: sofar :: already, xs)) case (sofar :: already, "--client" :: xs) => @@ -187,7 +187,7 @@ trait CLICommon extends GuardrailRunner { guardrailRunner(language, args.toArray) } - val fallback = List.empty[Path] + val fallback = List.empty[Path] val paths: List[Path] = result .fold( { diff --git a/modules/cli/src/test/scala/CLICommonSpec.scala b/modules/cli/src/test/scala/CLICommonSpec.scala index 6325d372f4..85d01d6ffe 100644 --- a/modules/cli/src/test/scala/CLICommonSpec.scala +++ b/modules/cli/src/test/scala/CLICommonSpec.scala @@ -12,7 +12,7 @@ class CLICommonSpec extends AnyFunSuite with SwaggerSpecRunner with Matchers wit parseArgsLang("scala", args) def parseArgsLang(language: String, args: Array[String]): Vector[String] = { val state = new AtomicReference(Vector.empty[String]) - val impl = new CLICommon { + val impl = new CLICommon { val AnsiColor = new { val BLUE: String = "" val BOLD: String = "" diff --git a/modules/core/src/main/scala/dev/guardrail/Common.scala b/modules/core/src/main/scala/dev/guardrail/Common.scala index 3078f66fd9..58b6e84b21 100644 --- a/modules/core/src/main/scala/dev/guardrail/Common.scala +++ b/modules/core/src/main/scala/dev/guardrail/Common.scala @@ -39,7 +39,7 @@ object Common { .flatTraverse { case (schemeName, scheme) => val typeName = CustomTypeName(scheme, prefixes) for { - tpe <- typeName.fold(Option.empty[L#Type].pure[F])(x => parseType(Tracker.cloneHistory(scheme, x))) + tpe <- typeName.fold(Option.empty[L#Type].pure[F])(x => parseType(Tracker.cloneHistory(scheme, x))) parsedScheme <- scheme.downField("type", _.getType).unwrapTracker.traverse { case SwSecurityScheme.Type.APIKEY => extractApiKeySecurityScheme(schemeName, scheme, tpe).widen[SecurityScheme[L]] case SwSecurityScheme.Type.HTTP => extractHttpSecurityScheme(schemeName, scheme, tpe).widen[SecurityScheme[L]] @@ -105,7 +105,7 @@ object Common { .flatMap(url => Option(new URI(url).getPath)) .filter(_ != "/") - paths = spec.downField("paths", _.getPaths) + paths = spec.downField("paths", _.getPaths) globalSecurityRequirements = NonEmptyList .fromList(spec.downField("security", _.getSecurity).indexedDistribute) .flatMap(SecurityRequirements(_, SecurityRequirements.Global)) @@ -196,7 +196,7 @@ object Common { servers.flatTraverse(writeServer(pkgPath, formattedPkgName, customImports, frameworkImplicitNames, filteredDtoComponents, _)) ).mapN(_ ++ _) - implicits <- renderImplicits(pkgPath, formattedPkgName, frameworkImports, protocolImports, customImports) + implicits <- renderImplicits(pkgPath, formattedPkgName, frameworkImports, protocolImports, customImports) frameworkImplicitsFile <- frameworkImplicits.fold(Option.empty[WriteTree].pure[F]) { case (name, defn) => renderFrameworkImplicits(pkgPath, formattedPkgName, frameworkImports, frameworkImplicitNames.filterNot(_ == name), protocolImports, defn, name) .map(Option.apply) diff --git a/modules/core/src/main/scala/dev/guardrail/Target.scala b/modules/core/src/main/scala/dev/guardrail/Target.scala index 8bbc8a5b87..614b51752d 100644 --- a/modules/core/src/main/scala/dev/guardrail/Target.scala +++ b/modules/core/src/main/scala/dev/guardrail/Target.scala @@ -12,9 +12,9 @@ object Target { def pushLogger(value: StructuredLogger): Target[Unit] = new TargetValue((), if (loggerEnabled.get) value else StructuredLogger.Empty) def pure[T](x: T): Target[T] = new TargetValue(x, StructuredLogger.Empty) - def raiseError[T](x: Error): Target[T] = new TargetError(x, StructuredLogger.Empty) - def raiseUserError[T](x: String): Target[T] = raiseError(UserError(x)) - def raiseException[T](x: String): Target[T] = raiseError(RuntimeFailure(x)) + def raiseError[T](x: Error): Target[T] = new TargetError(x, StructuredLogger.Empty) + def raiseUserError[T](x: String): Target[T] = raiseError(UserError(x)) + def raiseException[T](x: String): Target[T] = raiseError(RuntimeFailure(x)) def fromEither[T](x: Either[Error, T]): Target[T] = x.fold[Target[T]](err => new TargetError(err, StructuredLogger.Empty), value => new TargetValue(value, StructuredLogger.Empty)) def fromOption[T](x: Option[T], default: => Error): Target[T] = @@ -68,13 +68,13 @@ object Target { } object log { - def push(name: String): Target[Unit] = pushLogger(StructuredLogger.push(name)) - def pop: Target[Unit] = pushLogger(StructuredLogger.pop) + def push(name: String): Target[Unit] = pushLogger(StructuredLogger.push(name)) + def pop: Target[Unit] = pushLogger(StructuredLogger.pop) def function[A](name: String): Target[A] => Target[A] = { func => (push(name) *> func) <* pop } - def debug(message: String): Target[Unit] = pushLogger(StructuredLogger.debug(message)) - def info(message: String): Target[Unit] = pushLogger(StructuredLogger.info(message)) + def debug(message: String): Target[Unit] = pushLogger(StructuredLogger.debug(message)) + def info(message: String): Target[Unit] = pushLogger(StructuredLogger.info(message)) def warning(message: String): Target[Unit] = { println(message) pushLogger(StructuredLogger.warning(message)) diff --git a/modules/core/src/main/scala/dev/guardrail/WriteTree.scala b/modules/core/src/main/scala/dev/guardrail/WriteTree.scala index d5ec80fc2f..ea78663a3b 100644 --- a/modules/core/src/main/scala/dev/guardrail/WriteTree.scala +++ b/modules/core/src/main/scala/dev/guardrail/WriteTree.scala @@ -23,7 +23,7 @@ object WriteTree { for { writeState <- if (Files.exists(path)) { - val exists: Array[Byte] = Files.readAllBytes(path) + val exists: Array[Byte] = Files.readAllBytes(path) val diffIdx: Option[Int] = exists .zip(data) diff --git a/modules/core/src/main/scala/dev/guardrail/core/CoreTermInterp.scala b/modules/core/src/main/scala/dev/guardrail/core/CoreTermInterp.scala index 8c0b300bfa..cdf8aae839 100644 --- a/modules/core/src/main/scala/dev/guardrail/core/CoreTermInterp.scala +++ b/modules/core/src/main/scala/dev/guardrail/core/CoreTermInterp.scala @@ -51,7 +51,7 @@ class CoreTermInterp[L <: LA]( def extractGenerator(context: Context, vendorDefaultFramework: Option[String]) = Target.log.function("extractGenerator") { for { - _ <- Target.log.debug("Looking up framework") + _ <- Target.log.debug("Looking up framework") framework <- NonEmptyList .fromList(context.modules) .toRight(context.framework) @@ -107,7 +107,7 @@ class CoreTermInterp[L <: LA]( kind = args.kind dtoPackage = args.dtoPackage context = args.context - _ <- verifyPropertyRequirement(context.propertyRequirement) + _ <- verifyPropertyRequirement(context.propertyRequirement) customImports <- args.imports .traverse(x => for { @@ -128,7 +128,7 @@ class CoreTermInterp[L <: LA]( _ <- Sw.log.debug("Running guardrail codegen") formattedPkgName <- Sc.formatPackageName(pkgName) definitionsPkgName <- Sc.fullyQualifyPackageName(formattedPkgName) - (proto, codegen) <- Common + (proto, codegen) <- Common .prepareDefinitions[L, Target]( kind, context, @@ -137,7 +137,7 @@ class CoreTermInterp[L <: LA]( definitionsPkgName :+ "support" ) protocolSupport <- Ps.generateSupportDefinitions() - result <- Common + result <- Common .writePackage[L, Target](proto, codegen, context)(Paths.get(outputPath), formattedPkgName.toList, dtoPackage, customImports, protocolSupport) } yield result } catch { diff --git a/modules/core/src/main/scala/dev/guardrail/core/PathExtractor.scala b/modules/core/src/main/scala/dev/guardrail/core/PathExtractor.scala index f4152cdf4d..efcf69231d 100644 --- a/modules/core/src/main/scala/dev/guardrail/core/PathExtractor.scala +++ b/modules/core/src/main/scala/dev/guardrail/core/PathExtractor.scala @@ -69,9 +69,9 @@ class PathExtractor[L <: LA, T, TN <: T, ModelGeneratorType]( type P = Parser[(Option[TN], T)] type LP = Parser[List[(Option[TN], T)]] - val plainString: Parser[String] = many(noneOf("{}/?")).map(_.mkString) - val plainNEString: Parser[String] = many1(noneOf("{}/?")).map(_.toList.mkString) - val stringSegment: P = plainNEString.map(s => (None, stringPath(s))) + val plainString: Parser[String] = many(noneOf("{}/?")).map(_.mkString) + val plainNEString: Parser[String] = many1(noneOf("{}/?")).map(_.toList.mkString) + val stringSegment: P = plainNEString.map(s => (None, stringPath(s))) def regexSegment(implicit pathArgs: List[LanguageParameter[L]], modelGeneratorType: ModelGeneratorType): P = (plainString ~ PathExtractor.variable ~ plainString).flatMap { case ((before, binding), after) => PathExtractor.lookupName[L, (Option[TN], T)](binding, pathArgs) { case param @ LanguageParameter(_, _, paramName, argName, _) => diff --git a/modules/core/src/main/scala/dev/guardrail/core/ResolvedType.scala b/modules/core/src/main/scala/dev/guardrail/core/ResolvedType.scala index 0a1babc170..bdbef26e98 100644 --- a/modules/core/src/main/scala/dev/guardrail/core/ResolvedType.scala +++ b/modules/core/src/main/scala/dev/guardrail/core/ResolvedType.scala @@ -52,7 +52,7 @@ object LazyResolvedType { import Sw._ for { formattedName <- formatTypeName(name) - resolved <- resolveType(formattedName, protocolElems) + resolved <- resolveType(formattedName, protocolElems) .flatMap { case RandomType(name, tpe) => liftType(tpe).map(Resolved[L](_, None, None, liftRawType(ReifiedRawType.unsafeEmpty))) @@ -113,7 +113,7 @@ object ResolvedType { protocolElems: List[StrictProtocolElems[L]] )(implicit Sc: LanguageTerms[L, F], Cl: CollectionsLibTerms[L, F], Sw: OpenAPITerms[L, F]): F[Resolved[L]] = for { - _ <- Sw.log.debug(s"value: ${value} in ${protocolElems.length} protocol elements") + _ <- Sw.log.debug(s"value: ${value} in ${protocolElems.length} protocol elements") res <- value .bimap(LazyResolvedType.lift[L, F](_, protocolElems), _.pure[F]) .merge diff --git a/modules/core/src/main/scala/dev/guardrail/core/StructuredLogger.scala b/modules/core/src/main/scala/dev/guardrail/core/StructuredLogger.scala index ae05c0ac4f..bbb0d2d8e4 100644 --- a/modules/core/src/main/scala/dev/guardrail/core/StructuredLogger.scala +++ b/modules/core/src/main/scala/dev/guardrail/core/StructuredLogger.scala @@ -55,7 +55,7 @@ sealed trait StructuredLoggerInstances extends StructuredLoggerLowPriority { for { (init, last) <- xs.initLast (head, tail) <- ys.uncons - combined <- ((last, head) match { + combined <- ((last, head) match { case (StructuredLogBlock(lastLines), StructuredLogBlock(headLines)) => Some(StructuredLogBlock(lastLines ++ headLines)) case (_, _) => None @@ -64,7 +64,7 @@ sealed trait StructuredLoggerInstances extends StructuredLoggerLowPriority { } } implicit object StructuredLoggerMonoid extends Monoid[StructuredLogger] { - def empty: StructuredLogger = StructuredLogger(Chain.empty) + def empty: StructuredLogger = StructuredLogger(Chain.empty) def combine(x: StructuredLogger, y: StructuredLogger): StructuredLogger = StructuredLogger((x.entries, y.entries) match { case StructuredLogEntryCombine(combined) => combined case (xs, ys) => Monoid[Chain[StructuredLogEntry]].combine(xs, ys) @@ -81,7 +81,7 @@ sealed trait StructuredLoggerInstances extends StructuredLoggerLowPriority { case ((acc, newHistory), StructuredLoggerReset) => (acc, Chain.empty) case ((acc, newHistory), StructuredLogBlock(lines)) => - val history = NonEmptyChain.fromChain[String](newHistory).getOrElse(NonEmptyChain("")) + val history = NonEmptyChain.fromChain[String](newHistory).getOrElse(NonEmptyChain("")) val nextLines: Chain[(LogLevel, NonEmptyChain[String], String)] = lines .filter(_._1 >= desiredLevel) .map { case (level, message) => (level, history, message) } @@ -89,7 +89,7 @@ sealed trait StructuredLoggerInstances extends StructuredLoggerLowPriority { } ._1 .foldLeft((Chain.empty[String], Chain.empty[String])) { case ((lastHistory, messages), (level, history, message)) => - val showFullHistory = true + val showFullHistory = true def makePrefix(history: Vector[String]): String = history.foldLeft(" ") { case (a, b) => (if (showFullHistory) { @@ -101,7 +101,7 @@ sealed trait StructuredLoggerInstances extends StructuredLoggerLowPriority { val historyVec = history.toChain.toVector val commonPrefixLength = historyVec.length - lastHistory.toVector.zip(historyVec).takeWhile(((_: String) == (_: String)).tupled).length - val histories = if (!showFullHistory) { + val histories = if (!showFullHistory) { (1 until commonPrefixLength).map(i => s"${level.show} ${makePrefix(historyVec.take(i))}") } else Nil val prefix = s"${level.show} ${makePrefix(historyVec)}: " diff --git a/modules/core/src/main/scala/dev/guardrail/core/Tracker.scala b/modules/core/src/main/scala/dev/guardrail/core/Tracker.scala index 66f3cf1eb7..a2ea85b4d6 100644 --- a/modules/core/src/main/scala/dev/guardrail/core/Tracker.scala +++ b/modules/core/src/main/scala/dev/guardrail/core/Tracker.scala @@ -43,7 +43,7 @@ trait HighPriorityTrackerEvidence extends LowPriorityTrackerEvidence { implicit def optionalListConvincer[A]: Tracker.Convincer[Option[List[A]], List[A]] = Tracker.Convincer(_.getOrElse(List.empty[A])) implicit def optionaljuCollectionConvincer[A]: Tracker.Convincer[Option[java.util.Collection[A]], List[A]] = Tracker.Convincer(_.fold(List.empty[A])(_.asScala.toList)) - implicit def optionalOptionConvincer[A]: Tracker.Convincer[Option[Option[A]], Option[A]] = Tracker.Convincer(_.flatten) + implicit def optionalOptionConvincer[A]: Tracker.Convincer[Option[Option[A]], Option[A]] = Tracker.Convincer(_.flatten) implicit def optionaljuMapConvincer[K, V]: Tracker.Convincer[Option[java.util.Map[K, V]], Mappish[List, K, V]] = Tracker.Convincer(_.fold(Mappish(List.empty[(K, V)]))(x => Mappish(x.asScala.toList))) implicit def optionalMapConvincer[K, V]: Tracker.Convincer[Option[Map[K, V]], Mappish[List, K, V]] = diff --git a/modules/core/src/main/scala/dev/guardrail/core/resolvers/ModelResolver.scala b/modules/core/src/main/scala/dev/guardrail/core/resolvers/ModelResolver.scala index 44792b4ae8..43db2aeab8 100644 --- a/modules/core/src/main/scala/dev/guardrail/core/resolvers/ModelResolver.scala +++ b/modules/core/src/main/scala/dev/guardrail/core/resolvers/ModelResolver.scala @@ -97,7 +97,7 @@ object ModelResolver { ) .orRefine { case arr: ArraySchema => arr }(arr => for { - items <- getItems(arr) + items <- getItems(arr) dereferencedItems <- items .downField("$ref", _.get$ref()) .indexedDistribute @@ -107,7 +107,7 @@ object ModelResolver { itemsRawFormat = dereferencedItems.downField("format", _.getFormat()) prefixes <- vendorPrefixes() arrayType <- CustomArrayTypeName(arr, prefixes).flatTraverse(x => parseType(Tracker.cloneHistory(arr, x))) - res <- meta match { + res <- meta match { case Right(core.Resolved(inner, dep, default, _)) => (liftVectorType(inner, arrayType), default.traverse(liftVectorTerm)) .mapN((t, d) => @@ -136,7 +136,7 @@ object ModelResolver { } prefixes <- vendorPrefixes() mapType <- CustomMapTypeName(map, prefixes).flatTraverse(x => parseType(Tracker.cloneHistory(map, x))) - res <- rec match { + res <- rec match { case Right(core.Resolved(inner, dep, _, rawType)) => liftMapType(inner, mapType).map(t => Right(core.Resolved[L](t, dep, None, ReifiedRawType.ofMap(rawType)))) case Left(x: core.DeferredMap[L]) => embedMap(x, mapType).map(Left(_)) diff --git a/modules/core/src/main/scala/dev/guardrail/generators/AbstractModule.scala b/modules/core/src/main/scala/dev/guardrail/generators/AbstractModule.scala index 32d0b8f742..4af0f9620a 100644 --- a/modules/core/src/main/scala/dev/guardrail/generators/AbstractModule.scala +++ b/modules/core/src/main/scala/dev/guardrail/generators/AbstractModule.scala @@ -17,7 +17,7 @@ abstract class AbstractModule[L <: LA] { } match { case (_, Nil) => Target.raiseError(MissingModule(section, (first :: rest.toList).map(_._1))) case (rest, value :: Nil) => value.map((rest, _)) - case (rest, a :: b :: _) => + case (rest, a :: b :: _) => Target.raiseError(ModuleConflict(section)) } } diff --git a/modules/core/src/main/scala/dev/guardrail/generators/LanguageParameter.scala b/modules/core/src/main/scala/dev/guardrail/generators/LanguageParameter.scala index cec14b6d5d..67947544c1 100644 --- a/modules/core/src/main/scala/dev/guardrail/generators/LanguageParameter.scala +++ b/modules/core/src/main/scala/dev/guardrail/generators/LanguageParameter.scala @@ -195,7 +195,7 @@ object LanguageParameter { for { parameters <- params.traverse(fromParameter(protocolElems, components)) counts <- parameters.traverse(param => extractTermName(param.paramName)).map(_.groupBy(identity).view.mapValues(_.length).toMap) - result <- parameters.traverse { param => + result <- parameters.traverse { param => extractTermName(param.paramName).flatMap { name => if (counts.getOrElse(name, 0) > 1) { pureTermName(param.argName.value).flatMap { escapedName => diff --git a/modules/core/src/main/scala/dev/guardrail/generators/OpenAPIGenerator.scala b/modules/core/src/main/scala/dev/guardrail/generators/OpenAPIGenerator.scala index cb6b9af36c..8de392e5b7 100644 --- a/modules/core/src/main/scala/dev/guardrail/generators/OpenAPIGenerator.scala +++ b/modules/core/src/main/scala/dev/guardrail/generators/OpenAPIGenerator.scala @@ -99,7 +99,7 @@ class OpenAPIGenerator[L <: LA] extends OpenAPITerms[L, Target] { globalSecurityRequirements: Option[SecurityRequirements] ): Target[List[RouteMeta]] = Target.log.function("extractOperations")(for { - _ <- Target.log.debug(s"Args: ${paths.unwrapTracker.value.map { case (a, b) => (a, b.showNotNull) }} (${paths.showHistory})") + _ <- Target.log.debug(s"Args: ${paths.unwrapTracker.value.map { case (a, b) => (a, b.showNotNull) }} (${paths.showHistory})") routes <- paths.indexedCosequence.value.flatTraverse { case (pathStr, path) => for { operationMap <- path @@ -183,7 +183,7 @@ class OpenAPIGenerator[L <: LA] extends OpenAPITerms[L, Target] { className = ClassPrefix(operation, vendorPrefixes) match { case cls @ Some(_) => cls.toList - case None => + case None => val pkg = PackageName(operation, vendorPrefixes) .map(_.split('.').toVector) .orElse( @@ -284,7 +284,7 @@ class OpenAPIGenerator[L <: LA] extends OpenAPITerms[L, Target] { .refine[Target[Tracker[A]]] { case extract(name) => name }(name => for { components <- components.raiseErrorIfEmpty("Attempting to dereference a $ref, but no components defined") - result <- components + result <- components .downField(label, proj) .map(_.value.toMap.get(name.unwrapTracker)) .raiseErrorIfEmpty(s"Attempting to dereference a $$ref, but no object found at the specified pointer") diff --git a/modules/core/src/main/scala/dev/guardrail/generators/spi/ModuleLoadResult.scala b/modules/core/src/main/scala/dev/guardrail/generators/spi/ModuleLoadResult.scala index 8dd4f17d47..dbf09437c7 100644 --- a/modules/core/src/main/scala/dev/guardrail/generators/spi/ModuleLoadResult.scala +++ b/modules/core/src/main/scala/dev/guardrail/generators/spi/ModuleLoadResult.scala @@ -8,7 +8,7 @@ import cats.implicits._ object ModuleLoadResult { implicit val moduleLoadResultApplicative: Applicative[ModuleLoadResult] = new Applicative[ModuleLoadResult] { - def pure[A](x: A): ModuleLoadResult[A] = new ModuleLoadSuccess(Set.empty, Set.empty, x) + def pure[A](x: A): ModuleLoadResult[A] = new ModuleLoadSuccess(Set.empty, Set.empty, x) def ap[A, B](ff: ModuleLoadResult[A => B])(fa: ModuleLoadResult[A]): ModuleLoadResult[B] = ff match { case f: ModuleLoadSuccess[A => B] => fa match { @@ -35,7 +35,7 @@ object ModuleLoadResult { } implicit def moduleLoadResultSemigroup[A]: Monoid[ModuleLoadResult[A]] = new Monoid[ModuleLoadResult[A]] { - def empty: ModuleLoadResult[A] = ModuleLoadFailed.of(Set.empty, Set.empty, Map.empty) + def empty: ModuleLoadResult[A] = ModuleLoadFailed.of(Set.empty, Set.empty, Map.empty) def combine(a: ModuleLoadResult[A], b: ModuleLoadResult[A]): ModuleLoadResult[A] = (a, b) match { case (a: ModuleLoadConflict, _) => @@ -84,13 +84,13 @@ object ModuleLoadResult { } } - private[this] def extractLabel[A](descriptor: ModuleDescriptor[A]): Set[String] = Set(descriptor._1) + private[this] def extractLabel[A](descriptor: ModuleDescriptor[A]): Set[String] = Set(descriptor._1) private[this] def extractChoices[A](descriptor: ModuleDescriptor[A]): Map[String, Set[String]] = { val (label, mappings) = descriptor Map(label -> mappings.flatMap(_.keys).toSet) } - def emitDefault[A](a: A): Set[String] => ModuleLoadResult[A] = _ => new ModuleLoadSuccess[A](Set.empty, Set.empty, a) + def emitDefault[A](a: A): Set[String] => ModuleLoadResult[A] = _ => new ModuleLoadSuccess[A](Set.empty, Set.empty, a) def forProduct1[A, Z](a: ModuleDescriptor[A])(combine: A => Z): Set[String] => ModuleLoadResult[Z] = wrapper(module => work[A](a)(module))(_.map(combine)).map(_.getOrElse(ModuleLoadFailed.of(Set.empty, Set.empty, extractChoices(a)))) def forProduct2[A, B, Z](a: ModuleDescriptor[A], b: ModuleDescriptor[B])(combine: (A, B) => Z): Set[String] => ModuleLoadResult[Z] = diff --git a/modules/core/src/main/scala/dev/guardrail/generators/syntax/package.scala b/modules/core/src/main/scala/dev/guardrail/generators/syntax/package.scala index 5da8438125..4457d33123 100644 --- a/modules/core/src/main/scala/dev/guardrail/generators/syntax/package.scala +++ b/modules/core/src/main/scala/dev/guardrail/generators/syntax/package.scala @@ -9,7 +9,7 @@ import java.util.regex.Matcher.quoteReplacement package syntax { class RichNotNullShower[A](value: A) { - def showNotNull: String = showNotNullIndented(0) + def showNotNull: String = showNotNullIndented(0) def showNotNullIndented(indent: Int): String = (" " * indent) + value.toString().linesIterator.filterNot(_.contains(": null")).mkString("\n" + (" " * indent)) } @@ -40,7 +40,7 @@ package object syntax extends SpecializedSyntax { * ("foo9", "bar"), or ("foo", "9bar"). In these cases we'll choose to assume * that digits are not initial group characters. */ - private val SPLIT_DELIMITERS = "[-_\\s\\.]+".r + private val SPLIT_DELIMITERS = "[-_\\s\\.]+".r private val BOUNDARY_SPLITTERS = List( "([^A-Z])([A-Z])".r, "([A-Z]+)([A-Z][a-z]+)".r diff --git a/modules/core/src/main/scala/dev/guardrail/runner/GuardrailRunner.scala b/modules/core/src/main/scala/dev/guardrail/runner/GuardrailRunner.scala index 9bb96a7475..ff78262d39 100644 --- a/modules/core/src/main/scala/dev/guardrail/runner/GuardrailRunner.scala +++ b/modules/core/src/main/scala/dev/guardrail/runner/GuardrailRunner.scala @@ -14,7 +14,7 @@ abstract class GuardrailRunner { for { args <- Target.fromOption(NonEmptyList.fromList(args.toList), NoArgsSpecified) coreTermsLoader <- CoreTermsLoader.load(language, args, MissingDependency(s"${language}-support")) - result <- coreTermsLoader.toList.flatTraverse(rs => + result <- coreTermsLoader.toList.flatTraverse(rs => ReadSpec .readSpec(rs) .flatMap(_.traverse(WriteTree.writeTree)) diff --git a/modules/core/src/main/scala/dev/guardrail/terms/Content.scala b/modules/core/src/main/scala/dev/guardrail/terms/Content.scala index 3de72b6710..7e71eca12a 100644 --- a/modules/core/src/main/scala/dev/guardrail/terms/Content.scala +++ b/modules/core/src/main/scala/dev/guardrail/terms/Content.scala @@ -7,7 +7,7 @@ import java.util.Locale import scala.reflect.ClassTag sealed abstract class ContentType(val value: String) { - override val toString: String = value + override val toString: String = value override def equals(x: Any): Boolean = x match { case x: ContentType => x.value == value case _ => false diff --git a/modules/core/src/main/scala/dev/guardrail/terms/LanguageTerms.scala b/modules/core/src/main/scala/dev/guardrail/terms/LanguageTerms.scala index 99a706dfd3..ed3f03460c 100644 --- a/modules/core/src/main/scala/dev/guardrail/terms/LanguageTerms.scala +++ b/modules/core/src/main/scala/dev/guardrail/terms/LanguageTerms.scala @@ -267,13 +267,13 @@ abstract class LanguageTerms[L <: LA, F[_]] { self => val newWrapToObject = wrapToObject new LanguageTerms[L, F] { - def litString(value: String) = newLitString(value) - def litFloat(value: Float) = newLitFloat(value) - def litDouble(value: Double) = newLitDouble(value) - def litInt(value: Int) = newLitInt(value) - def litLong(value: Long) = newLitLong(value) - def litBoolean(value: Boolean) = newLitBoolean(value) - def fullyQualifyPackageName(rawPkgName: NonEmptyList[String]) = newFullyQualifyPackageName(rawPkgName) + def litString(value: String) = newLitString(value) + def litFloat(value: Float) = newLitFloat(value) + def litDouble(value: Double) = newLitDouble(value) + def litInt(value: Int) = newLitInt(value) + def litLong(value: Long) = newLitLong(value) + def litBoolean(value: Boolean) = newLitBoolean(value) + def fullyQualifyPackageName(rawPkgName: NonEmptyList[String]) = newFullyQualifyPackageName(rawPkgName) def lookupEnumDefaultValue(tpe: L#TypeName, defaultValue: L#Term, values: RenderedEnum[L]) = newLookupEnumDefaultValue(tpe, defaultValue, values) def formatPackageName(packageName: List[String]): F[NonEmptyList[String]] = newFormatPackageName(packageName) diff --git a/modules/core/src/main/scala/dev/guardrail/terms/RouteMeta.scala b/modules/core/src/main/scala/dev/guardrail/terms/RouteMeta.scala index f46c9a13e2..64f16df254 100644 --- a/modules/core/src/main/scala/dev/guardrail/terms/RouteMeta.scala +++ b/modules/core/src/main/scala/dev/guardrail/terms/RouteMeta.scala @@ -129,7 +129,7 @@ case class RouteMeta(path: Tracker[String], method: HttpMethod, operation: Track type Count = Int type ParameterCountState = (Count, Map[HashCode, Count]) val contentTypes: List[ContentType] = fields.value.collect { case (ContentType(ct), _) => ct } - val ((maxCount, instances), ps) = fields.value + val ((maxCount, instances), ps) = fields.value .flatMap { case (_, mt) => for { mtSchema <- mt.downField("schema", _.getSchema()).indexedCosequence.toList diff --git a/modules/core/src/test/scala/dev/guardrail/generators/spi/ModuleLoadResultSpec.scala b/modules/core/src/test/scala/dev/guardrail/generators/spi/ModuleLoadResultSpec.scala index c807d07e51..7eec3d3b4a 100644 --- a/modules/core/src/test/scala/dev/guardrail/generators/spi/ModuleLoadResultSpec.scala +++ b/modules/core/src/test/scala/dev/guardrail/generators/spi/ModuleLoadResultSpec.scala @@ -32,7 +32,7 @@ class ModuleLoadResultSpec extends AnyFunSuite with Matchers with OptionValues { test("ModuleLoadResult forProduct2") { val a: Map[String, Boolean] = Map("false" -> false) val b: Map[String, Long] = Map("1" -> 1L) - val extractor = ModuleLoadResult.forProduct2( + val extractor = ModuleLoadResult.forProduct2( ("A Component", Seq(a)), ("B Component", Seq(b)) )((a, b) => (a, b)) @@ -45,7 +45,7 @@ class ModuleLoadResultSpec extends AnyFunSuite with Matchers with OptionValues { val b: Map[String, Long] = Map("1" -> 1L) val c: Map[String, Int] = Map("1" -> 2) val d: Map[String, Char] = Map("c" -> 'c') - val extractor = ModuleLoadResult.forProduct4( + val extractor = ModuleLoadResult.forProduct4( ("A Component", Seq(a)), ("B Component", Seq(b)), ("C Component", Seq(c)), @@ -66,7 +66,7 @@ class ModuleLoadResultSpec extends AnyFunSuite with Matchers with OptionValues { val c: Map[String, Int] = Map("1" -> 2) val d: Map[String, Char] = Map("c" -> 'c') val e: Map[String, Float] = Map("pi" -> 3.14f) - val extractor = ModuleLoadResult.forProduct5( + val extractor = ModuleLoadResult.forProduct5( ("A Component", Seq(a)), ("B Component", Seq(b)), ("C Component", Seq(c)), @@ -90,7 +90,7 @@ class ModuleLoadResultSpec extends AnyFunSuite with Matchers with OptionValues { val d: Map[String, Char] = Map("c" -> 'c') val e: Map[String, Float] = Map("pi" -> 3.14f) val f: Map[String, String] = Map("foo" -> "foo") - val extractor = ModuleLoadResult.forProduct6( + val extractor = ModuleLoadResult.forProduct6( ("A Component", Seq(a)), ("B Component", Seq(b)), ("C Component", Seq(c)), diff --git a/modules/java-async-http/src/main/scala/dev/guardrail/generators/java/asyncHttpClient/AsyncHttpClientClientGenerator.scala b/modules/java-async-http/src/main/scala/dev/guardrail/generators/java/asyncHttpClient/AsyncHttpClientClientGenerator.scala index c02f2a30a8..c0f1378c6b 100644 --- a/modules/java-async-http/src/main/scala/dev/guardrail/generators/java/asyncHttpClient/AsyncHttpClientClientGenerator.scala +++ b/modules/java-async-http/src/main/scala/dev/guardrail/generators/java/asyncHttpClient/AsyncHttpClientClientGenerator.scala @@ -68,7 +68,7 @@ import scala.reflect.runtime.universe.typeTag class AsyncHttpClientClientGeneratorLoader extends ClientGeneratorLoader { type L = JavaLanguage def reified = typeTag[Target[JavaLanguage]] - val apply = ModuleLoadResult.forProduct3( + val apply = ModuleLoadResult.forProduct3( ClientGeneratorLoader.label -> Seq(AsyncHttpClientVersion.mapping), CollectionsGeneratorLoader.label -> Seq(JavaVavrCollectionsGenerator.mapping, JavaCollectionsGenerator.mapping), CollectionsGeneratorLoader.label -> Seq(JavaStdLibCollections.mapping, JavaVavrCollections.mapping) @@ -107,10 +107,10 @@ class AsyncHttpClientClientGenerator private (implicit Cl: CollectionsLibTerms[J clientImports <- getImports(context.tracing) clientExtraImports <- getExtraImports(context.tracing) supportDefinitions <- generateSupportDefinitions(context.tracing, securitySchemes) - clients <- groupedRoutes.traverse { case (className, unsortedRoutes) => + clients <- groupedRoutes.traverse { case (className, unsortedRoutes) => val routes = unsortedRoutes.sortBy(r => (r.path.unwrapTracker, r.method)) for { - clientName <- formatTypeName(className.lastOption.getOrElse(""), Some("Client")) + clientName <- formatTypeName(className.lastOption.getOrElse(""), Some("Client")) responseClientPair <- routes.traverse { case route @ RouteMeta(path, method, operation, securityRequirements) => for { operationId <- getOperationId(operation) @@ -126,7 +126,7 @@ class AsyncHttpClientClientGenerator private (implicit Cl: CollectionsLibTerms[J tracingName = Option(className.mkString("-")).filterNot(_.isEmpty) ctorArgs <- clientClsArgs(tracingName, serverUrls, context.tracing) staticDefns <- buildStaticDefns(clientName, tracingName, serverUrls, ctorArgs, context.tracing) - client <- buildClient( + client <- buildClient( clientName, tracingName, serverUrls, @@ -443,7 +443,7 @@ class AsyncHttpClientClientGenerator private (implicit Cl: CollectionsLibTerms[J cls.addConstructor(PRIVATE) val ahcConfigBuilder = new ObjectCreationExpr(null, DEFAULT_ASYNC_HTTP_CLIENT_CONFIG_BUILDER_TYPE, new NodeList()) - val ahcConfig = new MethodCallExpr( + val ahcConfig = new MethodCallExpr( List( ("setMaxRequestRetry", 2), ("setConnectTimeout", 3000), @@ -577,7 +577,7 @@ class AsyncHttpClientClientGenerator private (implicit Cl: CollectionsLibTerms[J pathExpr <- pathExprNode match { case e: Expression => Target.pure(e) - case x => + case x => Target.raiseUserError[Expression](s"BUG: Returned node from generateUrlPathParams() was a ${x.getClass.getName}, not an Expression as expected") } } yield { @@ -618,7 +618,7 @@ class AsyncHttpClientClientGenerator private (implicit Cl: CollectionsLibTerms[J val allConsumes = operation.unwrapTracker.consumes.flatMap(ContentType.unapply).toList val consumes = ResponseHelpers.getBestConsumes(operation, allConsumes, parameters) val allProduces = operation.unwrapTracker.produces.flatMap(ContentType.unapply).toList - val produces = + val produces = responses.value .map(resp => (resp.statusCode, ResponseHelpers.getBestProduces(operation, allProduces, resp, _.isPlain))) .toMap @@ -855,7 +855,7 @@ class AsyncHttpClientClientGenerator private (implicit Cl: CollectionsLibTerms[J case _ if valueType.isNamed("byte[]") => "getResponseBodyAsBytes" case _ if valueType.isNamed("ByteBuffer") => "getResponseBodyAsByteBuffer" case _ if valueType.isNamed("String") => "getResponseBody" - case _ => + case _ => println( s"WARNING: Don't know how to handle response of type ${valueType.asString} for content type $contentType at ${operation.showHistory}; falling back to String" ) @@ -1167,7 +1167,7 @@ class AsyncHttpClientClientGenerator private (implicit Cl: CollectionsLibTerms[J ) ) ) - val nonNullInitializer: String => Target[Expression] = name => Target.pure(requireNonNullExpr(name)) + val nonNullInitializer: String => Target[Expression] = name => Target.pure(requireNonNullExpr(name)) def optionalInitializer(valueArg: String => Expression): String => Target[Expression] = name => Cl.liftOptionalTerm(valueArg(name)).flatMap(_.toExpression) @@ -1178,9 +1178,9 @@ class AsyncHttpClientClientGenerator private (implicit Cl: CollectionsLibTerms[J optionalObjectMapperType <- Cl.liftOptionalType(OBJECT_MAPPER_TYPE) emptyOptionalTerm <- Cl.emptyOptionalTerm().flatMap(_.toExpression) - builderBaseUrlSetter <- serverUrl.traverse(_ => createSetter(URI_TYPE, "baseUrl", nonNullInitializer)) - builderClientNameSetter <- tracingName.filter(_ => tracing).traverse(_ => createSetter(STRING_TYPE, "clientName", nonNullInitializer)) - builderHttpClientSetter <- createSetter(httpClientFunctionType, "httpClient", optionalInitializer(new NameExpr(_))) + builderBaseUrlSetter <- serverUrl.traverse(_ => createSetter(URI_TYPE, "baseUrl", nonNullInitializer)) + builderClientNameSetter <- tracingName.filter(_ => tracing).traverse(_ => createSetter(STRING_TYPE, "clientName", nonNullInitializer)) + builderHttpClientSetter <- createSetter(httpClientFunctionType, "httpClient", optionalInitializer(new NameExpr(_))) builderObjectMapperSetter <- createSetter( OBJECT_MAPPER_TYPE, "objectMapper", @@ -1216,7 +1216,7 @@ class AsyncHttpClientClientGenerator private (implicit Cl: CollectionsLibTerms[J val (modifiers, declarator) = tracingName.fold( (new NodeList(privateModifier, finalModifier), new VariableDeclarator(STRING_TYPE, "clientName")) )(_ => (new NodeList(privateModifier), new VariableDeclarator(STRING_TYPE, "clientName", new NameExpr("DEFAULT_CLIENT_NAME")))) - val clientNameField = new FieldDeclaration(modifiers, declarator) + val clientNameField = new FieldDeclaration(modifiers, declarator) val defaultClientNameField = tracingName.map { tracingName => new FieldDeclaration( new NodeList(privateModifier, staticModifier, finalModifier), @@ -1250,7 +1250,7 @@ class AsyncHttpClientClientGenerator private (implicit Cl: CollectionsLibTerms[J ) ) - val builderConstructor = new ConstructorDeclaration(new NodeList(publicModifier), "Builder") + val builderConstructor = new ConstructorDeclaration(new NodeList(publicModifier), "Builder") def createConstructorParameter(tpe: Type, name: String): Parameter = new Parameter(new NodeList(finalModifier), tpe, new SimpleName(name)) def createBuilderConstructorAssignment(name: String): Statement = diff --git a/modules/java-dropwizard/src/main/scala/dev/guardrail/generators/java/dropwizard/DropwizardGenerator.scala b/modules/java-dropwizard/src/main/scala/dev/guardrail/generators/java/dropwizard/DropwizardGenerator.scala index ae958d4360..608948e0da 100644 --- a/modules/java-dropwizard/src/main/scala/dev/guardrail/generators/java/dropwizard/DropwizardGenerator.scala +++ b/modules/java-dropwizard/src/main/scala/dev/guardrail/generators/java/dropwizard/DropwizardGenerator.scala @@ -20,7 +20,7 @@ import dev.guardrail.terms.framework._ class DropwizardGeneratorLoader extends FrameworkGeneratorLoader { type L = JavaLanguage def reified = typeTag[Target[JavaLanguage]] - val apply = + val apply = ModuleLoadResult.forProduct3( FrameworkGeneratorLoader.label -> Seq(DropwizardVersion.mapping), CollectionsGeneratorLoader.label -> Seq(JavaVavrCollectionsGenerator.mapping, JavaCollectionsGenerator.mapping), diff --git a/modules/java-dropwizard/src/main/scala/dev/guardrail/generators/java/dropwizard/DropwizardServerGenerator.scala b/modules/java-dropwizard/src/main/scala/dev/guardrail/generators/java/dropwizard/DropwizardServerGenerator.scala index ecb7882c52..6d240e40fb 100644 --- a/modules/java-dropwizard/src/main/scala/dev/guardrail/generators/java/dropwizard/DropwizardServerGenerator.scala +++ b/modules/java-dropwizard/src/main/scala/dev/guardrail/generators/java/dropwizard/DropwizardServerGenerator.scala @@ -71,7 +71,7 @@ import scala.reflect.runtime.universe.typeTag class DropwizardServerGeneratorLoader extends ServerGeneratorLoader { type L = JavaLanguage override def reified = typeTag[Target[JavaLanguage]] - val apply = + val apply = ModuleLoadResult.forProduct3( ServerGeneratorLoader.label -> Seq(DropwizardVersion.mapping), CollectionsGeneratorLoader.label -> Seq(JavaVavrCollectionsGenerator.mapping, JavaCollectionsGenerator.mapping), @@ -107,7 +107,7 @@ class DropwizardServerGenerator private (implicit Cl: CollectionsLibTerms[JavaLa for { extraImports <- getExtraImports(context.tracing, supportPackage) supportDefinitions <- generateSupportDefinitions(context.tracing, securitySchemes) - servers <- groupedRoutes.traverse { case (className, unsortedRoutes) => + servers <- groupedRoutes.traverse { case (className, unsortedRoutes) => val routes = unsortedRoutes .groupBy(_.path.unwrapTracker.indexOf('{')) .view @@ -135,7 +135,7 @@ class DropwizardServerGenerator private (implicit Cl: CollectionsLibTerms[JavaLa ) } (responseDefinitions, serverOperations) = responseServerPair.unzip - securityExposure = serverOperations.flatMap(_.routeMeta.securityRequirements) match { + securityExposure = serverOperations.flatMap(_.routeMeta.securityRequirements) match { case Nil => SecurityExposure.Undefined case xs => if (xs.exists(_.optional)) SecurityExposure.Optional else SecurityExposure.Required } @@ -268,7 +268,7 @@ class DropwizardServerGenerator private (implicit Cl: CollectionsLibTerms[JavaLa } .fold[(List[BodyDeclaration[_ <: BodyDeclaration[_]]], BodyDeclaration[_ <: BodyDeclaration[_]])] { val constructor = new ConstructorDeclaration(new NodeList(privateModifier), clsName) - val _ = constructor.setBody( + val _ = constructor.setBody( new BlockStmt( new NodeList( new ExpressionStmt( @@ -574,14 +574,14 @@ class DropwizardServerGenerator private (implicit Cl: CollectionsLibTerms[JavaLa methodParams = (annotatedMethodParams ++ bareMethodParams).map(boxParameterTypes) _ = methodParams.foreach(method.addParameter) - _ = method.addParameter( + _ = method.addParameter( new Parameter(new NodeList(finalModifier), ASYNC_RESPONSE_TYPE, new SimpleName("asyncResponse")).addMarkerAnnotation("Suspended") ) (responseType, resultResumeBody) = ServerRawResponse(operation) .filter(_ == true) .fold { - val responseName = s"$handlerName.$responseClsName" + val responseName = s"$handlerName.$responseClsName" val entitySetterIfTree = NonEmptyList .fromList(responses.value.collect { case Response(statusCodeName, Some(_), _) => statusCodeName diff --git a/modules/java-spring-mvc/src/main/scala/dev/guardrail/generators/java/springMvc/SpringMvcGenerator.scala b/modules/java-spring-mvc/src/main/scala/dev/guardrail/generators/java/springMvc/SpringMvcGenerator.scala index 7e2e597c06..6a9c7db584 100644 --- a/modules/java-spring-mvc/src/main/scala/dev/guardrail/generators/java/springMvc/SpringMvcGenerator.scala +++ b/modules/java-spring-mvc/src/main/scala/dev/guardrail/generators/java/springMvc/SpringMvcGenerator.scala @@ -16,7 +16,7 @@ import dev.guardrail.terms.framework.FrameworkTerms class SpringMvcGeneratorLoader extends FrameworkGeneratorLoader { type L = JavaLanguage def reified = typeTag[Target[JavaLanguage]] - val apply = + val apply = ModuleLoadResult.forProduct2( FrameworkGeneratorLoader.label -> Seq(SpringMvcVersion.mapping), CollectionsGeneratorLoader.label -> Seq(JavaVavrCollectionsGenerator.mapping, JavaCollectionsGenerator.mapping) diff --git a/modules/java-spring-mvc/src/main/scala/dev/guardrail/generators/java/springMvc/SpringMvcServerGenerator.scala b/modules/java-spring-mvc/src/main/scala/dev/guardrail/generators/java/springMvc/SpringMvcServerGenerator.scala index 31ab62ee24..79963cc6dc 100644 --- a/modules/java-spring-mvc/src/main/scala/dev/guardrail/generators/java/springMvc/SpringMvcServerGenerator.scala +++ b/modules/java-spring-mvc/src/main/scala/dev/guardrail/generators/java/springMvc/SpringMvcServerGenerator.scala @@ -70,7 +70,7 @@ import scala.util.Try class SpringMvcServerGeneratorLoader extends ServerGeneratorLoader { type L = JavaLanguage override def reified = typeTag[Target[JavaLanguage]] - val apply = + val apply = ModuleLoadResult.forProduct3( ServerGeneratorLoader.label -> Seq(SpringMvcVersion.mapping), CollectionsGeneratorLoader.label -> Seq(JavaVavrCollectionsGenerator.mapping, JavaCollectionsGenerator.mapping), @@ -106,7 +106,7 @@ class SpringMvcServerGenerator private (implicit Cl: CollectionsLibTerms[JavaLan for { extraImports <- getExtraImports(context.tracing, supportPackage) supportDefinitions <- generateSupportDefinitions(context.tracing, securitySchemes) - servers <- groupedRoutes.traverse { case (className, unsortedRoutes) => + servers <- groupedRoutes.traverse { case (className, unsortedRoutes) => val routes = unsortedRoutes .groupBy(_.path.unwrapTracker.indexOf('{')) .view @@ -134,7 +134,7 @@ class SpringMvcServerGenerator private (implicit Cl: CollectionsLibTerms[JavaLan ) } (responseDefinitions, serverOperations) = responseServerPair.unzip - securityExposure = serverOperations.flatMap(_.routeMeta.securityRequirements) match { + securityExposure = serverOperations.flatMap(_.routeMeta.securityRequirements) match { case Nil => SecurityExposure.Undefined case xs => if (xs.exists(_.optional)) SecurityExposure.Optional else SecurityExposure.Required } @@ -209,7 +209,7 @@ class SpringMvcServerGenerator private (implicit Cl: CollectionsLibTerms[JavaLan def checkMatch(matching: List[String], headsToCheck: List[Option[String]], restOfHeads: List[List[String]]): List[String] = headsToCheck match { - case Nil => matching + case Nil => matching case x :: xs => x.fold(matching) { first => if (xs.forall(_.contains(first))) { @@ -340,7 +340,7 @@ class SpringMvcServerGenerator private (implicit Cl: CollectionsLibTerms[JavaLan } .fold[(List[BodyDeclaration[_ <: BodyDeclaration[_]]], BodyDeclaration[_ <: BodyDeclaration[_]])] { val constructor = new ConstructorDeclaration(new NodeList(privateModifier), clsName) - val _ = constructor.setBody( + val _ = constructor.setBody( new BlockStmt( new NodeList( new ExpressionStmt( @@ -480,7 +480,7 @@ class SpringMvcServerGenerator private (implicit Cl: CollectionsLibTerms[JavaLan parameters.parameters.foreach(p => p.param.setType(p.param.getType.unbox)) val httpMethodAnnotationName = s"${httpMethod.toString.toLowerCase.capitalize}Mapping" - val pathSuffix = splitPathComponents(path.unwrapTracker) + val pathSuffix = splitPathComponents(path.unwrapTracker) .drop(commonPathPrefix.length) .mkString("/", "/", "") @@ -535,8 +535,8 @@ class SpringMvcServerGenerator private (implicit Cl: CollectionsLibTerms[JavaLan } def transformJsr310Params(parameter: Parameter): Parameter = { - val isOptional = parameter.getType.isOptionalType - val tpe = if (isOptional) parameter.getType.containedType else parameter.getType + val isOptional = parameter.getType.isOptionalType + val tpe = if (isOptional) parameter.getType.containedType else parameter.getType def transform(dateTimeFormat: String): Parameter = { parameter.getAnnotations.addLast( new NormalAnnotationExpr( @@ -618,8 +618,8 @@ class SpringMvcServerGenerator private (implicit Cl: CollectionsLibTerms[JavaLan val (responseName, responseType, resultResumeBody) = hasServerRawResponse.fold { - val responseName = s"$handlerName.$responseClsName" - val responseType = StaticJavaParser.parseClassOrInterfaceType(responseName) + val responseName = s"$handlerName.$responseClsName" + val responseType = StaticJavaParser.parseClassOrInterfaceType(responseName) val entitySetterIfTree = NonEmptyList .fromList(responses.value.collect { case Response(statusCodeName, Some(_), _) => statusCodeName diff --git a/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaCollectionsGenerator.scala b/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaCollectionsGenerator.scala index f7821e123e..55e6b1d6df 100644 --- a/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaCollectionsGenerator.scala +++ b/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaCollectionsGenerator.scala @@ -21,7 +21,7 @@ class JavaCollectionsGeneratorLoader extends CollectionsGeneratorLoader { object JavaCollectionsGenerator { def apply(): CollectionsLibTerms[JavaLanguage, Target] = new JavaCollectionsGenerator - val mapping: Map[String, JavaCollectionsGenerator] = Map( + val mapping: Map[String, JavaCollectionsGenerator] = Map( "java-stdlib" -> new JavaCollectionsGenerator ) } diff --git a/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaCoreTermLoader.scala b/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaCoreTermLoader.scala index 24a3abc2c8..54aa5d1bcd 100644 --- a/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaCoreTermLoader.scala +++ b/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaCoreTermLoader.scala @@ -7,7 +7,7 @@ import scala.reflect.runtime.universe.typeTag class JavaCoreTermLoader extends CoreTermsLoader { type L = JavaLanguage - def reified = typeTag[Target[JavaLanguage]] + def reified = typeTag[Target[JavaLanguage]] def apply(language: String, parameters: NonEmptyList[Args]) = if (language == "java") Some(() => runM(parameters)(JavaGeneratorMappings.javaInterpreter)) else None } diff --git a/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaGenerator.scala b/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaGenerator.scala index 3cf652031a..b65c032446 100644 --- a/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaGenerator.scala +++ b/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaGenerator.scala @@ -68,8 +68,8 @@ class JavaGenerator private extends LanguageTerms[JavaLanguage, Target] { val _ = source.getChildNodes.asScala.headOption.fold(source.addOrphanComment _)(_.setComment)(GENERATED_CODE_COMMENT) val sourceStr = source.toString Future { - val className = Try[TypeDeclaration[_]](source.getType(0)).fold(_ => "(unknown)", _.getNameAsString) - val formatter = ToolFactory.createCodeFormatter(FORMATTER_OPTIONS) + val className = Try[TypeDeclaration[_]](source.getType(0)).fold(_ => "(unknown)", _.getNameAsString) + val formatter = ToolFactory.createCodeFormatter(FORMATTER_OPTIONS) val result: Either[Option[Throwable], Array[Byte]] = for { textEdit <- Option(formatter.format(CodeFormatter.K_COMPILATION_UNIT, sourceStr, 0, sourceStr.length, 0, "\n")).toRight(None) doc = new Document(sourceStr) @@ -161,7 +161,7 @@ class JavaGenerator private extends LanguageTerms[JavaLanguage, Target] { override def formatFieldName(fieldName: String): Target[String] = Target.pure(fieldName.escapeInvalidCharacters.toCamelCase.escapeIdentifier) override def formatMethodName(methodName: String): Target[String] = Target.pure(methodName.escapeInvalidCharacters.toCamelCase.escapeIdentifier) override def formatMethodArgName(methodArgName: String): Target[String] = Target.pure(methodArgName.escapeInvalidCharacters.toCamelCase.escapeIdentifier) - override def formatEnumName(enumValue: String): Target[String] = + override def formatEnumName(enumValue: String): Target[String] = Target.pure(enumValue.escapeInvalidCharacters.toSnakeCase.toUpperCase(Locale.US).escapeIdentifier) override def parseType(tpe: Tracker[String]): Target[Option[com.github.javaparser.ast.`type`.Type]] = @@ -171,7 +171,7 @@ class JavaGenerator private extends LanguageTerms[JavaLanguage, Target] { println(s"Warning: Unparsable x-java-type: ${tpe.unwrapTracker} $err (${tpe.showHistory})") None } - override def parseTypeName(tpe: String): Target[Option[JavaTypeName]] = Option(tpe).map(_.trim).filterNot(_.isEmpty).traverse(safeParseTypeName) + override def parseTypeName(tpe: String): Target[Option[JavaTypeName]] = Option(tpe).map(_.trim).filterNot(_.isEmpty).traverse(safeParseTypeName) override def pureTermName(tpe: String): Target[com.github.javaparser.ast.expr.Name] = Option(tpe).map(_.trim).filterNot(_.isEmpty).map(safeParseName).getOrElse(Target.raiseUserError("A structure's name is empty")) override def pureTypeName(tpe: String): Target[JavaTypeName] = @@ -185,7 +185,7 @@ class JavaGenerator private extends LanguageTerms[JavaLanguage, Target] { safeParseSimpleName(nameStr.asString).map(name => new Parameter(new NodeList(finalModifier), tpe, name)) override def typeNamesEqual(a: JavaTypeName, b: JavaTypeName): Target[Boolean] = Target.pure(a.asString == b.asString) override def typesEqual(a: com.github.javaparser.ast.`type`.Type, b: com.github.javaparser.ast.`type`.Type): Target[Boolean] = Target.pure(a.equals(b)) - override def extractTypeName(tpe: com.github.javaparser.ast.`type`.Type): Target[Option[JavaTypeName]] = { + override def extractTypeName(tpe: com.github.javaparser.ast.`type`.Type): Target[Option[JavaTypeName]] = { def extractTypeName(tpe: Type): Target[JavaTypeName] = tpe match { case a: AstArrayType if a.getComponentType.isPrimitiveType => extractTypeName(new AstArrayType(a.getComponentType.asPrimitiveType().toBoxedType)) @@ -198,8 +198,8 @@ class JavaGenerator private extends LanguageTerms[JavaLanguage, Target] { } extractTypeName(tpe).map(Option.apply) } - override def extractTermName(term: com.github.javaparser.ast.expr.Name): Target[String] = Target.pure(term.asString) - override def extractTermNameFromParam(param: Parameter): Target[String] = Target.pure(param.getNameAsString) + override def extractTermName(term: com.github.javaparser.ast.expr.Name): Target[String] = Target.pure(term.asString) + override def extractTermNameFromParam(param: Parameter): Target[String] = Target.pure(param.getNameAsString) override def selectType(typeNames: NonEmptyList[String]): Target[com.github.javaparser.ast.`type`.Type] = safeParseType(typeNames.toList.mkString(".")) override def selectTerm(termNames: NonEmptyList[String]): Target[com.github.javaparser.ast.Node] = @@ -230,8 +230,8 @@ class JavaGenerator private extends LanguageTerms[JavaLanguage, Target] { override def numberType(format: Option[String]): Target[com.github.javaparser.ast.`type`.Type] = safeParseType("java.math.BigDecimal") override def intType(): Target[com.github.javaparser.ast.`type`.Type] = safeParseType("Integer") override def longType(): Target[com.github.javaparser.ast.`type`.Type] = safeParseType("Long") - override def integerType(format: Option[String]): Target[com.github.javaparser.ast.`type`.Type] = safeParseType("java.math.BigInteger") - override def booleanType(format: Option[String]): Target[com.github.javaparser.ast.`type`.Type] = safeParseType("Boolean") + override def integerType(format: Option[String]): Target[com.github.javaparser.ast.`type`.Type] = safeParseType("java.math.BigInteger") + override def booleanType(format: Option[String]): Target[com.github.javaparser.ast.`type`.Type] = safeParseType("Boolean") override def fallbackType(tpe: Option[String], format: Option[String]): Target[com.github.javaparser.ast.`type`.Type] = Target.fromOption(tpe, UserError("Missing type")).flatMap(safeParseType) @@ -319,7 +319,7 @@ class JavaGenerator private extends LanguageTerms[JavaLanguage, Target] { extraTypes: List[com.github.javaparser.ast.Node] ): Target[Option[WriteTree]] = for { - pkgDecl <- dtoComponents.traverse(buildPkgDecl) + pkgDecl <- dtoComponents.traverse(buildPkgDecl) writeTree <- pkgDecl.traverse(x => prettyPrintSource(resolveFile(dtoPackagePath)(List.empty).resolve("package-info.java"), new CompilationUnit().setPackageDeclaration(x)) ) diff --git a/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaModuleMapper.scala b/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaModuleMapper.scala index e1ee86a192..83405d8ca2 100644 --- a/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaModuleMapper.scala +++ b/modules/java-support/src/main/scala/dev/guardrail/generators/java/JavaModuleMapper.scala @@ -6,7 +6,7 @@ import scala.reflect.runtime.universe.typeTag class JavaModuleMapper extends ModuleMapperLoader { type L = JavaLanguage - def reified = typeTag[Target[JavaLanguage]] + def reified = typeTag[Target[JavaLanguage]] def apply(frameworkName: String): Option[Set[String]] = frameworkName match { case "dropwizard" => Some(Set("dropwizard", "jackson", "java-stdlib", "async-http-client")) case "spring-mvc" => Some(Set("spring-mvc", "jackson", "java-stdlib", "async-http-client")) diff --git a/modules/java-support/src/main/scala/dev/guardrail/generators/java/jackson/JacksonGenerator.scala b/modules/java-support/src/main/scala/dev/guardrail/generators/java/jackson/JacksonGenerator.scala index 1dcdd22d61..4a38ec21e9 100644 --- a/modules/java-support/src/main/scala/dev/guardrail/generators/java/jackson/JacksonGenerator.scala +++ b/modules/java-support/src/main/scala/dev/guardrail/generators/java/jackson/JacksonGenerator.scala @@ -183,7 +183,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T private[this] def getRequiredFieldsRec(root: Tracker[Schema[_]]): List[String] = { @scala.annotation.tailrec def work(values: List[Tracker[Schema[_]]], acc: List[String]): List[String] = { - val required: List[String] = values.flatMap(_.downField("required", _.getRequired()).unwrapTracker) + val required: List[String] = values.flatMap(_.downField("required", _.getRequired()).unwrapTracker) val next: List[Tracker[Schema[_]]] = for { a <- values @@ -388,7 +388,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T for { typeName <- formatTypeName(name).map(formattedName => NonEmptyList.of(hierarchy.name, formattedName)) propertyRequirement = getPropertyRequirement(prop, requiredFields.contains(name), defaultPropertyRequirement) - prefixes <- vendorPrefixes() + prefixes <- vendorPrefixes() resolvedType <- ModelResolver .propMeta[JavaLanguage, Target]( prop, @@ -396,7 +396,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T ) // TODO: This should be resolved via an alternate mechanism that maintains references all the way through, instead of re-deriving and assuming that references are valid defValue <- defaultValue(typeName, prop, propertyRequirement, definitions) fieldName <- formatFieldName(name) - res <- transformProperty(hierarchy.name, dtoPackage, supportPackage, concreteTypes)( + res <- transformProperty(hierarchy.name, dtoPackage, supportPackage, concreteTypes)( name, fieldName, prop, @@ -447,7 +447,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T def processProperty(name: String, schema: Tracker[Schema[_]]): Target[Option[Either[String, NestedProtocolElems[JavaLanguage]]]] = for { nestedClassName <- formatTypeName(name).map(formattedName => getClsName(name).append(formattedName)) - defn <- schema + defn <- schema .refine[Target[Option[Either[String, NestedProtocolElems[JavaLanguage]]]]] { case ObjectExtractor(x) => x }(o => for { defn <- fromModel( @@ -465,7 +465,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T ) .orRefine { case o: ComposedSchema => o }(o => for { - parents <- extractParents(o, definitions, concreteTypes, dtoPackage, supportPackage, defaultPropertyRequirement, components) + parents <- extractParents(o, definitions, concreteTypes, dtoPackage, supportPackage, defaultPropertyRequirement, components) maybeClassDefinition <- fromModel( nestedClassName, o, @@ -524,7 +524,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T (s, ta) => val a = ta.unwrapTracker s.find(p => p.name == a.name) match { - case None => (a :: s).pure[Target] + case None => (a :: s).pure[Target] case Some(duplicate) => for { newDefaultValue <- findCommonDefaultValue(ta.showHistory, a.defaultValue, duplicate.defaultValue) @@ -532,7 +532,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T } yield { val emptyToNull = if (Set(a.emptyToNull, duplicate.emptyToNull).contains(EmptyIsNull)) EmptyIsNull else EmptyIsEmpty val redactionBehaviour = if (Set(a.dataRedaction, duplicate.dataRedaction).contains(DataRedacted)) DataRedacted else DataVisible - val mergedParameter = ProtocolParameter[JavaLanguage]( + val mergedParameter = ProtocolParameter[JavaLanguage]( a.term, a.baseType, a.name, @@ -605,7 +605,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T .orRefineFallback(_ => None) for { prefixes <- vendorPrefixes() - tpe <- model.fold[Target[Type]](objectType(None)) { m => + tpe <- model.fold[Target[Type]](objectType(None)) { m => for { (declType, _) <- ModelResolver.determineTypeName[JavaLanguage, Target](m, Tracker.cloneHistory(m, CustomTypeName(m, prefixes)), components) } yield declType @@ -659,12 +659,12 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T import Sc._ for { - a <- extractSuperClass(elem, definitions) + a <- extractSuperClass(elem, definitions) supper <- a.flatTraverse { case (clsName, _extends, interfaces) => val concreteInterfacesWithClass = for { interface <- interfaces (cls, tracker) <- definitions - result <- tracker + result <- tracker .refine[Tracker[Schema[_]]] { case x: ComposedSchema if interface.downField("$ref", _.get$ref()).exists(_.unwrapTracker.endsWith(s"/${cls}")) => x }( @@ -674,7 +674,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T .toOption } yield cls -> result val (_, concreteInterfaces) = concreteInterfacesWithClass.unzip - val classMapping = (for { + val classMapping = (for { (cls, schema) <- concreteInterfacesWithClass (name, _) <- schema.downField("properties", _.getProperties).indexedDistribute.value } yield (name, cls)).toMap @@ -754,11 +754,11 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T defaultPropertyRequirement, components ) - encoder <- encodeModel(clsName.last, dtoPackage, params, parents) - decoder <- decodeModel(clsName.last, dtoPackage, supportPackage, params, parents) - tpe <- parseTypeName(clsName.last) - fullType <- selectType(dtoPackage.foldRight(clsName)((x, xs) => xs.prepend(x))) - staticDefns <- renderDTOStaticDefns(clsName.last, List.empty, encoder, decoder, params) + encoder <- encodeModel(clsName.last, dtoPackage, params, parents) + decoder <- decodeModel(clsName.last, dtoPackage, supportPackage, params, parents) + tpe <- parseTypeName(clsName.last) + fullType <- selectType(dtoPackage.foldRight(clsName)((x, xs) => xs.prepend(x))) + staticDefns <- renderDTOStaticDefns(clsName.last, List.empty, encoder, decoder, params) nestedClasses <- nestedDefinitions.flatTraverse { case classDefinition: ClassDefinition[JavaLanguage] => for { @@ -806,13 +806,13 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T concreteTypes <- PropMeta.extractConcreteTypes[JavaLanguage, Target](definitions.value, components) polyADTs <- hierarchies.traverse(fromPoly(_, concreteTypes, definitions.value, dtoPackage, supportPackage.toList, defaultPropertyRequirement, components)) prefixes <- vendorPrefixes() - elems <- definitionsWithoutPoly.traverse { case (clsName, model) => + elems <- definitionsWithoutPoly.traverse { case (clsName, model) => model .refine { case c: ComposedSchema => c }(comp => for { formattedClsName <- formatTypeName(clsName) parents <- extractParents(comp, definitions.value, concreteTypes, dtoPackage, supportPackage.toList, defaultPropertyRequirement, components) - model <- fromModel( + model <- fromModel( clsName = NonEmptyList.of(formattedClsName), model = comp, parents = parents, @@ -836,7 +836,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T for { formattedClsName <- formatTypeName(clsName) enum <- fromEnum[Object](formattedClsName, m, dtoPackage, components) - model <- fromModel( + model <- fromModel( NonEmptyList.of(formattedClsName), m, List.empty, @@ -854,7 +854,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T for { formattedClsName <- formatTypeName(clsName) enum <- fromEnum(formattedClsName, x, dtoPackage, components) - model <- fromModel( + model <- fromModel( NonEmptyList.of(formattedClsName), x, List.empty, @@ -873,7 +873,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T for { formattedClsName <- formatTypeName(clsName) enum <- fromEnum(formattedClsName, x, dtoPackage, components) - model <- fromModel( + model <- fromModel( NonEmptyList.of(formattedClsName), x, List.empty, @@ -942,7 +942,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T parentOpt.foreach { parent => val directParent = StaticJavaParser.parseClassOrInterfaceType(parent.clsName) val otherParents = parent.interfaces.map(StaticJavaParser.parseClassOrInterfaceType) - val _ = cls + val _ = cls .setExtendedTypes(new NodeList(directParent)) .setImplementedTypes(otherParents.toNodeList) } @@ -983,7 +983,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T if (term.fieldType.isOptionalType) { val parameterValueExpr = term.emptyToNull match { case EmptyIsEmpty => new NameExpr(term.parameterName) - case EmptyIsNull => + case EmptyIsNull => new MethodCallExpr( new NameExpr(term.parameterName), "filter", @@ -1010,7 +1010,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T } else { val parameterValueExpr = term.emptyToNull match { case EmptyIsEmpty => new NameExpr(term.parameterName) - case EmptyIsNull => + case EmptyIsNull => new MethodCallExpr( new MethodCallExpr( new MethodCallExpr( @@ -1262,7 +1262,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T for { dtoClassType <- safeParseClassOrInterfaceType(clsName) - parentOpt <- (parentsWithDiscriminators, parents) match { + parentOpt <- (parentsWithDiscriminators, parents) match { case _ if parentsWithDiscriminators.length > 1 => Target.raiseUserError[Option[SuperClass[JavaLanguage]]]( s"${clsName} requires unsupported multiple inheritance due to multiple parents with discriminators (${parentsWithDiscriminators.map(_.clsName).mkString(", ")})" @@ -1305,7 +1305,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T ) .flatMap[Expression] { case expr: Expression => Target.pure(expr) - case node => + case node => Target.raiseError( RuntimeFailure(s"BUG: JacksonHelpers.discriminatorExpression() returned a ${node.getClass.getSimpleName} when we need an Expression") ) @@ -1627,7 +1627,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T } builderBuildTerms = withoutDiscriminators(parentTerms ++ terms) - _ = builderClass + _ = builderClass .addMethod("build", PUBLIC) .setType(clsName) .setBody( @@ -1735,7 +1735,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T expressionDefaultValue <- (defaultValue match { case Some(e: Expression) => Target.pure(Some(e)) - case Some(_) => + case Some(_) => Target.log.warning(s"Can't generate default value for class $clsName and property $name.") >> Target.pure(None) case None => Target.pure(None) }): Target[Option[Expression]] @@ -1802,7 +1802,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T for { result <- arr match { case Right(core.Resolved(tpe, dep, default, _)) => Target.pure(tpe) - case Left(core.Deferred(tpeName)) => + case Left(core.Deferred(tpeName)) => Target.fromOption(lookupTypeName(tpeName, concreteTypes), UserError(s"Unresolved reference ${tpeName}")) case Left(core.DeferredArray(tpeName, containerTpe)) => lookupTypeName(tpeName, concreteTypes) @@ -1865,7 +1865,7 @@ class JacksonGenerator private (implicit Cl: CollectionsLibTerms[JavaLanguage, T parentParamNames = parentParams.map(_.name.value) (parentRequiredTerms, parentOptionalTerms) = sortParams(parentParams) parentTerms = parentRequiredTerms ++ parentOptionalTerms - params = parents.filterNot(parent => parentOpt.contains(parent)).flatMap(_.params) ++ selfParams.filterNot(param => + params = parents.filterNot(parent => parentOpt.contains(parent)).flatMap(_.params) ++ selfParams.filterNot(param => parentParamNames.contains(param.term.getName.getIdentifier) ) (requiredTerms, optionalTerms) = sortParams(params) diff --git a/modules/java-support/src/main/scala/dev/guardrail/generators/java/syntax/Java.scala b/modules/java-support/src/main/scala/dev/guardrail/generators/java/syntax/Java.scala index e1f5ccd467..6de5bbc56c 100644 --- a/modules/java-support/src/main/scala/dev/guardrail/generators/java/syntax/Java.scala +++ b/modules/java-support/src/main/scala/dev/guardrail/generators/java/syntax/Java.scala @@ -72,7 +72,7 @@ package object syntax { case t: com.github.javaparser.ParseProblemException => val problems = t.getProblems().asScala.toVector val msgSeparator = if (problems.length > 1) "\n" else " " - val msgs = problems + val msgs = problems .map(problem => problem.getCause.asScala .flatMap { @@ -92,7 +92,7 @@ package object syntax { val msg = msgs match { case Vector() => "\n" + t.getMessage() case Vector(msg) => msg - case rest => + case rest => rest.zipWithIndex .map { case (msg, idx) => s"""Problem ${idx + 1}: @@ -283,7 +283,7 @@ package object syntax { .replaceAll("^_+", "") .replaceAll("_+$", "") - def escapeReservedWord: String = if (reservedWords.contains(s)) s + "_" else s + def escapeReservedWord: String = if (reservedWords.contains(s)) s + "_" else s def unescapeReservedWord: String = if (s.endsWith("_")) { val prefix = s.substring(0, s.length - 1) diff --git a/modules/java-support/src/main/scala/dev/guardrail/java/helpers/ResponseHelpers.scala b/modules/java-support/src/main/scala/dev/guardrail/java/helpers/ResponseHelpers.scala index 52a2b6a9f5..f82121b1e5 100644 --- a/modules/java-support/src/main/scala/dev/guardrail/java/helpers/ResponseHelpers.scala +++ b/modules/java-support/src/main/scala/dev/guardrail/java/helpers/ResponseHelpers.scala @@ -71,7 +71,7 @@ object ResponseHelpers { def checkMatch(matching: List[String], headsToCheck: List[Option[String]], restOfHeads: List[List[String]]): List[String] = headsToCheck match { - case Nil => matching + case Nil => matching case x :: xs => x.fold(matching) { first => if (xs.forall(_.contains(first))) { diff --git a/modules/java-support/src/main/scala/dev/guardrail/terms/collections/JavaStdLibCollections.scala b/modules/java-support/src/main/scala/dev/guardrail/terms/collections/JavaStdLibCollections.scala index 73d24560da..0fa4786c39 100644 --- a/modules/java-support/src/main/scala/dev/guardrail/terms/collections/JavaStdLibCollections.scala +++ b/modules/java-support/src/main/scala/dev/guardrail/terms/collections/JavaStdLibCollections.scala @@ -75,7 +75,7 @@ trait JavaStdLibCollections extends CollectionsAbstraction[JavaLanguage] { } override implicit val listInstances: ListF[JavaLanguage] = new ListF[JavaLanguage] { - override def liftType(tpe: Type): Type = StaticJavaParser.parseClassOrInterfaceType("java.util.List").setTypeArguments(tpe) + override def liftType(tpe: Type): Type = StaticJavaParser.parseClassOrInterfaceType("java.util.List").setTypeArguments(tpe) override def isType(tpe: Type): Boolean = isContainerOfType(tpe, "java.util", "List") || isContainerOfType(tpe, "java.util", "List") @@ -179,7 +179,7 @@ trait JavaStdLibCollections extends CollectionsAbstraction[JavaLanguage] { } override implicit val futureInstances: FutureF[JavaLanguage] = new FutureF[JavaLanguage] { - override def liftType(tpe: Type): Type = StaticJavaParser.parseClassOrInterfaceType("java.util.concurrent.CompletionStage").setTypeArguments(tpe) + override def liftType(tpe: Type): Type = StaticJavaParser.parseClassOrInterfaceType("java.util.concurrent.CompletionStage").setTypeArguments(tpe) override def isType(tpe: Type): Boolean = isContainerOfType(tpe, "java.util.concurrent", "CompletionStage") || isContainerOfType(tpe, "java.util.concurrent", "CompletableFuture") @@ -274,8 +274,8 @@ trait JavaStdLibCollections extends CollectionsAbstraction[JavaLanguage] { override def failedFuture[From <: Expression, A, X <: Throwable]( fx: TermHolder[JavaLanguage, From, X] )(implicit clsA: ClassTag[A]): TermHolder[JavaLanguage, Expression, Future[A]] = { - val resultType = typeFromClass(clsA.runtimeClass) - val completionStageResultType = StaticJavaParser.parseClassOrInterfaceType("java.util.concurrent.CompletionStage").setTypeArguments(resultType) + val resultType = typeFromClass(clsA.runtimeClass) + val completionStageResultType = StaticJavaParser.parseClassOrInterfaceType("java.util.concurrent.CompletionStage").setTypeArguments(resultType) val supplierCompletionStageResultType = StaticJavaParser.parseClassOrInterfaceType("java.util.function.Supplier").setTypeArguments(completionStageResultType) val completableFutureType = StaticJavaParser.parseClassOrInterfaceType("java.util.concurrent.CompletableFuture") @@ -359,7 +359,7 @@ trait JavaStdLibCollections extends CollectionsAbstraction[JavaLanguage] { lambda.getBody match { case bs: BlockStmt => bs case es: ExpressionStmt => new BlockStmt(new NodeList(es)) - case other => + case other => throw new IllegalStateException( s"This shouldn't be possible: LambdaExpr contains a ${other.getClass}, but only BlockStmt and ExpressionStmt are valid" ) diff --git a/modules/java-support/src/test/scala/tests/generators/helpers/JacksonHelpersTest.scala b/modules/java-support/src/test/scala/tests/generators/helpers/JacksonHelpersTest.scala index 19c0f5a2ab..7840292cac 100644 --- a/modules/java-support/src/test/scala/tests/generators/helpers/JacksonHelpersTest.scala +++ b/modules/java-support/src/test/scala/tests/generators/helpers/JacksonHelpersTest.scala @@ -131,12 +131,10 @@ class JacksonHelpersTest extends AnyFreeSpec with Matchers { intercept[NoSuchElementException](discriminatorExpression("3424.3123", "number", Some("foobaz")).value) } - "random types" in { + "random types" in intercept[NoSuchElementException](discriminatorExpression("asdsd", "foobaz").value) - } - "non-matching string types" in { + "non-matching string types" in intercept[NoSuchElementException](discriminatorExpression("asdasd", "integer", Some("int32")).value) - } } } diff --git a/modules/microsite/src/main/scala/DocsHelpers.scala b/modules/microsite/src/main/scala/DocsHelpers.scala index 455b11a731..f3e93578ba 100644 --- a/modules/microsite/src/main/scala/DocsHelpers.scala +++ b/modules/microsite/src/main/scala/DocsHelpers.scala @@ -72,7 +72,7 @@ object DocsHelpers { case q"def ${name}(...${args}): $tpe = $_" if !firstName.contains(name) => q"def ${name}(...${args}): $tpe = ???" } val matched = (basePath ++ firstDefn ++ rest).toList - val c = q"""class ${name}(...${args}) { + val c = q"""class ${name}(...${args}) { ..${matched} }""" @@ -137,7 +137,7 @@ object DocsHelpers { case q"def ${name}(...${args}): $tpe = $_" if !firstName.contains(name) => q"def ${name}(...${args}): $tpe = ???" } val matched = (basePath ++ firstDefn ++ rest).toList - val c = q"""class ${name}[..${tparms}](...${args}) { + val c = q"""class ${name}[..${tparms}](...${args}) { ..${matched} }""" diff --git a/modules/sample-akkaHttp/src/test/scala/core/AkkaHttp/AkkaHttpFullTracerTest.scala b/modules/sample-akkaHttp/src/test/scala/core/AkkaHttp/AkkaHttpFullTracerTest.scala index f2992fc418..6f74c12ab0 100644 --- a/modules/sample-akkaHttp/src/test/scala/core/AkkaHttp/AkkaHttpFullTracerTest.scala +++ b/modules/sample-akkaHttp/src/test/scala/core/AkkaHttp/AkkaHttpFullTracerTest.scala @@ -69,7 +69,7 @@ class AkkaHttpFullTracerTest extends AnyFunSuite with Matchers with EitherValues UsersResource.routes( new UsersHandler { // ... using the "Address" server explicitly in the addressesClient - val addressesClient = AddressesClient.httpClient(server2) + val addressesClient = AddressesClient.httpClient(server2) def getUser(respond: UsersResource.GetUserResponse.type)(id: String)(traceBuilder: TraceBuilder) = addressesClient .getAddress(traceBuilder, "addressId") diff --git a/modules/sample-akkaHttp/src/test/scala/core/AkkaHttp/AkkaHttpRoundTripTest.scala b/modules/sample-akkaHttp/src/test/scala/core/AkkaHttp/AkkaHttpRoundTripTest.scala index 4b1e756cf5..e8d5cf0dcb 100644 --- a/modules/sample-akkaHttp/src/test/scala/core/AkkaHttp/AkkaHttpRoundTripTest.scala +++ b/modules/sample-akkaHttp/src/test/scala/core/AkkaHttp/AkkaHttpRoundTripTest.scala @@ -67,7 +67,7 @@ class AkkaHttpRoundTripTest extends AnyFunSuite with Matchers with EitherValues def getPetById(respond: PetResource.GetPetByIdResponse.type)(petId: Long) = ??? def updatePet(respond: PetResource.UpdatePetResponse.type)(body: sdefs.Pet) = ??? def updatePetWithForm(respond: PetResource.UpdatePetWithFormResponse.type)(petId: Long, name: Option[String] = None, status: Option[String] = None) = ??? - def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = + def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = java.io.File.createTempFile("download_", ".dat", new java.io.File("/tmp")) def uploadFile(respond: PetResource.UploadFileResponse.type)( petId: examples.support.PositiveLong, @@ -129,7 +129,7 @@ class AkkaHttpRoundTripTest extends AnyFunSuite with Matchers with EitherValues def getPetById(respond: PetResource.GetPetByIdResponse.type)(petId: Long) = ??? def updatePet(respond: PetResource.UpdatePetResponse.type)(body: sdefs.Pet) = ??? def updatePetWithForm(respond: PetResource.UpdatePetWithFormResponse.type)(petId: Long, name: Option[String] = None, status: Option[String] = None) = ??? - def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = + def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = java.io.File.createTempFile("download_", ".dat", new java.io.File("/tmp")) def uploadFile(respond: PetResource.UploadFileResponse.type)( petId: examples.support.PositiveLong, @@ -177,7 +177,7 @@ class AkkaHttpRoundTripTest extends AnyFunSuite with Matchers with EitherValues def getPetById(respond: PetResource.GetPetByIdResponse.type)(petId: Long) = ??? def updatePet(respond: PetResource.UpdatePetResponse.type)(body: sdefs.Pet) = ??? def updatePetWithForm(respond: PetResource.UpdatePetWithFormResponse.type)(petId: Long, name: Option[String] = None, status: Option[String] = None) = ??? - def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = + def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = java.io.File.createTempFile("download_", ".dat", new java.io.File("/tmp")) def uploadFile(respond: PetResource.UploadFileResponse.type)( petId: examples.support.PositiveLong, @@ -203,7 +203,7 @@ class AkkaHttpRoundTripTest extends AnyFunSuite with Matchers with EitherValues test("round-trip: Raw type parameters") { val petId: Long = 123L val apiKey: String = "foobar" - val httpClient = Route.toFunction(PetResource.routes(new PetHandler { + val httpClient = Route.toFunction(PetResource.routes(new PetHandler { def deletePet(respond: PetResource.DeletePetResponse.type)( _petId: Long, includeChildren: Option[Boolean], @@ -221,7 +221,7 @@ class AkkaHttpRoundTripTest extends AnyFunSuite with Matchers with EitherValues def getPetById(respond: PetResource.GetPetByIdResponse.type)(petId: Long) = ??? def updatePet(respond: PetResource.UpdatePetResponse.type)(body: sdefs.Pet) = ??? def updatePetWithForm(respond: PetResource.UpdatePetWithFormResponse.type)(petId: Long, name: Option[String] = None, status: Option[String] = None) = ??? - def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = + def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = java.io.File.createTempFile("download_", ".dat", new java.io.File("/tmp")) def uploadFile(respond: PetResource.UploadFileResponse.type)( petId: examples.support.PositiveLong, @@ -252,7 +252,7 @@ class AkkaHttpRoundTripTest extends AnyFunSuite with Matchers with EitherValues test("round-trip: File uploads") { val petId: Long = 123L val apiKey: String = "foobar" - val httpClient = Route.toFunction(PetResource.routes(new PetHandler { + val httpClient = Route.toFunction(PetResource.routes(new PetHandler { def addPet(respond: PetResource.AddPetResponse.type)(body: sdefs.Pet) = ??? def deletePet( respond: PetResource.DeletePetResponse.type @@ -263,7 +263,7 @@ class AkkaHttpRoundTripTest extends AnyFunSuite with Matchers with EitherValues def getPetById(respond: PetResource.GetPetByIdResponse.type)(petId: Long) = ??? def updatePet(respond: PetResource.UpdatePetResponse.type)(body: sdefs.Pet) = ??? def updatePetWithForm(respond: PetResource.UpdatePetWithFormResponse.type)(petId: Long, name: Option[String] = None, status: Option[String] = None) = ??? - def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = + def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = java.io.File.createTempFile("download_", ".dat", new java.io.File("/tmp")) def uploadFile(respond: PetResource.UploadFileResponse.type)( petId: examples.support.PositiveLong, diff --git a/modules/sample-akkaHttp/src/test/scala/core/issues/Issue143.scala b/modules/sample-akkaHttp/src/test/scala/core/issues/Issue143.scala index d5aebd55f3..b63a2fa302 100644 --- a/modules/sample-akkaHttp/src/test/scala/core/issues/Issue143.scala +++ b/modules/sample-akkaHttp/src/test/scala/core/issues/Issue143.scala @@ -26,7 +26,7 @@ class Issue143 extends AnyFunSuite with Matchers with EitherValues with ScalaFut test("Ensure that failed uploads are cleaned up afterwards") { val tempDest = File.createTempFile("guardrail.", ".dat") - val route = Resource.routes(new Handler { + val route = Resource.routes(new Handler { def uploadFile( respond: Resource.UploadFileResponse.type )(file: (File, Option[String], akka.http.scaladsl.model.ContentType)): Future[Resource.UploadFileResponse] = @@ -38,7 +38,7 @@ class Issue143 extends AnyFunSuite with Matchers with EitherValues with ScalaFut val chunks = 1000 val data = "foo" val contentLength = chunks * data.length - val req = Post("/file").withEntity( + val req = Post("/file").withEntity( Multipart .FormData( Multipart.FormData.BodyPart( diff --git a/modules/sample-akkaHttp/src/test/scala/core/issues/Issue325.scala b/modules/sample-akkaHttp/src/test/scala/core/issues/Issue325.scala index 543dcbe68e..bcd9f93c18 100644 --- a/modules/sample-akkaHttp/src/test/scala/core/issues/Issue325.scala +++ b/modules/sample-akkaHttp/src/test/scala/core/issues/Issue325.scala @@ -133,7 +133,7 @@ class Issue325Suite extends AnyFunSuite with Matchers with EitherValues with Sca sreq <- req.toStrict(Duration(5, SECONDS)) chunks <- Unmarshaller.multipartFormDataUnmarshaller.apply(sreq.entity) elements <- chunks.parts.runFold(List.empty[Multipart.FormData.BodyPart])(_ :+ _) - res <- elements.groupBy(_.name).toList.traverse { case (name, chunks) => + res <- elements.groupBy(_.name).toList.traverse { case (name, chunks) => for { chunks <- chunks.traverse[Future, Multipart.FormData.BodyPart.Strict](_.toStrict(Duration(5, SECONDS))) } yield p(name, chunks) diff --git a/modules/sample-akkaHttp/src/test/scala/generators/AkkaHttp/RoundTrip/AkkaHttpCustomHeadersTest.scala b/modules/sample-akkaHttp/src/test/scala/generators/AkkaHttp/RoundTrip/AkkaHttpCustomHeadersTest.scala index 64896529da..4ad7729f9d 100644 --- a/modules/sample-akkaHttp/src/test/scala/generators/AkkaHttp/RoundTrip/AkkaHttpCustomHeadersTest.scala +++ b/modules/sample-akkaHttp/src/test/scala/generators/AkkaHttp/RoundTrip/AkkaHttpCustomHeadersTest.scala @@ -26,7 +26,7 @@ class AkkaHttpCustomHeadersTest extends AnyFlatSpec with Matchers with ScalaFutu it should "round-trip encoded values" in { implicit val as = ActorSystem() - val client = Client.httpClient(Route.toFunction(Resource.routes(new Handler { + val client = Client.httpClient(Route.toFunction(Resource.routes(new Handler { def getFoo(respond: Resource.GetFooResponse.type)( header: String, longHeader: Long, diff --git a/modules/sample-akkaHttpJackson/src/test/scala/core/AkkaHttpJackson/AkkaHttpFullTracerTest.scala b/modules/sample-akkaHttpJackson/src/test/scala/core/AkkaHttpJackson/AkkaHttpFullTracerTest.scala index 879c71e452..95310c678d 100644 --- a/modules/sample-akkaHttpJackson/src/test/scala/core/AkkaHttpJackson/AkkaHttpFullTracerTest.scala +++ b/modules/sample-akkaHttpJackson/src/test/scala/core/AkkaHttpJackson/AkkaHttpFullTracerTest.scala @@ -78,7 +78,7 @@ class AkkaHttpFullTracerTest UsersResource.routes( new UsersHandler { // ... using the "Address" server explicitly in the addressesClient - val addressesClient = AddressesClient.httpClient(server2) + val addressesClient = AddressesClient.httpClient(server2) def getUser(respond: UsersResource.GetUserResponse.type)(id: String)(traceBuilder: TraceBuilder) = addressesClient .getAddress(traceBuilder, "addressId") diff --git a/modules/sample-akkaHttpJackson/src/test/scala/core/AkkaHttpJackson/AkkaHttpJacksonRoundTripTest.scala b/modules/sample-akkaHttpJackson/src/test/scala/core/AkkaHttpJackson/AkkaHttpJacksonRoundTripTest.scala index 584505de49..b955648125 100644 --- a/modules/sample-akkaHttpJackson/src/test/scala/core/AkkaHttpJackson/AkkaHttpJacksonRoundTripTest.scala +++ b/modules/sample-akkaHttpJackson/src/test/scala/core/AkkaHttpJackson/AkkaHttpJacksonRoundTripTest.scala @@ -56,7 +56,7 @@ class AkkaHttpJacksonRoundTripTest extends AnyFunSuite with TestImplicits with M def getPetById(respond: PetResource.GetPetByIdResponse.type)(petId: Long) = ??? def updatePet(respond: PetResource.UpdatePetResponse.type)(body: sdefs.Pet) = ??? def updatePetWithForm(respond: PetResource.UpdatePetWithFormResponse.type)(petId: Long, name: Option[String] = None, status: Option[String] = None) = ??? - def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = + def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = java.io.File.createTempFile("download_", ".dat", new java.io.File("/tmp")) def uploadFile(respond: PetResource.UploadFileResponse.type)( petId: examples.support.PositiveLong, @@ -118,7 +118,7 @@ class AkkaHttpJacksonRoundTripTest extends AnyFunSuite with TestImplicits with M def getPetById(respond: PetResource.GetPetByIdResponse.type)(petId: Long) = ??? def updatePet(respond: PetResource.UpdatePetResponse.type)(body: sdefs.Pet) = ??? def updatePetWithForm(respond: PetResource.UpdatePetWithFormResponse.type)(petId: Long, name: Option[String] = None, status: Option[String] = None) = ??? - def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = + def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = java.io.File.createTempFile("download_", ".dat", new java.io.File("/tmp")) def uploadFile(respond: PetResource.UploadFileResponse.type)( petId: examples.support.PositiveLong, @@ -166,7 +166,7 @@ class AkkaHttpJacksonRoundTripTest extends AnyFunSuite with TestImplicits with M def getPetById(respond: PetResource.GetPetByIdResponse.type)(petId: Long) = ??? def updatePet(respond: PetResource.UpdatePetResponse.type)(body: sdefs.Pet) = ??? def updatePetWithForm(respond: PetResource.UpdatePetWithFormResponse.type)(petId: Long, name: Option[String] = None, status: Option[String] = None) = ??? - def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = + def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = java.io.File.createTempFile("download_", ".dat", new java.io.File("/tmp")) def uploadFile(respond: PetResource.UploadFileResponse.type)( petId: examples.support.PositiveLong, @@ -192,7 +192,7 @@ class AkkaHttpJacksonRoundTripTest extends AnyFunSuite with TestImplicits with M test("round-trip: Raw type parameters") { val petId: Long = 123L val apiKey: String = "foobar" - val httpClient = Route.toFunction(PetResource.routes(new PetHandler { + val httpClient = Route.toFunction(PetResource.routes(new PetHandler { def deletePet(respond: PetResource.DeletePetResponse.type)( _petId: Long, includeChildren: Option[Boolean], @@ -210,7 +210,7 @@ class AkkaHttpJacksonRoundTripTest extends AnyFunSuite with TestImplicits with M def getPetById(respond: PetResource.GetPetByIdResponse.type)(petId: Long) = ??? def updatePet(respond: PetResource.UpdatePetResponse.type)(body: sdefs.Pet) = ??? def updatePetWithForm(respond: PetResource.UpdatePetWithFormResponse.type)(petId: Long, name: Option[String] = None, status: Option[String] = None) = ??? - def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = + def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = java.io.File.createTempFile("download_", ".dat", new java.io.File("/tmp")) def uploadFile(respond: PetResource.UploadFileResponse.type)( petId: examples.support.PositiveLong, @@ -241,7 +241,7 @@ class AkkaHttpJacksonRoundTripTest extends AnyFunSuite with TestImplicits with M test("round-trip: File uploads") { val petId: Long = 123L val apiKey: String = "foobar" - val httpClient = Route.toFunction(PetResource.routes(new PetHandler { + val httpClient = Route.toFunction(PetResource.routes(new PetHandler { def addPet(respond: PetResource.AddPetResponse.type)(body: sdefs.Pet) = ??? def deletePet( respond: PetResource.DeletePetResponse.type @@ -252,7 +252,7 @@ class AkkaHttpJacksonRoundTripTest extends AnyFunSuite with TestImplicits with M def getPetById(respond: PetResource.GetPetByIdResponse.type)(petId: Long) = ??? def updatePet(respond: PetResource.UpdatePetResponse.type)(body: sdefs.Pet) = ??? def updatePetWithForm(respond: PetResource.UpdatePetWithFormResponse.type)(petId: Long, name: Option[String] = None, status: Option[String] = None) = ??? - def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = + def uploadFileMapFileField(fieldName: String, fileName: Option[String], contentType: ContentType) = java.io.File.createTempFile("download_", ".dat", new java.io.File("/tmp")) def uploadFile(respond: PetResource.UploadFileResponse.type)( petId: examples.support.PositiveLong, diff --git a/modules/sample-akkaHttpJackson/src/test/scala/core/issues/Issue143.scala b/modules/sample-akkaHttpJackson/src/test/scala/core/issues/Issue143.scala index 27a93891ab..88c1fcc724 100644 --- a/modules/sample-akkaHttpJackson/src/test/scala/core/issues/Issue143.scala +++ b/modules/sample-akkaHttpJackson/src/test/scala/core/issues/Issue143.scala @@ -25,7 +25,7 @@ class Issue143 extends AnyFunSuite with TestImplicits with Matchers with EitherV test("Ensure that failed uploads are cleaned up afterwards") { val tempDest = File.createTempFile("guardrail.", ".dat") - val route = Resource.routes(new Handler { + val route = Resource.routes(new Handler { def uploadFile( respond: Resource.UploadFileResponse.type )(file: (File, Option[String], akka.http.scaladsl.model.ContentType)): Future[Resource.UploadFileResponse] = @@ -37,7 +37,7 @@ class Issue143 extends AnyFunSuite with TestImplicits with Matchers with EitherV val chunks = 1000 val data = "foo" val contentLength = chunks * data.length - val req = Post("/file").withEntity( + val req = Post("/file").withEntity( Multipart .FormData( Multipart.FormData.BodyPart( diff --git a/modules/sample-akkaHttpJackson/src/test/scala/core/issues/Issue325.scala b/modules/sample-akkaHttpJackson/src/test/scala/core/issues/Issue325.scala index c47b9bac39..8fb3c4bd29 100644 --- a/modules/sample-akkaHttpJackson/src/test/scala/core/issues/Issue325.scala +++ b/modules/sample-akkaHttpJackson/src/test/scala/core/issues/Issue325.scala @@ -133,7 +133,7 @@ class Issue325Suite extends AnyFunSuite with TestImplicits with Matchers with Ei sreq <- req.toStrict(Duration(5, SECONDS)) chunks <- Unmarshaller.multipartFormDataUnmarshaller.apply(sreq.entity) elements <- chunks.parts.runFold(List.empty[Multipart.FormData.BodyPart])(_ :+ _) - res <- elements.groupBy(_.name).toList.traverse { case (name, chunks) => + res <- elements.groupBy(_.name).toList.traverse { case (name, chunks) => for { chunks <- chunks.traverse[Future, Multipart.FormData.BodyPart.Strict](_.toStrict(Duration(5, SECONDS))) } yield p(name, chunks) diff --git a/modules/sample-akkaHttpJackson/src/test/scala/generators/AkkaHttp/RoundTrip/AkkaHttpCustomHeadersTest.scala b/modules/sample-akkaHttpJackson/src/test/scala/generators/AkkaHttp/RoundTrip/AkkaHttpCustomHeadersTest.scala index 12454bd24c..90d7646237 100644 --- a/modules/sample-akkaHttpJackson/src/test/scala/generators/AkkaHttp/RoundTrip/AkkaHttpCustomHeadersTest.scala +++ b/modules/sample-akkaHttpJackson/src/test/scala/generators/AkkaHttp/RoundTrip/AkkaHttpCustomHeadersTest.scala @@ -29,7 +29,7 @@ class AkkaHttpCustomHeadersTest extends AnyFlatSpec with TestImplicits with Matc it should "round-trip encoded values" in { implicit val as = ActorSystem() - val client = Client.httpClient(Route.toFunction(Resource.routes(new Handler { + val client = Client.httpClient(Route.toFunction(Resource.routes(new Handler { def getFoo(respond: Resource.GetFooResponse.type)( header: String, longHeader: Long, diff --git a/modules/sample-dropwizard/src/test/scala/core/Jackson/Issue389.scala b/modules/sample-dropwizard/src/test/scala/core/Jackson/Issue389.scala index 5d1b769006..b6a33eece6 100644 --- a/modules/sample-dropwizard/src/test/scala/core/Jackson/Issue389.scala +++ b/modules/sample-dropwizard/src/test/scala/core/Jackson/Issue389.scala @@ -11,7 +11,7 @@ import com.fasterxml.jackson.datatype.jdk8.Jdk8Module class Issue389 extends AnyFreeSpec with Matchers { "x-jvm-type in Array should use the correct type in the array" in { val mapper = new ObjectMapper().registerModule(new Jdk8Module()) - val foo = new Foo.Builder() + val foo = new Foo.Builder() .withCustomArray( (1 until 5) .map(new Bar.Builder().withA(_).build()) @@ -25,7 +25,7 @@ class Issue389 extends AnyFreeSpec with Matchers { "x-jvm-type in Map should use the correct type in the map" in { val mapper = new ObjectMapper().registerModule(new Jdk8Module()) - val foo = new Foo.Builder() + val foo = new Foo.Builder() .withCustomMap( (1 until 5) .map(x => x.toString() -> new Bar.Builder().withA(x).build()) diff --git a/modules/sample-dropwizard/src/test/scala/core/Jackson/JacksonBuilderParamTest.scala b/modules/sample-dropwizard/src/test/scala/core/Jackson/JacksonBuilderParamTest.scala index 7b2f126f87..4bd01e6c6d 100644 --- a/modules/sample-dropwizard/src/test/scala/core/Jackson/JacksonBuilderParamTest.scala +++ b/modules/sample-dropwizard/src/test/scala/core/Jackson/JacksonBuilderParamTest.scala @@ -6,12 +6,11 @@ import org.scalatest.freespec.AnyFreeSpec import org.scalatest.matchers.should.Matchers class JacksonBuilderParamTest extends AnyFreeSpec with Matchers { - "POJO builders should not accept nulls for required params" in { + "POJO builders should not accept nulls for required params" in assertThrows[NullPointerException] { new Pet.Builder(null: String) .build() } - } "POJO builders should accept nulls for the value variant for optional params" in { val pet = new Pet.Builder("fluffy") @@ -20,11 +19,10 @@ class JacksonBuilderParamTest extends AnyFreeSpec with Matchers { pet.getCategory shouldBe Optional.empty } - "POJO builders should not accept nulls for the Optional<> variant for optional params" in { + "POJO builders should not accept nulls for the Optional<> variant for optional params" in assertThrows[NullPointerException] { new Pet.Builder("fluffy") .withCategory(null: Optional[Category]) .build() } - } } diff --git a/modules/sample-dropwizard/src/test/scala/core/Jackson/JacksonNestedTest.scala b/modules/sample-dropwizard/src/test/scala/core/Jackson/JacksonNestedTest.scala index a7b4bbe8fc..36bea0a9a1 100644 --- a/modules/sample-dropwizard/src/test/scala/core/Jackson/JacksonNestedTest.scala +++ b/modules/sample-dropwizard/src/test/scala/core/Jackson/JacksonNestedTest.scala @@ -7,13 +7,12 @@ import polymorphismNested.client.dropwizard.definitions.{ A, B, C, TestResponse class JacksonNestedTest extends AnyFreeSpec with Matchers { "Jackson nested schemas" - { - "Should have the nested objects in the right place" in { + "Should have the nested objects in the right place" in new TestResponse.Builder() .withEnum1(A.Enum1.B) .withEnum2(B.Enum2.D) .withObj(new C.Obj.Builder().withValue("foo").build()) .build() - } "Should have nested classes as public static members" in { classOf[C.Obj].getModifiers & Modifier.PUBLIC mustBe Modifier.PUBLIC diff --git a/modules/sample-dropwizardScala/src/test/scala/core/Dropwizard/DropwizardMultiPartTest.scala b/modules/sample-dropwizardScala/src/test/scala/core/Dropwizard/DropwizardMultiPartTest.scala index b0d8564542..70ba2714d0 100644 --- a/modules/sample-dropwizardScala/src/test/scala/core/Dropwizard/DropwizardMultiPartTest.scala +++ b/modules/sample-dropwizardScala/src/test/scala/core/Dropwizard/DropwizardMultiPartTest.scala @@ -34,7 +34,7 @@ class DropwizardMultiPartTest extends AnyFreeSpec with ResourceTestSupport with .build() "Multi-part form data with jsr310 date-times works" in { - val now: OffsetDateTime = OffsetDateTime.now.withOffsetSameInstant(ZoneOffset.UTC) + val now: OffsetDateTime = OffsetDateTime.now.withOffsetSameInstant(ZoneOffset.UTC) val multiPart: FormDataMultiPart = new FormDataMultiPart() .field("id", "42") .field("date", now.toString) diff --git a/modules/sample-dropwizardScala/src/test/scala/core/Dropwizard/DropwizardResourceTest.scala b/modules/sample-dropwizardScala/src/test/scala/core/Dropwizard/DropwizardResourceTest.scala index 7082033fb7..921f0586de 100644 --- a/modules/sample-dropwizardScala/src/test/scala/core/Dropwizard/DropwizardResourceTest.scala +++ b/modules/sample-dropwizardScala/src/test/scala/core/Dropwizard/DropwizardResourceTest.scala @@ -25,12 +25,12 @@ object DropwizardResourceTest { override def createUser(respond: UserResource.CreateUserResponse.type)(body: User) = respond.OK.pure[Future] override def createUsersWithArrayInput(respond: UserResource.CreateUsersWithArrayInputResponse.type)(body: Vector[User]) = respond.OK.pure[Future] override def createUsersWithListInput(respond: UserResource.CreateUsersWithListInputResponse.type)(body: Vector[User]) = respond.OK.pure[Future] - override def loginUser(respond: UserResource.LoginUserResponse.type)(username: String, password: String) = + override def loginUser(respond: UserResource.LoginUserResponse.type)(username: String, password: String) = (username, password) match { case (USERNAME, PASSWORD) => respond.OK(TOKEN).pure[Future] case _ => respond.BadRequest.pure[Future] } - override def logoutUser(respond: UserResource.LogoutUserResponse.type)() = respond.OK.pure[Future] + override def logoutUser(respond: UserResource.LogoutUserResponse.type)() = respond.OK.pure[Future] override def getUserByName(respond: UserResource.GetUserByNameResponse.type)(username: String) = username match { case USERNAME => respond.OK(USER).pure[Future] case " " => respond.BadRequest.pure[Future] diff --git a/modules/sample-dropwizardVavr/src/test/scala/core/JacksonVavr/JacksonBuilderParamTest.scala b/modules/sample-dropwizardVavr/src/test/scala/core/JacksonVavr/JacksonBuilderParamTest.scala index 138eca9cda..203f27f73a 100644 --- a/modules/sample-dropwizardVavr/src/test/scala/core/JacksonVavr/JacksonBuilderParamTest.scala +++ b/modules/sample-dropwizardVavr/src/test/scala/core/JacksonVavr/JacksonBuilderParamTest.scala @@ -6,12 +6,11 @@ import org.scalatest.freespec.AnyFreeSpec import org.scalatest.matchers.should.Matchers class JacksonBuilderParamTest extends AnyFreeSpec with Matchers { - "POJO builders should not accept nulls for required params" in { + "POJO builders should not accept nulls for required params" in assertThrows[NullPointerException] { new Pet.Builder(null: String) .build() } - } "POJO builders should accept nulls for the value variant for optional params" in { val pet = new Pet.Builder("fluffy") @@ -20,11 +19,10 @@ class JacksonBuilderParamTest extends AnyFreeSpec with Matchers { pet.getCategory shouldBe VavrOption.none } - "POJO builders should not accept nulls for the Optional<> variant for optional params" in { + "POJO builders should not accept nulls for the Optional<> variant for optional params" in assertThrows[NullPointerException] { new Pet.Builder("fluffy") .withCategory(null: VavrOption[Category]) .build() } - } } diff --git a/modules/sample-dropwizardVavr/src/test/scala/core/JacksonVavr/JacksonNestedTest.scala b/modules/sample-dropwizardVavr/src/test/scala/core/JacksonVavr/JacksonNestedTest.scala index 4c40bb94d5..28e874ece1 100644 --- a/modules/sample-dropwizardVavr/src/test/scala/core/JacksonVavr/JacksonNestedTest.scala +++ b/modules/sample-dropwizardVavr/src/test/scala/core/JacksonVavr/JacksonNestedTest.scala @@ -8,13 +8,12 @@ import polymorphismNested.client.dropwizardVavr.definitions.{ A, B, C, TestRespo class JacksonNestedTest extends AnyFreeSpec with Matchers { "Jackson nested schemas" - { - "Should have the nested objects in the right place" in { + "Should have the nested objects in the right place" in new TestResponse.Builder() .withEnum1(A.Enum1.B) .withEnum2(B.Enum2.D) .withObj(new C.Obj.Builder().withValue("foo").build()) .build() - } "Should have nested classes as public static members" in { classOf[C.Obj].getModifiers & Modifier.PUBLIC mustBe Modifier.PUBLIC diff --git a/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/Http4sDebugBodyTest.scala b/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/Http4sDebugBodyTest.scala index 3e3670496e..8cbc35ea13 100644 --- a/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/Http4sDebugBodyTest.scala +++ b/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/Http4sDebugBodyTest.scala @@ -44,8 +44,8 @@ class Http4sDebugBodyTest extends AnyFunSuite with Matchers with EitherValues wi "invalidSomething1" -> Json.fromInt(1), "something2" -> Json.fromString("something") ) - val request = sendRequest(server, invalidJson) - val actualResponse = request.use(_.pure[IO]).unsafeRunSync() + val request = sendRequest(server, invalidJson) + val actualResponse = request.use(_.pure[IO]).unsafeRunSync() val actualErrorMessages = Stream .resource(request) diff --git a/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/Http4sRoundTripTest.scala b/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/Http4sRoundTripTest.scala index e273bd91d9..65c392e621 100644 --- a/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/Http4sRoundTripTest.scala +++ b/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/Http4sRoundTripTest.scala @@ -200,7 +200,7 @@ class Http4sRoundTripTest extends AnyFunSuite with Matchers with EitherValues { test("round-trip: Raw type parameters") { val petId: Long = 123L val apiKey: String = "foobar" - val httpService = new PetResource().routes(new PetHandler[IO] { + val httpService = new PetResource().routes(new PetHandler[IO] { def deletePet(respond: DeletePetResponse.type)( _petId: Long, includeChildren: Option[Boolean], @@ -245,7 +245,7 @@ class Http4sRoundTripTest extends AnyFunSuite with Matchers with EitherValues { test("round-trip: File uploads") { val petId: Long = 123L val apiKey: String = "foobar" - val httpService = new PetResource().routes(new PetHandler[IO] { + val httpService = new PetResource().routes(new PetHandler[IO] { def addPet(respond: AddPetResponse.type)(body: sdefs.definitions.Pet) = ??? def deletePet( respond: DeletePetResponse.type diff --git a/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/authentication/Http4sCustomAuthenticationTest.scala b/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/authentication/Http4sCustomAuthenticationTest.scala index 1907f302ef..b17a5d49c1 100644 --- a/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/authentication/Http4sCustomAuthenticationTest.scala +++ b/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/authentication/Http4sCustomAuthenticationTest.scala @@ -99,7 +99,7 @@ class Http4sCustomAuthenticationTest extends AnyFunSuite with Matchers with Eith val authMiddleware = (config: NonEmptyList[NonEmptyMap[AuthSchemes, Set[String]]], _: AuthResource.AuthSchemes.AuthRequirement, _: Request[IO]) => IO.pure { - val c = config.toList.map(_.toSortedMap.toMap) + val c = config.toList.map(_.toSortedMap.toMap) val expected = List( Map(AuthSchemes.Basic -> Set("bar:basic"), AuthSchemes.Jwt -> Set("foo:read", "bar:write")), Map(AuthSchemes.ApiKey -> Set("bar:api"), AuthSchemes.SecretHeader -> Set("bar:admin")), diff --git a/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/authentication/Http4sSimpleAuthenticationTest.scala b/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/authentication/Http4sSimpleAuthenticationTest.scala index 7a99a083f4..7891a9b1be 100644 --- a/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/authentication/Http4sSimpleAuthenticationTest.scala +++ b/modules/sample-http4s-v0_22/src/test/scala/core/Http4s/authentication/Http4sSimpleAuthenticationTest.scala @@ -108,7 +108,7 @@ class Http4sSimpleAuthenticationTest extends AnyFunSuite with Matchers with Eith test("processing order: shortcut on the first 'or' success") { import AuthResource.AuthSchemes - val invoked = mutable.ArrayBuffer.empty[AuthSchemes] + val invoked = mutable.ArrayBuffer.empty[AuthSchemes] val authMiddleware: (AuthSchemes, Set[String], Request[IO]) => IO[Either[AuthResource.AuthError, AuthContext]] = { (authScheme, scopes, req) => invoked += authScheme authScheme match { @@ -129,7 +129,7 @@ class Http4sSimpleAuthenticationTest extends AnyFunSuite with Matchers with Eith test("processing order: shortcut on the first 'and' failure") { import AuthResource.AuthSchemes - val invoked = mutable.ArrayBuffer.empty[AuthSchemes] + val invoked = mutable.ArrayBuffer.empty[AuthSchemes] val authMiddleware: (AuthSchemes, Set[String], Request[IO]) => IO[Either[AuthResource.AuthError, AuthContext]] = { (authScheme, scopes, req) => invoked += authScheme authScheme match { diff --git a/modules/sample-http4s-v0_22/src/test/scala/core/issues/Issue148.scala b/modules/sample-http4s-v0_22/src/test/scala/core/issues/Issue148.scala index c782007099..7d5c0a3917 100644 --- a/modules/sample-http4s-v0_22/src/test/scala/core/issues/Issue148.scala +++ b/modules/sample-http4s-v0_22/src/test/scala/core/issues/Issue148.scala @@ -37,7 +37,7 @@ class Issue148Suite extends AnyFunSuite with Matchers with EitherValues with Sca IO.pure(respond.Accepted(Bar("bar"))) }) - val client = Client.fromHttpApp[IO](route.orNotFound) + val client = Client.fromHttpApp[IO](route.orNotFound) def failedResponseBody(req: Request[IO]): String = client .run(req) diff --git a/modules/sample-http4s-v0_22/src/test/scala/core/issues/Issue542.scala b/modules/sample-http4s-v0_22/src/test/scala/core/issues/Issue542.scala index 8308a41ff0..379bcf267e 100644 --- a/modules/sample-http4s-v0_22/src/test/scala/core/issues/Issue542.scala +++ b/modules/sample-http4s-v0_22/src/test/scala/core/issues/Issue542.scala @@ -57,7 +57,7 @@ class Issue542Suite extends AnyFunSuite with Matchers with EitherValues with Sca def staticClient: Http4sClient[IO] = { implicit val fooOkEncoder = jsonEncoderOf[IO, Foo] - val response = new Http4sDsl[IO] { + val response = new Http4sDsl[IO] { def route: HttpApp[IO] = Kleisli.liftF(Ok(Foo(Some(Base64String("foo".getBytes()))))) } Http4sClient.fromHttpApp[IO](response.route) diff --git a/modules/sample-http4s-v0_22/src/test/scala/generators/Http4s/Client/contentType/Http4sTextPlainTest.scala b/modules/sample-http4s-v0_22/src/test/scala/generators/Http4s/Client/contentType/Http4sTextPlainTest.scala index 6328e88345..68f0289182 100644 --- a/modules/sample-http4s-v0_22/src/test/scala/generators/Http4s/Client/contentType/Http4sTextPlainTest.scala +++ b/modules/sample-http4s-v0_22/src/test/scala/generators/Http4s/Client/contentType/Http4sTextPlainTest.scala @@ -63,7 +63,7 @@ class Http4sTextPlainTest extends AnyFunSuite with Matchers with EitherValues { test("Plain text should be emitted for present optional parameters") { val route: HttpRoutes[IO] = new FooResource[IO]().routes(new FooHandler[IO] { - def doFoo(respond: DoFooResponse.type)(body: String): IO[DoFooResponse] = ??? + def doFoo(respond: DoFooResponse.type)(body: String): IO[DoFooResponse] = ??? def doBar(respond: DoBarResponse.type)(body: Option[String]): IO[DoBarResponse] = if (body.contains("sample")) { IO.pure(respond.Created("response")) @@ -80,7 +80,7 @@ class Http4sTextPlainTest extends AnyFunSuite with Matchers with EitherValues { test("Plain text should be emitted for missing optional parameters") { val route: HttpRoutes[IO] = new FooResource[IO]().routes(new FooHandler[IO] { - def doFoo(respond: DoFooResponse.type)(body: String): IO[DoFooResponse] = ??? + def doFoo(respond: DoFooResponse.type)(body: String): IO[DoFooResponse] = ??? def doBar(respond: DoBarResponse.type)(body: Option[String]): IO[DoBarResponse] = if (body.isEmpty) { IO.pure(respond.Created("response")) diff --git a/modules/sample-http4s-v0_22/src/test/scala/generators/Http4s/RoundTrip/Http4sFormDataTest.scala b/modules/sample-http4s-v0_22/src/test/scala/generators/Http4s/RoundTrip/Http4sFormDataTest.scala index 1d3825f10a..2a349d4726 100644 --- a/modules/sample-http4s-v0_22/src/test/scala/generators/Http4s/RoundTrip/Http4sFormDataTest.scala +++ b/modules/sample-http4s-v0_22/src/test/scala/generators/Http4s/RoundTrip/Http4sFormDataTest.scala @@ -59,7 +59,7 @@ class Http4sFormDataTest extends AnyFunSuite with Matchers with EitherValues { Client.fromHttpApp( new FooResource[IO]() .routes(new FooHandler[IO] { - def doFoo(respond: DoFooResponse.type)(status: sdefs.definitions.Status, description: String): IO[DoFooResponse] = ??? + def doFoo(respond: DoFooResponse.type)(status: sdefs.definitions.Status, description: String): IO[DoFooResponse] = ??? def doBar(respond: DoBarResponse.type)(status: Option[sdefs.definitions.Status], description: Option[String]): IO[DoBarResponse] = if (status.contains(sdefs.definitions.Status.Ok)) { IO.pure(respond.Ok) @@ -102,7 +102,7 @@ class Http4sFormDataTest extends AnyFunSuite with Matchers with EitherValues { .routes(new FooHandler[IO] { def doFoo(respond: DoFooResponse.type)(status: sdefs.definitions.Status, description: String): IO[DoFooResponse] = ??? def doBar(respond: DoBarResponse.type)(status: Option[sdefs.definitions.Status], description: Option[String]): IO[DoBarResponse] = ??? - def doBaz(respond: DoBazResponse.type)(status: Vector[String], description: Option[Vector[String]]): IO[DoBazResponse] = + def doBaz(respond: DoBazResponse.type)(status: Vector[String], description: Option[Vector[String]]): IO[DoBazResponse] = if (status.size == 1 && status.iterator.next() == sdefs.definitions.Status.Ok.toString) { IO.pure(respond.Ok) } else { diff --git a/modules/sample-http4s-v0_22/src/test/scala/generators/circe/NullableTest.scala b/modules/sample-http4s-v0_22/src/test/scala/generators/circe/NullableTest.scala index 84d99060a2..05497f1ddb 100644 --- a/modules/sample-http4s-v0_22/src/test/scala/generators/circe/NullableTest.scala +++ b/modules/sample-http4s-v0_22/src/test/scala/generators/circe/NullableTest.scala @@ -72,6 +72,6 @@ class NullableTest extends AnyFunSuite with Matchers with EitherValues { } private def getKey(json: Json, key: String): Option[Json] = json.hcursor.downField(key).as[Json].toOption - private def dropKey(json: Json, key: String): Json = + private def dropKey(json: Json, key: String): Json = json.mapObject(_.filterKeys(_ != key)) } diff --git a/modules/sample-http4s/src/test/scala/core/Http4s/Http4sDebugBodyTest.scala b/modules/sample-http4s/src/test/scala/core/Http4s/Http4sDebugBodyTest.scala index 7133d8de9e..21eea6d766 100644 --- a/modules/sample-http4s/src/test/scala/core/Http4s/Http4sDebugBodyTest.scala +++ b/modules/sample-http4s/src/test/scala/core/Http4s/Http4sDebugBodyTest.scala @@ -45,8 +45,8 @@ class Http4sDebugBodyTest extends AnyFunSuite with Matchers with EitherValues wi "invalidSomething1" -> Json.fromInt(1), "something2" -> Json.fromString("something") ) - val request = sendRequest(server, invalidJson) - val actualResponse = request.use(_.pure[IO]).unsafeRunSync() + val request = sendRequest(server, invalidJson) + val actualResponse = request.use(_.pure[IO]).unsafeRunSync() val actualErrorMessages = Stream .resource(request) diff --git a/modules/sample-http4s/src/test/scala/core/Http4s/Http4sRoundTripTest.scala b/modules/sample-http4s/src/test/scala/core/Http4s/Http4sRoundTripTest.scala index dcf531e16c..cd4f9236ef 100644 --- a/modules/sample-http4s/src/test/scala/core/Http4s/Http4sRoundTripTest.scala +++ b/modules/sample-http4s/src/test/scala/core/Http4s/Http4sRoundTripTest.scala @@ -198,7 +198,7 @@ class Http4sRoundTripTest extends AnyFunSuite with Matchers with EitherValues { test("round-trip: Raw type parameters") { val petId: Long = 123L val apiKey: String = "foobar" - val httpService = new PetResource().routes(new PetHandler[IO] { + val httpService = new PetResource().routes(new PetHandler[IO] { def deletePet(respond: DeletePetResponse.type)( _petId: Long, includeChildren: Option[Boolean], @@ -243,7 +243,7 @@ class Http4sRoundTripTest extends AnyFunSuite with Matchers with EitherValues { test("round-trip: File uploads") { val petId: Long = 123L val apiKey: String = "foobar" - val httpService = new PetResource().routes(new PetHandler[IO] { + val httpService = new PetResource().routes(new PetHandler[IO] { def addPet(respond: AddPetResponse.type)(body: sdefs.definitions.Pet) = ??? def deletePet( respond: DeletePetResponse.type diff --git a/modules/sample-http4s/src/test/scala/core/Http4s/authentication/Http4sCustomAuthenticationTest.scala b/modules/sample-http4s/src/test/scala/core/Http4s/authentication/Http4sCustomAuthenticationTest.scala index 8192030cb8..c1fbee4bd0 100644 --- a/modules/sample-http4s/src/test/scala/core/Http4s/authentication/Http4sCustomAuthenticationTest.scala +++ b/modules/sample-http4s/src/test/scala/core/Http4s/authentication/Http4sCustomAuthenticationTest.scala @@ -98,7 +98,7 @@ class Http4sCustomAuthenticationTest extends AnyFunSuite with Matchers with Eith val authMiddleware = (config: NonEmptyList[NonEmptyMap[AuthSchemes, Set[String]]], _: AuthResource.AuthSchemes.AuthRequirement, _: Request[IO]) => IO.pure { - val c = config.toList.map(_.toSortedMap.toMap) + val c = config.toList.map(_.toSortedMap.toMap) val expected = List( Map(AuthSchemes.Basic -> Set("bar:basic"), AuthSchemes.Jwt -> Set("foo:read", "bar:write")), Map(AuthSchemes.ApiKey -> Set("bar:api"), AuthSchemes.SecretHeader -> Set("bar:admin")), diff --git a/modules/sample-http4s/src/test/scala/core/Http4s/authentication/Http4sSimpleAuthenticationTest.scala b/modules/sample-http4s/src/test/scala/core/Http4s/authentication/Http4sSimpleAuthenticationTest.scala index 6bd3f9a2d1..ed60b97739 100644 --- a/modules/sample-http4s/src/test/scala/core/Http4s/authentication/Http4sSimpleAuthenticationTest.scala +++ b/modules/sample-http4s/src/test/scala/core/Http4s/authentication/Http4sSimpleAuthenticationTest.scala @@ -111,7 +111,7 @@ class Http4sSimpleAuthenticationTest extends AnyFunSuite with Matchers with Eith test("processing order: shortcut on the first 'or' success") { import AuthResource.AuthSchemes - val invoked = mutable.ArrayBuffer.empty[AuthSchemes] + val invoked = mutable.ArrayBuffer.empty[AuthSchemes] val authMiddleware: (AuthSchemes, Set[String], Request[IO]) => IO[Either[AuthResource.AuthError, AuthContext]] = { (authScheme, scopes, req) => invoked += authScheme authScheme match { @@ -132,7 +132,7 @@ class Http4sSimpleAuthenticationTest extends AnyFunSuite with Matchers with Eith test("processing order: shortcut on the first 'and' failure") { import AuthResource.AuthSchemes - val invoked = mutable.ArrayBuffer.empty[AuthSchemes] + val invoked = mutable.ArrayBuffer.empty[AuthSchemes] val authMiddleware: (AuthSchemes, Set[String], Request[IO]) => IO[Either[AuthResource.AuthError, AuthContext]] = { (authScheme, scopes, req) => invoked += authScheme authScheme match { diff --git a/modules/sample-http4s/src/test/scala/core/issues/Issue148.scala b/modules/sample-http4s/src/test/scala/core/issues/Issue148.scala index 7a37c136e8..1d4210d2a0 100644 --- a/modules/sample-http4s/src/test/scala/core/issues/Issue148.scala +++ b/modules/sample-http4s/src/test/scala/core/issues/Issue148.scala @@ -38,7 +38,7 @@ class Issue148Suite extends AnyFunSuite with Matchers with EitherValues with Sca IO.pure(respond.Accepted(Bar("bar"))) }) - val client = Client.fromHttpApp[IO](route.orNotFound) + val client = Client.fromHttpApp[IO](route.orNotFound) def failedResponseBody(req: Request[IO]): String = client .run(req) diff --git a/modules/sample-http4s/src/test/scala/core/issues/Issue542.scala b/modules/sample-http4s/src/test/scala/core/issues/Issue542.scala index 88567e9aad..6a27efe44d 100644 --- a/modules/sample-http4s/src/test/scala/core/issues/Issue542.scala +++ b/modules/sample-http4s/src/test/scala/core/issues/Issue542.scala @@ -58,7 +58,7 @@ class Issue542Suite extends AnyFunSuite with Matchers with EitherValues with Sca def staticClient: Http4sClient[IO] = { implicit val fooOkEncoder = jsonEncoderOf[IO, Foo] - val response = new Http4sDsl[IO] { + val response = new Http4sDsl[IO] { def route: HttpApp[IO] = Kleisli.liftF(Ok(Foo(Some(Base64String("foo".getBytes()))))) } Http4sClient.fromHttpApp[IO](response.route) diff --git a/modules/sample-http4s/src/test/scala/core/issues/Issue786.scala b/modules/sample-http4s/src/test/scala/core/issues/Issue786.scala index 5699a7043c..b5b0d2c5b9 100644 --- a/modules/sample-http4s/src/test/scala/core/issues/Issue786.scala +++ b/modules/sample-http4s/src/test/scala/core/issues/Issue786.scala @@ -17,8 +17,8 @@ class Issue786Suite extends AnyFunSuite with Matchers { import issues.issue786.server.http4s.{ Handler, Resource } val route = new Resource[IO]().routes(new Handler[IO] { - val dog = Dog("bones", "black") - val turtle = Turtle("turtle food") + val dog = Dog("bones", "black") + val turtle = Turtle("turtle food") def getAnimals(respond: Resource.GetAnimalsResponse.type)(): IO[Resource.GetAnimalsResponse] = IO.pure(respond.Ok(Vector(dog, turtle))) def getDogs(respond: Resource.GetDogsResponse.type)(): IO[Resource.GetDogsResponse] = diff --git a/modules/sample-http4s/src/test/scala/generators/Http4s/Client/contentType/Http4sTextPlainTest.scala b/modules/sample-http4s/src/test/scala/generators/Http4s/Client/contentType/Http4sTextPlainTest.scala index fd42155d01..e195e4100e 100644 --- a/modules/sample-http4s/src/test/scala/generators/Http4s/Client/contentType/Http4sTextPlainTest.scala +++ b/modules/sample-http4s/src/test/scala/generators/Http4s/Client/contentType/Http4sTextPlainTest.scala @@ -68,7 +68,7 @@ class Http4sTextPlainTest extends AnyFunSuite with Matchers with EitherValues { test("Plain text should be emitted for present optional parameters") { val route: HttpRoutes[IO] = new FooResource[IO]().routes(new FooHandler[IO] { - def doFoo(respond: DoFooResponse.type)(body: String): IO[DoFooResponse] = ??? + def doFoo(respond: DoFooResponse.type)(body: String): IO[DoFooResponse] = ??? def doBar(respond: DoBarResponse.type)(body: Option[String]): IO[DoBarResponse] = if (body.contains("sample")) { IO.pure(respond.Created("response")) @@ -85,7 +85,7 @@ class Http4sTextPlainTest extends AnyFunSuite with Matchers with EitherValues { test("Plain text should be emitted for missing optional parameters") { val route: HttpRoutes[IO] = new FooResource[IO]().routes(new FooHandler[IO] { - def doFoo(respond: DoFooResponse.type)(body: String): IO[DoFooResponse] = ??? + def doFoo(respond: DoFooResponse.type)(body: String): IO[DoFooResponse] = ??? def doBar(respond: DoBarResponse.type)(body: Option[String]): IO[DoBarResponse] = if (body.isEmpty) { IO.pure(respond.Created("response")) diff --git a/modules/sample-http4s/src/test/scala/generators/Http4s/RoundTrip/Http4sFormDataTest.scala b/modules/sample-http4s/src/test/scala/generators/Http4s/RoundTrip/Http4sFormDataTest.scala index f510b929a2..e2ed4b5986 100644 --- a/modules/sample-http4s/src/test/scala/generators/Http4s/RoundTrip/Http4sFormDataTest.scala +++ b/modules/sample-http4s/src/test/scala/generators/Http4s/RoundTrip/Http4sFormDataTest.scala @@ -60,7 +60,7 @@ class Http4sFormDataTest extends AnyFunSuite with Matchers with EitherValues { Client.fromHttpApp( new FooResource[IO]() .routes(new FooHandler[IO] { - def doFoo(respond: DoFooResponse.type)(status: sdefs.definitions.Status, description: String): IO[DoFooResponse] = ??? + def doFoo(respond: DoFooResponse.type)(status: sdefs.definitions.Status, description: String): IO[DoFooResponse] = ??? def doBar(respond: DoBarResponse.type)(status: Option[sdefs.definitions.Status], description: Option[String]): IO[DoBarResponse] = if (status.contains(sdefs.definitions.Status.Ok)) { IO.pure(respond.Ok) @@ -103,7 +103,7 @@ class Http4sFormDataTest extends AnyFunSuite with Matchers with EitherValues { .routes(new FooHandler[IO] { def doFoo(respond: DoFooResponse.type)(status: sdefs.definitions.Status, description: String): IO[DoFooResponse] = ??? def doBar(respond: DoBarResponse.type)(status: Option[sdefs.definitions.Status], description: Option[String]): IO[DoBarResponse] = ??? - def doBaz(respond: DoBazResponse.type)(status: Vector[String], description: Option[Vector[String]]): IO[DoBazResponse] = + def doBaz(respond: DoBazResponse.type)(status: Vector[String], description: Option[Vector[String]]): IO[DoBazResponse] = if (status.size == 1 && status.iterator.next() == sdefs.definitions.Status.Ok.toString) { IO.pure(respond.Ok) } else { diff --git a/modules/sample-http4s/src/test/scala/generators/circe/NullableTest.scala b/modules/sample-http4s/src/test/scala/generators/circe/NullableTest.scala index 4bb516062c..5b2ed4277d 100644 --- a/modules/sample-http4s/src/test/scala/generators/circe/NullableTest.scala +++ b/modules/sample-http4s/src/test/scala/generators/circe/NullableTest.scala @@ -72,6 +72,6 @@ class NullableTest extends AnyFunSuite with Matchers with EitherValues { } private def getKey(json: Json, key: String): Option[Json] = json.hcursor.downField(key).as[Json].toOption - private def dropKey(json: Json, key: String): Json = + private def dropKey(json: Json, key: String): Json = json.mapObject(_.filterKeys(_ != key)) } diff --git a/modules/sample-springMvc/src/test/scala/examples/server/springMvc/pet/BaselineSpecs.scala b/modules/sample-springMvc/src/test/scala/examples/server/springMvc/pet/BaselineSpecs.scala index 70494a69d5..1efe3b58f1 100644 --- a/modules/sample-springMvc/src/test/scala/examples/server/springMvc/pet/BaselineSpecs.scala +++ b/modules/sample-springMvc/src/test/scala/examples/server/springMvc/pet/BaselineSpecs.scala @@ -69,14 +69,13 @@ class BaselineSpecs extends AnyFreeSpec with Matchers with BeforeAndAfterAll wit assertTrue(content.contains("mouse")) } - "required param missing" in { + "required param missing" in mvc .perform( get("/v2/pet/findByStatus") .accept(MediaType.APPLICATION_JSON) ) .andExpect(status.is4xxClientError()) - } "query params (list)" in { val entityBody = new util.ArrayList[Pet]() diff --git a/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpClientGenerator.scala b/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpClientGenerator.scala index 93c89819f4..d23113f9bb 100644 --- a/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpClientGenerator.scala +++ b/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpClientGenerator.scala @@ -38,8 +38,8 @@ import scala.reflect.runtime.universe.typeTag class AkkaHttpClientGeneratorLoader extends ClientGeneratorLoader { type L = ScalaLanguage def reified = typeTag[Target[ScalaLanguage]] - val apply = ModuleLoadResult.forProduct2( - ClientGeneratorLoader.label -> Seq(AkkaHttpVersion.mapping), + val apply = ModuleLoadResult.forProduct2( + ClientGeneratorLoader.label -> Seq(AkkaHttpVersion.mapping), ProtocolGeneratorLoader.label -> Seq( CirceModelGenerator.mapping, CirceRefinedModelGenerator.mapping.view.mapValues(_.toCirce).toMap, @@ -91,10 +91,10 @@ class AkkaHttpClientGenerator private (modelGeneratorType: ModelGeneratorType) e clientImports <- getImports(context.tracing) clientExtraImports <- getExtraImports(context.tracing) supportDefinitions <- generateSupportDefinitions(context.tracing, securitySchemes) - clients <- groupedRoutes.traverse { case (className, unsortedRoutes) => + clients <- groupedRoutes.traverse { case (className, unsortedRoutes) => val routes = unsortedRoutes.sortBy(r => (r.path.unwrapTracker, r.method)) for { - clientName <- formatTypeName(className.lastOption.getOrElse(""), Some("Client")) + clientName <- formatTypeName(className.lastOption.getOrElse(""), Some("Client")) responseClientPair <- routes.traverse { case route @ RouteMeta(path, method, operation, securityRequirements) => for { operationId <- getOperationId(operation) @@ -110,7 +110,7 @@ class AkkaHttpClientGenerator private (modelGeneratorType: ModelGeneratorType) e tracingName = Option(className.mkString("-")).filterNot(_.isEmpty) ctorArgs <- clientClsArgs(tracingName, serverUrls, context.tracing) staticDefns <- buildStaticDefns(clientName, tracingName, serverUrls, ctorArgs, context.tracing) - client <- buildClient( + client <- buildClient( clientName, tracingName, serverUrls, @@ -144,7 +144,7 @@ class AkkaHttpClientGenerator private (modelGeneratorType: ModelGeneratorType) e responses: Responses[ScalaLanguage] ): Target[RenderedClientOperation[ScalaLanguage]] = { val RouteMeta(pathStr, httpMethod, operation, securityRequirements) = route - val containerTransformations = Map[String, Term => Term]( + val containerTransformations = Map[String, Term => Term]( "Iterable" -> identity _, "List" -> (term => q"$term.toList"), "Vector" -> (term => q"$term.toVector"), @@ -285,8 +285,8 @@ class AkkaHttpClientGenerator private (modelGeneratorType: ModelGeneratorType) e headerArgs: List[LanguageParameter[ScalaLanguage]], extraImplicits: List[Term.Param] ): Target[RenderedClientOperation[ScalaLanguage]] = { - val implicitParams = Option(extraImplicits).filter(_.nonEmpty) - val defaultHeaders = param"headers: List[HttpHeader] = Nil" + val implicitParams = Option(extraImplicits).filter(_.nonEmpty) + val defaultHeaders = param"headers: List[HttpHeader] = Nil" val fallbackHttpBody: Option[(Term, Type)] = if (Set(HttpMethod.PUT, HttpMethod.POST) contains httpMethod) Some((q"HttpEntity.Empty", t"HttpEntity.Strict")) @@ -329,8 +329,8 @@ class AkkaHttpClientGenerator private (modelGeneratorType: ModelGeneratorType) e } def buildRequiredHeaders(headers: List[Header[ScalaLanguage]]) = headers.map { header => - val lit = Lit.String(header.name.toLowerCase) - val expr = q"resp.headers.find(_.is($lit)).map(_.value())" + val lit = Lit.String(header.name.toLowerCase) + val expr = q"resp.headers.find(_.is($lit)).map(_.value())" val errLiteral = Lit.String(s"Expected required HTTP header '${header.name}'") enumerator"${Pat.Var(header.term)} <- $expr.toRight(Left(new Exception($errLiteral)))" @@ -340,7 +340,7 @@ class AkkaHttpClientGenerator private (modelGeneratorType: ModelGeneratorType) e val optionalVals = buildOptionalHeaders(optional) val forGenerators = buildRequiredHeaders(required) - val body = if (forGenerators.isEmpty) { + val body = if (forGenerators.isEmpty) { q"Right($term)" } else { q"""for { diff --git a/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpGenerator.scala b/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpGenerator.scala index 98d9b2adf4..a16530b26e 100644 --- a/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpGenerator.scala +++ b/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpGenerator.scala @@ -12,10 +12,10 @@ import dev.guardrail.terms.framework._ class AkkaHttpGeneratorLoader extends FrameworkGeneratorLoader { type L = ScalaLanguage def reified = typeTag[Target[ScalaLanguage]] - val apply = + val apply = ModuleLoadResult.forProduct2( FrameworkGeneratorLoader.label -> Seq(AkkaHttpVersion.mapping), - ProtocolGeneratorLoader.label -> Seq( + ProtocolGeneratorLoader.label -> Seq( CirceModelGenerator.mapping, CirceRefinedModelGenerator.mapping.view.mapValues(_.toCirce).toMap, JacksonModelGenerator.mapping @@ -31,7 +31,7 @@ object AkkaHttpGenerator { } class AkkaHttpGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGeneratorType: ModelGeneratorType) extends FrameworkTerms[ScalaLanguage, Target] { - override def fileType(format: Option[String]) = Target.pure(format.fold[Type](t"BodyPartEntity")(Type.Name(_))) + override def fileType(format: Option[String]) = Target.pure(format.fold[Type](t"BodyPartEntity")(Type.Name(_))) override def objectType(format: Option[String]) = modelGeneratorType match { case _: CirceModelGenerator => Target.pure(t"io.circe.Json") diff --git a/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpHelper.scala b/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpHelper.scala index e369c873d6..3d742b0fe5 100644 --- a/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpHelper.scala +++ b/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpHelper.scala @@ -28,7 +28,7 @@ object AkkaHttpHelper { } decode <- Target.fromOption( modelGeneratorType match { - case _: CirceModelGenerator => Some(q"""io.circe.Decoder[${baseType}].decodeJson(json).fold(FastFuture.failed, FastFuture.successful)""") + case _: CirceModelGenerator => Some(q"""io.circe.Decoder[${baseType}].decodeJson(json).fold(FastFuture.failed, FastFuture.successful)""") case _: JacksonModelGenerator => Some(q"""FastFuture(implicitly[GuardrailDecoder[$baseType]].decode(json))""") case _ => None @@ -48,7 +48,7 @@ object AkkaHttpHelper { } def protocolImplicits(modelGeneratorType: ModelGeneratorType): Target[Term.ParamClause] = modelGeneratorType match { - case _: CirceModelGenerator => Target.pure(Term.ParamClause(Nil)) + case _: CirceModelGenerator => Target.pure(Term.ParamClause(Nil)) case _: JacksonModelGenerator => Target.pure( Term.ParamClause( diff --git a/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpPathExtractor.scala b/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpPathExtractor.scala index fed3e602a7..6e6b43f1af 100644 --- a/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpPathExtractor.scala +++ b/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpPathExtractor.scala @@ -11,25 +11,25 @@ object AkkaHttpPathExtractor pathSegmentConverter = { case (LanguageParameter(_, param, _, argName, argType), base, modelGeneratorType) => base.fold { argType match { - case t"String" => Right(q"Segment") - case t"Double" => Right(q"DoubleNumber") + case t"String" => Right(q"Segment") + case t"Double" => Right(q"DoubleNumber") case t"BigDecimal" => Right(q"Segment.map(BigDecimal.apply _)") case t"Int" => Right(q"IntNumber") case t"Long" => Right(q"LongNumber") case t"BigInt" => Right(q"Segment.map(BigInt.apply _)") - case tpe => + case tpe => AkkaHttpHelper .fromStringConverter(tpe, modelGeneratorType) .map(tpe => q"Segment.flatMap(str => ${tpe})") } } { segment => argType match { - case t"String" => Right(segment) + case t"String" => Right(segment) case t"BigDecimal" => Right(q"${segment}.map(BigDecimal.apply _)") case t"BigInt" => Right(q"${segment}.map(BigInt.apply _)") - case tpe => + case tpe => AkkaHttpHelper .fromStringConverter(tpe, modelGeneratorType) .map(tpe => q"${segment}.flatMap(str => ${tpe})") diff --git a/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpServerGenerator.scala b/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpServerGenerator.scala index 698faa5473..ba73243cfd 100644 --- a/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpServerGenerator.scala +++ b/modules/scala-akka-http/src/main/scala/dev/guardrail/generators/scala/akkaHttp/AkkaHttpServerGenerator.scala @@ -57,9 +57,9 @@ import scala.reflect.runtime.universe.typeTag class AkkaHttpServerGeneratorLoader extends ServerGeneratorLoader { type L = ScalaLanguage override def reified = typeTag[Target[ScalaLanguage]] - val apply = + val apply = ModuleLoadResult.forProduct2( - ServerGeneratorLoader.label -> Seq(AkkaHttpVersion.mapping), + ServerGeneratorLoader.label -> Seq(AkkaHttpVersion.mapping), ProtocolGeneratorLoader.label -> Seq( CirceModelGenerator.mapping, CirceRefinedModelGenerator.mapping.view.mapValues(_.toCirce).toMap, @@ -81,7 +81,7 @@ object AkkaHttpServerGenerator { ): Target[NonEmptyList[(Term, List[Term.Name])]] = for { (parts, (trailingSlash, queryParams)) <- AkkaHttpPathExtractor.runParse(path, pathArgs, modelGeneratorType) - allPairs <- parts + allPairs <- parts .foldLeft[Target[NonEmptyList[(Term, List[Term.Name])]]](Target.pure(NonEmptyList.one((q"pathEnd", List.empty)))) { case (acc, (termName, b)) => acc.flatMap { case NonEmptyList((q"pathEnd ", bindings), xs) => @@ -133,7 +133,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe for { extraImports <- getExtraImports(context.tracing, supportPackage) supportDefinitions <- generateSupportDefinitions(context.tracing, securitySchemes) - servers <- groupedRoutes.traverse { case (className, unsortedRoutes) => + servers <- groupedRoutes.traverse { case (className, unsortedRoutes) => val routes = unsortedRoutes .groupBy(_.path.unwrapTracker.indexOf('{')) .view @@ -161,7 +161,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe ) } (responseDefinitions, serverOperations) = responseServerPair.unzip - securityExposure = serverOperations.flatMap(_.routeMeta.securityRequirements) match { + securityExposure = serverOperations.flatMap(_.routeMeta.securityRequirements) match { case Nil => SecurityExposure.Undefined case xs => if (xs.exists(_.optional)) SecurityExposure.Optional else SecurityExposure.Required } @@ -223,7 +223,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe _ <- Target.pure(()) responseSuperType = Type.Name(responseClsName) responseSuperTerm = Term.Name(responseClsName) - instances = responses.value.map { case resp @ Response(statusCodeName, _, headers) => + instances = responses.value.map { case resp @ Response(statusCodeName, _, headers) => val statusCode = q"StatusCodes.${statusCodeName}" val responseTerm = Term.Name(s"${responseClsName}${statusCodeName.value}") val responseName = Type.Name(s"${responseClsName}${statusCodeName.value}") @@ -268,7 +268,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe } } (terms, aliases, marshallers) = instances.unzip3 - convenienceConstructors = aliases.flatMap { + convenienceConstructors = aliases.flatMap { case q"def $name(value: $tpe): $_ = $_" => tpe.map((_, name)) case _ => None } @@ -287,7 +287,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe } protocolImplicits <- AkkaHttpHelper.protocolImplicits(modelGeneratorType) toResponseImplicits = List(param"ec: scala.concurrent.ExecutionContext") ++ protocolImplicits - companion = q""" + companion = q""" object ${responseSuperTerm} { ${Defn.Def( List(mod"implicit"), @@ -325,7 +325,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe private def buildCustomExtractionFields(operation: Tracker[Operation], resourceName: List[String], customExtraction: Boolean) = for { - _ <- Target.log.debug(s"buildCustomExtractionFields(${operation.unwrapTracker.showNotNull}, ${resourceName}, ${customExtraction})") + _ <- Target.log.debug(s"buildCustomExtractionFields(${operation.unwrapTracker.showNotNull}, ${resourceName}, ${customExtraction})") res <- if (customExtraction) { for { @@ -345,7 +345,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe private def buildTracingFields(operation: Tracker[Operation], resourceName: List[String], tracing: Boolean) = for { - _ <- Target.log.debug(s"buildTracingFields(${operation.unwrapTracker.showNotNull}, ${resourceName}, ${tracing})") + _ <- Target.log.debug(s"buildTracingFields(${operation.unwrapTracker.showNotNull}, ${resourceName}, ${tracing})") res <- if (tracing) { for { @@ -413,7 +413,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe securityExposure: SecurityExposure ) = for { - _ <- Target.log.debug(s"getExtraRouteParams(${tracing})") + _ <- Target.log.debug(s"getExtraRouteParams(${tracing})") extractParam <- if (customExtraction) { Target.pure(List(param"""customExtract: String => Directive1[$customExtractionTypeName]""")) @@ -448,7 +448,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe } } val typeParams = if (customExtraction) List(tparam"$customExtractionTypeName") else List() - val params = List( + val params = List( Term.ParamClause( List(param"handler: $handlerType") ++ extraRouteParams, None @@ -503,7 +503,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe else term (basePath.getOrElse("") + path.unwrapTracker).stripPrefix("/") match { - case "" => Target.pure(NonEmptyList.one((q"pathEndOrSingleSlash", List.empty))) + case "" => Target.pure(NonEmptyList.one((q"pathEndOrSingleSlash", List.empty))) case fullPath => AkkaHttpServerGenerator.generateUrlPathExtractors(Tracker.cloneHistory(path, fullPath), pathArgs, modelGeneratorType) } @@ -560,7 +560,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe } } } yield directives match { - case Nil => Option.empty + case Nil => Option.empty case x :: xs => Some((xs.foldLeft[Term](x) { case (a, n) => q"${a} & ${n}" }, params.map(_.paramName))) } @@ -620,7 +620,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe private def qsToAkka: List[LanguageParameter[ScalaLanguage]] => Target[Option[(Term, List[Term.Name])]] = { type Unmarshaller = Term type Arg = Term - val nameReceptacle: Arg => Type => Term = arg => tpe => q"Symbol(${arg}).as[${tpe}]" + val nameReceptacle: Arg => Type => Term = arg => tpe => q"Symbol(${arg}).as[${tpe}]" val param: Option[Unmarshaller] => Arg => Type => Term = _.fold[Arg => Type => Term](nameReceptacle)(um => nameReceptacle.map(_.map(term => q"${term}(${um})"))) directivesFromParams( @@ -667,7 +667,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe val binding = new Binding(paramName.value) val collected = new Binding(s"${paramName.value}O") - val isFile: Boolean = rawParameter.isFile + val isFile: Boolean = rawParameter.isFile val (isOptional, realType): (Boolean, Type) = argType match { case t"Option[$x]" => (true, x) case x => (!rawParameter.required, x) @@ -760,8 +760,8 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe case xs => p"(..${xs.map(_.toPat)})" } - val _trait = q"sealed trait Part" - val ignoredPart = q"case class IgnoredPart(unit: Unit) extends Part" + val _trait = q"sealed trait Part" + val ignoredPart = q"case class IgnoredPart(unit: Unit) extends Part" val ignoredUnmarshaller = p""" case _ => SafeUnmarshaller( @@ -770,7 +770,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe ).apply(part) """ - val fieldNames = q"""Set[String](..${params.toList.map(_.argName.toLit)})""" + val fieldNames = q"""Set[String](..${params.toList.map(_.argName.toLit)})""" val optionalTypes = termTypes.map { case x @ t"Option[$_]" => x case x => t"Option[$x]" @@ -865,7 +865,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe .traverse[Target, (List[Stat], NonEmptyList[Term.Name])] { case Tracker(_, _: MultipartFormData) => val unmarshallerTerm = q"MultipartFormDataUnmarshaller" - val fru = q""" + val fru = q""" object ${partsTerm} { ..${List( _trait, @@ -911,7 +911,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe unmarshalFieldTypeParam <- AkkaHttpHelper.unmarshalFieldTypeParam(modelGeneratorType) unmarshalFieldUnmarshallerType <- AkkaHttpHelper.unmarshalFieldUnmarshallerType(modelGeneratorType) unmarshallerTerm = q"FormDataUnmarshaller" - fru = q""" + fru = q""" implicit val ${Pat.Var(unmarshallerTerm)}: FromRequestUnmarshaller[Either[Throwable, ${optionalTypes}]] = implicitly[FromRequestUnmarshaller[FormData]].flatMap { implicit executionContext => implicit mat => formData => def unmarshalField[${unmarshalFieldTypeParam}](name: String, value: String, unmarshaller: Unmarshaller[String, ${unmarshalFieldUnmarshallerType}]): Future[A] = @@ -1009,7 +1009,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe for { _ <- Target.log.debug(s"generateRoute(${resourceName}, ${basePath}, ${route}, ${customExtractionFields}, ${tracingFields})") RouteMeta(path, method, operation, securityRequirements) = route - consumes = operation + consumes = operation .downField("consumes", _.consumes) .map(xs => NonEmptyList @@ -1045,7 +1045,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe akkaHeaders <- headerArgs.grouped(22).toList.flatTraverse(args => headersToAkka(args).map(_.toList)) // We aren't capitalizing the response names in order to keep back compat (responseCompanionTerm, responseCompanionType) = (Term.Name(responseClsName), Type.Name(responseClsName)) - responseType = + responseType = if (ServerRawResponse(operation).getOrElse(false)) { t"HttpResponse" } else { @@ -1057,7 +1057,7 @@ class AkkaHttpServerGenerator private (akkaHttpVersion: AkkaHttpVersion, modelGe } orderedParameters = List((pathArgs ++ qsArgs ++ bodyArgs ++ formArgs ++ headerArgs).toList) ++ extractionTracingParameters - entityProcessor = akkaBody.orElse(akkaForm).getOrElse(q"discardEntity") + entityProcessor = akkaBody.orElse(akkaForm).getOrElse(q"discardEntity") fullRouteMatcher = { def bindParams(pairs: List[(Term, List[Term.Name])]): Term => Term = NonEmptyList diff --git a/modules/scala-akka-http/src/test/scala/core/issues/Issue145.scala b/modules/scala-akka-http/src/test/scala/core/issues/Issue145.scala index 42e33dc5d1..24ad5a1508 100644 --- a/modules/scala-akka-http/src/test/scala/core/issues/Issue145.scala +++ b/modules/scala-akka-http/src/test/scala/core/issues/Issue145.scala @@ -52,7 +52,7 @@ class Issue145 extends AnyFunSpec with Matchers with SwaggerSpecRunner { ) = runSwaggerSpec(scalaInterpreter)(spec)(Context.empty, "akka-http") it("should generate right companion object") { - val cmp = companionForStaticDefns(staticDefnsPet) + val cmp = companionForStaticDefns(staticDefnsPet) val companion = q""" object Pet { implicit val encodePet: _root_.io.circe.Encoder.AsObject[Pet] = { diff --git a/modules/scala-akka-http/src/test/scala/core/issues/Issue43.scala b/modules/scala-akka-http/src/test/scala/core/issues/Issue43.scala index 5296085c07..dfaa8993e6 100644 --- a/modules/scala-akka-http/src/test/scala/core/issues/Issue43.scala +++ b/modules/scala-akka-http/src/test/scala/core/issues/Issue43.scala @@ -269,8 +269,8 @@ class Issue43 extends AnyFunSpec with Matchers with SwaggerSpecRunner { val ( ProtocolDefinitions( ClassDefinition(namePersianCat, tpePersianCat, fullTypePersioanCat, clsPersianCat, staticDefnsPersianCat, persianCatParents) - :: ClassDefinition(nameDog, tpeDog, fullTypeDog, clsDog, staticDefnsDog, dogParents) - :: ADT(namePet, tpePet, fullTypePet, trtPet, staticDefnsPet) :: ADT(nameCat, tpeCat, fullTypeCat, trtCat, staticDefnsCat) :: Nil, + :: ClassDefinition(nameDog, tpeDog, fullTypeDog, clsDog, staticDefnsDog, dogParents) + :: ADT(namePet, tpePet, fullTypePet, trtPet, staticDefnsPet) :: ADT(nameCat, tpeCat, fullTypeCat, trtCat, staticDefnsCat) :: Nil, _, _, _, @@ -466,8 +466,8 @@ class Issue43 extends AnyFunSpec with Matchers with SwaggerSpecRunner { val ( ProtocolDefinitions( ClassDefinition(nameDog, tpeDog, fullTypeDog, clsDog, staticDefnsDog, dogParents) - :: ClassDefinition(namePersianCat, tpePersianCat, fullTypePersianCat, clsPersianCat, staticDefnsPersianCat, persianCatParents) - :: ADT(namePet, tpePet, fullTypePet, trtPet, staticDefnsPet) :: ADT(nameCat, tpeCat, fullTypeCat, trtCat, staticDefnsCat) :: Nil, + :: ClassDefinition(namePersianCat, tpePersianCat, fullTypePersianCat, clsPersianCat, staticDefnsPersianCat, persianCatParents) + :: ADT(namePet, tpePet, fullTypePet, trtPet, staticDefnsPet) :: ADT(nameCat, tpeCat, fullTypeCat, trtCat, staticDefnsCat) :: Nil, _, _, _, @@ -566,7 +566,7 @@ class Issue43 extends AnyFunSpec with Matchers with SwaggerSpecRunner { val ( ProtocolDefinitions( ClassDefinition(nameCat, tpeCat, fullTypeCat, clsCat, staticDefnsCat, catParents) - :: ADT(namePet, tpePet, fullTypePet, trtPet, staticDefnsPet) :: ADT(nameMammal, tpeMammal, fullTypeMammal, trtMammal, staticDefnsMammal) :: Nil, + :: ADT(namePet, tpePet, fullTypePet, trtPet, staticDefnsPet) :: ADT(nameMammal, tpeMammal, fullTypeMammal, trtMammal, staticDefnsMammal) :: Nil, _, _, _, diff --git a/modules/scala-dropwizard/src/main/scala/dev/guardrail/generators/scala/dropwizard/DropwizardServerGenerator.scala b/modules/scala-dropwizard/src/main/scala/dev/guardrail/generators/scala/dropwizard/DropwizardServerGenerator.scala index 316dbaf120..77ca437f1a 100644 --- a/modules/scala-dropwizard/src/main/scala/dev/guardrail/generators/scala/dropwizard/DropwizardServerGenerator.scala +++ b/modules/scala-dropwizard/src/main/scala/dev/guardrail/generators/scala/dropwizard/DropwizardServerGenerator.scala @@ -71,7 +71,7 @@ class DropwizardServerGenerator private extends ServerTerms[ScalaLanguage, Targe for { extraImports <- getExtraImports(context.tracing, supportPackage) supportDefinitions <- generateSupportDefinitions(context.tracing, securitySchemes) - servers <- groupedRoutes.traverse { case (className, unsortedRoutes) => + servers <- groupedRoutes.traverse { case (className, unsortedRoutes) => val routes = unsortedRoutes .groupBy(_.path.unwrapTracker.indexOf('{')) .view @@ -99,7 +99,7 @@ class DropwizardServerGenerator private extends ServerTerms[ScalaLanguage, Targe ) } (responseDefinitions, serverOperations) = responseServerPair.unzip - securityExposure = serverOperations.flatMap(_.routeMeta.securityRequirements) match { + securityExposure = serverOperations.flatMap(_.routeMeta.securityRequirements) match { case Nil => SecurityExposure.Undefined case xs => if (xs.exists(_.optional)) SecurityExposure.Optional else SecurityExposure.Required } @@ -376,7 +376,7 @@ class DropwizardServerGenerator private extends ServerTerms[ScalaLanguage, Targe responses: Responses[ScalaLanguage], protocolElems: List[StrictProtocolElems[ScalaLanguage]] ): Target[List[Defn]] = { - val responseClsType = Type.Name(responseClsName) + val responseClsType = Type.Name(responseClsName) val responseInstances: List[(Defn, Defn)] = responses.value.map { response => val responseClsSubType = Type.Name(s"$responseClsName${response.statusCodeName}") val responseClsSubTerm = Term.Name(s"$responseClsName${response.statusCodeName}") @@ -449,7 +449,7 @@ class DropwizardServerGenerator private extends ServerTerms[ScalaLanguage, Targe case _ => false } - val allProduces = operation.downField("produces", _.produces).map(_.flatMap(ContentType.unapply)).unwrapTracker + val allProduces = operation.downField("produces", _.produces).map(_.flatMap(ContentType.unapply)).unwrapTracker val producesAnnotation = NonEmptyList .fromList( responses.value @@ -462,7 +462,7 @@ class DropwizardServerGenerator private extends ServerTerms[ScalaLanguage, Targe val methodAnnotations = pathAnnotation.toList ++ List(httpMethodAnnotation) ++ consumesAnnotation ++ producesAnnotation val formParamAnnot = if (consumes.exists(ContentType.isSubtypeOf[MultipartFormData])) "FormDataParam" else "FormParam" - val methodParams = + val methodParams = parameters.pathParams.map(paramTransformers.transform(_, Some("PathParam"))) ++ parameters.headerParams.map(paramTransformers.transform(_, Some("HeaderParam"))) ++ parameters.queryStringParams.map(paramTransformers.transform(_, Some("QueryParam"))) ++ diff --git a/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sClientGenerator.scala b/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sClientGenerator.scala index f63e4293f8..69b3326368 100644 --- a/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sClientGenerator.scala +++ b/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sClientGenerator.scala @@ -78,10 +78,10 @@ class Http4sClientGenerator(version: Http4sVersion) extends ClientTerms[ScalaLan clientImports <- getImports(context.tracing) clientExtraImports <- getExtraImports(context.tracing) supportDefinitions <- generateSupportDefinitions(context.tracing, securitySchemes) - clients <- groupedRoutes.traverse { case (className, unsortedRoutes) => + clients <- groupedRoutes.traverse { case (className, unsortedRoutes) => val routes = unsortedRoutes.sortBy(r => (r.path.unwrapTracker, r.method)) for { - clientName <- formatTypeName(className.lastOption.getOrElse(""), Some("Client")) + clientName <- formatTypeName(className.lastOption.getOrElse(""), Some("Client")) responseClientPair <- routes.traverse { case route @ RouteMeta(path, method, operation, securityRequirements) => for { operationId <- getOperationId(operation) @@ -97,7 +97,7 @@ class Http4sClientGenerator(version: Http4sVersion) extends ClientTerms[ScalaLan tracingName = Option(className.mkString("-")).filterNot(_.isEmpty) ctorArgs <- clientClsArgs(tracingName, serverUrls, context.tracing) staticDefns <- buildStaticDefns(clientName, tracingName, serverUrls, ctorArgs, context.tracing) - client <- buildClient( + client <- buildClient( clientName, tracingName, serverUrls, @@ -131,7 +131,7 @@ class Http4sClientGenerator(version: Http4sVersion) extends ClientTerms[ScalaLan responses: Responses[ScalaLanguage] ): Target[RenderedClientOperation[ScalaLanguage]] = { val RouteMeta(pathStr, httpMethod, operation, securityRequirements) = route - val containerTransformations = Map[String, Term => Term]( + val containerTransformations = Map[String, Term => Term]( "Iterable" -> identity _, "List" -> (term => q"$term.toList"), "Vector" -> (term => q"$term.toVector"), @@ -297,7 +297,7 @@ class Http4sClientGenerator(version: Http4sVersion) extends ClientTerms[ScalaLan defaultHeaders = param"headers: List[Header.ToRaw] = List.empty" safeBody: Option[(Term, Type)] = body.map(sp => (sp.paramName, sp.argType)) - formDataNeedsMultipart = consumes.exists(ContentType.isSubtypeOf[MultipartFormData]) + formDataNeedsMultipart = consumes.exists(ContentType.isSubtypeOf[MultipartFormData]) formEntity: Option[Term] = formDataParams.map { formDataParams => if (formDataNeedsMultipart) { q"""_multipart""" @@ -330,9 +330,9 @@ class Http4sClientGenerator(version: Http4sVersion) extends ClientTerms[ScalaLan } else { List(q"val allHeaders: List[org.http4s.Header.ToRaw] = $acceptHeader ++ headers ++ $headerParams") } - methodExpr = q"Method.${Term.Name(httpMethod.toString.toUpperCase)}" - reqBinding = q"req" - req = q"Request[F](method = ${methodExpr}, uri = ${urlWithParams}, headers = Headers(allHeaders))" + methodExpr = q"Method.${Term.Name(httpMethod.toString.toUpperCase)}" + reqBinding = q"req" + req = q"Request[F](method = ${methodExpr}, uri = ${urlWithParams}, headers = Headers(allHeaders))" reqWithBody = formEntity .map(e => q"$req.withEntity($e)") .orElse(safeBody.map(_._1).map(e => q"$req.withEntity($e)(${Term.Name(s"${methodName}Encoder")})")) @@ -390,7 +390,7 @@ class Http4sClientGenerator(version: Http4sVersion) extends ClientTerms[ScalaLan if (isGeneric) p"case resp => F.raiseError[$baseResponseTypeRef[F]](UnexpectedStatus(resp.status, ${methodExpr}, ${reqBinding}.uri))" else p"case resp => F.raiseError[$baseResponseTypeRef](UnexpectedStatus(resp.status, ${methodExpr}, ${reqBinding}.uri))" responseTypeRef = if (isGeneric) t"cats.effect.Resource[F, $baseResponseTypeRef[F]]" else t"F[$baseResponseTypeRef]" - executeReqExpr = + executeReqExpr = if (isGeneric) List(q"""$httpClientName.run(${reqBinding}).evalMap(${Term.PartialFunction(cases :+ unexpectedCase)})""") else List(q"""$httpClientName.run(${reqBinding}).use(${Term.PartialFunction(cases :+ unexpectedCase)})""") methodBody: Term = embedMultipart(tracingExpr ++ headersExpr ++ reqExpr ++ executeReqExpr) diff --git a/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sPathExtractor.scala b/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sPathExtractor.scala index c21f708684..ade19c3094 100644 --- a/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sPathExtractor.scala +++ b/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sPathExtractor.scala @@ -18,7 +18,7 @@ object Http4sPathExtractor case t"java.util.UUID" => Right(p"UUIDVar(${Pat.Var(paramName)})") case Type.Name(tpe) => Right(p"${Term.Name(s"${tpe}Var")}(${Pat.Var(paramName)})") case Type.Select(_, Type.Name(tpe)) => Right(p"${Term.Name(s"${tpe}Var")}(${Pat.Var(paramName)})") - case tpe => + case tpe => println(s"Doing our best turning ${tpe} into an extractor") Right(p"${Term.Name(s"${tpe}Var")}(${Pat.Var(paramName)})") } diff --git a/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sServerGenerator.scala b/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sServerGenerator.scala index f2333bee16..d0338ec5a4 100644 --- a/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sServerGenerator.scala +++ b/modules/scala-http4s/src/main/scala/dev/guardrail/generators/scala/http4s/Http4sServerGenerator.scala @@ -102,7 +102,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms for { extraImports <- getExtraImports(context.tracing, supportPackage) supportDefinitions <- generateSupportDefinitions(context.tracing, securitySchemes) - servers <- groupedRoutes.traverse { case (className, unsortedRoutes) => + servers <- groupedRoutes.traverse { case (className, unsortedRoutes) => val routes = unsortedRoutes .groupBy(_.path.unwrapTracker.indexOf('{')) .view @@ -130,7 +130,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms ) } (responseDefinitions, serverOperations) = responseServerPair.unzip - securityExposure = serverOperations.flatMap(_.routeMeta.securityRequirements) match { + securityExposure = serverOperations.flatMap(_.routeMeta.securityRequirements) match { case Nil => SecurityExposure.Undefined case xs => if (xs.exists(_.optional)) SecurityExposure.Optional else SecurityExposure.Required } @@ -197,7 +197,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms private def buildCustomExtractionFields(operation: Tracker[Operation], resourceName: List[String], customExtraction: Boolean) = for { - _ <- Target.log.debug(s"buildCustomExtractionFields(${operation.unwrapTracker.showNotNull}, ${resourceName}, ${customExtraction})") + _ <- Target.log.debug(s"buildCustomExtractionFields(${operation.unwrapTracker.showNotNull}, ${resourceName}, ${customExtraction})") res <- if (customExtraction) { for { @@ -216,7 +216,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms private def buildTracingFields(operation: Tracker[Operation], resourceName: List[String], tracing: Boolean) = Target.log.function("buildTracingFields")(for { - _ <- Target.log.debug(s"Args: ${operation}, ${resourceName}, ${tracing}") + _ <- Target.log.debug(s"Args: ${operation}, ${resourceName}, ${tracing}") res <- if (tracing) { for { @@ -275,13 +275,13 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms securityRequirements: List[SecurityRequirements], authImplementation: AuthImplementation ): Target[List[scala.meta.Defn]] = { - val schemesNames = securitySchemes.keySet + val schemesNames = securitySchemes.keySet val uniqueRequirements: List[Tracker[String]] = securityRequirements.flatMap(_.requirements.flatMap(_.map(_.keys.toNonEmptyList).indexedDistribute).toList).distinctBy(_.unwrapTracker) - val errorTermName = Term.Name(authErrorTypeName.value) + val errorTermName = Term.Name(authErrorTypeName.value) val (simpleAuthErrors, simpleAuthenticator) = if (authImplementation == AuthImplementation.Simple) { - val errorInit = Init(authErrorTypeName, Name(""), List.empty[Term.ArgClause]) + val errorInit = Init(authErrorTypeName, Name(""), List.empty[Term.ArgClause]) val authErrors = List( q"""sealed trait $authErrorTypeName""", q""" @@ -370,7 +370,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms Target.log.function("renderHandler")(for { _ <- Target.log.debug(s"Args: ${handlerName}, ${methodSigs}") extractType = if (customExtraction) List(tparam"-$customExtractionTypeName") else List.empty - authType = + authType = if (authImplementation == Native || (authImplementation != Disable && securityExposure != SecurityExposure.Undefined)) { List(tparam"$authContextTypeName") } else List.empty @@ -405,7 +405,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms if (tracing) { Option(param"""trace: String => Request[F] => TraceBuilder[F]""") } else Option.empty - resourceTerm = Term.Name(resourceName) + resourceTerm = Term.Name(resourceName) authentication_ = authImplementation match { case Simple if securityExposure != SecurityExposure.Undefined => val authType = Type.Select(resourceTerm, authSchemesTypeName) @@ -449,10 +449,10 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms extractType = List(customExtractionTypeName).map(x => tparam"$x").filter(_ => customExtraction) authType = List(tparam"$authContextTypeName").filter(_ => securitySchemesDefinitions.nonEmpty || authImplementation == AuthImplementation.Native) resourceTParams = List(tparam"F[_]") ++ extractType ++ authType - handlerTParams = List(Type.Name("F")) ++ + handlerTParams = List(Type.Name("F")) ++ List(customExtractionTypeName).filter(_ => customExtraction) ++ List(authContextTypeName).filter(_ => securitySchemesDefinitions.nonEmpty || authImplementation == AuthImplementation.Native) - routesParams = List(param"handler: ${Type.Name(handlerName)}[..$handlerTParams]") + routesParams = List(param"handler: ${Type.Name(handlerName)}[..$handlerTParams]") routesDefinition = authImplementation match { case Native => q""" def routes(..${routesParams}): AuthedRoutes[$authContextTypeName, F] = AuthedRoutes.of { @@ -594,7 +594,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms arg => _ => _ => Target.raiseUserError(s"Unsupported Option[Iterable[${arg}]]"), arg => { case t"String" => Target.pure(Param(None, None, q"req.headers.get(CIString(${arg.argName.toLit})).map(_.head.value)")) - case tpe => + case tpe => Target.pure( Param( None, @@ -618,7 +618,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms arg => _ => _ => Target.pure(p"${Term.Name(s"${methodName.capitalize}${arg.argName.value.capitalize}Matcher")}(${Pat.Var(arg.paramName)})"), arg => _ => Target.pure(p"${Term.Name(s"${methodName.capitalize}${arg.argName.value.capitalize}Matcher")}(${Pat.Var(arg.paramName)})") )(params).map { - case Nil => Option.empty + case Nil => Option.empty case x :: xs => Some(xs.foldLeft[Pat](x) { case (a, n) => p"${a} +& ${n}" }) } @@ -664,7 +664,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms }, arg => { case t"String" => lift => Target.pure(Param(None, None, q"urlForm.values.get(${arg.argName.toLit}).map(${lift(q"_")})")) - case tpe => + case tpe => lift => Target.pure( Param( @@ -867,7 +867,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms http4sHeaders <- headersToHttp4s(headerArgs) supportDefinitions <- generateSupportDefinitions(route, parameters) } yield { - val resourceTerm = Term.Name(resourceName) + val resourceTerm = Term.Name(resourceName) val (responseCompanionTerm, responseCompanionType) = (Term.Name(responseClsName), Type.Name(responseClsName)) val responseType = ServerRawResponse(operation) @@ -876,7 +876,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms val authContext: Option[(LanguageParameter[ScalaLanguage], Term => Term)] = authImplementation match { case Disable => None case Native => Some((LanguageParameter.fromParam(param"authContext: $authContextTypeName"), identity _)) - case Custom => + case Custom => securityRequirements.map { sr => val arg = LanguageParameter.fromParam(param"authContext: $authContextTypeName") val securityRequirements = renderCustomSecurityRequirements(sr) @@ -903,7 +903,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms case Simple => securityRequirements.map { sr => val errorTermName = Term.Name(authErrorTypeName.value) - val inner = if (sr.optional) { + val inner = if (sr.optional) { t"Either[${Type.Singleton(Term.Select(Term.Select(Term.Name(resourceName), errorTermName), q"Forbidden"))}, Option[$authContextTypeName]]" } else { t"Either[${Term.Name(resourceName)}.$authErrorTypeName, $authContextTypeName]" @@ -973,8 +973,8 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms ) ++ tracingFields.map(_.param.paramName).map(List(_)) ++ customExtractionFields.map(_.param.paramName).map(List(_)) - val handlerCall = q"handler.${Term.Name(methodName)}(...${handlerCallArgs})" - val isGeneric = ResponseADTHelper.isDefinitionGeneric(responses) + val handlerCall = q"handler.${Term.Name(methodName)}(...${handlerCallArgs})" + val isGeneric = ResponseADTHelper.isDefinitionGeneric(responses) val responseExpr = ServerRawResponse(operation) .filter(_ == true) .fold[Term] { @@ -1010,7 +1010,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms } q"$handlerCall flatMap ${Term.PartialFunction(marshallers)}" }(_ => handlerCall) - val matchers = (http4sForm ++ http4sHeaders).flatMap(_.matcher) + val matchers = (http4sForm ++ http4sHeaders).flatMap(_.matcher) val responseInMatch = NonEmptyList.fromList(matchers).fold(responseExpr) { case NonEmptyList((expr, pat), Nil) => Term.Match(expr, List(Case(pat, None, responseExpr), Case(p"_", None, q"""BadRequest("Invalid data")""")), Nil) @@ -1204,7 +1204,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms "Seq" -> (term => q"$term.map(_.toSeq)"), "IndexedSeq" -> (term => q"$term.map(_.toIndexedSeq)") ) - val matcherName = Term.Name(s"${methodName.capitalize}${argName.value.capitalize}Matcher") + val matcherName = Term.Name(s"${methodName.capitalize}${argName.value.capitalize}Matcher") val (queryParamMatcher: Defn.Object, elemType: Type) = param match { case param"$_: Option[$container[$tpe]]" if containerTransformations.contains(container.syntax) => val transform = containerTransformations(container.syntax) @@ -1257,7 +1257,7 @@ class Http4sServerGenerator private (version: Http4sVersion) extends ServerTerms if (parameters.exists(param => param.paramName.syntax != param.paramName.value)) { // let's try to prefix them all with underscore and see if it helps for { - _ <- Target.log.debug("Found that not all parameters could be represented as unescaped terms") + _ <- Target.log.debug("Found that not all parameters could be represented as unescaped terms") res <- parameters.traverse[Target, LanguageParameter[ScalaLanguage]] { param => for { _ <- Target.log.debug(s"Escaping param ${param.argName.value}") diff --git a/modules/scala-http4s/src/test/scala/core/issues/Issue538.scala b/modules/scala-http4s/src/test/scala/core/issues/Issue538.scala index cc5c85ffb8..1a0f117da3 100644 --- a/modules/scala-http4s/src/test/scala/core/issues/Issue538.scala +++ b/modules/scala-http4s/src/test/scala/core/issues/Issue538.scala @@ -169,7 +169,7 @@ class Issue538 extends AnyFunSuite with Matchers with SwaggerSpecRunner { ) = runSwaggerSpec(scalaInterpreter)(spec)(Context.empty, version.value) val companion = companionForStaticDefns(foo.staticDefns) - val expected = + val expected = q""" object Foo { implicit val encodeFoo: _root_.io.circe.Encoder.AsObject[Foo] = { diff --git a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/JacksonModelGenerator.scala b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/JacksonModelGenerator.scala index 9064e0961c..4b27dbd7d5 100644 --- a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/JacksonModelGenerator.scala +++ b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/JacksonModelGenerator.scala @@ -1,7 +1,7 @@ package dev.guardrail.generators.scala sealed abstract class JacksonModelGenerator(val value: String) extends ModelGeneratorType -case object JacksonModelGenerator extends JacksonModelGenerator("jackson") { +case object JacksonModelGenerator extends JacksonModelGenerator("jackson") { val mapping: Map[String, JacksonModelGenerator] = Map( JacksonModelGenerator.value -> JacksonModelGenerator ) diff --git a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaCollectionsGenerator.scala b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaCollectionsGenerator.scala index 8972b42008..dbeccf034d 100644 --- a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaCollectionsGenerator.scala +++ b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaCollectionsGenerator.scala @@ -31,7 +31,7 @@ class ScalaCollectionsGenerator private extends CollectionsLibTerms[ScalaLanguag def liftSomeTerm(value: Term): Target[Term] = Target.pure(q"Some($value)") def emptyOptionalTerm(): Target[Term] = Target.pure(q"None") - def arrayType(format: Option[String]): Target[Type] = Target.pure(t"Iterable[String]") + def arrayType(format: Option[String]): Target[Type] = Target.pure(t"Iterable[String]") def liftVectorType(value: Type, customTpe: Option[Type]): Target[Type] = Target.pure(t"${customTpe.getOrElse(t"Vector")}[$value]") def liftVectorTerm(value: Term): Target[Term] = Target.pure(q"Vector($value)") @@ -47,7 +47,7 @@ class ScalaCollectionsGenerator private extends CollectionsLibTerms[ScalaLanguag def liftMapType(value: Type, customTpe: Option[Type]): Target[Type] = Target.pure(t"${customTpe.getOrElse(t"Map")}[String, $value]") - def emptyMap(): Target[Term] = Target.pure(q"Map.empty") + def emptyMap(): Target[Term] = Target.pure(q"Map.empty") def embedMap(tpe: core.LazyResolvedType[ScalaLanguage], containerTpe: Option[Type]): Target[core.LazyResolvedType[ScalaLanguage]] = tpe match { case core.Deferred(inner) => Target.pure(core.DeferredMap[ScalaLanguage](inner, containerTpe)) diff --git a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaCoreTermLoader.scala b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaCoreTermLoader.scala index 6dfe652c87..aa142db174 100644 --- a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaCoreTermLoader.scala +++ b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaCoreTermLoader.scala @@ -7,7 +7,7 @@ import scala.reflect.runtime.universe.typeTag class ScalaCoreTermLoader extends CoreTermsLoader { type L = ScalaLanguage - def reified = typeTag[Target[ScalaLanguage]] + def reified = typeTag[Target[ScalaLanguage]] def apply(language: String, parameters: NonEmptyList[Args]) = if (language == "scala") Some(() => runM(parameters)(ScalaGeneratorMappings.scalaInterpreter)) else None } diff --git a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaGenerator.scala b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaGenerator.scala index 4e397ac2c2..d1ddc7fdb8 100644 --- a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaGenerator.scala +++ b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaGenerator.scala @@ -100,7 +100,7 @@ class ScalaGenerator private extends LanguageTerms[ScalaLanguage, Target] { ) ) override def parseTypeName(tpe: String): Target[Option[scala.meta.Type.Name]] = Target.pure(Option(tpe.trim).filterNot(_.isEmpty).map(Type.Name(_))) - override def pureTermName(tpe: String): Target[scala.meta.Term.Name] = + override def pureTermName(tpe: String): Target[scala.meta.Term.Name] = Target.fromOption(Option(tpe.trim).filterNot(_.isEmpty).map(Term.Name(_)), UserError("A structure's name is empty")) override def pureTypeName(tpe: String): Target[scala.meta.Type.Name] = Target.fromOption(Option(tpe.trim).filterNot(_.isEmpty).map(Type.Name(_)), UserError("A structure's name is empty")) @@ -109,7 +109,7 @@ class ScalaGenerator private extends LanguageTerms[ScalaLanguage, Target] { Target.pure(param"$name: $tpe".copy(default = default)) override def typeNamesEqual(a: scala.meta.Type.Name, b: scala.meta.Type.Name): Target[Boolean] = Target.pure(a.value == b.value) override def typesEqual(a: scala.meta.Type, b: scala.meta.Type): Target[Boolean] = Target.pure(a.structure == b.structure) - override def extractTypeName(tpe: scala.meta.Type): Target[Option[scala.meta.Type.Name]] = + override def extractTypeName(tpe: scala.meta.Type): Target[Option[scala.meta.Type.Name]] = Target.pure(tpe match { case x: Type.Name => Option(x) @@ -122,9 +122,9 @@ class ScalaGenerator private extends LanguageTerms[ScalaLanguage, Target] { case _ => Target.raiseException("Impossible 2.13.4+ excitement, see https://github.com/scala/bug/issues/12232") } override def extractTermNameFromParam(param: scala.meta.Term.Param): Target[String] = Target.pure(param.name.value) - override def selectType(typeNames: NonEmptyList[String]): Target[scala.meta.Type] = { - val tpe = Type.Name(typeNames.last) - val names = typeNames.init.map(Term.Name.apply _) + override def selectType(typeNames: NonEmptyList[String]): Target[scala.meta.Type] = { + val tpe = Type.Name(typeNames.last) + val names = typeNames.init.map(Term.Name.apply _) val result = names match { case Nil => tpe @@ -143,18 +143,18 @@ class ScalaGenerator private extends LanguageTerms[ScalaLanguage, Target] { override def alterMethodParameterName(param: scala.meta.Term.Param, name: scala.meta.Term.Name): Target[scala.meta.Term.Param] = Target.pure(param.copy(name = name)) - override def bytesType(): Target[scala.meta.Type] = Target.pure(t"Base64String") - override def uuidType(): Target[scala.meta.Type] = Target.pure(t"java.util.UUID") - override def dateType(): Target[scala.meta.Type] = Target.pure(t"java.time.LocalDate") - override def dateTimeType(): Target[scala.meta.Type] = Target.pure(t"java.time.OffsetDateTime") - override def stringType(format: Option[String]): Target[scala.meta.Type] = Target.pure(format.fold(t"String")(Type.Name(_))) - override def floatType(): Target[scala.meta.Type] = Target.pure(t"Float") - override def doubleType(): Target[scala.meta.Type] = Target.pure(t"Double") - override def numberType(format: Option[String]): Target[scala.meta.Type] = Target.pure(t"BigDecimal") - override def intType(): Target[scala.meta.Type] = Target.pure(t"Int") - override def longType(): Target[scala.meta.Type] = Target.pure(t"Long") - override def integerType(format: Option[String]): Target[scala.meta.Type] = Target.pure(t"BigInt") - override def booleanType(format: Option[String]): Target[scala.meta.Type] = Target.pure(t"Boolean") + override def bytesType(): Target[scala.meta.Type] = Target.pure(t"Base64String") + override def uuidType(): Target[scala.meta.Type] = Target.pure(t"java.util.UUID") + override def dateType(): Target[scala.meta.Type] = Target.pure(t"java.time.LocalDate") + override def dateTimeType(): Target[scala.meta.Type] = Target.pure(t"java.time.OffsetDateTime") + override def stringType(format: Option[String]): Target[scala.meta.Type] = Target.pure(format.fold(t"String")(Type.Name(_))) + override def floatType(): Target[scala.meta.Type] = Target.pure(t"Float") + override def doubleType(): Target[scala.meta.Type] = Target.pure(t"Double") + override def numberType(format: Option[String]): Target[scala.meta.Type] = Target.pure(t"BigDecimal") + override def intType(): Target[scala.meta.Type] = Target.pure(t"Int") + override def longType(): Target[scala.meta.Type] = Target.pure(t"Long") + override def integerType(format: Option[String]): Target[scala.meta.Type] = Target.pure(t"BigInt") + override def booleanType(format: Option[String]): Target[scala.meta.Type] = Target.pure(t"Boolean") override def fallbackType(tpe: Option[String], format: Option[String]): Target[scala.meta.Type] = Target.fromOption(tpe, UserError("Missing type")).map(Type.Name(_)) @@ -193,7 +193,7 @@ class ScalaGenerator private extends LanguageTerms[ScalaLanguage, Target] { customImports: List[scala.meta.Import] ): Target[Option[WriteTree]] = { val pkg: Term.Ref = buildTermSelect(pkgName) - val implicits = source""" + val implicits = source""" package $pkg ..$jsonImports @@ -295,7 +295,7 @@ class ScalaGenerator private extends LanguageTerms[ScalaLanguage, Target] { val pkg: Term.Ref = buildTermSelect(pkgName) val implicitsRef: Term.Ref = (pkgName.map(Term.Name.apply _) ++ List(q"Implicits")).foldLeft[Term.Ref](q"_root_")(Term.Select.apply _) val frameworkImplicitImports = frameworkImplicitImportNames.map(name => q"import ${buildTermSelect(("_root_" :: pkgName) :+ name.value)}._") - val frameworkImplicitsFile = source""" + val frameworkImplicitsFile = source""" package $pkg ..$jsonImports @@ -320,7 +320,7 @@ class ScalaGenerator private extends LanguageTerms[ScalaLanguage, Target] { frameworkDefinitions: List[scala.meta.Defn], frameworkDefinitionsName: scala.meta.Term.Name ): Target[WriteTree] = { - val pkg: Term.Ref = buildTermSelect(pkgName) + val pkg: Term.Ref = buildTermSelect(pkgName) val frameworkDefinitionsFile = source""" package $pkg diff --git a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaModuleMapper.scala b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaModuleMapper.scala index 263a1d8bbb..6e813df9bb 100644 --- a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaModuleMapper.scala +++ b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaModuleMapper.scala @@ -6,7 +6,7 @@ import scala.reflect.runtime.universe.typeTag class ScalaModuleMapper extends ModuleMapperLoader { type L = ScalaLanguage - def reified = typeTag[Target[ScalaLanguage]] + def reified = typeTag[Target[ScalaLanguage]] def apply(frameworkName: String): Option[Set[String]] = frameworkName match { case "akka-http" => Some(Set("akka-http", "circe")) case "http4s" => Some(Set("circe", "http4s")) diff --git a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/circe/CirceProtocolGenerator.scala b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/circe/CirceProtocolGenerator.scala index 9fdc17d249..1e678bd1ee 100644 --- a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/circe/CirceProtocolGenerator.scala +++ b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/circe/CirceProtocolGenerator.scala @@ -43,7 +43,7 @@ import dev.guardrail.{ Target, UserError } class CirceProtocolGeneratorLoader extends ProtocolGeneratorLoader { type L = ScalaLanguage def reified = typeTag[Target[ScalaLanguage]] - val apply = + val apply = ModuleLoadResult.forProduct1(ProtocolGeneratorLoader.label -> Seq(CirceModelGenerator.mapping))(circeVersion => CirceProtocolGenerator(circeVersion)) } @@ -86,13 +86,13 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa concreteTypes <- PropMeta.extractConcreteTypes[ScalaLanguage, Target](definitions.value, components) polyADTs <- hierarchies.traverse(fromPoly(_, concreteTypes, definitions.value, dtoPackage, supportPackage.toList, defaultPropertyRequirement, components)) prefixes <- vendorPrefixes() - elems <- definitionsWithoutPoly.traverse { case (clsName, model) => + elems <- definitionsWithoutPoly.traverse { case (clsName, model) => model .refine { case c: ComposedSchema => c }(comp => for { formattedClsName <- formatTypeName(clsName) parents <- extractParents(comp, definitions.value, concreteTypes, dtoPackage, supportPackage.toList, defaultPropertyRequirement, components) - model <- fromModel( + model <- fromModel( clsName = NonEmptyList.of(formattedClsName), model = comp, parents = parents, @@ -126,7 +126,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa for { formattedClsName <- formatTypeName(clsName) enum_ <- fromEnum[Object](formattedClsName, m, dtoPackage, components) - model <- fromModel( + model <- fromModel( clsName = NonEmptyList.of(formattedClsName), model = m, parents = List.empty, @@ -154,7 +154,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa for { formattedClsName <- formatTypeName(clsName) enum_ <- fromEnum(formattedClsName, x, dtoPackage, components) - model <- fromModel( + model <- fromModel( NonEmptyList.of(formattedClsName), x, List.empty, @@ -174,7 +174,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa for { formattedClsName <- formatTypeName(clsName) enum_ <- fromEnum(formattedClsName, x, dtoPackage, components) - model <- fromModel( + model <- fromModel( NonEmptyList.of(formattedClsName), x, List.empty, @@ -186,7 +186,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa components ) (declType, _) <- ModelResolver.determineTypeName[ScalaLanguage, Target](x, Tracker.cloneHistory(x, CustomTypeName(x, prefixes)), components) - oneOf <- fromOneOf( + oneOf <- fromOneOf( clsName = NonEmptyList.of(formattedClsName), model = x, definitions.value, @@ -225,7 +225,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa private[this] def getRequiredFieldsRec(root: Tracker[Schema[_]]): List[String] = { @scala.annotation.tailrec def work(values: List[Tracker[Schema[_]]], acc: List[String]): List[String] = { - val required: List[String] = values.flatMap(_.downField("required", _.getRequired()).unwrapTracker) + val required: List[String] = values.flatMap(_.downField("required", _.getRequired()).unwrapTracker) val next: List[Tracker[Schema[_]]] = for { a <- values @@ -369,7 +369,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa props <- extractProperties(hierarchy.model) requiredFields = hierarchy.required ::: hierarchy.children.flatMap(_.required) prefixes <- vendorPrefixes() - params <- props.traverse { case (name, prop) => + params <- props.traverse { case (name, prop) => for { typeName <- formatTypeName(name).map(formattedName => NonEmptyList.of(hierarchy.name, formattedName)) propertyRequirement = getPropertyRequirement(prop, requiredFields.contains(name), defaultPropertyRequirement) @@ -380,7 +380,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa ) // TODO: This should be resolved via an alternate mechanism that maintains references all the way through, instead of re-deriving and assuming that references are valid defValue <- defaultValue(typeName, prop, propertyRequirement, definitions) fieldName <- formatFieldName(name) - res <- transformProperty(hierarchy.name, dtoPackage, supportPackage, concreteTypes)( + res <- transformProperty(hierarchy.name, dtoPackage, supportPackage, concreteTypes)( name, fieldName, prop, @@ -431,12 +431,12 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa import Sc._ for { - a <- extractSuperClass(elem, definitions) + a <- extractSuperClass(elem, definitions) supper <- a.flatTraverse { case (clsName, _extends, interfaces) => val concreteInterfacesWithClass = for { interface <- interfaces (cls, tracker) <- definitions - result <- tracker + result <- tracker .refine[Tracker[Schema[_]]] { case x: ComposedSchema if interface.downField("$ref", _.get$ref()).exists(_.unwrapTracker.endsWith(s"/${cls}")) => x }( @@ -446,7 +446,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa .toOption } yield cls -> result val (_, concreteInterfaces) = concreteInterfacesWithClass.unzip - val classMapping = (for { + val classMapping = (for { (cls, schema) <- concreteInterfacesWithClass (name, _) <- schema.downField("properties", _.getProperties).indexedDistribute.value } yield (name, cls)).toMap @@ -565,15 +565,15 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa defaultPropertyRequirement, components ) - encoder <- encodeModel(clsName.last, dtoPackage, params, parents) - decoder <- decodeModel(clsName.last, dtoPackage, supportPackage, params, parents) - tpe <- parseTypeName(clsName.last) - fullType <- selectType(dtoPackage.foldRight(clsName)((x, xs) => xs.prepend(x))) + encoder <- encodeModel(clsName.last, dtoPackage, params, parents) + decoder <- decodeModel(clsName.last, dtoPackage, supportPackage, params, parents) + tpe <- parseTypeName(clsName.last) + fullType <- selectType(dtoPackage.foldRight(clsName)((x, xs) => xs.prepend(x))) nestedClasses <- nestedDefinitions.flatTraverse { case classDefinition: ClassDefinition[ScalaLanguage] => for { - widenClass <- widenClassDefinition(classDefinition.cls) - companionTerm <- pureTermName(classDefinition.name) + widenClass <- widenClassDefinition(classDefinition.cls) + companionTerm <- pureTermName(classDefinition.name) companionDefinition <- wrapToObject( companionTerm, classDefinition.staticDefns.extraImports, @@ -632,7 +632,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa (rawTypes, nestedClasses) <- xs .traverse { model => for { - resolved <- ModelResolver.propMetaWithName[ScalaLanguage, Target](() => getNewName().flatMap(Sc.selectType), model, components) + resolved <- ModelResolver.propMetaWithName[ScalaLanguage, Target](() => getNewName().flatMap(Sc.selectType), model, components) (rawType, nestedClasses) <- resolved .bitraverse( deferred => @@ -756,7 +756,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa q"object members { ..${members.toList} }", q"def apply[A](value: A)(implicit ev: A => ${Type.Name(clsName.last)}): ${Type.Name(clsName.last)} = ev(value)" ) ++ applyAdapters.toList ++ nestedDefns ++ nestedEncoders.flatten ++ nestedDecoders.flatten - defn = q"""sealed abstract class ${Type.Name(clsName.last)} {}""" + defn = q"""sealed abstract class ${Type.Name(clsName.last)} {}""" staticDefns = StaticDefns[ScalaLanguage]( className = clsName.last, extraImports = List.empty, @@ -811,7 +811,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa for { () <- Target.log.debug(s"processProperty: ${name} ${schema.unwrapTracker.showNotNull}") nestedClassName <- formatTypeName(name).map(formattedName => getClsName(name).append(formattedName)) - defn <- schema + defn <- schema .refine[Target[Option[Either[String, NestedProtocolElems[ScalaLanguage]]]]] { case ObjectExtractor(x) => x }(o => for { defn <- fromModel( @@ -830,7 +830,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa .orRefine { case o: ComposedSchema => o }(o => for { parents <- extractParents(o, definitions, concreteTypes, dtoPackage, supportPackage, defaultPropertyRequirement, components) - model <- fromModel( + model <- fromModel( clsName = nestedClassName, model = o, parents = parents, @@ -863,7 +863,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa } yield defn for { - prefixes <- vendorPrefixes() + prefixes <- vendorPrefixes() paramsAndNestedDefinitions <- props.traverse[Target, (Tracker[ProtocolParameter[ScalaLanguage]], Option[NestedProtocolElems[ScalaLanguage]])] { case (name, schema) => for { @@ -902,7 +902,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa ) { (s, ta) => val a = ta.unwrapTracker s.find(p => p.name == a.name) match { - case None => (a :: s).pure[Target] + case None => (a :: s).pure[Target] case Some(duplicate) => for { newDefaultValue <- findCommonDefaultValue(ta.showHistory, a.defaultValue, duplicate.defaultValue) @@ -910,7 +910,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa } yield { val emptyToNull = if (Set(a.emptyToNull, duplicate.emptyToNull).contains(EmptyIsNull)) EmptyIsNull else EmptyIsEmpty val redactionBehaviour = if (Set(a.dataRedaction, duplicate.dataRedaction).contains(DataRedacted)) DataRedacted else DataVisible - val mergedParameter = ProtocolParameter[ScalaLanguage]( + val mergedParameter = ProtocolParameter[ScalaLanguage]( a.term, a.baseType, a.name, @@ -1195,11 +1195,11 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa encoder: scala.meta.Defn, decoder: scala.meta.Defn ): Target[StaticDefns[ScalaLanguage]] = { - val longType = Type.Name(clsName) + val longType = Type.Name(clsName) val terms: List[Defn.Val] = accessors.map { pascalValue => q"val ${Pat.Var(pascalValue)}: ${longType} = members.${pascalValue}" }.toList - val values: Defn.Val = q"val values = _root_.scala.Vector(..$accessors)" + val values: Defn.Val = q"val values = _root_.scala.Vector(..$accessors)" val implicits: List[Defn.Val] = List( q"implicit val ${Pat.Var(Term.Name(s"show${clsName}"))}: Show[${longType}] = Show[${tpe}].contramap[${longType}](_.value)" ) @@ -1303,7 +1303,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa validatedType <- applyValidations(clsName, tpe, property) } yield (validatedType, Option.empty, ReifiedRawType.ofMap(fallbackRawType)) } - fieldPattern: Tracker[Option[String]] = property.downField("pattern", _.getPattern) + fieldPattern: Tracker[Option[String]] = property.downField("pattern", _.getPattern) collectionElementPattern: Option[Tracker[String]] = property.downField("items", _.getItems).indexedDistribute.flatMap(_.downField("pattern", _.getPattern).indexedDistribute) @@ -1314,7 +1314,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa presence <- Lt.selectTerm(NonEmptyList.ofInitLast(supportPackage, "Presence")) presenceType <- Lt.selectType(NonEmptyList.ofInitLast(supportPackage, "Presence")) (finalDeclType, finalDefaultValue) = requirement match { - case PropertyRequirement.Required => tpe -> defaultValue + case PropertyRequirement.Required => tpe -> defaultValue case PropertyRequirement.Optional | PropertyRequirement.Configured(PropertyRequirement.Optional, PropertyRequirement.Optional) => t"$presenceType[$tpe]" -> defaultValue.map(t => q"$presence.Present($t)").orElse(Some(q"$presence.Absent")) case _: PropertyRequirement.OptionalRequirement | _: PropertyRequirement.Configured => @@ -1349,7 +1349,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa () <- Target.pure(()) discriminators = parents.flatMap(_.discriminators) discriminatorNames = discriminators.map(_.propertyName).toSet - parentOpt = + parentOpt = if (parents.exists(s => s.discriminators.nonEmpty)) { parents.headOption } else { @@ -1420,7 +1420,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa (discriminatorParams, params) = allParams.partition(param => discriminatorNames.contains(param.name.value)) readOnlyKeys: List[String] = params.flatMap(_.readOnlyKey).toList typeName = Type.Name(clsName) - encVal = { + encVal = { def encodeStatic(param: ProtocolParameter[ScalaLanguage], clsName: String) = q"""(${Lit.String(param.name.value)}, _root_.io.circe.Json.fromString(${Lit.String(clsName)}))""" @@ -1450,7 +1450,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa val pairsWithStatic = pairs ++ discriminatorParams.map(encodeStatic(_, clsName)) val simpleCase = q"_root_.scala.Vector(..${pairsWithStatic})" - val allFields = optional.foldLeft[Term](simpleCase) { (acc, field) => + val allFields = optional.foldLeft[Term](simpleCase) { (acc, field) => q"$acc ++ $field" } @@ -1488,7 +1488,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa needsEmptyToNull: Boolean = params.exists(_.emptyToNull == EmptyIsNull) paramCount = params.length presence <- Lt.selectTerm(NonEmptyList.ofInitLast(supportPackage, "Presence")) - decVal <- + decVal <- if (paramCount == 0) { Target.pure( q""" @@ -1503,7 +1503,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa .traverse { case (param, idx) => for { rawTpe <- Target.fromOption(param.term.decltpe, UserError("Missing type")) - tpe <- rawTpe match { + tpe <- rawTpe match { case tpe: Type => Target.pure(tpe) case x => Target.raiseUserError(s"Unsure how to map ${x.structure}, please report this bug!") } @@ -1609,7 +1609,7 @@ class CirceProtocolGenerator private (circeVersion: CirceModelGenerator, applyVa for { result <- arr match { case Right(core.Resolved(tpe, dep, default, _)) => Target.pure(tpe) - case Left(core.Deferred(tpeName)) => + case Left(core.Deferred(tpeName)) => Target.fromOption(lookupTypeName(tpeName, concreteTypes)(identity), UserError(s"Unresolved reference ${tpeName}")) case Left(core.DeferredArray(tpeName, containerTpe)) => Target.fromOption( diff --git a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/circe/CirceRefinedProtocolGenerator.scala b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/circe/CirceRefinedProtocolGenerator.scala index bb7e4b91c4..b652b39a26 100644 --- a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/circe/CirceRefinedProtocolGenerator.scala +++ b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/circe/CirceRefinedProtocolGenerator.scala @@ -43,7 +43,7 @@ import dev.guardrail.{ Target, UserError } class CirceRefinedProtocolGeneratorLoader extends ProtocolGeneratorLoader { type L = ScalaLanguage def reified = typeTag[Target[ScalaLanguage]] - val apply = + val apply = ModuleLoadResult.forProduct1(ProtocolGeneratorLoader.label -> Seq(CirceRefinedModelGenerator.mapping))(circeVersion => CirceRefinedProtocolGenerator(circeVersion) ) @@ -113,7 +113,7 @@ object CirceRefinedProtocolGenerator { def refine(decimal: BigDecimal): Type = Type.Select(Term.Select(q"_root_.shapeless.Witness", Term.Name(decimal.toInt.toString)), t"T") val maxOpt = prop.downField("maximum", _.getMaximum).unwrapTracker.map(refine(_)) // Can't use ETA since we need ... val minOpt = prop.downField("mimimum", _.getMinimum).unwrapTracker.map(refine(_)) // Scala's BigDecimal, not java.math - val rawType = (maxOpt, minOpt) match { + val rawType = (maxOpt, minOpt) match { case (Some(max), Some(min)) => val refined = t"_root_.eu.timepit.refined.numeric.Interval.Closed[$min, $max]" t"""$tpe Refined $refined""" @@ -175,13 +175,13 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, concreteTypes <- PropMeta.extractConcreteTypes[ScalaLanguage, Target](definitions.value, components) polyADTs <- hierarchies.traverse(fromPoly(_, concreteTypes, definitions.value, dtoPackage, supportPackage.toList, defaultPropertyRequirement, components)) prefixes <- vendorPrefixes() - elems <- definitionsWithoutPoly.traverse { case (clsName, model) => + elems <- definitionsWithoutPoly.traverse { case (clsName, model) => model .refine { case c: ComposedSchema => c }(comp => for { formattedClsName <- formatTypeName(clsName) parents <- extractParents(comp, definitions.value, concreteTypes, dtoPackage, supportPackage.toList, defaultPropertyRequirement, components) - model <- fromModel( + model <- fromModel( clsName = NonEmptyList.of(formattedClsName), model = comp, parents = parents, @@ -215,7 +215,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, for { formattedClsName <- formatTypeName(clsName) enum <- fromEnum[Object](formattedClsName, m, dtoPackage, components) - model <- fromModel( + model <- fromModel( NonEmptyList.of(formattedClsName), m, List.empty, @@ -243,7 +243,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, for { formattedClsName <- formatTypeName(clsName) enum <- fromEnum(formattedClsName, x, dtoPackage, components) - model <- fromModel( + model <- fromModel( NonEmptyList.of(formattedClsName), x, List.empty, @@ -262,7 +262,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, for { formattedClsName <- formatTypeName(clsName) enum <- fromEnum(formattedClsName, x, dtoPackage, components) - model <- fromModel( + model <- fromModel( NonEmptyList.of(formattedClsName), x, List.empty, @@ -274,7 +274,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, components ) (declType, _) <- ModelResolver.determineTypeName[ScalaLanguage, Target](x, Tracker.cloneHistory(x, CustomTypeName(x, prefixes)), components) - oneOf <- fromOneOf( + oneOf <- fromOneOf( clsName = NonEmptyList.of(formattedClsName), model = x, definitions.value, @@ -313,7 +313,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, private[this] def getRequiredFieldsRec(root: Tracker[Schema[_]]): List[String] = { @scala.annotation.tailrec def work(values: List[Tracker[Schema[_]]], acc: List[String]): List[String] = { - val required: List[String] = values.flatMap(_.downField("required", _.getRequired()).unwrapTracker) + val required: List[String] = values.flatMap(_.downField("required", _.getRequired()).unwrapTracker) val next: List[Tracker[Schema[_]]] = for { a <- values @@ -457,7 +457,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, props <- extractProperties(hierarchy.model) requiredFields = hierarchy.required ::: hierarchy.children.flatMap(_.required) prefixes <- vendorPrefixes() - params <- props.traverse { case (name, prop) => + params <- props.traverse { case (name, prop) => for { typeName <- formatTypeName(name).map(formattedName => NonEmptyList.of(hierarchy.name, formattedName)) propertyRequirement = getPropertyRequirement(prop, requiredFields.contains(name), defaultPropertyRequirement) @@ -468,7 +468,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, ) // TODO: This should be resolved via an alternate mechanism that maintains references all the way through, instead of re-deriving and assuming that references are valid defValue <- defaultValue(typeName, prop, propertyRequirement, definitions) fieldName <- formatFieldName(name) - res <- transformProperty(hierarchy.name, dtoPackage, supportPackage, concreteTypes)( + res <- transformProperty(hierarchy.name, dtoPackage, supportPackage, concreteTypes)( name, fieldName, prop, @@ -519,12 +519,12 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, import Sc._ for { - a <- extractSuperClass(elem, definitions) + a <- extractSuperClass(elem, definitions) supper <- a.flatTraverse { case (clsName, _extends, interfaces) => val concreteInterfacesWithClass = for { interface <- interfaces (cls, tracker) <- definitions - result <- tracker + result <- tracker .refine[Tracker[Schema[_]]] { case x: ComposedSchema if interface.downField("$ref", _.get$ref()).exists(_.unwrapTracker.endsWith(s"/${cls}")) => x }( @@ -534,7 +534,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, .toOption } yield cls -> result val (_, concreteInterfaces) = concreteInterfacesWithClass.unzip - val classMapping = (for { + val classMapping = (for { (cls, schema) <- concreteInterfacesWithClass (name, _) <- schema.downField("properties", _.getProperties).indexedDistribute.value } yield (name, cls)).toMap @@ -653,16 +653,16 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, defaultPropertyRequirement, components ) - encoder <- encodeModel(clsName.last, dtoPackage, params, parents) - decoder <- decodeModel(clsName.last, dtoPackage, supportPackage, params, parents) - tpe <- parseTypeName(clsName.last) - fullType <- selectType(dtoPackage.foldRight(clsName)((x, xs) => xs.prepend(x))) - staticDefns <- renderDTOStaticDefns(clsName.last, List.empty, encoder, decoder, params) + encoder <- encodeModel(clsName.last, dtoPackage, params, parents) + decoder <- decodeModel(clsName.last, dtoPackage, supportPackage, params, parents) + tpe <- parseTypeName(clsName.last) + fullType <- selectType(dtoPackage.foldRight(clsName)((x, xs) => xs.prepend(x))) + staticDefns <- renderDTOStaticDefns(clsName.last, List.empty, encoder, decoder, params) nestedClasses <- nestedDefinitions.flatTraverse { case classDefinition: ClassDefinition[ScalaLanguage] => for { - widenClass <- widenClassDefinition(classDefinition.cls) - companionTerm <- pureTermName(classDefinition.name) + widenClass <- widenClassDefinition(classDefinition.cls) + companionTerm <- pureTermName(classDefinition.name) companionDefinition <- wrapToObject( companionTerm, classDefinition.staticDefns.extraImports, @@ -723,7 +723,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, (rawTypes, nestedClasses) <- xs .traverse { model => for { - resolved <- ModelResolver.propMetaWithName[ScalaLanguage, Target](() => getNewName().flatMap(Sc.selectType), model, components) + resolved <- ModelResolver.propMetaWithName[ScalaLanguage, Target](() => getNewName().flatMap(Sc.selectType), model, components) (rawType, nestedClasses) <- resolved .bitraverse( deferred => @@ -847,7 +847,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, q"object members { ..${members.toList} }", q"def apply[A](value: A)(implicit ev: A => ${Type.Name(clsName.last)}): ${Type.Name(clsName.last)} = ev(value)" ) ++ applyAdapters.toList ++ nestedDefns ++ nestedEncoders.flatten ++ nestedDecoders.flatten - defn = q"""sealed abstract class ${Type.Name(clsName.last)} {}""" + defn = q"""sealed abstract class ${Type.Name(clsName.last)} {}""" staticDefns = StaticDefns[ScalaLanguage]( className = clsName.last, extraImports = List.empty, @@ -883,7 +883,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, for { () <- Target.log.debug(s"processProperty: ${name} ${schema.unwrapTracker.showNotNull}") nestedClassName <- formatTypeName(name).map(formattedName => getClsName(name).append(formattedName)) - defn <- schema + defn <- schema .refine[Target[Option[Either[String, NestedProtocolElems[ScalaLanguage]]]]] { case ObjectExtractor(x) => x }(o => for { defn <- fromModel( @@ -902,7 +902,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, .orRefine { case o: ComposedSchema => o }(o => for { parents <- extractParents(o, definitions, concreteTypes, dtoPackage, supportPackage, defaultPropertyRequirement, components) - model <- fromModel( + model <- fromModel( clsName = nestedClassName, model = o, parents = parents, @@ -935,7 +935,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, } yield defn for { - prefixes <- vendorPrefixes() + prefixes <- vendorPrefixes() paramsAndNestedDefinitions <- props.traverse[Target, (Tracker[ProtocolParameter[ScalaLanguage]], Option[NestedProtocolElems[ScalaLanguage]])] { case (name, schema) => for { @@ -974,7 +974,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, ) { (s, ta) => val a = ta.unwrapTracker s.find(p => p.name == a.name) match { - case None => (a :: s).pure[Target] + case None => (a :: s).pure[Target] case Some(duplicate) => for { newDefaultValue <- findCommonDefaultValue(ta.showHistory, a.defaultValue, duplicate.defaultValue) @@ -982,7 +982,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, } yield { val emptyToNull = if (Set(a.emptyToNull, duplicate.emptyToNull).contains(EmptyIsNull)) EmptyIsNull else EmptyIsEmpty val redactionBehaviour = if (Set(a.dataRedaction, duplicate.dataRedaction).contains(DataRedacted)) DataRedacted else DataVisible - val mergedParameter = ProtocolParameter[ScalaLanguage]( + val mergedParameter = ProtocolParameter[ScalaLanguage]( a.term, a.baseType, a.name, @@ -1055,7 +1055,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, .orRefineFallback(_ => None) for { prefixes <- vendorPrefixes() - tpe <- model.fold[Target[scala.meta.Type]](objectType(None)) { m => + tpe <- model.fold[Target[scala.meta.Type]](objectType(None)) { m => for { (declType, _) <- ModelResolver.determineTypeName[ScalaLanguage, Target](m, Tracker.cloneHistory(m, CustomTypeName(m, prefixes)), components) } yield declType @@ -1267,11 +1267,11 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, encoder: scala.meta.Defn, decoder: scala.meta.Defn ): Target[StaticDefns[ScalaLanguage]] = { - val longType = Type.Name(clsName) + val longType = Type.Name(clsName) val terms: List[Defn.Val] = accessors.map { pascalValue => q"val ${Pat.Var(pascalValue)}: ${longType} = members.${pascalValue}" }.toList - val values: Defn.Val = q"val values = _root_.scala.Vector(..$accessors)" + val values: Defn.Val = q"val values = _root_.scala.Vector(..$accessors)" val implicits: List[Defn.Val] = List( q"implicit val ${Pat.Var(Term.Name(s"show${clsName}"))}: Show[${longType}] = Show[${tpe}].contramap[${longType}](_.value)" ) @@ -1375,7 +1375,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, validatedType <- applyValidations(clsName, tpe, property) } yield (validatedType, Option.empty, ReifiedRawType.ofMap(fallbackRawType)) } - fieldPattern: Tracker[Option[String]] = property.downField("pattern", _.getPattern) + fieldPattern: Tracker[Option[String]] = property.downField("pattern", _.getPattern) collectionElementPattern: Option[Tracker[String]] = property.downField("items", _.getItems).indexedDistribute.flatMap(_.downField("pattern", _.getPattern).indexedDistribute) @@ -1386,7 +1386,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, presence <- Lt.selectTerm(NonEmptyList.ofInitLast(supportPackage, "Presence")) presenceType <- Lt.selectType(NonEmptyList.ofInitLast(supportPackage, "Presence")) (finalDeclType, finalDefaultValue) = requirement match { - case PropertyRequirement.Required => tpe -> defaultValue + case PropertyRequirement.Required => tpe -> defaultValue case PropertyRequirement.Optional | PropertyRequirement.Configured(PropertyRequirement.Optional, PropertyRequirement.Optional) => t"$presenceType[$tpe]" -> defaultValue.map(t => q"$presence.Present($t)").orElse(Some(q"$presence.Absent")) case _: PropertyRequirement.OptionalRequirement | _: PropertyRequirement.Configured => @@ -1421,7 +1421,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, () <- Target.pure(()) discriminators = parents.flatMap(_.discriminators) discriminatorNames = discriminators.map(_.propertyName).toSet - parentOpt = + parentOpt = if (parents.exists(s => s.discriminators.nonEmpty)) { parents.headOption } else { @@ -1492,7 +1492,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, (discriminatorParams, params) = allParams.partition(param => discriminatorNames.contains(param.name.value)) readOnlyKeys: List[String] = params.flatMap(_.readOnlyKey).toList typeName = Type.Name(clsName) - encVal = { + encVal = { def encodeStatic(param: ProtocolParameter[ScalaLanguage], clsName: String) = q"""(${Lit.String(param.name.value)}, _root_.io.circe.Json.fromString(${Lit.String(clsName)}))""" @@ -1522,7 +1522,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, val pairsWithStatic = pairs ++ discriminatorParams.map(encodeStatic(_, clsName)) val simpleCase = q"_root_.scala.Vector(..${pairsWithStatic})" - val allFields = optional.foldLeft[Term](simpleCase) { (acc, field) => + val allFields = optional.foldLeft[Term](simpleCase) { (acc, field) => q"$acc ++ $field" } @@ -1560,7 +1560,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, needsEmptyToNull: Boolean = params.exists(_.emptyToNull == EmptyIsNull) paramCount = params.length presence <- Lt.selectTerm(NonEmptyList.ofInitLast(supportPackage, "Presence")) - decVal <- + decVal <- if (paramCount == 0) { Target.pure( q""" @@ -1575,7 +1575,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, .traverse { case (param, idx) => for { rawTpe <- Target.fromOption(param.term.decltpe, UserError("Missing type")) - tpe <- rawTpe match { + tpe <- rawTpe match { case tpe: Type => Target.pure(tpe) case x => Target.raiseUserError(s"Unsure how to map ${x.structure}, please report this bug!") } @@ -1697,7 +1697,7 @@ class CirceRefinedProtocolGenerator private (circeVersion: CirceModelGenerator, for { result <- arr match { case Right(core.Resolved(tpe, dep, default, _)) => Target.pure(tpe) - case Left(core.Deferred(tpeName)) => + case Left(core.Deferred(tpeName)) => Target.fromOption(lookupTypeName(tpeName, concreteTypes)(identity), UserError(s"Unresolved reference ${tpeName}")) case Left(core.DeferredArray(tpeName, containerTpe)) => Target.fromOption( diff --git a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/jackson/JacksonProtocolGenerator.scala b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/jackson/JacksonProtocolGenerator.scala index 3e5e652eda..f977b3f0f0 100644 --- a/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/jackson/JacksonProtocolGenerator.scala +++ b/modules/scala-support/src/main/scala/dev/guardrail/generators/scala/jackson/JacksonProtocolGenerator.scala @@ -89,7 +89,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ emptyIsNullDeserType: Type, emptyIsNullOptionDeserType: Type ): List[Mod] = { - val jsonProperty = List(mod"@com.fasterxml.jackson.annotation.JsonProperty(${Lit.String(param.name.value)})") + val jsonProperty = List(mod"@com.fasterxml.jackson.annotation.JsonProperty(${Lit.String(param.name.value)})") val containerDeserializers = param.term.decltpe match { case Some(t"Vector[$inner]") => List(mod"@com.fasterxml.jackson.databind.annotation.JsonDeserialize(contentAs = classOf[$inner])") case Some(t"List[$inner]") => List(mod"@com.fasterxml.jackson.databind.annotation.JsonDeserialize(contentAs = classOf[$inner])") @@ -193,13 +193,13 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ concreteTypes <- PropMeta.extractConcreteTypes[ScalaLanguage, Target](definitions.value, components) polyADTs <- hierarchies.traverse(fromPoly(_, concreteTypes, definitions.value, dtoPackage, supportPackage.toList, defaultPropertyRequirement, components)) - elems <- definitionsWithoutPoly.traverse { case (clsName, model) => + elems <- definitionsWithoutPoly.traverse { case (clsName, model) => model .refine { case c: ComposedSchema => c }(comp => for { formattedClsName <- formatTypeName(clsName) parents <- extractParents(comp, definitions.value, concreteTypes, dtoPackage, supportPackage.toList, defaultPropertyRequirement, components) - model <- fromModel( + model <- fromModel( clsName = NonEmptyList.of(formattedClsName), model = comp, parents = parents, @@ -223,7 +223,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ for { formattedClsName <- formatTypeName(clsName) enum <- fromEnum[Object](formattedClsName, m, dtoPackage, components) - model <- fromModel( + model <- fromModel( NonEmptyList.of(formattedClsName), m, List.empty, @@ -241,7 +241,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ for { formattedClsName <- formatTypeName(clsName) enum <- fromEnum(formattedClsName, x, dtoPackage, components) - model <- fromModel( + model <- fromModel( NonEmptyList.of(formattedClsName), x, List.empty, @@ -261,7 +261,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ for { formattedClsName <- formatTypeName(clsName) enum <- fromEnum(formattedClsName, x, dtoPackage, components) - model <- fromModel( + model <- fromModel( NonEmptyList.of(formattedClsName), x, List.empty, @@ -304,7 +304,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ private[this] def getRequiredFieldsRec(root: Tracker[Schema[_]]): List[String] = { @scala.annotation.tailrec def work(values: List[Tracker[Schema[_]]], acc: List[String]): List[String] = { - val required: List[String] = values.flatMap(_.downField("required", _.getRequired()).unwrapTracker) + val required: List[String] = values.flatMap(_.downField("required", _.getRequired()).unwrapTracker) val next: List[Tracker[Schema[_]]] = for { a <- values @@ -454,7 +454,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ for { typeName <- formatTypeName(name).map(formattedName => NonEmptyList.of(hierarchy.name, formattedName)) propertyRequirement = getPropertyRequirement(prop, requiredFields.contains(name), defaultPropertyRequirement) - prefixes <- vendorPrefixes() + prefixes <- vendorPrefixes() resolvedType <- ModelResolver .propMeta[ScalaLanguage, Target]( prop, @@ -462,7 +462,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ ) // TODO: This should be resolved via an alternate mechanism that maintains references all the way through, instead of re-deriving and assuming that references are valid defValue <- defaultValue(typeName, prop, propertyRequirement, definitions) fieldName <- formatFieldName(name) - res <- transformProperty(hierarchy.name, dtoPackage, supportPackage, concreteTypes)( + res <- transformProperty(hierarchy.name, dtoPackage, supportPackage, concreteTypes)( name, fieldName, prop, @@ -506,12 +506,12 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ import Sc._ for { - a <- extractSuperClass(elem, definitions) + a <- extractSuperClass(elem, definitions) supper <- a.flatTraverse { case (clsName, _extends, interfaces) => val concreteInterfacesWithClass = for { interface <- interfaces (cls, tracker) <- definitions - result <- tracker + result <- tracker .refine[Tracker[Schema[_]]] { case x: ComposedSchema if interface.downField("$ref", _.get$ref()).exists(_.unwrapTracker.endsWith(s"/${cls}")) => x }( @@ -521,7 +521,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ .toOption } yield cls -> result val (_, concreteInterfaces) = concreteInterfacesWithClass.unzip - val classMapping = (for { + val classMapping = (for { (cls, schema) <- concreteInterfacesWithClass (name, _) <- schema.downField("properties", _.getProperties).indexedDistribute.value } yield (name, cls)).toMap @@ -601,11 +601,11 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ defaultPropertyRequirement, components ) - encoder <- encodeModel(clsName.last, dtoPackage, params, parents) - decoder <- decodeModel(clsName.last, dtoPackage, supportPackage, params, parents) - tpe <- parseTypeName(clsName.last) - fullType <- selectType(dtoPackage.foldRight(clsName)((x, xs) => xs.prepend(x))) - staticDefns <- renderDTOStaticDefns(clsName.last, List.empty, encoder, decoder, params) + encoder <- encodeModel(clsName.last, dtoPackage, params, parents) + decoder <- decodeModel(clsName.last, dtoPackage, supportPackage, params, parents) + tpe <- parseTypeName(clsName.last) + fullType <- selectType(dtoPackage.foldRight(clsName)((x, xs) => xs.prepend(x))) + staticDefns <- renderDTOStaticDefns(clsName.last, List.empty, encoder, decoder, params) nestedClasses <- nestedDefinitions.flatTraverse { case classDefinition: ClassDefinition[ScalaLanguage] => for { @@ -656,7 +656,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ for { () <- Target.log.debug(s"processProperty: ${name} ${schema.unwrapTracker.showNotNull}") nestedClassName <- formatTypeName(name).map(formattedName => getClsName(name).append(formattedName)) - defn <- schema + defn <- schema .refine[Target[Option[Either[String, NestedProtocolElems[ScalaLanguage]]]]] { case ObjectExtractor(x) => x }(o => for { defn <- fromModel( @@ -674,7 +674,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ ) .orRefine { case o: ComposedSchema => o }(o => for { - parents <- extractParents(o, definitions, concreteTypes, dtoPackage, supportPackage, defaultPropertyRequirement, components) + parents <- extractParents(o, definitions, concreteTypes, dtoPackage, supportPackage, defaultPropertyRequirement, components) maybeClassDefinition <- fromModel( nestedClassName, o, @@ -735,7 +735,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ ) { (s, ta) => val a = ta.unwrapTracker s.find(p => p.name == a.name) match { - case None => (a :: s).pure[Target] + case None => (a :: s).pure[Target] case Some(duplicate) => for { newDefaultValue <- findCommonDefaultValue(ta.showHistory, a.defaultValue, duplicate.defaultValue) @@ -743,7 +743,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ } yield { val emptyToNull = if (Set(a.emptyToNull, duplicate.emptyToNull).contains(EmptyIsNull)) EmptyIsNull else EmptyIsEmpty val redactionBehaviour = if (Set(a.dataRedaction, duplicate.dataRedaction).contains(DataRedacted)) DataRedacted else DataVisible - val mergedParameter = ProtocolParameter[ScalaLanguage]( + val mergedParameter = ProtocolParameter[ScalaLanguage]( a.term, a.baseType, a.name, @@ -816,7 +816,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ .orRefineFallback(_ => None) for { prefixes <- vendorPrefixes() - tpe <- model.fold[Target[scala.meta.Type]](objectType(None)) { m => + tpe <- model.fold[Target[scala.meta.Type]](objectType(None)) { m => for { (declType, _) <- ModelResolver.determineTypeName[ScalaLanguage, Target](m, Tracker.cloneHistory(m, CustomTypeName(m, prefixes)), components) } yield declType @@ -1060,11 +1060,11 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ encoder: Option[scala.meta.Defn], decoder: Option[scala.meta.Defn] ): Target[StaticDefns[ScalaLanguage]] = { - val longType = Type.Name(className) + val longType = Type.Name(className) val terms: List[Defn.Val] = accessors.map { pascalValue => q"val ${Pat.Var(pascalValue)}: ${longType} = members.${pascalValue}" }.toList - val values: Defn.Val = q"val values = _root_.scala.Vector(..$accessors)" + val values: Defn.Val = q"val values = _root_.scala.Vector(..$accessors)" val implicits: List[Defn.Val] = List( q"implicit val ${Pat.Var(Term.Name(s"show${className}"))}: Show[${longType}] = Show[${tpe}].contramap[${longType}](_.value)" ) @@ -1164,7 +1164,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ val tpe = t"${customTpe.getOrElse(t"_root_.scala.Predef.Map")}[_root_.scala.Predef.String, $innerType]" Target.pure((tpe, Option.empty, ReifiedRawType.ofMap(fallbackRawType))) } - fieldPattern: Tracker[Option[String]] = property.downField("pattern", _.getPattern) + fieldPattern: Tracker[Option[String]] = property.downField("pattern", _.getPattern) collectionElementPattern: Option[Tracker[String]] = property.downField("items", _.getItems).indexedDistribute.flatMap(_.downField("pattern", _.getPattern).indexedDistribute) @@ -1175,7 +1175,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ presence <- Lt.selectTerm(NonEmptyList.ofInitLast(supportPackage, "Presence")) presenceType <- Lt.selectType(NonEmptyList.ofInitLast(supportPackage, "Presence")) (finalDeclType, finalDefaultValue) = requirement match { - case PropertyRequirement.Required => tpe -> defaultValue + case PropertyRequirement.Required => tpe -> defaultValue case PropertyRequirement.Optional | PropertyRequirement.Configured(PropertyRequirement.Optional, PropertyRequirement.Optional) => t"$presenceType[$tpe]" -> defaultValue.map(t => q"$presence.Present($t)").orElse(Some(q"$presence.Absent")) case _: PropertyRequirement.OptionalRequirement | _: PropertyRequirement.Configured => @@ -1211,7 +1211,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ for { discriminators <- discriminatorParams.traverse { case (discriminator, param) => for { - discrimTpe <- Target.fromOption(param.term.decltpe, RuntimeFailure(s"Property ${param.name.value} has no type")) + discrimTpe <- Target.fromOption(param.term.decltpe, RuntimeFailure(s"Property ${param.name.value} has no type")) discrimValue <- JacksonHelpers .discriminatorExpression( param.name.value, @@ -1231,10 +1231,10 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ ) } yield (param.name.value, param.term.name.value, param.term.decltpe, discrimValue) } - presenceSerType <- Lt.selectType(NonEmptyList.ofInitLast(supportPackage :+ "Presence", "PresenceSerializer")) - presenceDeserType <- Lt.selectType(NonEmptyList.ofInitLast(supportPackage :+ "Presence", "PresenceDeserializer")) - optionNonNullDeserType <- Lt.selectType(NonEmptyList.ofInitLast(supportPackage :+ "Presence", "OptionNonNullDeserializer")) - emptyIsNullDeserType <- Lt.selectType(NonEmptyList.ofInitLast(supportPackage :+ "EmptyIsNullDeserializers", "EmptyIsNullDeserializer")) + presenceSerType <- Lt.selectType(NonEmptyList.ofInitLast(supportPackage :+ "Presence", "PresenceSerializer")) + presenceDeserType <- Lt.selectType(NonEmptyList.ofInitLast(supportPackage :+ "Presence", "PresenceDeserializer")) + optionNonNullDeserType <- Lt.selectType(NonEmptyList.ofInitLast(supportPackage :+ "Presence", "OptionNonNullDeserializer")) + emptyIsNullDeserType <- Lt.selectType(NonEmptyList.ofInitLast(supportPackage :+ "EmptyIsNullDeserializers", "EmptyIsNullDeserializer")) emptyIsNullOptionDeserType <- Lt.selectType( NonEmptyList.ofInitLast(supportPackage :+ "EmptyIsNullDeserializers", "EmptyIsNullOptionDeserializer") ) @@ -1378,7 +1378,7 @@ class JacksonProtocolGenerator private extends ProtocolTerms[ScalaLanguage, Targ for { result <- arr match { case Right(core.Resolved(tpe, dep, default, _)) => Target.pure(tpe) - case Left(core.Deferred(tpeName)) => + case Left(core.Deferred(tpeName)) => Target.fromOption(lookupTypeName(tpeName, concreteTypes)(identity), UserError(s"Unresolved reference ${tpeName}")) case Left(core.DeferredArray(tpeName, containerTpe)) => Target.fromOption( diff --git a/modules/scala-support/src/main/scala/dev/guardrail/scala/helpers/ResponseHelpers.scala b/modules/scala-support/src/main/scala/dev/guardrail/scala/helpers/ResponseHelpers.scala index 3f150cacc0..5862a75106 100644 --- a/modules/scala-support/src/main/scala/dev/guardrail/scala/helpers/ResponseHelpers.scala +++ b/modules/scala-support/src/main/scala/dev/guardrail/scala/helpers/ResponseHelpers.scala @@ -71,7 +71,7 @@ object ResponseHelpers { def checkMatch(matching: List[String], headsToCheck: List[Option[String]], restOfHeads: List[List[String]]): List[String] = headsToCheck match { - case Nil => matching + case Nil => matching case x :: xs => x.fold(matching) { first => if (xs.forall(_.contains(first))) { diff --git a/modules/scala-support/src/test/scala/tests/circe/ArrayValidationTest.scala b/modules/scala-support/src/test/scala/tests/circe/ArrayValidationTest.scala index 5670b4fd88..41674a99ca 100644 --- a/modules/scala-support/src/test/scala/tests/circe/ArrayValidationTest.scala +++ b/modules/scala-support/src/test/scala/tests/circe/ArrayValidationTest.scala @@ -47,7 +47,7 @@ class ArrayValidationTest extends AnyFreeSpec with Matchers with SwaggerSpecRunn "Array Validation" - { implicit def CollectionsLibInterp = ScalaCollectionsGenerator() - implicit val mockFW = new FrameworkTerms[ScalaLanguage, Target] { + implicit val mockFW = new FrameworkTerms[ScalaLanguage, Target] { def fileType(format: Option[String]): dev.guardrail.Target[dev.guardrail.generators.scala.ScalaLanguage#Type] = Target.pure(t"String") def getFrameworkDefinitions( tracing: Boolean diff --git a/modules/scala-support/src/test/scala/tests/circe/BigObjectSpec.scala b/modules/scala-support/src/test/scala/tests/circe/BigObjectSpec.scala index e15793244f..e955eaffc8 100644 --- a/modules/scala-support/src/test/scala/tests/circe/BigObjectSpec.scala +++ b/modules/scala-support/src/test/scala/tests/circe/BigObjectSpec.scala @@ -130,7 +130,7 @@ class BigObjectSpec extends AnyFunSuite with Matchers with SwaggerSpecRunner wit test("Big objects can be generated") { implicit def CollectionsLibInterp = ScalaCollectionsGenerator() - implicit val mockFW = new FrameworkTerms[ScalaLanguage, Target] { + implicit val mockFW = new FrameworkTerms[ScalaLanguage, Target] { def fileType(format: Option[String]): dev.guardrail.Target[dev.guardrail.generators.scala.ScalaLanguage#Type] = Target.pure(t"String") def getFrameworkDefinitions( tracing: Boolean @@ -143,9 +143,9 @@ class BigObjectSpec extends AnyFunSuite with Matchers with SwaggerSpecRunner wit def lookupStatusCode(key: Tracker[String]): dev.guardrail.Target[(Int, dev.guardrail.generators.scala.ScalaLanguage#TermName)] = ??? def objectType(format: Option[String]): dev.guardrail.Target[dev.guardrail.generators.scala.ScalaLanguage#Type] = Target.pure(t"io.circe.Json") } - implicit val circeProtocolGenerator = CirceProtocolGenerator(CirceModelGenerator.V012) - implicit val scalaGenerator = ScalaGenerator() - implicit val swaggerGenerator = OpenAPIGenerator[ScalaLanguage]() + implicit val circeProtocolGenerator = CirceProtocolGenerator(CirceModelGenerator.V012) + implicit val scalaGenerator = ScalaGenerator() + implicit val swaggerGenerator = OpenAPIGenerator[ScalaLanguage]() val ProtocolDefinitions(ClassDefinition(_, _, _, cls, staticDefns, _) :: Nil, _, _, _, _) = circeProtocolGenerator .fromSpec( Tracker(swaggerFromString(spec)), diff --git a/modules/scala-support/src/test/scala/tests/circe/ValidationTest.scala b/modules/scala-support/src/test/scala/tests/circe/ValidationTest.scala index aa1fc34807..1662203cce 100644 --- a/modules/scala-support/src/test/scala/tests/circe/ValidationTest.scala +++ b/modules/scala-support/src/test/scala/tests/circe/ValidationTest.scala @@ -50,7 +50,7 @@ class ValidationTest extends AnyFreeSpec with Matchers with SwaggerSpecRunner wi "should work" in { implicit def CollectionsLibInterp = ScalaCollectionsGenerator() - implicit val mockFW = new FrameworkTerms[ScalaLanguage, Target] { + implicit val mockFW = new FrameworkTerms[ScalaLanguage, Target] { def fileType(format: Option[String]): dev.guardrail.Target[dev.guardrail.generators.scala.ScalaLanguage#Type] = Target.pure(t"String") def getFrameworkDefinitions( tracing: Boolean @@ -63,9 +63,9 @@ class ValidationTest extends AnyFreeSpec with Matchers with SwaggerSpecRunner wi def lookupStatusCode(key: Tracker[String]): dev.guardrail.Target[(Int, dev.guardrail.generators.scala.ScalaLanguage#TermName)] = ??? def objectType(format: Option[String]): dev.guardrail.Target[dev.guardrail.generators.scala.ScalaLanguage#Type] = Target.pure(t"io.circe.Json") } - implicit val circeProtocolGenerator: ProtocolTerms[ScalaLanguage, Target] = CirceRefinedProtocolGenerator(CirceRefinedModelGenerator.V012) - implicit val scalaGenerator = ScalaGenerator() - implicit val swaggerGenerator = OpenAPIGenerator[ScalaLanguage]() + implicit val circeProtocolGenerator: ProtocolTerms[ScalaLanguage, Target] = CirceRefinedProtocolGenerator(CirceRefinedModelGenerator.V012) + implicit val scalaGenerator = ScalaGenerator() + implicit val swaggerGenerator = OpenAPIGenerator[ScalaLanguage]() val ProtocolDefinitions(ClassDefinition(_, _, _, cls, staticDefns, _) :: Nil, _, _, _, _) = circeProtocolGenerator .fromSpec( Tracker(swaggerFromString(spec)), diff --git a/modules/scala-support/src/test/scala/tests/generators/helpers/JacksonHelpersTest.scala b/modules/scala-support/src/test/scala/tests/generators/helpers/JacksonHelpersTest.scala index 81535a09e0..785d56055b 100644 --- a/modules/scala-support/src/test/scala/tests/generators/helpers/JacksonHelpersTest.scala +++ b/modules/scala-support/src/test/scala/tests/generators/helpers/JacksonHelpersTest.scala @@ -84,12 +84,10 @@ class JacksonHelpersTest extends AnyFreeSpec with Matchers { intercept[NoSuchElementException](discriminatorExpression("3424.3123", "number", Some("foobaz")).value) } - "random types" in { + "random types" in intercept[NoSuchElementException](discriminatorExpression("asdsd", "foobaz").value) - } - "non-matching string types" in { + "non-matching string types" in intercept[NoSuchElementException](discriminatorExpression("asdasd", "integer", Some("int32")).value) - } } }