Skip to content

Commit d045209

Browse files
author
Pritham Marupaka
committed
Use deserializers for binary and optional binary enpoints
1 parent d501a40 commit d045209

File tree

8 files changed

+300
-34
lines changed

8 files changed

+300
-34
lines changed

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

+60
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/ErrorServiceAsync.java

+89
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/ErrorServiceBlocking.java

+89
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/services/dialogue/DefaultStaticFactoryMethodGenerator.java

+20-12
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ private Optional<FieldSpec> serializer(EndpointName endpointName, Type type) {
178178
private Optional<FieldSpec> deserializer(
179179
TypeName responseType, EndpointDefinition endpointDef, EndpointName endpointName, Optional<Type> type) {
180180
TypeName className = Primitives.box(returnTypes.baseType(type));
181-
if (isBinaryOrOptionalBinary(className, returnTypes)) {
181+
if (isBinaryOrOptionalBinary(className, returnTypes) && !options.generateDialogueEndpointErrorResultTypes()) {
182182
return Optional.empty();
183183
}
184184
ParameterizedTypeName deserializerType =
@@ -188,7 +188,7 @@ private Optional<FieldSpec> deserializer(
188188
"$L.bodySerDe().$L",
189189
StaticFactoryMethodGenerator.RUNTIME,
190190
options.generateDialogueEndpointErrorResultTypes()
191-
? constructDeserializerWithEndpointErrors(endpointDef, responseType)
191+
? constructDeserializerWithEndpointErrors(endpointDef, className, responseType)
192192
: constructDeserializer(type, className));
193193

194194
return Optional.of(FieldSpec.builder(deserializerType, endpointName + "Deserializer")
@@ -203,8 +203,9 @@ private CodeBlock constructDeserializer(Optional<Type> type, TypeName className)
203203
: CodeBlock.of("emptyBodyDeserializer()");
204204
}
205205

206-
private CodeBlock constructDeserializerWithEndpointErrors(EndpointDefinition endpointDef, TypeName responseType) {
207-
CodeBlock.Builder retBuilder = CodeBlock.builder()
206+
private CodeBlock constructDeserializerWithEndpointErrors(
207+
EndpointDefinition endpointDef, TypeName className, TypeName responseType) {
208+
CodeBlock.Builder deserializerArgsBuilder = CodeBlock.builder()
208209
.add("$T.<$T>builder()", DeserializerArgs.class, responseType)
209210
.add(".baseType(new $T<>() {})", TypeMarker.class)
210211
// TODO(pm): consider making "Success" a constant string for re-use in the record creation.
@@ -217,15 +218,21 @@ private CodeBlock constructDeserializerWithEndpointErrors(EndpointDefinition end
217218
errorTypeName.getPackage(),
218219
ErrorGenerationUtils.errorTypesClassName(errorTypeName.getNamespace()),
219220
errorType);
220-
retBuilder.add(
221+
deserializerArgsBuilder.add(
221222
".error($T.name(), new $T<$T.$L>() {})", errorClass, TypeMarker.class, responseType, errorName);
222223
}
223-
retBuilder.add(".build()");
224-
return CodeBlock.builder()
225-
.add("deserializer(")
226-
.add(retBuilder.build())
227-
.add(")")
228-
.build();
224+
deserializerArgsBuilder.add(".build()");
225+
CodeBlock.Builder deserializerBuilder = CodeBlock.builder();
226+
if (isBinary(className, returnTypes)) {
227+
deserializerBuilder.add("inputStreamDeserializer(");
228+
} else if (isOptionalBinary(className, returnTypes)) {
229+
deserializerBuilder.add("optionalInputStreamDeserializer(");
230+
} else {
231+
deserializerBuilder.add("deserializer(");
232+
}
233+
deserializerBuilder.add(deserializerArgsBuilder.build());
234+
deserializerBuilder.add(")");
235+
return deserializerBuilder.build();
229236
}
230237

231238
private static boolean isBinaryOrOptionalBinary(TypeName className, ReturnTypeMapper returnTypes) {
@@ -279,7 +286,8 @@ private MethodSpec clientImpl(ClassName className, EndpointDefinition def) {
279286
Names.endpointChannel(def),
280287
REQUEST,
281288
def.getReturns()
282-
.filter(type -> isBinaryOrOptionalBinary(returnTypes.baseType(type), returnTypes))
289+
.filter(type -> !options.generateDialogueEndpointErrorResultTypes()
290+
&& isBinaryOrOptionalBinary(returnTypes.baseType(type), returnTypes))
283291
.map(type -> StaticFactoryMethodGenerator.RUNTIME
284292
+ (isOptionalBinary(returnTypes.baseType(type), returnTypes)
285293
? ".bodySerDe().optionalInputStreamDeserializer()"

0 commit comments

Comments
 (0)