Skip to content

Commit e3111d9

Browse files
author
Pritham Marupaka
committed
Merge branch 'develop' of github.com:palantir/conjure-java into pm/client-errors-result-type
2 parents bbf0b0e + 8cb23fe commit e3111d9

File tree

15 files changed

+93
-48
lines changed

15 files changed

+93
-48
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ buildscript {
2121
}
2222

2323
dependencies {
24-
classpath 'com.palantir.baseline:gradle-baseline-java:6.3.0'
24+
classpath 'com.palantir.baseline:gradle-baseline-java:6.4.0'
2525
classpath 'com.palantir.gradle.conjure:gradle-conjure:5.51.0'
2626
classpath 'com.palantir.gradle.consistentversions:gradle-consistent-versions:2.31.0'
2727
classpath 'com.palantir.gradle.externalpublish:gradle-external-publish-plugin:1.19.0'

changelog/8.35.0/pr-2421.v2.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
type: improvement
2+
improvement:
3+
description: 'remove bounds check on input ''long'' values into ''alias: double'''
4+
links:
5+
- https://github.com/palantir/conjure-java/pull/2421

changelog/8.36.0/pr-2423.v2.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
type: improvement
2+
improvement:
3+
description: Add flag to exclude generation of async Dialogue interfaces
4+
links:
5+
- https://github.com/palantir/conjure-java/pull/2423

conjure-java-core/src/integrationInput/java/com/palantir/product/AliasedDouble.java

Lines changed: 1 addition & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

conjure-java-core/src/integrationInput/java/com/palantir/product/DoubleAliasExample.java

Lines changed: 1 addition & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

conjure-java-core/src/integrationInput/java/com/palantir/product/SafeDoubleAliasExample.java

Lines changed: 1 addition & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

conjure-java-core/src/integrationInput/java/test/prefix/com/palantir/product/DoubleAliasExample.java

Lines changed: 1 addition & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

conjure-java-core/src/integrationInput/java/test/prefix/com/palantir/product/SafeDoubleAliasExample.java

Lines changed: 1 addition & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

conjure-java-core/src/main/java/com/palantir/conjure/java/Options.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,15 @@ default boolean externalFallbackTypes() {
169169
return false;
170170
}
171171

172+
/**
173+
* Java 24's loom support removes the need for async interfaces. When set to true, only Dialogue interfaces for
174+
* blocking clients will be generated. The Dialogue async interfaces will not be generated.
175+
*/
176+
@Value.Default
177+
default boolean excludeDialogueAsyncInterfaces() {
178+
return false;
179+
}
180+
172181
Optional<String> packagePrefix();
173182

174183
Optional<String> apiVersion();

conjure-java-core/src/main/java/com/palantir/conjure/java/services/dialogue/DialogueServiceGenerator.java

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.palantir.conjure.java.types.TypeMapper;
2525
import com.palantir.conjure.java.util.TypeFunctions;
2626
import com.palantir.conjure.spec.ConjureDefinition;
27+
import com.palantir.conjure.spec.ServiceDefinition;
2728
import com.palantir.conjure.spec.TypeDefinition;
2829
import com.palantir.conjure.spec.TypeName;
2930
import com.palantir.dialogue.BinaryRequestBody;
@@ -32,6 +33,8 @@
3233
import com.palantir.logsafe.Preconditions;
3334
import com.palantir.logsafe.SafeArg;
3435
import java.io.InputStream;
36+
import java.util.ArrayList;
37+
import java.util.List;
3538
import java.util.Map;
3639
import java.util.stream.Stream;
3740

@@ -84,14 +87,30 @@ public Stream<JavaFile> generate(ConjureDefinition conjureDefinition) {
8487
StaticFactoryMethodType.BLOCKING);
8588

8689
return conjureDefinition.getServices().stream()
87-
.flatMap(serviceDef -> !serviceDef.getEndpoints().isEmpty()
88-
? Stream.of(
89-
endpoints.endpointsClass(serviceDef),
90-
resultTypeGenerator.generateEndpointResultTypes(serviceDef),
91-
interfaceGenerator.generateBlocking(serviceDef, blockingGenerator),
92-
interfaceGenerator.generateAsync(serviceDef, asyncGenerator))
93-
: Stream.of(
94-
interfaceGenerator.generateBlocking(serviceDef, blockingGenerator),
95-
interfaceGenerator.generateAsync(serviceDef, asyncGenerator)));
90+
.flatMap(serviceDef -> generateFilesForService(
91+
options.excludeDialogueAsyncInterfaces(),
92+
serviceDef,
93+
endpoints,
94+
interfaceGenerator,
95+
blockingGenerator,
96+
asyncGenerator));
97+
}
98+
99+
private static Stream<JavaFile> generateFilesForService(
100+
boolean excludeDialogueAsyncInterfaces,
101+
ServiceDefinition serviceDef,
102+
DialogueEndpointsGenerator endpointsGenerator,
103+
DialogueInterfaceGenerator interfaceGenerator,
104+
StaticFactoryMethodGenerator blockingGenerator,
105+
StaticFactoryMethodGenerator asyncGenerator) {
106+
List<JavaFile> files = new ArrayList<>(/* initialCapacity= */ 3);
107+
if (!serviceDef.getEndpoints().isEmpty()) {
108+
files.add(endpointsGenerator.endpointsClass(serviceDef));
109+
}
110+
files.add(interfaceGenerator.generateBlocking(serviceDef, blockingGenerator));
111+
if (!excludeDialogueAsyncInterfaces) {
112+
files.add(interfaceGenerator.generateAsync(serviceDef, asyncGenerator));
113+
}
114+
return files.stream();
96115
}
97116
}

