Esempio n. 1
0
def getAdapterFactory(fromInterface, toInterface, default):
    """Return registered adapter for a given class and interface.

	Note that is tied to the *Twisted* global registry, and will
	thus not find adapters registered elsewhere.
	"""
    self = globalRegistry
    if not isinstance(fromInterface, interface.InterfaceClass):
        fromInterface = declarations.implementedBy(fromInterface)
    factory = self.lookup1(fromInterface, toInterface)
    if factory is None:
        factory = default
    return factory
Esempio n. 2
0
def getAdapterFactory(fromInterface, toInterface, default):
	"""Return registered adapter for a given class and interface.

	Note that is tied to the *Twisted* global registry, and will
	thus not find adapters registered elsewhere.
	"""
	self = globalRegistry
	if not isinstance(fromInterface, interface.InterfaceClass):
		fromInterface = declarations.implementedBy(fromInterface)
	factory = self.lookup1(fromInterface, toInterface)
	if factory is None:
		factory = default
	return factory
Esempio n. 3
0
def registerAdapter(adapterFactory, origInterface, *interfaceClasses):
	"""Register an adapter class.

	An adapter class is expected to implement the given interface, by
	adapting instances implementing 'origInterface'. An adapter class's
	__init__ method should accept one parameter, an instance implementing
	'origInterface'.
	"""
	self = globalRegistry
	assert interfaceClasses, "You need to pass an Interface"
	global ALLOW_DUPLICATES

	# deal with class->interface adapters:
	if not isinstance(origInterface, interface.InterfaceClass):
		origInterface = declarations.implementedBy(origInterface)

	for interfaceClass in interfaceClasses:
		factory = _registered(self, origInterface, interfaceClass)
		if factory is not None and not ALLOW_DUPLICATES:
			raise ValueError("an adapter (%s) was already registered." % (factory, ))
	for interfaceClass in interfaceClasses:
		self.register([origInterface], interfaceClass, '', adapterFactory)
Esempio n. 4
0
def registerAdapter(adapterFactory, origInterface, *interfaceClasses):
    """Register an adapter class.

	An adapter class is expected to implement the given interface, by
	adapting instances implementing 'origInterface'. An adapter class's
	__init__ method should accept one parameter, an instance implementing
	'origInterface'.
	"""
    self = globalRegistry
    assert interfaceClasses, "You need to pass an Interface"
    global ALLOW_DUPLICATES

    # deal with class->interface adapters:
    if not isinstance(origInterface, interface.InterfaceClass):
        origInterface = declarations.implementedBy(origInterface)

    for interfaceClass in interfaceClasses:
        factory = _registered(self, origInterface, interfaceClass)
        if factory is not None and not ALLOW_DUPLICATES:
            raise ValueError("an adapter (%s) was already registered." %
                             (factory, ))
    for interfaceClass in interfaceClasses:
        self.register([origInterface], interfaceClass, '', adapterFactory)
Esempio n. 5
0
    def implementedBy(self, cls):
        """Test whether the specification is implemented by a class or factory.
		Raise TypeError if argument is neither a class nor a callable."""
        spec = implementedBy(cls)
        return self in spec._implied