Skip to content

Commit 2223242

Browse files
committed
Java: pass a package namespace downstream
Reviewed `crd2pulumi/pkg/codegen/java.go` and `pulumi-java` codegen sources. Found in `pulumi-java` `GeneratePackage` path: `generateModuleContextMap` sets `BasePackage` to "com." + sanitizeImport(p.Namespace()) + "." when `BasePackage` is empty and `pkg.Namespace` is non-empty. Since `crd2pulumi` sets `pkg.Namespace` to "com.pulumiverse", pulumi-java prepends its own "com." producing "com.com.pulumiverse" → double com in output paths. Fix is to explicitly set the Java PackageInfo BasePackage to the provided PackageNamespace so the pulumi-java defaulting logic doesn’t add an extra "com.".
1 parent 0ccad68 commit 2223242

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

pkg/codegen/java.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"bytes"
1919
"fmt"
2020
"regexp"
21+
"strings"
2122

2223
"github.com/pulumi/crd2pulumi/internal/versions"
2324
javaGen "github.com/pulumi/pulumi-java/pkg/codegen/java"
@@ -48,6 +49,18 @@ func GenerateJava(pg *PackageGenerator, cs *CodegenSettings) (map[string]*bytes.
4849
langName := "java"
4950
oldName := pkg.Name
5051
pkg.Name = cs.PackageName
52+
pkg.Namespace = cs.PackageNamespace
53+
54+
// Override Java base package to avoid pulumi-java defaulting logic adding an extra "com." prefix
55+
if pkg.Language == nil {
56+
pkg.Language = map[string]interface{}{}
57+
}
58+
pkg.Language[langName] = javaGen.PackageInfo{BasePackage: cs.PackageNamespace}
59+
60+
namespacePath := "com/pulumi"
61+
if cs.PackageNamespace != "" {
62+
namespacePath = strings.ReplaceAll(cs.PackageNamespace, ".", "/")
63+
}
5164

5265
files, err := javaGen.GeneratePackage("crd2pulumi", pkg, nil, nil, true, false)
5366
if err != nil {
@@ -58,19 +71,19 @@ func GenerateJava(pg *PackageGenerator, cs *CodegenSettings) (map[string]*bytes.
5871
delete(pkg.Language, langName)
5972

6073
// Pin the kubernetes provider version used
61-
utilsPath := "src/main/java/com/pulumi/" + cs.PackageName + "/Utilities.java"
74+
utilsPath := "src/main/java/" + namespacePath + "/" + cs.PackageName + "/Utilities.java"
6275
utils, ok := files[utilsPath]
6376
if !ok {
64-
return nil, fmt.Errorf("cannot find generated utilities.ts")
77+
return nil, fmt.Errorf("cannot find generated Utilities.java at path: %s", utilsPath)
6578
}
6679
re := regexp.MustCompile(`static \{(?:[^{}]|{[^{}]*})*}`)
6780
files[utilsPath] = []byte(re.ReplaceAllString(string(utils), `static {
6881
version = "4.9.0";
6982
}`))
7083

7184
var unneededJavaFiles = []string{
72-
"src/main/java/com/pulumi/" + cs.PackageName + "/Provider.java",
73-
"src/main/java/com/pulumi/" + cs.PackageName + "/ProviderArgs.java",
85+
"src/main/java/" + namespacePath + "/" + cs.PackageName + "/Provider.java",
86+
"src/main/java/" + namespacePath + "/" + cs.PackageName + "/ProviderArgs.java",
7487
"src/main/java/com/pulumi/kubernetes/meta/v1/inputs/ObjectMetaArgs.java",
7588
"src/main/java/com/pulumi/kubernetes/meta/v1/outputs/ObjectMeta.java",
7689
}

0 commit comments

Comments
 (0)