private void processCallbackInterface(XMLStreamReader reader, WsdlServiceContract wsdlContract, IntrospectionContext context) {
Location startLocation = reader.getLocation();
String callbackInterfaze = reader.getAttributeValue(null, "callbackInterface");
if (callbackInterfaze != null) {
QName callbackName = parseQName(callbackInterfaze, startLocation, context);
if (callbackName == null) {
return;
}
WsdlServiceContract callbackContract = resolveContract(callbackName, reader, context);
ServiceContract originalContract = wsdlContract.getCallbackContract();
if (originalContract != null) {
MatchResult result = matcher.isAssignableFrom(callbackContract, originalContract, true);
if (!result.isAssignable()) {
IncompatibleContracts error = new IncompatibleContracts("The callback contract specified on interface.wsdl is not compatible with" +
" the one specified in the WSDL portType: " + result.getError(),
startLocation,
callbackContract);
context.addError(error);
}
}
wsdlContract.setCallbackContract(callbackContract);
}
}