}
if (params.length != signature.length) {
throw MESSAGES.differentLengths("params", "signature");
}
final ResourceAndRegistration reg = getRootResourceAndRegistration();
PathAddress address = ObjectNameAddressUtil.resolvePathAddress(domain, reg.getResource(), name);
if (address == null) {
throw createInstanceNotFoundException(name);
}
final ImmutableManagementResourceRegistration registration = getMBeanRegistration(address, reg);
String realOperationName = null;
OperationEntry opEntry = registration.getOperationEntry(PathAddress.EMPTY_ADDRESS, operationName);
if (opEntry != null) {
realOperationName = operationName;
} else {
String opName = NameConverter.convertFromCamelCase(operationName);
opEntry = registration.getOperationEntry(PathAddress.EMPTY_ADDRESS, opName);
if (opEntry != null) {
realOperationName = opName;
}
}
if (opEntry == null) {
//Brute force search in case the operation name is not standard format
Map<String, OperationEntry> ops = registration.getOperationDescriptions(PathAddress.EMPTY_ADDRESS, false);
for (Map.Entry<String, OperationEntry> entry : ops.entrySet()) {
if (operationName.equals(NameConverter.convertToCamelCase(entry.getKey()))) {
opEntry = entry.getValue();
realOperationName = entry.getKey();
break;
}
}
}
if (opEntry == null) {
ChildAddOperationEntry entry = ChildAddOperationFinder.findAddChildOperation(reg.getRegistration().getSubModel(address), operationName);
if (entry == null) {
throw MESSAGES.noOperationCalled(null, operationName, address);
}
PathElement element = entry.getElement();
if (element.isWildcard()) {