[prev in list] [next in list] [prev in thread] [next in thread] 

List:       zope3-checkins
Subject:    [Zope3-checkins]
From:       Jim Fulton <jim () zope ! com>
Date:       2006-01-30 1:03:21
Message-ID: 20060130010321.DC92B20316E () mail ! zope ! org
[Download RAW message or body]

Log message for revision 41489:
  Small optimization of single-adapter case.
  

Changed:
  U   Zope3/branches/jim-adapter-alt1/src/zope/interface/adapter.py

-=-
Modified: Zope3/branches/jim-adapter-alt1/src/zope/interface/adapter.py
===================================================================
--- Zope3/branches/jim-adapter-alt1/src/zope/interface/adapter.py	2006-01-30 00:03:15 UTC (rev 41488)
+++ Zope3/branches/jim-adapter-alt1/src/zope/interface/adapter.py	2006-01-30 01:03:21 UTC (rev 41489)
@@ -342,13 +342,27 @@
         return result        
     
     def lookup1(self, required, provided, name=u'', default=None):
-        return self.lookup((required, ), provided, name, default)
+        cache = self._getcache(provided, name)
+        result = cache.get(required, _not_in_mapping)
+        if result is _not_in_mapping:
+            return self.lookup((required, ), provided, name, default)
+
+        if result is None:
+            return default
+
+        return result
+
     
     def queryAdapter(self, object, provided, name=u'', default=None):
         return self.adapter_hook(provided, object, name, default)
 
     def adapter_hook(self, provided, object, name=u'', default=None):
-        factory = self.lookup1(providedBy(object), provided, name)
+        required = providedBy(object)
+        cache = self._getcache(provided, name)
+        factory = cache.get(required, _not_in_mapping)
+        if factory is _not_in_mapping:
+            factory = self.lookup((required, ), provided, name)
+
         if factory is not None:
             result = factory(object)
             if result is not None:

_______________________________________________
Zope3-Checkins mailing list
Zope3-Checkins@zope.org
http://mail.zope.org/mailman/listinfo/zope3-checkins
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic