test_class.file: agent/plugins/jaxrs-plugin/src/test/java/org/glowroot/agent/plugin/jaxrs/ResourceMethodMetaTest.java
test_class.identifier: ResourceMethodMetaTest
test_case.body: @Test
      public void should() {
          assertThat(ResourceMethodMeta.combine(null, null)).isEqualTo("/");
          assertThat(ResourceMethodMeta.combine("", null)).isEqualTo("/");
          assertThat(ResourceMethodMeta.combine(null, "")).isEqualTo("/");
          assertThat(ResourceMethodMeta.combine("", "")).isEqualTo("/");
          assertThat(ResourceMethodMeta.combine("/abc", "/xyz")).isEqualTo("/abc/xyz");
          assertThat(ResourceMethodMeta.combine("/abc", "xyz")).isEqualTo("/abc/xyz");
          assertThat(ResourceMethodMeta.combine("abc", "/xyz")).isEqualTo("/abc/xyz");
          assertThat(ResourceMethodMeta.combine("abc", "xyz")).isEqualTo("/abc/xyz");
          assertThat(ResourceMethodMeta.combine("abc", null)).isEqualTo("/abc");
          assertThat(ResourceMethodMeta.combine(null, "xyz")).isEqualTo("/xyz");
          assertThat(ResourceMethodMeta.combine("abc", "")).isEqualTo("/abc");
          assertThat(ResourceMethodMeta.combine("", "xyz")).isEqualTo("/xyz");
          assertThat(ResourceMethodMeta.combine("/abc", "")).isEqualTo("/abc");
          assertThat(ResourceMethodMeta.combine("", "/xyz")).isEqualTo("/xyz");
      }
