Search in sources :

Example 1 with Deserializer

use of com.palantir.dialogue.Deserializer in project conjure-java by palantir.

the class DefaultStaticFactoryMethodGenerator method clientImpl.

private MethodSpec clientImpl(EndpointDefinition def) {
    List<ParameterSpec> params = parameterTypes.implementationMethodParams(def);
    MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder(def.getEndpointName().get()).addModifiers(Modifier.PUBLIC).addParameters(params).addAnnotation(Override.class);
    if (def.getDeprecated().isPresent()) {
        methodBuilder.addAnnotation(AnnotationSpec.builder(SuppressWarnings.class).addMember("value", "$S", "deprecation").build());
    }
    TypeName returnType = methodType.switchBy(returnTypes.baseType(def.getReturns()), returnTypes.async(def.getReturns()));
    methodBuilder.returns(returnType);
    CodeBlock.Builder requestParams = CodeBlock.builder();
    def.getAuth().map(DefaultStaticFactoryMethodGenerator::generateAuthHeader).ifPresent(requestParams::add);
    def.getArgs().stream().map(param -> generateParam(def.getEndpointName().get(), param)).forEach(requestParams::add);
    CodeBlock request = CodeBlock.builder().add("$T $L = $T.builder();", Request.Builder.class, REQUEST, Request.class).add(requestParams.build()).build();
    String codeBlock = methodType.switchBy("$L.clients().callBlocking($L, $L.build(), $L);", "$L.clients().call($L, $L.build" + "(), $L);");
    CodeBlock execute = CodeBlock.of(codeBlock, StaticFactoryMethodGenerator.RUNTIME, Names.endpointChannel(def), REQUEST, def.getReturns().filter(type -> isBinaryOrOptionalBinary(returnTypes.baseType(type), returnTypes)).map(type -> StaticFactoryMethodGenerator.RUNTIME + (isOptionalBinary(returnTypes.baseType(type), returnTypes) ? ".bodySerDe().optionalInputStreamDeserializer()" : ".bodySerDe().inputStreamDeserializer()")).orElseGet(() -> def.getEndpointName().get() + "Deserializer"));
    methodBuilder.addCode(request);
    methodBuilder.addCode(methodType.switchBy(def.getReturns().isPresent() ? "return " : "", "return "));
    methodBuilder.addCode(execute);
    return methodBuilder.build();
}
Also used : HeaderAuthType(com.palantir.conjure.spec.HeaderAuthType) TypeVisitor(com.palantir.conjure.visitor.TypeVisitor) Modifier(javax.lang.model.element.Modifier) SafeIllegalStateException(com.palantir.logsafe.exceptions.SafeIllegalStateException) ClassName(com.squareup.javapoet.ClassName) ServiceDefinition(com.palantir.conjure.spec.ServiceDefinition) Options(com.palantir.conjure.java.Options) ParameterTypeVisitor(com.palantir.conjure.visitor.ParameterTypeVisitor) MapType(com.palantir.conjure.spec.MapType) OptionalType(com.palantir.conjure.spec.OptionalType) ParameterSpec(com.squareup.javapoet.ParameterSpec) ImmutableMap(com.google.common.collect.ImmutableMap) AuthType(com.palantir.conjure.spec.AuthType) Deserializer(com.palantir.dialogue.Deserializer) BodyParameterType(com.palantir.conjure.spec.BodyParameterType) ParameterType(com.palantir.conjure.spec.ParameterType) Objects(java.util.Objects) List(java.util.List) TypeName(com.squareup.javapoet.TypeName) Optional(java.util.Optional) TypeMarker(com.palantir.dialogue.TypeMarker) PrimitiveType(com.palantir.conjure.spec.PrimitiveType) EndpointDefinition(com.palantir.conjure.spec.EndpointDefinition) ListType(com.palantir.conjure.spec.ListType) Auth(com.palantir.conjure.java.services.Auth) ExternalReference(com.palantir.conjure.spec.ExternalReference) FieldSpec(com.squareup.javapoet.FieldSpec) Type(com.palantir.conjure.spec.Type) PathParameterType(com.palantir.conjure.spec.PathParameterType) TypeDefinitionVisitor(com.palantir.conjure.visitor.TypeDefinitionVisitor) Serializer(com.palantir.dialogue.Serializer) PlainSerDe(com.palantir.dialogue.PlainSerDe) SafeArg(com.palantir.logsafe.SafeArg) ConjureRuntime(com.palantir.dialogue.ConjureRuntime) SetType(com.palantir.conjure.spec.SetType) Request(com.palantir.dialogue.Request) CodeBlock(com.squareup.javapoet.CodeBlock) EndpointChannelFactory(com.palantir.dialogue.EndpointChannelFactory) TypeDefinition(com.palantir.conjure.spec.TypeDefinition) MethodSpec(com.squareup.javapoet.MethodSpec) CookieAuthType(com.palantir.conjure.spec.CookieAuthType) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName) TypeSpec(com.squareup.javapoet.TypeSpec) EndpointName(com.palantir.conjure.spec.EndpointName) EndpointChannel(com.palantir.dialogue.EndpointChannel) QueryParameterType(com.palantir.conjure.spec.QueryParameterType) AnnotationSpec(com.squareup.javapoet.AnnotationSpec) HeaderParameterType(com.palantir.conjure.spec.HeaderParameterType) ArgumentDefinition(com.palantir.conjure.spec.ArgumentDefinition) TypeName(com.squareup.javapoet.TypeName) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName) ParameterSpec(com.squareup.javapoet.ParameterSpec) MethodSpec(com.squareup.javapoet.MethodSpec) CodeBlock(com.squareup.javapoet.CodeBlock) Request(com.palantir.dialogue.Request)

