code: def do_resolve(self, definitions):
          
          filtered = []
          for p in self.ports:
              ref = qualify(p.binding, self.root, definitions.tns)
              binding = definitions.bindings.get(ref)
              if binding is None:
                  raise Exception("binding '%s', not-found" % (p.binding,))
              if binding.soap is None:
                  log.debug("binding '%s' - not a SOAP binding, discarded",
                      binding.name)
                  continue
              # After we have been resolved, our caller will expect that the
              # binding we are referencing has been fully constructed, i.e.
              # resolved, as well. The only scenario where the operations binding
              # might possibly not have already resolved its references, and
              # where this explicit resolve() call is required, is if we are
              # dealing with a recursive WSDL import chain.
              binding.resolve(definitions)
              p.binding = binding
              filtered.append(p)
          self.ports = filtered
docs: Resolve named references to other WSDL objects. Ports without SOAP
          bindings are discarded.
  
          @param definitions: A definitions object.
          @type definitions: L{Definitions}