Index: WSDLSemanticsVisitor.java =================================================================== RCS file: /cvs/xml/wsdl/api/src/org/netbeans/modules/xml/wsdl/validator/visitor/WSDLSemanticsVisitor.java,v retrieving revision 1.3 retrieving revision 1.4 diff -w -r1.3 -r1.4 23a24 > import java.util.HashSet; 26a28 > import java.util.Set; 76c78 < * @version $Revision: 1.3 $ --- > * @version $Revision: 1.4 $ 91c93 < by removing faults */ --- > * by removing faults */ 196a199,206 > public static final String VAL_OPERATION_DOES_NOT_MATCH_INPUT_IN_PORT_TYPE = "VAL_OPERATION_DOES_NOT_MATCH_INPUT_IN_PORT_TYPE"; > public static final String FIX_OPERATION_DOES_NOT_MATCH_INPUT_IN_PORT_TYPE = "FIX_OPERATION_DOES_NOT_MATCH_INPUT_IN_PORT_TYPE"; > > public static final String VAL_OPERATION_DOES_NOT_MATCH_OUTPUT_IN_PORT_TYPE = "VAL_OPERATION_DOES_NOT_MATCH_OUTPUT_IN_PORT_TYPE"; > public static final String FIX_OPERATION_DOES_NOT_MATCH_OUTPUT_IN_PORT_TYPE = "FIX_OPERATION_DOES_NOT_MATCH_OUTPUT_IN_PORT_TYPE"; > > public static final String VAL_OPERATION_DOES_NOT_MATCH_FAULTS_IN_PORT_TYPE = "VAL_OPERATION_DOES_NOT_MATCH_FAULTS_IN_PORT_TYPE"; > public static final String FIX_OPERATION_DOES_NOT_MATCH_FAULTS_IN_PORT_TYPE = "FIX_OPERATION_DOES_NOT_MATCH_FAULTS_IN_PORT_TYPE"; 758a769,770 > String portTypeName = portType.getName(); > String bindingName = binding.getName(); 762c774 < boolean operationFound = false; --- > Operation matchingOp = null; 766c778,779 < operationFound = true; --- > matchingOp = operation; > break; 772c785 < if(!operationFound) { --- > if(matchingOp == null){ 776a790,819 > } else{ > //check if the signatures match > boolean bindingOpHasInput = bindingOp.getBindingInput() != null; > boolean bindingOpHasOutput = bindingOp.getBindingOutput() != null; > boolean matchingOpHasInput = matchingOp.getInput() != null; > boolean matchingOpHasOutput = matchingOp.getOutput() != null; > Collection bindingFaults = bindingOp.getBindingFaults(); > Collection matchingFaults = matchingOp.getFaults(); > > if(bindingOpHasInput != matchingOpHasInput){ > //Input in portType operation does not match input in binding operation > getValidateSupport().fireToDo > (Validator.ResultType.ERROR, bindingOp, > mMsg.getString(VAL_OPERATION_DOES_NOT_MATCH_INPUT_IN_PORT_TYPE, operationName, binding.getName(), portTypeName), > mMsg.getString(FIX_OPERATION_DOES_NOT_MATCH_INPUT_IN_PORT_TYPE, operationName)); > } > if(bindingOpHasOutput != matchingOpHasOutput){ > //Output in portType operation does not match output in binding operation > getValidateSupport().fireToDo > (Validator.ResultType.ERROR, bindingOp, > mMsg.getString(VAL_OPERATION_DOES_NOT_MATCH_OUTPUT_IN_PORT_TYPE, operationName, binding.getName(), portTypeName), > mMsg.getString(FIX_OPERATION_DOES_NOT_MATCH_OUTPUT_IN_PORT_TYPE, operationName)); > } > if(!faultsMatch(bindingFaults, matchingFaults)){ > //Faults do not match > getValidateSupport().fireToDo > (Validator.ResultType.ERROR, bindingOp, > mMsg.getString(VAL_OPERATION_DOES_NOT_MATCH_FAULTS_IN_PORT_TYPE, operationName, binding.getName(), portTypeName), > mMsg.getString(FIX_OPERATION_DOES_NOT_MATCH_FAULTS_IN_PORT_TYPE, operationName)); > } 786a830,844 > private boolean faultsMatch(Collection bindingFaults, Collection portTypeFaults){ > if(bindingFaults.size() != portTypeFaults.size()) return false; > if(portTypeFaults.size() == 0) return true; > > Set portTypeFaultNames = new HashSet(); > for(Fault portTypeFault : portTypeFaults){ > portTypeFaultNames.add(portTypeFault.getName()); > } > for(BindingFault bindingFault : bindingFaults){ > if(!portTypeFaultNames.contains(bindingFault.getName())) > return false; > } > return true; > } >