Example 2 with Deserializer

use of com.palantir.dialogue.Deserializer in project conjure-java by palantir.

the class DefaultStaticFactoryMethodGenerator method deserializer.

private Optional<FieldSpec> deserializer(EndpointName endpointName, Optional<Type> type) {
    TypeName className = returnTypes.baseType(type).box();
    if (isBinaryOrOptionalBinary(className, returnTypes)) {
        return Optional.empty();
    }
    ParameterizedTypeName deserializerType = ParameterizedTypeName.get(ClassName.get(Deserializer.class), className);
    CodeBlock realDeserializer = CodeBlock.of("deserializer(new $T<$T>() {})", TypeMarker.class, className);
    CodeBlock voidDeserializer = CodeBlock.of("emptyBodyDeserializer()");
    CodeBlock initializer = CodeBlock.of("$L.bodySerDe().$L", StaticFactoryMethodGenerator.RUNTIME, type.isPresent() ? realDeserializer : voidDeserializer);
    return Optional.of(FieldSpec.builder(deserializerType, endpointName + "Deserializer").addModifiers(Modifier.PRIVATE, Modifier.FINAL).initializer(initializer).build());
}
Also used : TypeName(com.squareup.javapoet.TypeName) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName) Deserializer(com.palantir.dialogue.Deserializer) CodeBlock(com.squareup.javapoet.CodeBlock) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName)

Example 3 with Deserializer

use of com.palantir.dialogue.Deserializer in project conjure-java by palantir.

the class EteServiceBlocking method of.

/**
 * Creates a synchronous/blocking client for a EteService service.
 */
