1 #!/usr/bin/env python 2 3 """ 4 Java Servlet adapter. 5 """ 6 7 import WebStack.JavaServlet 8 from WebStack.Generic import EndOfResponse 9 10 class Dispatcher: 11 12 "A servlet helper class dispatching requests to WebStack resources." 13 14 def __init__(self, resource, authenticator=None): 15 16 """ 17 Initialise the root application-specific 'resource' and optional 18 'authenticator'. 19 """ 20 21 self.webstack_resource = resource 22 self.webstack_authenticator = authenticator 23 24 def service(self, request, response): 25 26 """ 27 Handle the 'request' and 'response' presented by the servlet. 28 """ 29 30 trans = WebStack.JavaServlet.Transaction(request, response) 31 if self.webstack_authenticator is None or self.webstack_authenticator.authenticate(trans): 32 try: 33 self.webstack_resource.respond(trans) 34 except EndOfResponse: 35 pass 36 else: 37 trans.set_response_code(401) # Unauthorized 38 #trans.set_header_value("WWW-Authenticate", '%s realm="%s"' % ( 39 # self.webstack_authenticator.get_auth_type(), self.webstack_authenticator.get_realm())) 40 41 trans.commit() 42 43 # vim: tabstop=4 expandtab shiftwidth=4