diff --git a/grpc/api/src/main/java/io/helidon/grpc/api/Grpc.java b/grpc/api/src/main/java/io/helidon/grpc/api/Grpc.java index 4f5a50c2e70..3a4f3585cfe 100644 --- a/grpc/api/src/main/java/io/helidon/grpc/api/Grpc.java +++ b/grpc/api/src/main/java/io/helidon/grpc/api/Grpc.java @@ -275,7 +275,7 @@ public interface Grpc { } /** - * An annotation to indicate the response type of a gRPC method. + * An annotation to indicate the response type of gRPC method. */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @@ -293,7 +293,7 @@ public interface Grpc { /** * An annotation that can be used to specify the name of a configured gRPC channel. */ - @Target({ElementType.TYPE, ElementType.METHOD}) + @Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @interface GrpcChannel { diff --git a/microprofile/grpc/client/src/main/java/io/helidon/microprofile/grpc/client/ChannelProducer.java b/microprofile/grpc/client/src/main/java/io/helidon/microprofile/grpc/client/ChannelProducer.java index 9a1cb1f3c5f..521965b2ed8 100644 --- a/microprofile/grpc/client/src/main/java/io/helidon/microprofile/grpc/client/ChannelProducer.java +++ b/microprofile/grpc/client/src/main/java/io/helidon/microprofile/grpc/client/ChannelProducer.java @@ -57,9 +57,8 @@ public class ChannelProducer { * @return a gRPC {@link io.grpc.Channel} */ @Produces - @Grpc.GrpcChannel(GrpcChannelsProvider.DEFAULT_CHANNEL_NAME) public Channel get(InjectionPoint injectionPoint) { - Grpc.GrpcChannel qualifier = injectionPoint.getQualifiers() + Grpc.GrpcChannel qualifier = injectionPoint.getAnnotated().getAnnotations() .stream() .filter(q -> q.annotationType().equals(Grpc.GrpcChannel.class)) .map(q -> (Grpc.GrpcChannel) q) @@ -70,16 +69,6 @@ public Channel get(InjectionPoint injectionPoint) { return findChannel(name); } - /** - * Produces the default gRPC {@link io.grpc.Channel}. - * - * @return the default gRPC {@link io.grpc.Channel} - */ - @Produces - public Channel getDefaultChannel() { - return findChannel(GrpcChannelsProvider.DEFAULT_CHANNEL_NAME); - } - /** * Obtain the named {@link io.grpc.Channel}. * diff --git a/microprofile/grpc/client/src/test/java/io/helidon/microprofile/grpc/client/ChannelInjectionTest.java b/microprofile/grpc/client/src/test/java/io/helidon/microprofile/grpc/client/ChannelInjectionTest.java new file mode 100644 index 00000000000..3a427d2f42d --- /dev/null +++ b/microprofile/grpc/client/src/test/java/io/helidon/microprofile/grpc/client/ChannelInjectionTest.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2024 Oracle and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.helidon.microprofile.grpc.client; + +import io.helidon.grpc.api.Grpc; +import io.helidon.microprofile.testing.junit5.HelidonTest; + +import io.grpc.Channel; +import jakarta.inject.Inject; +import org.junit.jupiter.api.Test; + +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; + +@HelidonTest +class ChannelInjectionTest { + + @Inject + @Grpc.GrpcChannel("echo-channel") + private Channel echoChannel1; + + private final Channel echoChannel2; + + @Inject + ChannelInjectionTest(@Grpc.GrpcChannel("echo-channel") Channel echoChannel2) { + this.echoChannel2 = echoChannel2; + } + + @Test + void testInjection() { + assertThat(echoChannel1, notNullValue()); + assertThat(echoChannel2, notNullValue()); + assertEquals(echoChannel1.getClass(), echoChannel2.getClass()); + assertEquals(echoChannel1.authority(), echoChannel2.authority()); + } +}