diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcAttributesGetter.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcAttributesGetter.java index 0da544340f6b..b05f9bd4331b 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcAttributesGetter.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcAttributesGetter.java @@ -14,7 +14,7 @@ * library/framework. It will be used by the {@link RpcClientAttributesExtractor} or {@link * RpcServerAttributesExtractor} to obtain the various RPC attributes in a type-generic way. */ -public interface RpcAttributesGetter { +public interface RpcAttributesGetter { @Nullable String getSystem(REQUEST request); @@ -22,6 +22,10 @@ public interface RpcAttributesGetter { @Nullable String getService(REQUEST request); + /** + * @deprecated Use {@link #getRpcMethod(REQUEST)} for stable semconv. + */ + @Deprecated @Nullable String getMethod(REQUEST request); @@ -34,4 +38,35 @@ default Long getRequestSize(REQUEST request) { default Long getResponseSize(REQUEST request) { return null; } + + /** + * Returns the fully-qualified RPC method name for stable semconv. + * + * @param request the request object + * @return the fully-qualified RPC method name (e.g., "my.Service/Method"), or null if service or + * method is unavailable + */ + @Nullable + default String getRpcMethod(REQUEST request) { + return null; + } + + /** + * Returns a description of a class of error the operation ended with. + * + *

This method should return {@code null} if there was no error. + * + *

If this method is not implemented, or if it returns {@code null}, the exception class name + * will be used as error type. + * + *

The cardinality of the error type should be low. The instrumentations implementing this + * method are recommended to document the custom values they support. + * + *

Examples: {@code OK}, {@code CANCELLED}, {@code UNKNOWN}, {@code -32602} + */ + @Nullable + default String getErrorType( + REQUEST request, @Nullable RESPONSE response, @Nullable Throwable error) { + return null; + } } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcClientAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcClientAttributesExtractor.java index c0759f237438..31353ce3ffa6 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcClientAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcClientAttributesExtractor.java @@ -22,11 +22,11 @@ public final class RpcClientAttributesExtractor /** Creates the RPC client attributes extractor. */ public static AttributesExtractor create( - RpcAttributesGetter getter) { + RpcAttributesGetter getter) { return new RpcClientAttributesExtractor<>(getter); } - private RpcClientAttributesExtractor(RpcAttributesGetter getter) { + private RpcClientAttributesExtractor(RpcAttributesGetter getter) { super(getter); } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcCommonAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcCommonAttributesExtractor.java index f731e703586c..99bcaaa3032f 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcCommonAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcCommonAttributesExtractor.java @@ -21,12 +21,13 @@ abstract class RpcCommonAttributesExtractor static final AttributeKey RPC_SERVICE = AttributeKey.stringKey("rpc.service"); static final AttributeKey RPC_SYSTEM = AttributeKey.stringKey("rpc.system"); - private final RpcAttributesGetter getter; + private final RpcAttributesGetter getter; - RpcCommonAttributesExtractor(RpcAttributesGetter getter) { + RpcCommonAttributesExtractor(RpcAttributesGetter getter) { this.getter = getter; } + @SuppressWarnings("deprecation") // for getMethod() @Override public final void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) { internalSet(attributes, RPC_SYSTEM, getter.getSystem(request)); diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcServerAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcServerAttributesExtractor.java index 768af20dc7d6..161c78f466dd 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcServerAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcServerAttributesExtractor.java @@ -22,11 +22,11 @@ public final class RpcServerAttributesExtractor /** Creates the RPC server attributes extractor. */ public static AttributesExtractor create( - RpcAttributesGetter getter) { + RpcAttributesGetter getter) { return new RpcServerAttributesExtractor<>(getter); } - private RpcServerAttributesExtractor(RpcAttributesGetter getter) { + private RpcServerAttributesExtractor(RpcAttributesGetter getter) { super(getter); } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSizeAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSizeAttributesExtractor.java index dd085e411bdd..2e904f1f8240 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSizeAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSizeAttributesExtractor.java @@ -19,9 +19,9 @@ public final class RpcSizeAttributesExtractor static final AttributeKey RPC_REQUEST_SIZE = AttributeKey.longKey("rpc.request.size"); static final AttributeKey RPC_RESPONSE_SIZE = AttributeKey.longKey("rpc.response.size"); - private final RpcAttributesGetter getter; + private final RpcAttributesGetter getter; - RpcSizeAttributesExtractor(RpcAttributesGetter getter) { + RpcSizeAttributesExtractor(RpcAttributesGetter getter) { this.getter = getter; } @@ -30,7 +30,7 @@ public final class RpcSizeAttributesExtractor * attributesGetter} instance to determine the request and response size. */ public static RpcSizeAttributesExtractor create( - RpcAttributesGetter attributesGetter) { + RpcAttributesGetter attributesGetter) { return new RpcSizeAttributesExtractor<>(attributesGetter); } diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSpanNameExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSpanNameExtractor.java index 921839bd9234..41fb57a7a023 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSpanNameExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSpanNameExtractor.java @@ -15,16 +15,17 @@ public final class RpcSpanNameExtractor implements SpanNameExtractor/}. */ public static SpanNameExtractor create( - RpcAttributesGetter attributesExtractor) { + RpcAttributesGetter attributesExtractor) { return new RpcSpanNameExtractor<>(attributesExtractor); } - private final RpcAttributesGetter getter; + private final RpcAttributesGetter getter; - private RpcSpanNameExtractor(RpcAttributesGetter getter) { + private RpcSpanNameExtractor(RpcAttributesGetter getter) { this.getter = getter; } + @SuppressWarnings("deprecation") // for getMethod() @Override public String extract(REQUEST request) { String service = getter.getService(request); diff --git a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcAttributesExtractorTest.java b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcAttributesExtractorTest.java index 058bfb3485b3..7357ac924323 100644 --- a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcAttributesExtractorTest.java +++ b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcAttributesExtractorTest.java @@ -20,7 +20,7 @@ @SuppressWarnings("deprecation") // using deprecated semconv class RpcAttributesExtractorTest { - enum TestGetter implements RpcAttributesGetter> { + enum TestGetter implements RpcAttributesGetter, Void> { INSTANCE; @Override @@ -33,6 +33,7 @@ public String getService(Map request) { return request.get("service"); } + @Deprecated @Override public String getMethod(Map request) { return request.get("method"); diff --git a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSpanNameExtractorTest.java b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSpanNameExtractorTest.java index e20af5c494a4..27e34a448341 100644 --- a/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSpanNameExtractorTest.java +++ b/instrumentation-api-incubator/src/test/java/io/opentelemetry/instrumentation/api/incubator/semconv/rpc/RpcSpanNameExtractorTest.java @@ -17,8 +17,9 @@ @ExtendWith(MockitoExtension.class) class RpcSpanNameExtractorTest { - @Mock RpcAttributesGetter getter; + @Mock RpcAttributesGetter getter; + @SuppressWarnings("deprecation") // testing deprecated method @Test void normal() { RpcRequest request = new RpcRequest(); @@ -30,6 +31,7 @@ void normal() { assertThat(extractor.extract(request)).isEqualTo("my.Service/Method"); } + @SuppressWarnings("deprecation") // testing deprecated method @Test void serviceNull() { RpcRequest request = new RpcRequest(); diff --git a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboRpcAttributesGetter.java b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboRpcAttributesGetter.java index aac66a138c01..e2683d206c71 100644 --- a/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboRpcAttributesGetter.java +++ b/instrumentation/apache-dubbo-2.7/library-autoconfigure/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/DubboRpcAttributesGetter.java @@ -6,8 +6,9 @@ package io.opentelemetry.instrumentation.apachedubbo.v2_7; import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter; +import org.apache.dubbo.rpc.Result; -enum DubboRpcAttributesGetter implements RpcAttributesGetter { +enum DubboRpcAttributesGetter implements RpcAttributesGetter { INSTANCE; @Override @@ -20,6 +21,7 @@ public String getService(DubboRequest request) { return request.invocation().getInvoker().getInterface().getName(); } + @Deprecated @Override public String getMethod(DubboRequest request) { return request.invocation().getMethodName(); diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkRpcAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkRpcAttributesGetter.java index a3704e88855b..3d014d0e4a48 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkRpcAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkRpcAttributesGetter.java @@ -6,9 +6,10 @@ package io.opentelemetry.instrumentation.awssdk.v1_11; import com.amazonaws.Request; +import com.amazonaws.Response; import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter; -enum AwsSdkRpcAttributesGetter implements RpcAttributesGetter> { +enum AwsSdkRpcAttributesGetter implements RpcAttributesGetter, Response> { INSTANCE; private static final ClassValue OPERATION_NAME = @@ -37,6 +38,7 @@ public String getService(Request request) { return request.getServiceName(); } + @Deprecated @Override public String getMethod(Request request) { return OPERATION_NAME.get(request.getOriginalRequest().getClass()); diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkSpanNameExtractor.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkSpanNameExtractor.java index f757c4c026e3..cd5954f80609 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkSpanNameExtractor.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkSpanNameExtractor.java @@ -14,6 +14,7 @@ class AwsSdkSpanNameExtractor implements SpanNameExtractor> { private static final AwsSdkRpcAttributesGetter rpcAttributes = AwsSdkRpcAttributesGetter.INSTANCE; private final NamesCache namesCache = new NamesCache(); + @SuppressWarnings("deprecation") // for getMethod() @Override public String extract(Request request) { return qualifiedOperation( diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/AwsSdkRpcAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/AwsSdkRpcAttributesGetter.java index f6a6ba078a2b..10e5f7fa4115 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/AwsSdkRpcAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/AwsSdkRpcAttributesGetter.java @@ -9,7 +9,7 @@ import software.amazon.awssdk.core.interceptor.ExecutionAttributes; import software.amazon.awssdk.core.interceptor.SdkExecutionAttribute; -enum AwsSdkRpcAttributesGetter implements RpcAttributesGetter { +enum AwsSdkRpcAttributesGetter implements RpcAttributesGetter { INSTANCE; @Override @@ -22,6 +22,7 @@ public String getService(ExecutionAttributes request) { return request.getAttribute(SdkExecutionAttribute.SERVICE_NAME); } + @Deprecated @Override public String getMethod(ExecutionAttributes request) { return request.getAttribute(SdkExecutionAttribute.OPERATION_NAME); diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcRpcAttributesGetter.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcRpcAttributesGetter.java index e38b95c40f85..a7211fd13fef 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcRpcAttributesGetter.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcRpcAttributesGetter.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.grpc.v1_6; import io.grpc.Metadata; +import io.grpc.Status; import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter; import java.util.Collections; import java.util.List; @@ -13,7 +14,7 @@ import java.util.stream.StreamSupport; import javax.annotation.Nullable; -enum GrpcRpcAttributesGetter implements RpcAttributesGetter { +enum GrpcRpcAttributesGetter implements RpcAttributesGetter { INSTANCE; @Override @@ -32,6 +33,7 @@ public String getService(GrpcRequest request) { return fullMethodName.substring(0, slashIndex); } + @Deprecated @Override @Nullable public String getMethod(GrpcRequest request) { diff --git a/instrumentation/gwt-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtRpcAttributesGetter.java b/instrumentation/gwt-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtRpcAttributesGetter.java index 3ebef129f191..1dd84824e59c 100644 --- a/instrumentation/gwt-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtRpcAttributesGetter.java +++ b/instrumentation/gwt-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/gwt/GwtRpcAttributesGetter.java @@ -8,7 +8,7 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter; import java.lang.reflect.Method; -enum GwtRpcAttributesGetter implements RpcAttributesGetter { +enum GwtRpcAttributesGetter implements RpcAttributesGetter { INSTANCE; @Override @@ -21,6 +21,7 @@ public String getService(Method method) { return method.getDeclaringClass().getName(); } + @Deprecated @Override public String getMethod(Method method) { return method.getName(); diff --git a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/client/RmiClientAttributesGetter.java b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/client/RmiClientAttributesGetter.java index 1b139dacc7aa..95c01d2d7275 100644 --- a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/client/RmiClientAttributesGetter.java +++ b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/client/RmiClientAttributesGetter.java @@ -8,7 +8,7 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter; import java.lang.reflect.Method; -enum RmiClientAttributesGetter implements RpcAttributesGetter { +enum RmiClientAttributesGetter implements RpcAttributesGetter { INSTANCE; @Override @@ -21,6 +21,7 @@ public String getService(Method method) { return method.getDeclaringClass().getName(); } + @Deprecated @Override public String getMethod(Method method) { return method.getName(); diff --git a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/server/RmiServerAttributesGetter.java b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/server/RmiServerAttributesGetter.java index ad598bb53814..f8947eba3df5 100644 --- a/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/server/RmiServerAttributesGetter.java +++ b/instrumentation/rmi/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/server/RmiServerAttributesGetter.java @@ -8,7 +8,7 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter; import io.opentelemetry.instrumentation.api.incubator.semconv.util.ClassAndMethod; -enum RmiServerAttributesGetter implements RpcAttributesGetter { +enum RmiServerAttributesGetter implements RpcAttributesGetter { INSTANCE; @Override @@ -21,6 +21,7 @@ public String getService(ClassAndMethod classAndMethod) { return classAndMethod.declaringClass().getName(); } + @Deprecated @Override public String getMethod(ClassAndMethod classAndMethod) { return classAndMethod.methodName(); diff --git a/instrumentation/spring/spring-rmi-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/client/ClientAttributesGetter.java b/instrumentation/spring/spring-rmi-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/client/ClientAttributesGetter.java index 19d31b217770..9ed8b87924a0 100644 --- a/instrumentation/spring/spring-rmi-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/client/ClientAttributesGetter.java +++ b/instrumentation/spring/spring-rmi-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/client/ClientAttributesGetter.java @@ -8,7 +8,7 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter; import java.lang.reflect.Method; -public enum ClientAttributesGetter implements RpcAttributesGetter { +public enum ClientAttributesGetter implements RpcAttributesGetter { INSTANCE; @Override @@ -21,6 +21,7 @@ public String getService(Method method) { return method.getDeclaringClass().getName(); } + @Deprecated @Override public String getMethod(Method method) { return method.getName(); diff --git a/instrumentation/spring/spring-rmi-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/server/ServerAttributesGetter.java b/instrumentation/spring/spring-rmi-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/server/ServerAttributesGetter.java index e7bf12be54cc..b4c150ca1dfe 100644 --- a/instrumentation/spring/spring-rmi-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/server/ServerAttributesGetter.java +++ b/instrumentation/spring/spring-rmi-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/rmi/v4_0/server/ServerAttributesGetter.java @@ -8,7 +8,7 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter; import io.opentelemetry.instrumentation.api.incubator.semconv.util.ClassAndMethod; -public enum ServerAttributesGetter implements RpcAttributesGetter { +public enum ServerAttributesGetter implements RpcAttributesGetter { INSTANCE; @Override @@ -21,6 +21,7 @@ public String getService(ClassAndMethod classAndMethod) { return classAndMethod.declaringClass().getName(); } + @Deprecated @Override public String getMethod(ClassAndMethod classAndMethod) { return classAndMethod.methodName();