test_case.class_method_signature: ResourceMethodMetaTest.should()
test_case.full_signature: @Test public void should()
test_case.identifier: should
test_case.invocations: isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine isEqualTo assertThat combine
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void should()
focal_class.declarator: logger = Logger.getLogger(ResourceMethodMeta.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger logger = Logger.getLogger(ResourceMethodMeta.class);
focal_class.type: Logger
focal_class.var_name: logger
focal_class.declarator: resourceClassName
focal_class.modifier: private final
focal_class.original_string: private final String resourceClassName;
focal_class.type: String
focal_class.var_name: resourceClassName
focal_class.declarator: methodName
focal_class.modifier: private final
focal_class.original_string: private final String methodName;
focal_class.type: String
focal_class.var_name: methodName
focal_class.declarator: hasHttpMethodAnnotation
focal_class.modifier: private final
focal_class.original_string: private final boolean hasHttpMethodAnnotation;
focal_class.type: boolean
focal_class.var_name: hasHttpMethodAnnotation
focal_class.declarator: path
focal_class.modifier: private final
focal_class.original_string: private final String path;
focal_class.type: String
focal_class.var_name: path
focal_class.declarator: altTransactionName
focal_class.modifier: private final
focal_class.original_string: private final String altTransactionName;
focal_class.type: String
focal_class.var_name: altTransactionName
focal_class.declarator: hasClassPathAnnotation
focal_class.modifier: private final
focal_class.original_string: private final boolean hasClassPathAnnotation;
focal_class.type: boolean
focal_class.var_name: hasClassPathAnnotation
focal_class.file: agent/plugins/jaxrs-plugin/src/main/java/org/glowroot/agent/plugin/jaxrs/ResourceMethodMeta.java
focal_class.identifier: ResourceMethodMeta
focal_class.class_method_signature: ResourceMethodMeta.ResourceMethodMeta(MethodInfo methodInfo)
focal_class.full_signature: public  ResourceMethodMeta(MethodInfo methodInfo)
focal_class.identifier: ResourceMethodMeta
focal_class.modifiers: public
focal_class.parameters: (MethodInfo methodInfo)
focal_class.signature:  ResourceMethodMeta(MethodInfo methodInfo)
focal_class.class_method_signature: ResourceMethodMeta.getResourceClassName()
focal_class.full_signature:  String getResourceClassName()
focal_class.identifier: getResourceClassName
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getResourceClassName()
focal_class.class_method_signature: ResourceMethodMeta.getMethodName()
focal_class.full_signature:  String getMethodName()
focal_class.identifier: getMethodName
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getMethodName()
focal_class.class_method_signature: ResourceMethodMeta.hasHttpMethodAnnotation()
focal_class.full_signature:  boolean hasHttpMethodAnnotation()
focal_class.identifier: hasHttpMethodAnnotation
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean hasHttpMethodAnnotation()
focal_class.class_method_signature: ResourceMethodMeta.getPath()
focal_class.full_signature:  String getPath()
focal_class.identifier: getPath
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getPath()
focal_class.class_method_signature: ResourceMethodMeta.getAltTransactionName()
focal_class.full_signature:  String getAltTransactionName()
focal_class.identifier: getAltTransactionName
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getAltTransactionName()
focal_class.class_method_signature: ResourceMethodMeta.hasClassPathAnnotation()
focal_class.full_signature:  boolean hasClassPathAnnotation()
focal_class.identifier: hasClassPathAnnotation
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean hasClassPathAnnotation()
focal_class.class_method_signature: ResourceMethodMeta.getPath(@Nullable Class<?> clazz)
focal_class.full_signature: private static @Nullable String getPath(@Nullable Class<?> clazz)
focal_class.identifier: getPath
focal_class.modifiers: private static @Nullable
focal_class.parameters: (@Nullable Class<?> clazz)
focal_class.return: String
focal_class.signature: String getPath(@Nullable Class<?> clazz)
focal_class.class_method_signature: ResourceMethodMeta.getMethodAnnotations(MethodInfo methodInfo,
              @Nullable Class<?> clazz)
focal_class.full_signature: private static @Nullable MethodAnnotations getMethodAnnotations(MethodInfo methodInfo,
              @Nullable Class<?> clazz)
focal_class.identifier: getMethodAnnotations
focal_class.modifiers: private static @Nullable
focal_class.parameters: (MethodInfo methodInfo,
              @Nullable Class<?> clazz)
focal_class.return: MethodAnnotations
focal_class.signature: MethodAnnotations getMethodAnnotations(MethodInfo methodInfo,
              @Nullable Class<?> clazz)
focal_class.class_method_signature: ResourceMethodMeta.getMethodAnnotations(@Nullable Method method)
focal_class.full_signature: private static @Nullable MethodAnnotations getMethodAnnotations(@Nullable Method method)
focal_class.identifier: getMethodAnnotations
focal_class.modifiers: private static @Nullable
focal_class.parameters: (@Nullable Method method)
focal_class.return: MethodAnnotations
focal_class.signature: MethodAnnotations getMethodAnnotations(@Nullable Method method)
focal_class.class_method_signature: ResourceMethodMeta.isHttpMethodAnnotation(Class<?> annotationClass)
focal_class.full_signature: private static boolean isHttpMethodAnnotation(Class<?> annotationClass)
focal_class.identifier: isHttpMethodAnnotation
focal_class.modifiers: private static
focal_class.parameters: (Class<?> annotationClass)
focal_class.return: boolean
focal_class.signature: boolean isHttpMethodAnnotation(Class<?> annotationClass)
focal_class.class_method_signature: ResourceMethodMeta.getPathAttribute(Class<?> pathClass, Object path,
              String attributeName)
focal_class.full_signature: private static @Nullable String getPathAttribute(Class<?> pathClass, Object path,
              String attributeName)
focal_class.identifier: getPathAttribute
focal_class.modifiers: private static @Nullable
focal_class.parameters: (Class<?> pathClass, Object path,
              String attributeName)
focal_class.return: String
focal_class.signature: String getPathAttribute(Class<?> pathClass, Object path,
              String attributeName)
focal_class.class_method_signature: ResourceMethodMeta.getClass(MethodInfo methodInfo)
focal_class.full_signature: private static @Nullable Class<?> getClass(MethodInfo methodInfo)
focal_class.identifier: getClass
focal_class.modifiers: private static @Nullable
focal_class.parameters: (MethodInfo methodInfo)
focal_class.return: Class<?>
focal_class.signature: Class<?> getClass(MethodInfo methodInfo)
focal_class.class_method_signature: ResourceMethodMeta.getMethod(MethodInfo methodInfo,
              @Nullable Class<?> declaringClass)
focal_class.full_signature: private static @Nullable Method getMethod(MethodInfo methodInfo,
              @Nullable Class<?> declaringClass)
focal_class.identifier: getMethod
focal_class.modifiers: private static @Nullable
focal_class.parameters: (MethodInfo methodInfo,
              @Nullable Class<?> declaringClass)
focal_class.return: Method
focal_class.signature: Method getMethod(MethodInfo methodInfo,
              @Nullable Class<?> declaringClass)
focal_class.class_method_signature: ResourceMethodMeta.combine(@Nullable String classPath, @Nullable String methodPath)
focal_class.full_signature: static String combine(@Nullable String classPath, @Nullable String methodPath)
focal_class.identifier: combine
focal_class.modifiers: static
focal_class.parameters: (@Nullable String classPath, @Nullable String methodPath)
focal_class.return: String
focal_class.signature: String combine(@Nullable String classPath, @Nullable String methodPath)
focal_class.class_method_signature: ResourceMethodMeta.normalize(@Nullable String path)
focal_class.full_signature: private static String normalize(@Nullable String path)
focal_class.identifier: normalize
focal_class.modifiers: private static
focal_class.parameters: (@Nullable String path)
focal_class.return: String
focal_class.signature: String normalize(@Nullable String path)
focal_class.class_method_signature: ResourceMethodMeta.replacePathSegmentsWithAsterisk(String path)
focal_class.full_signature: private static String replacePathSegmentsWithAsterisk(String path)
focal_class.identifier: replacePathSegmentsWithAsterisk
focal_class.modifiers: private static
focal_class.parameters: (String path)
focal_class.return: String
focal_class.signature: String replacePathSegmentsWithAsterisk(String path)
focal_class.class_method_signature: ResourceMethodMeta.getSimpleName(String className)
focal_class.full_signature: private static String getSimpleName(String className)
focal_class.identifier: getSimpleName
focal_class.modifiers: private static
focal_class.parameters: (String className)
focal_class.return: String
focal_class.signature: String getSimpleName(String className)
focal_class.class_method_signature: ResourceMethodMeta.substringAfterLast(String str, char c)
focal_class.full_signature: private static String substringAfterLast(String str, char c)
focal_class.identifier: substringAfterLast
focal_class.modifiers: private static
focal_class.parameters: (String str, char c)
focal_class.return: String
focal_class.signature: String substringAfterLast(String str, char c)
focal_method.body: static String combine(@Nullable String classPath, @Nullable String methodPath) {
          if (classPath == null || classPath.isEmpty() || classPath.equals("/")) {
              return normalize(methodPath);
          }
          if (methodPath == null || methodPath.isEmpty() || methodPath.equals("/")) {
              return normalize(classPath);
          }
          return normalize(classPath) + normalize(methodPath);
      }
focal_method.class_method_signature: ResourceMethodMeta.combine(@Nullable String classPath, @Nullable String methodPath)
focal_method.full_signature: static String combine(@Nullable String classPath, @Nullable String methodPath)
focal_method.identifier: combine
focal_method.invocations: isEmpty equals normalize isEmpty equals normalize normalize normalize
focal_method.modifiers: static
focal_method.parameters: (@Nullable String classPath, @Nullable String methodPath)
focal_method.return: String
focal_method.signature: String combine(@Nullable String classPath, @Nullable String methodPath)