}
protected OperationInfo createOperation(ServiceInfo serviceInfo, InterfaceInfo intf, Method m) {
OperationInfo op = intf.addOperation(getOperationName(intf, m));
if (isWrapped(m)) {
UnwrappedOperationInfo uOp = new UnwrappedOperationInfo(op);
op.setUnwrappedOperation(uOp);
createMessageParts(intf, uOp, m);
if (uOp.hasInput()) {
MessageInfo msg = new MessageInfo(op, uOp.getInput().getName());
op.setInput(uOp.getInputName(), msg);
createInputWrappedMessageParts(uOp, m, msg);
for (MessagePartInfo p : uOp.getInput().getMessageParts()) {
p.setConcreteName(p.getName());
}
}
if (uOp.hasOutput()) {
QName name = uOp.getOutput().getName();
MessageInfo msg = new MessageInfo(op, name);
op.setOutput(uOp.getOutputName(), msg);
createOutputWrappedMessageParts(uOp, m, msg);
for (MessagePartInfo p : uOp.getOutput().getMessageParts()) {
p.setConcreteName(p.getName());
}
}
for (FaultInfo fault : uOp.getFaults()) {
Class expClz = (Class) fault.getProperty(Class.class.getName());
if (Exception.class.isAssignableFrom(getBeanClass(expClz))) {
QName name = uOp.getFault(fault.getFaultName()).getName();
FaultInfo faultInfo = new FaultInfo(name, name, op);
faultInfo.setProperty("unwrapped.fault.info", fault);
faultInfo.setProperty(Class.class.getName(), fault.getProperty(Class.class.getName()));
op.addFault(faultInfo);