managedRole = (role == null) ? null : role.value();
}
public void registerOperation(AbstractManagedResource managedResource)
{
final AbstractManagedResource resource = registerOrGetResource(managedResource, method.getAnnotation(Managed.class));
ManagedOperation mo = method.getAnnotation(ManagedOperation.class);
String operationName = OperationNames.READ_RESOURCE;
String desc = "";
if (mo != null)
{
operationName = mo.name();
desc = mo.description();
}
final boolean debug = log.isDebugEnabled();
if (debug) log.debug("Registering operation " + operationName + " for path " + resource.getPath());
Class<?> returnType = method.getReturnType();
Managed subManaged = returnType.getAnnotation(Managed.class);
if (subManaged != null)
{
if ("".equals(subManaged.value()))
{
AnnotatedResource ar = new AnnotatedResource(returnType, owner, this);
ar.register(resource);
}
else
{
throw new RuntimeException("Cannot register method " + methodName + " for class " + owner.managedClass.getName()
+ " because return type " + returnType.getName() + " is annotated with a value for the @" + Managed.class.getSimpleName() + " annotation.");
}
}
else
{
resource.registerOperationHandler(operationName, this, description(desc));
}
}