Ignore:
Timestamp:
25/08/09 13:16:18 (11 years ago)
Author:
pjkersha
Message:

Refactoring SOAPBindingMiddleware to accept a ZSI Service binding input from an upstream middleware component.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg_security_server/ndg/security/server/wsgi/zsi.py

    r5637 r5667  
    258258         
    259259        super(SOAPBindingMiddleware, self).__init__(*arg, **kw) 
     260        self.__serviceSOAPBinding = None 
     261        self.__enableWSDLQuery = False 
     262 
     263    def _getServiceSOAPBinding(self): 
     264        return self.__serviceSOAPBinding 
     265 
     266    def _setServiceSOAPBinding(self, value): 
     267        """Instance must be ZSI ServiceSOAPBinding derived type""" 
     268        if not isinstance(value, ServiceSOAPBinding): 
     269            raise TypeError('Expecting bool type for "enableWSDLQuery"; got ' 
     270                            '%r' % type(value)) 
     271        self.__serviceSOAPBinding = value 
     272 
     273    serviceSOAPBinding = property(fget=_getServiceSOAPBinding,  
     274                                  fset=_setServiceSOAPBinding,  
     275                                  doc="ServiceSOAPBinding's Docstring") 
     276 
     277    def _getEnableWSDLQuery(self): 
     278        return self.__enableWSDLQuery 
     279 
     280    def _setEnableWSDLQuery(self, value): 
     281        if not isinstance(value, bool): 
     282            raise TypeError('Expecting bool type for "enableWSDLQuery"; got ' 
     283                            '%r' % type(value)) 
     284        self.__enableWSDLQuery = value 
     285         
     286    enableWSDLQuery = property(fget=_getEnableWSDLQuery,  
     287                               fset=_setEnableWSDLQuery,  
     288                               doc="EnableWSDLQuery's Docstring") 
     289 
     290         
     291#        # Check for Service binding in config 
     292#        if 'ServiceSOAPBindingClass' in self.app_conf: 
     293#            modName, className = \ 
     294#                        self.app_conf['ServiceSOAPBindingClass'].rsplit('.', 1) 
     295# 
     296#            self.serviceSOAPBinding = instantiateClass(modName, 
     297#                                   className, 
     298#                                   objectType=ServiceSOAPBinding, 
     299#                                   classProperties=self.serviceSOAPBindingKw)             
     300#        else:  
     301#            self.serviceSOAPBinding = ServiceSOAPBinding() 
     302#         
     303#        # Flag to enable display of WSDL via wsdl query arg in a GET request 
     304#        self.enableWSDLQuery = self.app_conf.get('enableWSDLQuery', False) and\ 
     305#                                hasattr(self.serviceSOAPBinding, '_wsdl') 
     306 
     307    @classmethod 
     308    def filter_app_factory(cls, app, global_conf, **app_conf): 
     309         
     310        app = cls(app) 
    260311         
    261312        # Check for Service binding in config 
    262         if 'ServiceSOAPBindingClass' in self.app_conf: 
     313        if 'ServiceSOAPBindingClass' in app.app_conf: 
    263314            modName, className = \ 
    264                         self.app_conf['ServiceSOAPBindingClass'].rsplit('.', 1) 
     315                            app_conf['ServiceSOAPBindingClass'].rsplit('.', 1) 
    265316 
    266317            self.serviceSOAPBinding = instantiateClass(modName, 
     
    272323         
    273324        # Flag to enable display of WSDL via wsdl query arg in a GET request 
    274         self.enableWSDLQuery = self.app_conf.get('enableWSDLQuery', False) and\ 
     325        app.enableWSDLQuery = self.app_conf.get('enableWSDLQuery', False) and\ 
    275326                                hasattr(self.serviceSOAPBinding, '_wsdl') 
    276  
    277  
     327                                 
     328        # Check for WSGI Service SOAP Binding 
     329        if callable(self.serviceSOAPBinding): 
     330            app = self.serviceSOAPBinding(app) 
     331             
     332        return app 
     333     
    278334    def _getServiceSOAPBindingKw(self): 
    279335        '''Extract keywords to specific to SOAP Service Binding set in app_conf 
     
    320376                                                    'in environ' % i)     
    321377            ps = self.parseRequest(environ) 
    322              
     378                
    323379            # Map SOAP Action to method in binding class 
    324380            soapMethodName = 'soap_%s' % environ['HTTP_SOAPACTION'].strip('"') 
Note: See TracChangeset for help on using the changeset viewer.