JBoss.orgCommunity Documentation
When processing JAX-RS deployments, RESTEasy relies on ResourceBuilder to create metadata for each JAX-RS resource. Such metadata is defined using the metadata SPI in package org.jboss.resteasy.spi.metadata, in particular the ResourceClass interface:
package org.jboss.resteasy.spi.metadata;
public interface ResourceClass
{
  String getPath();
  Class<?> getClazz();
  ResourceConstructor getConstructor();
  FieldParameter[] getFields();
  SetterParameter[] getSetters();
  ResourceMethod[] getResourceMethods();
  ResourceLocator[] getResourceLocators();
}
Among the other classes and interfaces defining metadata SPI, the following interfaces are worth a mention here:
public interface ResourceConstructor
{
  ResourceClass getResourceClass();
  Constructor getConstructor();
  ConstructorParameter[] getParams();
}
public interface ResourceMethod extends ResourceLocator
{
  Set<String> getHttpMethods();
  MediaType[] getProduces();
  MediaType[] getConsumes();
  boolean isAsynchronous();
  void markAsynchronous();
}
public interface ResourceLocator
{
  ResourceClass getResourceClass();
  Class<?> getReturnType();
  Type getGenericReturnType();
  Method getMethod();
  Method getAnnotatedMethod();
  MethodParameter[] getParams();
  String getFullpath();
  String getPath();
}
Now, the interesting point is that RESTEasy allows tuning the metadata generation by providing implementations of the ResourceClassProcessor interface:
package org.jboss.resteasy.spi.metadata;
public interface ResourceClassProcessor
{
  /**
   * Allows the implementation of this method to modify the resource metadata represented by
   * the supplied {@link ResourceClass} instance. Implementation will typically create
   * wrappers which modify only certain aspects of the metadata.
   *
   * @param clazz The original metadata
   * @return the (potentially modified) metadata (never null)
   */
  ResourceClass process(ResourceClass clazz);
}
The processors are meant to be, and are resolved as, regular JAX-RS annotated providers. They allow for wrapping resource metadata classes with custom versions that can be used for various advanced scenarios like