Class AbstractServiceBuilder
- java.lang.Object
-
- io.helidon.microprofile.grpc.core.AbstractServiceBuilder
-
- Direct Known Subclasses:
GrpcServiceBuilder
public abstract class AbstractServiceBuilder extends Object
A base class for gRPC service and client descriptor builders.
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractServiceBuilder(Class<?> serviceClass, Supplier<?> instance)
Create a new introspection modeller for a given gRPC service class.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Class<?>
annotatedServiceClass()
Obtain the actual annotated class.protected void
checkForNonPublicMethodIssues()
Verify that there are no non-public annotated methods.protected static Supplier<?>
createInstanceSupplier(Class<?> cls)
Create the service instance supplier.static String
determineMethodName(AnnotatedMethod method, GrpcMethod annotation)
Determine the name to use from the method.protected String
determineServiceName(Class<?> annotatedClass)
Determine the name of the gRPC service.protected List<Method>
getAllDeclaredMethods(Class<?> clazz)
Obtain a list of all of the methods declared on the service class.protected MarshallerSupplier
getMarshallerSupplier()
Obtain theMarshallerSupplier
to use.protected List<MethodHandlerSupplier>
handlerSuppliers()
Obtain the list of method handler suppliers.protected Supplier<?>
instanceSupplier()
Obtain the service instance supplier.boolean
isAnnotatedService()
Determine whether this modeller contains an annotated service.protected Class<?>
serviceClass()
Obtain the service class.
-
-
-
Constructor Detail
-
AbstractServiceBuilder
protected AbstractServiceBuilder(Class<?> serviceClass, Supplier<?> instance)
Create a new introspection modeller for a given gRPC service class.- Parameters:
serviceClass
- gRPC service (handler) class.instance
- the target instance to call gRPC handler methods on- Throws:
NullPointerException
- if the service or instance parameters are null
-
-
Method Detail
-
isAnnotatedService
public boolean isAnnotatedService()
Determine whether this modeller contains an annotated service.- Returns:
true
if this modeller contains an annotated service
-
serviceClass
protected Class<?> serviceClass()
Obtain the service class.- Returns:
- the service class
-
annotatedServiceClass
protected Class<?> annotatedServiceClass()
Obtain the actual annotated class.- Returns:
- the actual annotated class
-
getMarshallerSupplier
protected MarshallerSupplier getMarshallerSupplier()
Obtain theMarshallerSupplier
to use.The
MarshallerSupplier
will be determined by theGrpcMarshaller
annotation if it is present otherwise the default supplier will be returned.- Returns:
- the
MarshallerSupplier
to use
-
createInstanceSupplier
protected static Supplier<?> createInstanceSupplier(Class<?> cls)
Create the service instance supplier.- Parameters:
cls
- the service class- Returns:
- the service instance supplier
-
checkForNonPublicMethodIssues
protected void checkForNonPublicMethodIssues()
Verify that there are no non-public annotated methods.
-
handlerSuppliers
protected List<MethodHandlerSupplier> handlerSuppliers()
Obtain the list of method handler suppliers.- Returns:
- the list of method handler suppliers
-
instanceSupplier
protected Supplier<?> instanceSupplier()
Obtain the service instance supplier.- Returns:
- the service instance supplier
-
getAllDeclaredMethods
protected List<Method> getAllDeclaredMethods(Class<?> clazz)
Obtain a list of all of the methods declared on the service class.- Parameters:
clazz
- the service class- Returns:
- a list of all of the methods declared on the service class
-
determineServiceName
protected String determineServiceName(Class<?> annotatedClass)
Determine the name of the gRPC service.If the class is annotated with
Grpc
then the name value from the annotation is used as the service name. If the annotation has no name value or the annotation is not present the simple name of the class is used.- Parameters:
annotatedClass
- the annotated class- Returns:
- the name of the gRPC service
-
determineMethodName
public static String determineMethodName(AnnotatedMethod method, GrpcMethod annotation)
Determine the name to use from the method.If the method is annotated with
GrpcMethod
then use the value ofGrpcMethod.name()
unlessGrpcMethod.name()
returns empty string, in which case use the actual method name.If the method is annotated with an annotation that has the meta-annotation
GrpcMethod
then use the value of that annotation'sname()
method. If that annotation does not have aname()
method or thename()
method return empty string then use the actual method name.- Parameters:
method
- the annotated methodannotation
- the method type annotation- Returns:
- the value to use for the method name
-
-