Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions changelog/@unreleased/pr-1150.v2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
type: improvement
improvement:
description: Apply `@Incubating` annotations based on the `incubating` endpoint
tag
links:
- https://github.com/palantir/conjure-java/pull/1150
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
package com.palantir.conjure.java;

import com.google.common.collect.ImmutableList;
import com.palantir.conjure.java.lib.internal.Incubating;
import com.palantir.conjure.spec.Documentation;
import com.palantir.conjure.spec.EndpointDefinition;
import com.squareup.javapoet.AnnotationSpec;
import com.squareup.javapoet.ClassName;
import java.util.Optional;
Expand All @@ -36,5 +38,12 @@ public static ImmutableList<AnnotationSpec> deprecation(Optional<Documentation>
: ImmutableList.of();
}

public static ImmutableList<AnnotationSpec> incubating(EndpointDefinition definition) {
if (definition.getTags().contains("incubating")) {
return ImmutableList.of(AnnotationSpec.builder(Incubating.class).build());
}
return ImmutableList.of();
}

private ConjureAnnotations() {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ private MethodSpec generateServiceMethod(
.addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
.addAnnotation(
httpMethodToClassName(endpointDef.getHttpMethod().get().name()))
.addAnnotations(ConjureAnnotations.incubating(endpointDef))
.addParameters(createServiceMethodParameters(endpointDef, argumentTypeMapper, true))
.returns(returnType);

Expand Down Expand Up @@ -226,6 +227,7 @@ private MethodSpec createCompatibilityBackfillMethod(
endpointDef.getEndpointName().get())
.addModifiers(Modifier.PUBLIC, Modifier.DEFAULT)
.addAnnotation(Deprecated.class)
.addAnnotations(ConjureAnnotations.incubating(endpointDef))
.addParameters(IntStream.range(0, sortedParams.size())
.filter(i -> !sortedMaybeExtraArgs.get(i).isPresent())
.mapToObj(sortedParams::get)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,8 @@ private MethodSpec generateServiceMethod(
.addAnnotation(AnnotationSpec.builder(ClassName.get("retrofit2.http", "Headers"))
.addMember("value", "$S", "hr-path-template: " + endpointPathWithoutRegex)
.addMember("value", "$S", "Accept: " + getReturnMediaType(returnType))
.build());
.build())
.addAnnotations(ConjureAnnotations.incubating(endpointDef));

if (returnType.equals(BINARY_RETURN_TYPE) || returnType.equals(OPTIONAL_BINARY_RETURN_TYPE)) {
methodBuilder.addAnnotation(AnnotationSpec.builder(ClassName.get("retrofit2.http", "Streaming"))
Expand Down Expand Up @@ -251,7 +252,8 @@ private MethodSpec createCompatibilityBackfillMethod(
.addParameters(IntStream.range(0, sortedParams.size())
.filter(i -> !sortedMaybeExtraArgs.get(i).isPresent())
.mapToObj(sortedParams::get)
.collect(Collectors.toList()));
.collect(Collectors.toList()))
.addAnnotations(ConjureAnnotations.incubating(endpointDef));

endpointDef
.getReturns()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,8 @@ private MethodSpec generateServiceInterfaceMethod(
JavaNameSanitizer.sanitize(endpointDef.getEndpointName().get());
MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder(methodName)
.addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
.addParameters(createServiceMethodParameters(endpointDef, typeMapper));
.addParameters(createServiceMethodParameters(endpointDef, typeMapper))
.addAnnotations(ConjureAnnotations.incubating(endpointDef));

endpointDef.getDeprecated().ifPresent(deprecatedDocsValue -> methodBuilder.addAnnotation(Deprecated.class));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,8 @@ private MethodSpec apiMethod(EndpointDefinition endpointDef, Function<Optional<T
MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder(
endpointDef.getEndpointName().get())
.addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
.addParameters(parameterTypes.methodParams(endpointDef));
.addParameters(parameterTypes.methodParams(endpointDef))
.addAnnotations(ConjureAnnotations.incubating(endpointDef));
endpointDef.getMarkers().stream()
.filter(marker -> !marker.accept(IsUndertowAsyncMarkerVisitor.INSTANCE))
.map(marker -> {
Expand Down
4 changes: 3 additions & 1 deletion conjure-java-core/src/test/resources/example-service.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,9 @@ services:
endpoints:
getFileSystems:
markers:
- Nonnull # requires FeatureFlags.DangerousGothamMethodMarkers
- Nonnull
tags:
- incubating
http: GET /fileSystems
returns: map<string, BackingFileSystem>
docs: |
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading