private static ResourceClass fromAnnotations(boolean isLocator, Class<?> clazz)
{
if (!clazz.isInterface() && clazz.getSuperclass() != null && !clazz.getSuperclass().equals(Object.class) && clazz.isSynthetic())
{
clazz = clazz.getSuperclass();
}
ResourceClassBuilder builder = null;
if (isLocator) builder = locator(clazz);
else
{
Path path = clazz.getAnnotation(Path.class);
if (path == null) builder = rootResource(clazz, null);
else builder = rootResource(clazz, path.value());
}
for (Method method : clazz.getMethods())
{
if(!method.isSynthetic() && !method.getDeclaringClass().equals(Object.class))
processMethod(isLocator, builder, clazz, method);
}
if (!clazz.isInterface())
{
processFields(builder, clazz);
}
processSetters(builder, clazz);
return builder.buildClass();
}