conjure-java-core/src/main/java/com/palantir/conjure/java/types/AliasGenerator.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import com.google.common.collect.ImmutableList;
2121
import com.palantir.conjure.java.ConjureAnnotations;
2222
import com.palantir.conjure.java.Options;
23-
import com.palantir.conjure.java.lib.SafeLong;
2423
import com.palantir.conjure.java.util.Javadoc;
2524
import com.palantir.conjure.java.util.Packages;
2625
import com.palantir.conjure.java.util.Primitives;
@@ -148,8 +147,7 @@ public static JavaFile generateAliasType(
148147

149148
if (isAliasOfDouble(typeDef)) {
150149
CodeBlock longCastCodeBlock = CodeBlock.builder()
151-
.addStatement("long safeValue = $T.of(value).longValue()", SafeLong.class)
152-
.addStatement("return new $T((double) safeValue)", thisClass)
150+
.addStatement("return new $T((double) value)", thisClass)
153151
.build();
154152

155153
CodeBlock intCastCodeBlock = CodeBlock.builder()

conjure-java-core/src/test/java/com/palantir/conjure/java/DialogueServiceGeneratorTests.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.nio.file.Path;
3232
import java.nio.file.Paths;
3333
import java.util.List;
34+
import java.util.Locale;
3435
import org.junit.jupiter.api.Test;
3536
import org.junit.jupiter.api.io.TempDir;
3637
import org.junit.jupiter.api.parallel.Execution;
@@ -98,11 +99,27 @@ public void generateEteServices() throws IOException {
9899
validateGeneratorOutput(files, Paths.get("src/integrationInput/java/com/palantir/product"));
99100
}
100101

102+
@Test
103+
public void testServiceGeneration_excludeDialogueAsyncInterfaces() {
104+
List<Path> files = getGeneratedFilesForDef(
105+
"example-service",
106+
Options.builder().excludeDialogueAsyncInterfaces(true).build());
107+
List<String> fileNames =
108+
files.stream().map(Path::getFileName).map(Path::toString).toList();
109+
assertThat(fileNames).noneMatch(name -> name.toLowerCase(Locale.ROOT).contains("async"));
110+
}
111+
101112
private void testServiceGeneration(String conjureFile) throws IOException {
113+
validateGeneratorOutput(
114+
getGeneratedFilesForDef(conjureFile, Options.empty()),
115+
Paths.get("src/test/resources/test/api"),
116+
".dialogue");
117+
}
118+
119+
private List<Path> getGeneratedFilesForDef(String conjureFile, Options options) {
102120
ConjureDefinition def = Conjure.parse(ImmutableList.of(new File("src/test/resources/" + conjureFile + ".yml")));
103-
List<Path> files = new GenerationCoordinator(
104-
MoreExecutors.directExecutor(), ImmutableSet.of(new DialogueServiceGenerator(Options.empty())))
121+
return new GenerationCoordinator(
122+
MoreExecutors.directExecutor(), ImmutableSet.of(new DialogueServiceGenerator(options)))
105123
.emit(def, folder);
106-
validateGeneratorOutput(files, Paths.get("src/test/resources/test/api"), ".dialogue");
107124
}
108125
}

readme.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ The recommended way to use conjure-java is via a build tool like [gradle-conjure
4646
legacy 'javax' packages.
4747
--externalFallbackTypes
4848
Java external type imports are generated using their fallback type.
49+
--excludeDialogueAsyncInterfaces
50+
Exclude the generation of asynchronous interfaces for Dialogue clients.
4951

5052
### Known Tag Values
5153

versions.lock

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# Run ./gradlew writeVersionsLocks to regenerate this file
22
com.atlassian.commonmark:commonmark:0.12.1 (1 constraints: 36052a3b)
3-
com.fasterxml.jackson.core:jackson-annotations:2.18.1 (24 constraints: 62955f13)
4-
com.fasterxml.jackson.core:jackson-core:2.18.1 (22 constraints: 25c18302)
5-
com.fasterxml.jackson.core:jackson-databind:2.18.1 (35 constraints: 039ba327)
6-
com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.18.1 (4 constraints: e9653c50)
7-
com.fasterxml.jackson.dataformat:jackson-dataformat-smile:2.18.1 (1 constraints: 811ca2a4)
8-
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.1 (3 constraints: 3f25a610)
9-
com.fasterxml.jackson.datatype:jackson-datatype-guava:2.18.1 (3 constraints: f839a026)
10-
com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.18.1 (4 constraints: 303f5392)
11-
com.fasterxml.jackson.datatype:jackson-datatype-joda:2.18.1 (2 constraints: 322b47b0)
12-
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.1 (2 constraints: 322b47b0)
3+
com.fasterxml.jackson.core:jackson-annotations:2.18.2 (24 constraints: 6695c722)
4+
com.fasterxml.jackson.core:jackson-core:2.18.2 (22 constraints: 31c1bf29)
5+
com.fasterxml.jackson.core:jackson-databind:2.18.2 (35 constraints: 0f9bef6e)
6+
com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.18.2 (4 constraints: ea651651)
7+
com.fasterxml.jackson.dataformat:jackson-dataformat-smile:2.18.2 (1 constraints: 811ca2a4)
8+
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.2 (3 constraints: 3f25a610)
9+
com.fasterxml.jackson.datatype:jackson-datatype-guava:2.18.2 (3 constraints: f839a026)
10+
com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.18.2 (4 constraints: 303f5392)
11+
com.fasterxml.jackson.datatype:jackson-datatype-joda:2.18.2 (2 constraints: 322b47b0)
12+
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2 (2 constraints: 322b47b0)
1313
com.github.ben-manes.caffeine:caffeine:3.1.8 (10 constraints: 63b008f3)
1414
com.google.auto:auto-common:1.2.2 (2 constraints: 1d175731)
1515
com.google.code.findbugs:jsr305:3.0.2 (35 constraints: b94940f6)
@@ -94,12 +94,12 @@ ch.qos.logback:logback-access:1.2.11 (1 constraints: e31129f4)
9494
ch.qos.logback:logback-classic:1.2.11 (6 constraints: de520609)
9595
ch.qos.logback:logback-core:1.2.11 (5 constraints: f74abe3c)
9696
com.fasterxml:classmate:1.5.1 (3 constraints: 8530e55a)
97-
com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.18.1 (2 constraints: e12e5d6a)
98-
com.fasterxml.jackson.jaxrs:jackson-jaxrs-cbor-provider:2.18.1 (1 constraints: 43197fbb)
99-
com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.18.1 (3 constraints: 5a22f1f5)
100-
com.fasterxml.jackson.module:jackson-module-afterburner:2.18.1 (1 constraints: b20e5a5e)
101-
com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.18.1 (2 constraints: e12e5d6a)
102-
com.fasterxml.jackson.module:jackson-module-parameter-names:2.18.1 (1 constraints: b20e5a5e)
97+
com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.18.2 (2 constraints: e32ea06a)
98+
com.fasterxml.jackson.jaxrs:jackson-jaxrs-cbor-provider:2.18.2 (1 constraints: 43197fbb)
99+
com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.18.2 (3 constraints: 5a22f1f5)
100+
com.fasterxml.jackson.module:jackson-module-afterburner:2.18.2 (1 constraints: b20e5a5e)
101+
com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.18.2 (2 constraints: e32ea06a)
102+
com.fasterxml.jackson.module:jackson-module-parameter-names:2.18.2 (1 constraints: b20e5a5e)
103103
com.google.auto.value:auto-value:1.10 (1 constraints: e711f8e8)
104104
com.google.auto.value:auto-value-annotations:1.8.1 (1 constraints: 620a29b9)
105105
com.google.testing.compile:compile-testing:0.21.0 (1 constraints: 35052a3b)

versions.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
ch.qos.logback:* = 1.2.11
22
com.atlassian.commonmark:* = 0.12.1
3-
com.fasterxml.jackson.core:jackson-databind = 2.18.1
3+
com.fasterxml.jackson.core:jackson-databind = 2.18.2
44
com.google.auto:auto-common = 1.2.2
55
com.google.code.findbugs:jsr305 = 3.0.2
66
com.google.guava:guava = 33.1.0-jre

0 commit comments

Comments
 (0)