static EteServiceBlocking of(EndpointChannelFactory _endpointChannelFactory, ConjureRuntime _runtime) {
    return new EteServiceBlocking() {

        private final PlainSerDe _plainSerDe = _runtime.plainSerDe();

        private final EndpointChannel stringChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.string);

        private final Deserializer<String> stringDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<String>() {
        });

        private final EndpointChannel integerChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.integer);

        private final Deserializer<Integer> integerDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<Integer>() {
        });

        private final EndpointChannel double_Channel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.double_);

        private final Deserializer<Double> double_Deserializer = _runtime.bodySerDe().deserializer(new TypeMarker<Double>() {
        });

        private final EndpointChannel boolean_Channel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.boolean_);

        private final Deserializer<Boolean> boolean_Deserializer = _runtime.bodySerDe().deserializer(new TypeMarker<Boolean>() {
        });

        private final EndpointChannel safelongChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.safelong);

        private final Deserializer<SafeLong> safelongDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<SafeLong>() {
        });

        private final EndpointChannel ridChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.rid);

        private final Deserializer<ResourceIdentifier> ridDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<ResourceIdentifier>() {
        });

        private final EndpointChannel bearertokenChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.bearertoken);

        private final Deserializer<BearerToken> bearertokenDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<BearerToken>() {
        });

        private final EndpointChannel optionalStringChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.optionalString);

        private final Deserializer<Optional<String>> optionalStringDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<Optional<String>>() {
        });

        private final EndpointChannel optionalEmptyChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.optionalEmpty);

        private final Deserializer<Optional<String>> optionalEmptyDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<Optional<String>>() {
        });

        private final EndpointChannel datetimeChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.datetime);

        private final Deserializer<OffsetDateTime> datetimeDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<OffsetDateTime>() {
        });

        private final EndpointChannel binaryChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.binary);

        private final EndpointChannel pathChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.path);

        private final Deserializer<String> pathDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<String>() {
        });

        private final EndpointChannel externalLongPathChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.externalLongPath);

        private final Deserializer<Long> externalLongPathDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<Long>() {
        });

        private final EndpointChannel optionalExternalLongQueryChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.optionalExternalLongQuery);

        private final Deserializer<Optional<Long>> optionalExternalLongQueryDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<Optional<Long>>() {
        });

        private final Serializer<StringAliasExample> notNullBodySerializer = _runtime.bodySerDe().serializer(new TypeMarker<StringAliasExample>() {
        });

        private final EndpointChannel notNullBodyChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.notNullBody);

        private final Deserializer<StringAliasExample> notNullBodyDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<StringAliasExample>() {
        });

        private final EndpointChannel aliasOneChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.aliasOne);

        private final Deserializer<StringAliasExample> aliasOneDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<StringAliasExample>() {
        });

        private final EndpointChannel optionalAliasOneChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.optionalAliasOne);

        private final Deserializer<StringAliasExample> optionalAliasOneDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<StringAliasExample>() {
        });

        private final EndpointChannel aliasTwoChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.aliasTwo);

        private final Deserializer<NestedStringAliasExample> aliasTwoDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<NestedStringAliasExample>() {
        });

        private final Serializer<StringAliasExample> notNullBodyExternalImportSerializer = _runtime.bodySerDe().serializer(new TypeMarker<StringAliasExample>() {
        });

        private final EndpointChannel notNullBodyExternalImportChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.notNullBodyExternalImport);

        private final Deserializer<StringAliasExample> notNullBodyExternalImportDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<StringAliasExample>() {
        });

        private final Serializer<Optional<StringAliasExample>> optionalBodyExternalImportSerializer = _runtime.bodySerDe().serializer(new TypeMarker<Optional<StringAliasExample>>() {
        });

        private final EndpointChannel optionalBodyExternalImportChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.optionalBodyExternalImport);

        private final Deserializer<Optional<StringAliasExample>> optionalBodyExternalImportDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<Optional<StringAliasExample>>() {
        });

        private final EndpointChannel optionalQueryExternalImportChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.optionalQueryExternalImport);

        private final Deserializer<Optional<StringAliasExample>> optionalQueryExternalImportDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<Optional<StringAliasExample>>() {
        });

        private final EndpointChannel noReturnChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.noReturn);

        private final Deserializer<Void> noReturnDeserializer = _runtime.bodySerDe().emptyBodyDeserializer();

        private final EndpointChannel enumQueryChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.enumQuery);

        private final Deserializer<SimpleEnum> enumQueryDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<SimpleEnum>() {
        });

        private final EndpointChannel enumListQueryChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.enumListQuery);

        private final Deserializer<List<SimpleEnum>> enumListQueryDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<List<SimpleEnum>>() {
        });

        private final EndpointChannel optionalEnumQueryChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.optionalEnumQuery);

        private final Deserializer<Optional<SimpleEnum>> optionalEnumQueryDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<Optional<SimpleEnum>>() {
        });

        private final EndpointChannel enumHeaderChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.enumHeader);

        private final Deserializer<SimpleEnum> enumHeaderDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<SimpleEnum>() {
        });

        private final EndpointChannel aliasLongEndpointChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.aliasLongEndpoint);

        private final Deserializer<Optional<LongAlias>> aliasLongEndpointDeserializer = _runtime.bodySerDe().deserializer(new TypeMarker<Optional<LongAlias>>() {
        });

        private final EndpointChannel complexQueryParametersChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.complexQueryParameters);

        private final Deserializer<Void> complexQueryParametersDeserializer = _runtime.bodySerDe().emptyBodyDeserializer();

        private final Serializer<List<Optional<String>>> receiveListOfOptionalsSerializer = _runtime.bodySerDe().serializer(new TypeMarker<List<Optional<String>>>() {
        });

        private final EndpointChannel receiveListOfOptionalsChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.receiveListOfOptionals);

        private final Deserializer<Void> receiveListOfOptionalsDeserializer = _runtime.bodySerDe().emptyBodyDeserializer();

        private final Serializer<Set<Optional<String>>> receiveSetOfOptionalsSerializer = _runtime.bodySerDe().serializer(new TypeMarker<Set<Optional<String>>>() {
        });

        private final EndpointChannel receiveSetOfOptionalsChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.receiveSetOfOptionals);

        private final Deserializer<Void> receiveSetOfOptionalsDeserializer = _runtime.bodySerDe().emptyBodyDeserializer();

        private final Serializer<List<String>> receiveListOfStringsSerializer = _runtime.bodySerDe().serializer(new TypeMarker<List<String>>() {
        });

        private final EndpointChannel receiveListOfStringsChannel = _endpointChannelFactory.endpoint(DialogueEteEndpoints.receiveListOfStrings);

        private final Deserializer<Void> receiveListOfStringsDeserializer = _runtime.bodySerDe().emptyBodyDeserializer();

        @Override
        public String string(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            return _runtime.clients().callBlocking(stringChannel, _request.build(), stringDeserializer);
        }

        @Override
        public int integer(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            return _runtime.clients().callBlocking(integerChannel, _request.build(), integerDeserializer);
        }

        @Override
        public double double_(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            return _runtime.clients().callBlocking(double_Channel, _request.build(), double_Deserializer);
        }

        @Override
        public boolean boolean_(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            return _runtime.clients().callBlocking(boolean_Channel, _request.build(), boolean_Deserializer);
        }

        @Override
        public SafeLong safelong(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            return _runtime.clients().callBlocking(safelongChannel, _request.build(), safelongDeserializer);
        }

        @Override
        public ResourceIdentifier rid(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            return _runtime.clients().callBlocking(ridChannel, _request.build(), ridDeserializer);
        }

        @Override
        public BearerToken bearertoken(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            return _runtime.clients().callBlocking(bearertokenChannel, _request.build(), bearertokenDeserializer);
        }

        @Override
        public Optional<String> optionalString(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            return _runtime.clients().callBlocking(optionalStringChannel, _request.build(), optionalStringDeserializer);
        }

        @Override
        public Optional<String> optionalEmpty(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            return _runtime.clients().callBlocking(optionalEmptyChannel, _request.build(), optionalEmptyDeserializer);
        }

        @Override
        public OffsetDateTime datetime(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            return _runtime.clients().callBlocking(datetimeChannel, _request.build(), datetimeDeserializer);
        }

        @Override
        public InputStream binary(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            return _runtime.clients().callBlocking(binaryChannel, _request.build(), _runtime.bodySerDe().inputStreamDeserializer());
        }

        @Override
        public String path(AuthHeader authHeader, String param) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.putPathParams("param", _plainSerDe.serializeString(param));
            return _runtime.clients().callBlocking(pathChannel, _request.build(), pathDeserializer);
        }

        @Override
        public long externalLongPath(AuthHeader authHeader, long param) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.putPathParams("param", Objects.toString(param));
            return _runtime.clients().callBlocking(externalLongPathChannel, _request.build(), externalLongPathDeserializer);
        }

        @Override
        public Optional<Long> optionalExternalLongQuery(AuthHeader authHeader, Optional<Long> param) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            if (param.isPresent()) {
                _request.putQueryParams("param", Objects.toString(param.get()));
            }
            return _runtime.clients().callBlocking(optionalExternalLongQueryChannel, _request.build(), optionalExternalLongQueryDeserializer);
        }

        @Override
        public StringAliasExample notNullBody(AuthHeader authHeader, StringAliasExample notNullBody) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.body(notNullBodySerializer.serialize(notNullBody));
            return _runtime.clients().callBlocking(notNullBodyChannel, _request.build(), notNullBodyDeserializer);
        }

        @Override
        public StringAliasExample aliasOne(AuthHeader authHeader, StringAliasExample queryParamName) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.putQueryParams("queryParamName", _plainSerDe.serializeString(queryParamName.get()));
            return _runtime.clients().callBlocking(aliasOneChannel, _request.build(), aliasOneDeserializer);
        }

        @Override
        public StringAliasExample optionalAliasOne(AuthHeader authHeader, Optional<StringAliasExample> queryParamName) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            if (queryParamName.isPresent()) {
                _request.putQueryParams("queryParamName", _plainSerDe.serializeString(queryParamName.get().get()));
            }
            return _runtime.clients().callBlocking(optionalAliasOneChannel, _request.build(), optionalAliasOneDeserializer);
        }

        @Override
        public NestedStringAliasExample aliasTwo(AuthHeader authHeader, NestedStringAliasExample queryParamName) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.putQueryParams("queryParamName", _plainSerDe.serializeString(queryParamName.get().get()));
            return _runtime.clients().callBlocking(aliasTwoChannel, _request.build(), aliasTwoDeserializer);
        }

        @Override
        public StringAliasExample notNullBodyExternalImport(AuthHeader authHeader, StringAliasExample notNullBody) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.body(notNullBodyExternalImportSerializer.serialize(notNullBody));
            return _runtime.clients().callBlocking(notNullBodyExternalImportChannel, _request.build(), notNullBodyExternalImportDeserializer);
        }

        @Override
        public Optional<StringAliasExample> optionalBodyExternalImport(AuthHeader authHeader, Optional<StringAliasExample> body) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.body(optionalBodyExternalImportSerializer.serialize(body));
            return _runtime.clients().callBlocking(optionalBodyExternalImportChannel, _request.build(), optionalBodyExternalImportDeserializer);
        }

        @Override
        public Optional<StringAliasExample> optionalQueryExternalImport(AuthHeader authHeader, Optional<StringAliasExample> query) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            if (query.isPresent()) {
                _request.putQueryParams("query", Objects.toString(query.get()));
            }
            return _runtime.clients().callBlocking(optionalQueryExternalImportChannel, _request.build(), optionalQueryExternalImportDeserializer);
        }

        @Override
        public void noReturn(AuthHeader authHeader) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _runtime.clients().callBlocking(noReturnChannel, _request.build(), noReturnDeserializer);
        }

        @Override
        public SimpleEnum enumQuery(AuthHeader authHeader, SimpleEnum queryParamName) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.putQueryParams("queryParamName", Objects.toString(queryParamName));
            return _runtime.clients().callBlocking(enumQueryChannel, _request.build(), enumQueryDeserializer);
        }

        @Override
        public List<SimpleEnum> enumListQuery(AuthHeader authHeader, List<SimpleEnum> queryParamName) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            for (SimpleEnum queryParamNameElement : queryParamName) {
                _request.putQueryParams("queryParamName", Objects.toString(queryParamNameElement));
            }
            return _runtime.clients().callBlocking(enumListQueryChannel, _request.build(), enumListQueryDeserializer);
        }

        @Override
        public Optional<SimpleEnum> optionalEnumQuery(AuthHeader authHeader, Optional<SimpleEnum> queryParamName) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            if (queryParamName.isPresent()) {
                _request.putQueryParams("queryParamName", Objects.toString(queryParamName.get()));
            }
            return _runtime.clients().callBlocking(optionalEnumQueryChannel, _request.build(), optionalEnumQueryDeserializer);
        }

        @Override
        public SimpleEnum enumHeader(AuthHeader authHeader, SimpleEnum headerParameter) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.putHeaderParams("Custom-Header", Objects.toString(headerParameter));
            return _runtime.clients().callBlocking(enumHeaderChannel, _request.build(), enumHeaderDeserializer);
        }

        @Override
        public Optional<LongAlias> aliasLongEndpoint(AuthHeader authHeader, Optional<LongAlias> input) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            if (input.isPresent()) {
                _request.putQueryParams("input", Objects.toString(input.get().get()));
            }
            return _runtime.clients().callBlocking(aliasLongEndpointChannel, _request.build(), aliasLongEndpointDeserializer);
        }

        @Override
        public void complexQueryParameters(AuthHeader authHeader, ResourceIdentifier datasetRid, Set<StringAliasExample> strings, Set<Long> longs, Set<Integer> ints) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.putPathParams("datasetRid", _plainSerDe.serializeRid(datasetRid));
            for (StringAliasExample stringsElement : strings) {
                _request.putQueryParams("strings", _plainSerDe.serializeString(stringsElement.get()));
            }
            for (long longsElement : longs) {
                _request.putQueryParams("longs", Objects.toString(longsElement));
            }
            for (int intsElement : ints) {
                _request.putQueryParams("ints", _plainSerDe.serializeInteger(intsElement));
            }
            _runtime.clients().callBlocking(complexQueryParametersChannel, _request.build(), complexQueryParametersDeserializer);
        }

        @Override
        public void receiveListOfOptionals(AuthHeader authHeader, List<Optional<String>> value) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.body(receiveListOfOptionalsSerializer.serialize(value));
            _runtime.clients().callBlocking(receiveListOfOptionalsChannel, _request.build(), receiveListOfOptionalsDeserializer);
        }

        @Override
        public void receiveSetOfOptionals(AuthHeader authHeader, Set<Optional<String>> value) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.body(receiveSetOfOptionalsSerializer.serialize(value));
            _runtime.clients().callBlocking(receiveSetOfOptionalsChannel, _request.build(), receiveSetOfOptionalsDeserializer);
        }

        @Override
        public void receiveListOfStrings(AuthHeader authHeader, List<String> value) {
            Request.Builder _request = Request.builder();
            _request.putHeaderParams("Authorization", authHeader.toString());
            _request.body(receiveListOfStringsSerializer.serialize(value));
            _runtime.clients().callBlocking(receiveListOfStringsChannel, _request.build(), receiveListOfStringsDeserializer);
        }

        @Override
        public String toString() {
            return "EteServiceBlocking{_endpointChannelFactory=" + _endpointChannelFactory + ", runtime=" + _runtime + '}';
        }
    };
}
Also used : AuthHeader(com.palantir.tokens.auth.AuthHeader) Set(java.util.Set) Optional(java.util.Optional) TypeMarker(com.palantir.dialogue.TypeMarker) Request(com.palantir.dialogue.Request) String(java.lang.String) ClientEndpoint(com.palantir.conjure.java.lib.internal.ClientEndpoint) Endpoint(com.palantir.dialogue.Endpoint) ResourceIdentifier(com.palantir.ri.ResourceIdentifier) Deserializer(com.palantir.dialogue.Deserializer) Long(java.lang.Long) SafeLong(com.palantir.conjure.java.lib.SafeLong) EndpointChannel(com.palantir.dialogue.EndpointChannel) List(java.util.List) PlainSerDe(com.palantir.dialogue.PlainSerDe) Serializer(com.palantir.dialogue.Serializer)

Example 4 with Deserializer

use of com.palantir.dialogue.Deserializer in project dialogue by palantir.

the class ServiceImplementationGenerator method deserializer.

private Optional<FieldSpec> deserializer(ReturnType type) {
    TypeName fullReturnType = type.returnType().box();
    TypeName deserializerFactoryType = type.deserializerFactory();
    TypeName errorDecoderType = type.errorDecoder();
    TypeName innerType = type.asyncInnerType().map(TypeName::box).orElse(fullReturnType);
    ParameterizedTypeName deserializerType = ParameterizedTypeName.get(ClassName.get(Deserializer.class), innerType);
    CodeBlock realDeserializer = CodeBlock.of("new $T(new $T(), new $T()).deserializerFor(new $T<$T>() {})", ErrorHandlingDeserializerFactory.class, deserializerFactoryType, errorDecoderType, TypeMarker.class, innerType);
    CodeBlock voidDeserializer = CodeBlock.of("new $T($L.bodySerDe().emptyBodyDeserializer(), new $T())", ErrorHandlingVoidDeserializer.class, serviceDefinition.conjureRuntimeArgName(), errorDecoderType);
    return Optional.of(FieldSpec.builder(deserializerType, type.deserializerFieldName()).addModifiers(Modifier.PRIVATE, Modifier.FINAL).initializer(type.isVoid() ? voidDeserializer : realDeserializer).build());
}
Also used : ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName) TypeName(com.squareup.javapoet.TypeName) ErrorHandlingVoidDeserializer(com.palantir.dialogue.annotations.ErrorHandlingVoidDeserializer) Deserializer(com.palantir.dialogue.Deserializer) CodeBlock(com.squareup.javapoet.CodeBlock) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName)

Example 5 with Deserializer

use of com.palantir.dialogue.Deserializer in project conjure-java by palantir.

the class DefaultStaticFactoryMethodGenerator method generate.

@Override
public MethodSpec generate(ServiceDefinition def) {
    ClassName className = getClassName(def);
    TypeSpec.Builder impl = TypeSpec.anonymousClassBuilder("").addSuperinterface(className);
    impl.addField(FieldSpec.builder(PlainSerDe.class, PLAIN_SER_DE).addModifiers(Modifier.PRIVATE, Modifier.FINAL).initializer(CodeBlock.of("$L.plainSerDe()", StaticFactoryMethodGenerator.RUNTIME)).build());
    def.getEndpoints().forEach(endpoint -> {
        endpoint.getArgs().stream().filter(arg -> arg.getParamType().accept(ParameterTypeVisitor.IS_BODY)).findAny().flatMap(body -> serializer(endpoint.getEndpointName(), body.getType())).ifPresent(impl::addField);
        impl.addField(bindEndpointChannel(def, endpoint));
        deserializer(endpoint.getEndpointName(), endpoint.getReturns()).ifPresent(impl::addField);
        impl.addMethod(clientImpl(endpoint));
    });
    impl.addMethod(DefaultStaticFactoryMethodGenerator.toStringMethod(className));
    String javadoc = methodType.switchBy("Creates a synchronous/blocking client for a $L service.", "Creates an " + "asynchronous/non-blocking client for a $L service.");
    MethodSpec method = MethodSpec.methodBuilder("of").addModifiers(Modifier.STATIC, Modifier.PUBLIC).addJavadoc(javadoc, def.getServiceName().getName()).returns(className).addParameter(EndpointChannelFactory.class, StaticFactoryMethodGenerator.ENDPOINT_CHANNEL_FACTORY).addParameter(ConjureRuntime.class, StaticFactoryMethodGenerator.RUNTIME).addCode(CodeBlock.builder().add("return $L;", impl.build()).build()).build();
    return method;
}
Also used : HeaderAuthType(com.palantir.conjure.spec.HeaderAuthType) TypeVisitor(com.palantir.conjure.visitor.TypeVisitor) Modifier(javax.lang.model.element.Modifier) SafeIllegalStateException(com.palantir.logsafe.exceptions.SafeIllegalStateException) ClassName(com.squareup.javapoet.ClassName) ServiceDefinition(com.palantir.conjure.spec.ServiceDefinition) Options(com.palantir.conjure.java.Options) ParameterTypeVisitor(com.palantir.conjure.visitor.ParameterTypeVisitor) MapType(com.palantir.conjure.spec.MapType) OptionalType(com.palantir.conjure.spec.OptionalType) ParameterSpec(com.squareup.javapoet.ParameterSpec) ImmutableMap(com.google.common.collect.ImmutableMap) AuthType(com.palantir.conjure.spec.AuthType) Deserializer(com.palantir.dialogue.Deserializer) BodyParameterType(com.palantir.conjure.spec.BodyParameterType) ParameterType(com.palantir.conjure.spec.ParameterType) Objects(java.util.Objects) List(java.util.List) TypeName(com.squareup.javapoet.TypeName) Optional(java.util.Optional) TypeMarker(com.palantir.dialogue.TypeMarker) PrimitiveType(com.palantir.conjure.spec.PrimitiveType) EndpointDefinition(com.palantir.conjure.spec.EndpointDefinition) ListType(com.palantir.conjure.spec.ListType) Auth(com.palantir.conjure.java.services.Auth) ExternalReference(com.palantir.conjure.spec.ExternalReference) FieldSpec(com.squareup.javapoet.FieldSpec) Type(com.palantir.conjure.spec.Type) PathParameterType(com.palantir.conjure.spec.PathParameterType) TypeDefinitionVisitor(com.palantir.conjure.visitor.TypeDefinitionVisitor) Serializer(com.palantir.dialogue.Serializer) PlainSerDe(com.palantir.dialogue.PlainSerDe) SafeArg(com.palantir.logsafe.SafeArg) ConjureRuntime(com.palantir.dialogue.ConjureRuntime) SetType(com.palantir.conjure.spec.SetType) Request(com.palantir.dialogue.Request) CodeBlock(com.squareup.javapoet.CodeBlock) EndpointChannelFactory(com.palantir.dialogue.EndpointChannelFactory) TypeDefinition(com.palantir.conjure.spec.TypeDefinition) MethodSpec(com.squareup.javapoet.MethodSpec) CookieAuthType(com.palantir.conjure.spec.CookieAuthType) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName) TypeSpec(com.squareup.javapoet.TypeSpec) EndpointName(com.palantir.conjure.spec.EndpointName) EndpointChannel(com.palantir.dialogue.EndpointChannel) QueryParameterType(com.palantir.conjure.spec.QueryParameterType) AnnotationSpec(com.squareup.javapoet.AnnotationSpec) HeaderParameterType(com.palantir.conjure.spec.HeaderParameterType) ArgumentDefinition(com.palantir.conjure.spec.ArgumentDefinition) MethodSpec(com.squareup.javapoet.MethodSpec) EndpointChannelFactory(com.palantir.dialogue.EndpointChannelFactory) ClassName(com.squareup.javapoet.ClassName) TypeSpec(com.squareup.javapoet.TypeSpec)

