private void checkWSRFPorts()

in taverna-wsdl-generic/src/main/java/org/apache/taverna/wsdl/parser/WSDL11Parser.java [742:797]


    private void checkWSRFPorts(Map<String, WSRF_Version> wsrfPorts) {
        Collection<Service> services = definition.getAllServices().values();
        for (Service service : services) {
            Collection<Port> ports = service.getPorts().values();
            loop:
            for (Port port : ports) {
                String portName = port.getName();
                Binding binding = port.getBinding();
                List<BindingOperation> bindingOperations = binding.getBindingOperations();
                for(BindingOperation bindingOperation : bindingOperations) {
                    Operation operation = bindingOperation.getOperation();
                    String operationName = operation.getName();
                    for (WSRF_RPOperation resourcePropertyOperation : WSRF_RPOperation.values()) {
                        if (operationName.equals(resourcePropertyOperation.name())) {
                            try {
                                List<Part> parts = getInputParts(portName, operationName);
                                if (parts.size() > 0) {
                                    Part part = parts.get(0);
                                    QName qname = part.getElementName();
                                    if (qname == null) {
                                        qname = part.getTypeName();
                                    }
                                    
                                    if (qname != null) {
                                        String namespace = qname.getNamespaceURI();
                                        if (namespace != null && namespace.length() > 0) {
                                            for (WSRF_Version wsrfVersion : WSRF_Version.values()) {
                                                if (wsrfVersion.WSRF_RP.equals(namespace)) {
                                                    if (!WSRF_Version.Standard.equals(wsrfVersion)) {
                                                        logger.log(Level.WARNING, "draft WSRF version found for the WSRF operation: {0} ({1})", new Object[]{operationName, wsrfVersion.name()});
                                                    }
                                                    else {
                                                        String soapAction = getSOAPActionURI(bindingOperation);
                                                        if (soapAction == null) {
                                                            logger.log(Level.WARNING, "no soap action for the WSRF operation: {0}( {1})", new Object[]{operationName, resourcePropertyOperation.SOAP_ACTION});
                                                        } else if (!resourcePropertyOperation.SOAP_ACTION.equals(soapAction)) {
                                                            logger.log(Level.WARNING, "wrong soap action for the WSRF operation: {0}( {1})", new Object[]{operationName, resourcePropertyOperation.SOAP_ACTION});
                                                        }
                                                    }

                                                    wsrfPorts.put(portName, wsrfVersion);
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                }
                                
                            } catch (UnknownOperationException ex) {}
                            break loop;
                        }
                    }
                }
            }
        }
    }