public static String configKey(Class targetType, Method method) {
    StringBuilder builder = new StringBuilder();
    builder.append(targetType.getSimpleName());
    builder.append('#').append(method.getName()).append('(');
    for (Type param : method.getGenericParameterTypes()) {
      param = Types.resolve(targetType, targetType, param);
      builder.append(Types.getRawType(param).getSimpleName()).append(',');
    }
    if (method.getParameterTypes().length > 0) {
      builder.deleteCharAt(builder.length() - 1);
    }
    return builder.append(')').toString();
  }
Configuration keys are formatted as unresolved <a href=
"http://docs.oracle.com/javase/6/docs/jdk/api/javadoc/doclet/com/sun/javadoc/SeeTag.html" >see
tags</a>. This method exposes that format, in case you need to create the same value as {@link
MethodMetadata#configKey()} for correlation purposes.

<p>Here are some sample encodings:

<pre>
<ul>
  <li>{@code
Route53
}: would match a class {@code
route53.Route53
}</li>
  <li>{@code Route53#list()}: would match a method {@code route53.Route53#list()}</li>
  <li>{@code Route53#listAt(Marker)}: would match a method {@code
route53.Route53#listAt(Marker)}</li>
  <li>{@code Route53#listByNameAndType(String, String)}: would match a method {@code
route53.Route53#listAt(String, String)}</li>
</ul>
</pre>

Note that there is no whitespace expected in a key!

@param targetType {@link feign.Target#type() type} of the Feign interface.
@param method invoked method, present on {@code type} or its super.
@see MethodMetadata#configKey()
core/src/main/java/feign/Feign.java