Пример #1
0
 def query(self, name, node):
     """Blindly query the schema by name."""
     log.debug('searching schema for (%s)', name)
     qref = qualify(name, node, node.namespace())
     query = BlindQuery(qref)
     result = query.execute(self.schema)
     return (result, [])
Пример #2
0
 def query(self, name, node):
     """Blindly query the schema by name."""
     log.debug('searching schema for (%s)', name)
     qref = qualify(name, node, node.namespace())
     query = BlindQuery(qref)
     result = query.execute(self.schema)
     return (result, [])
Пример #3
0
 def known(self, node):
     """Resolve type referenced by @xsi:type."""
     ref = node.get('type', Namespace.xsins)
     if ref is None:
         return None
     qref = qualify(ref, node, node.namespace())
     query = BlindQuery(qref)
     return query.execute(self.schema)
Пример #4
0
 def known(self, node):
     """Resolve type referenced by @xsi:type."""
     ref = node.get('type', Namespace.xsins)
     if ref is None:
         return None
     qref = qualify(ref, node, node.namespace())
     query = BlindQuery(qref)
     return query.execute(self.schema)
Пример #5
0
 def query(self, name):
     """Blindly query the schema by name."""
     log.debug('searching schema for (%s)', name)
     schema = self.schema
     wsdl = self.wsdl()
     if wsdl is None:
         qref = qualify(name, schema.root, schema.tns)
     else:
         qref = qualify(name, wsdl.root, wsdl.tns)
     query = BlindQuery(qref)
     result = query.execute(schema)
     return (result, [])
Пример #6
0
 def query(self, name):
     """Blindly query the schema by name."""
     log.debug('searching schema for (%s)', name)
     schema = self.schema
     wsdl = self.wsdl()
     if wsdl is None:
         qref = qualify(name, schema.root, schema.tns)
     else:
         qref = qualify(name, wsdl.root, wsdl.tns)
     query = BlindQuery(qref)
     result = query.execute(schema)
     return (result, [])
Пример #7
0
 def root(self, parts):
     """
     Find the path root.
     @param parts: A list of path parts.
     @type parts: [str,..]
     @return: The root.
     @rtype: L{xsd.sxbase.SchemaObject}
     """
     result = None
     name = parts[0]
     log.debug('searching schema for (%s)', name)
     qref = self.qualify(parts[0])
     query = BlindQuery(qref)
     result = query.execute(self.schema)
     if result is None:
         log.error('(%s) not-found', name)
         raise PathResolver.BadPath(name)
     log.debug('found (%s) as (%s)', name, Repr(result))
     return result
Пример #8
0
 def root(self, parts):
     """
     Find the path root.
     @param parts: A list of path parts.
     @type parts: [str,..]
     @return: The root.
     @rtype: L{xsd.sxbase.SchemaObject}
     """
     result = None
     name = parts[0]
     log.debug('searching schema for (%s)', name)
     qref = self.qualify(parts[0])
     query = BlindQuery(qref)
     result = query.execute(self.schema)
     if result is None:
         log.error('(%s) not-found', name)
         raise PathResolver.BadPath(name)
     log.debug('found (%s) as (%s)', name, Repr(result))
     return result
Пример #9
0
 def find(self, name, resolved=True):
     """
     Get the definition object for the schema object by name.
     @param name: The name of a schema object.
     @type name: basestring
     @param resolved: A flag indicating that the fully resolved type
         should be returned.
     @type resolved: boolean
     @return: The found schema I{type}
     @rtype: L{xsd.sxbase.SchemaObject}
     """
     log.debug('searching schema for (%s)', name)
     qref = qualify(name, self.schema.root, self.schema.tns)
     query = BlindQuery(qref)
     result = query.execute(self.schema)
     if result is None:
         log.error('(%s) not-found', name)
         return None
     log.debug('found (%s) as (%s)', name, Repr(result))
     if resolved:
         result = result.resolve()
     return result
Пример #10
0
 def find(self, name, resolved=True):
     """
     Get the definition object for the schema object by name.
     @param name: The name of a schema object.
     @type name: basestring
     @param resolved: A flag indicating that the fully resolved type
         should be returned.
     @type resolved: boolean
     @return: The found schema I{type}
     @rtype: L{xsd.sxbase.SchemaObject}
     """
     log.debug('searching schema for (%s)', name)
     qref = qualify(name, self.schema.root, self.schema.tns)
     query = BlindQuery(qref)
     result = query.execute(self.schema)
     if result is None:
         log.error('(%s) not-found', name)
         return None
     log.debug('found (%s) as (%s)', name, Repr(result))
     if resolved:
         result = result.resolve()
     return result
Пример #11
0
    def known(self, node):
        """ resolve type referenced by @xsi:type """
        ref = node.get("type", Namespace.xsins)
        if ref is None:
            return None
        qref = qualify(ref, node, node.namespace())

        # Originally, this always created a BlindQuery for the qref name so
        # that the schema was always searched. We assume that the schema does
        # not change while unserializing and cache the query results here.

        try:
            lookup_cache = self.schema.NodeResolver__known_cache
        except AttributeError:
            lookup_cache = self.schema.NodeResolver__known_cache = {}

        try:
            return lookup_cache[qref]
        except KeyError:
            query = BlindQuery(qref)
            r = query.execute(self.schema)
            if r is not None:
                lookup_cache[qref] = r
            return r