diff --git a/build.sbt b/build.sbt index b21171f..9dad8c8 100644 --- a/build.sbt +++ b/build.sbt @@ -38,8 +38,8 @@ lazy val sbtPlugin = project commonSettings, scalaVersion := "2.12.20", libraryDependencies ++= Seq( - "software.amazon.smithy" % "smithy-trait-codegen" % "1.60.2", - "software.amazon.smithy" % "smithy-model" % "1.60.2", + "software.amazon.smithy" % "smithy-trait-codegen" % "1.61.0", + "software.amazon.smithy" % "smithy-model" % "1.61.0", ) ++ Seq( "com.lihaoyi" %% "os-lib" % "0.10.7" ), diff --git a/sbtPlugin/src/main/scala/org/polyvariant/smithytraitcodegen/SmithyTraitCodegen.scala b/sbtPlugin/src/main/scala/org/polyvariant/smithytraitcodegen/SmithyTraitCodegen.scala index 46d717b..ce2053d 100644 --- a/sbtPlugin/src/main/scala/org/polyvariant/smithytraitcodegen/SmithyTraitCodegen.scala +++ b/sbtPlugin/src/main/scala/org/polyvariant/smithytraitcodegen/SmithyTraitCodegen.scala @@ -88,23 +88,6 @@ object SmithyTraitCodegen { } - // Hack / workaround for https://github.com/smithy-lang/smithy/pull/2671 - private def namespaceHackRequired(ns: String) = - ns.startsWith("smithy") && ns != "smithy" && !ns.startsWith("smithy.") - - private def renameNamespaceForHack(ns: String) = - if (namespaceHackRequired(ns)) - "hack" + ns - else - ns - - private def replaceNamespaceRefsInFile(fileText: String, ns: String) = - if (namespaceHackRequired(ns)) { - fileText.replaceAll(s"hack$ns", ns) - } else { - fileText - } - def generate(args: Args): Output = { val outputDir = args.targetDir / "smithy-trait-generator-output" val genDir = outputDir / "java" @@ -114,37 +97,13 @@ object SmithyTraitCodegen { val manifest = FileManifest.create(genDir.toNIO) - val model = - args - .dependencies - .foldLeft(Model.assembler().addImport(args.smithySourcesDir.path.toNIO)) { - case (acc, dep) => acc.addImport(dep.path.toNIO) - } - .assemble() - .unwrap() match { - case model => - if (namespaceHackRequired(args.smithyNamespace)) { - println("Applying namespace workaround - `hack` prefix will be used") - - val renames = - model - .shapes() - .collect(Collectors.toList()) - .asScala - .filter(_.getId().getNamespace() == args.smithyNamespace) - .map { shp => - shp.getId() -> - shp.getId().withNamespace(renameNamespaceForHack(shp.getId().getNamespace())) - } - .toMap - .asJava - - ModelTransformer - .create() - .renameShapes(model, renames) - } else - model + val model = args + .dependencies + .foldLeft(Model.assembler().addImport(args.smithySourcesDir.path.toNIO)) { case (acc, dep) => + acc.addImport(dep.path.toNIO) } + .assemble() + .unwrap() val context = PluginContext .builder() @@ -155,7 +114,7 @@ object SmithyTraitCodegen { ObjectNode .builder() .withMember("package", args.javaPackage) - .withMember("namespace", renameNamespaceForHack(args.smithyNamespace)) + .withMember("namespace", args.smithyNamespace) .withMember("header", ArrayNode.builder.build()) .withMember("excludeTags", ArrayNode.builder.withValue("nocodegen").build()) .build() @@ -168,13 +127,6 @@ object SmithyTraitCodegen { if (os.exists(genDir / "META-INF")) os.move(genDir / "META-INF", metaDir / "META-INF") - os.walk(genDir) - .filter(os.isFile) - .filter(_.ext == "java") - .foreach { f => - os.write.over(f, replaceNamespaceRefsInFile(os.read(f), args.smithyNamespace)) - } - os .walk(metaDir, includeTarget = true) .filter(os.isFile) diff --git a/sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/build.sbt b/sbtPlugin/src/sbt-test/codegen/namespace-restriction/build.sbt similarity index 77% rename from sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/build.sbt rename to sbtPlugin/src/sbt-test/codegen/namespace-restriction/build.sbt index 6a712a3..516dce9 100644 --- a/sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/build.sbt +++ b/sbtPlugin/src/sbt-test/codegen/namespace-restriction/build.sbt @@ -4,6 +4,7 @@ val traits = project smithyTraitCodegenDependencies := List( "io.github.disneystreaming.alloy" % "alloy-core" % "0.3.23" ), + // Prior to smithy 1.61.0, namespaces starting with "smithy" were forbidden and required a workaround smithyTraitCodegenJavaPackage := "smithy4bazinga", smithyTraitCodegenNamespace := "smithy4bazinga", ) diff --git a/sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/project/plugins.sbt b/sbtPlugin/src/sbt-test/codegen/namespace-restriction/project/plugins.sbt similarity index 100% rename from sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/project/plugins.sbt rename to sbtPlugin/src/sbt-test/codegen/namespace-restriction/project/plugins.sbt diff --git a/sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/src/main/scala/Demo.scala b/sbtPlugin/src/sbt-test/codegen/namespace-restriction/src/main/scala/Demo.scala similarity index 100% rename from sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/src/main/scala/Demo.scala rename to sbtPlugin/src/sbt-test/codegen/namespace-restriction/src/main/scala/Demo.scala diff --git a/sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/test b/sbtPlugin/src/sbt-test/codegen/namespace-restriction/test similarity index 100% rename from sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/test rename to sbtPlugin/src/sbt-test/codegen/namespace-restriction/test diff --git a/sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/traits/src/main/resources/META-INF/smithy/manifest b/sbtPlugin/src/sbt-test/codegen/namespace-restriction/traits/src/main/resources/META-INF/smithy/manifest similarity index 100% rename from sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/traits/src/main/resources/META-INF/smithy/manifest rename to sbtPlugin/src/sbt-test/codegen/namespace-restriction/traits/src/main/resources/META-INF/smithy/manifest diff --git a/sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/traits/src/main/resources/META-INF/smithy/smithy4bazinga.smithy b/sbtPlugin/src/sbt-test/codegen/namespace-restriction/traits/src/main/resources/META-INF/smithy/smithy4bazinga.smithy similarity index 100% rename from sbtPlugin/src/sbt-test/codegen/namespace-restriction-hack/traits/src/main/resources/META-INF/smithy/smithy4bazinga.smithy rename to sbtPlugin/src/sbt-test/codegen/namespace-restriction/traits/src/main/resources/META-INF/smithy/smithy4bazinga.smithy