Aggregations

Deserializer (com.palantir.dialogue.Deserializer)6 EndpointChannel (com.palantir.dialogue.EndpointChannel)4 PlainSerDe (com.palantir.dialogue.PlainSerDe)4 Request (com.palantir.dialogue.Request)4 Serializer (com.palantir.dialogue.Serializer)4 TypeMarker (com.palantir.dialogue.TypeMarker)4 List (java.util.List)4 Optional (java.util.Optional)4 CodeBlock (com.squareup.javapoet.CodeBlock)3 ParameterizedTypeName (com.squareup.javapoet.ParameterizedTypeName)3 TypeName (com.squareup.javapoet.TypeName)3 ImmutableMap (com.google.common.collect.ImmutableMap)2 Options (com.palantir.conjure.java.Options)2 SafeLong (com.palantir.conjure.java.lib.SafeLong)2 ClientEndpoint (com.palantir.conjure.java.lib.internal.ClientEndpoint)2 Auth (com.palantir.conjure.java.services.Auth)2 ArgumentDefinition (com.palantir.conjure.spec.ArgumentDefinition)2 AuthType (com.palantir.conjure.spec.AuthType)2 BodyParameterType (com.palantir.conjure.spec.BodyParameterType)2 CookieAuthType (com.palantir.conjure.spec.CookieAuthType)2