diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 60a767028ac..cda6510d441 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -6,5 +6,6 @@ - Fix generation of untyped maps and array literals - Implement `InvokeOptionsBuilder` and `InvokeOutputOptionsBuilder` - Emit invoke options and invoke output options in generated programs + - Include explicit dependencies of invokes in their resulting output ### Bug Fixes diff --git a/pkg/cmd/pulumi-language-java/testdata/projects/l2-invoke-options-depends-on/Pulumi.yaml b/pkg/cmd/pulumi-language-java/testdata/projects/l2-invoke-options-depends-on/Pulumi.yaml new file mode 100644 index 00000000000..d3665e06c43 --- /dev/null +++ b/pkg/cmd/pulumi-language-java/testdata/projects/l2-invoke-options-depends-on/Pulumi.yaml @@ -0,0 +1,2 @@ +name: l2-invoke-options-depends-on +runtime: java diff --git a/pkg/cmd/pulumi-language-java/testdata/projects/l2-invoke-options-depends-on/pom.xml b/pkg/cmd/pulumi-language-java/testdata/projects/l2-invoke-options-depends-on/pom.xml new file mode 100644 index 00000000000..238da07ebc6 --- /dev/null +++ b/pkg/cmd/pulumi-language-java/testdata/projects/l2-invoke-options-depends-on/pom.xml @@ -0,0 +1,99 @@ + + + 4.0.0 + + com.pulumi + l2-invoke-options-depends-on + 1.0-SNAPSHOT + + + UTF-8 + 11 + 11 + 11 + generated_program.App + + + + + + repository-0 + REPOSITORY + + + + + + com.pulumi + pulumi + CORE.VERSION + + + com.pulumi + simple-invoke + 10.0.0 + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.2 + + + + true + ${mainClass} + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.4.2 + + + + true + ${mainClass} + + + + jar-with-dependencies + + + + + make-my-jar-with-dependencies + package + + single + + + + + + org.codehaus.mojo + exec-maven-plugin + 3.1.0 + + ${mainClass} + ${mainArgs} + + + + org.apache.maven.plugins + maven-wrapper-plugin + 3.1.1 + + 3.8.5 + + + + + \ No newline at end of file diff --git a/pkg/cmd/pulumi-language-java/testdata/projects/l2-invoke-options-depends-on/src/main/java/generated_program/App.java b/pkg/cmd/pulumi-language-java/testdata/projects/l2-invoke-options-depends-on/src/main/java/generated_program/App.java new file mode 100644 index 00000000000..1929183f281 --- /dev/null +++ b/pkg/cmd/pulumi-language-java/testdata/projects/l2-invoke-options-depends-on/src/main/java/generated_program/App.java @@ -0,0 +1,43 @@ +package generated_program; + +import com.pulumi.Context; +import com.pulumi.Pulumi; +import com.pulumi.core.Output; +import com.pulumi.simpleinvoke.Provider; +import com.pulumi.simpleinvoke.StringResource; +import com.pulumi.simpleinvoke.StringResourceArgs; +import com.pulumi.simpleinvoke.SimpleinvokeFunctions; +import com.pulumi.simpleinvoke.inputs.MyInvokeArgs; +import com.pulumi.deployment.InvokeOutputOptions; +import java.util.List; +import java.util.ArrayList; +import java.util.Map; +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Paths; + +public class App { + public static void main(String[] args) { + Pulumi.run(App::stack); + } + + public static void stack(Context ctx) { + var explicitProvider = new Provider("explicitProvider"); + + var first = new StringResource("first", StringResourceArgs.builder() + .text("first hello") + .build()); + + final var data = SimpleinvokeFunctions.myInvoke(MyInvokeArgs.builder() + .value("hello") + .build(), (new InvokeOutputOptions.Builder()) + .dependsOn(first) + .build()); + + var second = new StringResource("second", StringResourceArgs.builder() + .text(data.applyValue(_data -> _data.result())) + .build()); + + ctx.export("hello", data.applyValue(_data -> _data.result())); + } +} diff --git a/sdk/java/pulumi/src/main/java/com/pulumi/deployment/internal/DeploymentImpl.java b/sdk/java/pulumi/src/main/java/com/pulumi/deployment/internal/DeploymentImpl.java index 95f31aa09f5..df89ec39693 100644 --- a/sdk/java/pulumi/src/main/java/com/pulumi/deployment/internal/DeploymentImpl.java +++ b/sdk/java/pulumi/src/main/java/com/pulumi/deployment/internal/DeploymentImpl.java @@ -568,7 +568,7 @@ public Output invoke(String token, TypeShape targetType, InvokeArgs ar } else { return packageRefFuture .thenCompose(packageRefString -> this.invokeRawAsync(token, serializedArgs, options, packageRefString)) - .thenApply(result -> parseInvokeResponse(token, targetType, result)); + .thenApply(result -> parseInvokeResponse(token, targetType, result).withDependencies(options.getDependsOn())); } }); }));