Object[] params = new Object[parameterAnnotations.length];
OperationAttachment attachment = null;
for (int i = 0; i < parameterAnnotations.length; i++)
{
MappedPath pathTemplate;
MappedAttribute managedAttribute;
// Resolve path template and set as parameter to method
if ((pathTemplate = getAnnotation(parameterAnnotations[i], MappedPath.class)) != null)
{
params[i] = operationContext.getAddress().resolvePathTemplate(pathTemplate.value());
if (debug) log.debug("Resolved path template " + pathTemplate.value() + "=" + params[i]);
}
// Resolve attribute name and set as parameter to method
else if ((managedAttribute = getAnnotation(parameterAnnotations[i], MappedAttribute.class)) != null)
{
if (List.class == method.getParameterTypes()[i])
{
params[i] = operationContext.getAttributes().getValues(managedAttribute.value());
}
else if (String.class == method.getParameterTypes()[i])
{
params[i] = operationContext.getAttributes().getValue(managedAttribute.value());
}
else
{
throw new RuntimeException("The parameter type " + method.getParameterTypes()[i] +
" cannot be annotated by @" + MappedAttribute.class.getName() + ". Only List<String> and String are allowed.");
}
if (debug) log.debug("Resolved attribute " + managedAttribute.value() + "=" + params[i]);
}
// Method wants something from the OperationContext, or the entire OperationContext object.
else if ((getAnnotation(parameterAnnotations[i], ManagedContext.class)) != null)
{
Class<?> parameterType = method.getParameterTypes()[i];