Index: cherrypy/_cpdispatch.py =================================================================== --- cherrypy/_cpdispatch.py (revision 2280) +++ cherrypy/_cpdispatch.py (working copy) @@ -400,14 +400,20 @@ """ import routes self.full_result = full_result - self.controllers = {} + self.controller_objects = {} + self.controller_classes = {} self.mapper = routes.Mapper() - self.mapper.controller_scan = self.controllers.keys + self.mapper.controller_scan = self.controller_classes.keys def connect(self, name, route, controller, **kwargs): - self.controllers[name] = controller - self.mapper.connect(name, route, controller=name, **kwargs) - + self.controller_classes[controller.__name__] = controller + self.mapper.connect(name, route, controller=controller.__name__, **kwargs) + + def resource(self, member_name, collection_name, controller, **kargs): + self.controller_classes[controller.__name__] = controller + self.mapper.resource(member_name, collection_name, + controller=controller.__name__, **kargs) + def redirect(self, url): raise cherrypy.HTTPRedirect(url) @@ -474,7 +480,8 @@ handler = None if result: controller = result.get('controller', None) - controller = self.controllers.get(controller) + controller = self.controller_objects.get(controller, + self.controller_classes[controller]()) if controller: # Get config from the controller. if hasattr(controller, "_cp_config"):