Changeset 4168


Ignore:
Timestamp:
03/09/08 14:09:01 (11 years ago)
Author:
cbyrom
Message:

Fix bug in ndgObject.get - setting default service +
simplify code by pulling out duplications + extend
test associated test suite.

Location:
exist/trunk/python/ndgUtils
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • exist/trunk/python/ndgUtils/ndgObject.py

    r4167 r4168  
    1 import ndgRetrieve,xmlHandler2, logging 
     1import ndgRetrieve, xmlHandler2, logging 
    22 
    33# The various different document types: 
     
    6565                      %(repository, schema, localID)) 
    6666        self.setConfig(config) 
     67 
     68    def setDefaultProperties(self): 
     69        ''' 
     70        Set default properties for object 
     71        ''' 
     72        self.discoveryURL,self.baseURL,self.xmlURL,\ 
     73            self.printableURL =None,None,None,None 
     74        self.useDiscoveryService = 1 
     75        self.BURL=None 
     76 
    6777         
    6878    def setConfig(self,config): 
     
    7383        self.config=config 
    7484        if config is None: 
    75             self.discoveryURL,self.baseURL,self.xmlURL,self.printableURL=None,None,None,None 
    76             self.BURL=None 
     85            self.setDefaultProperties() 
    7786            return 
    7887 
     
    97106        if self.schema!=fmt: qs=('outputSchema',fmt) 
    98107        self.discoveryURL=self.__buildURL(discoveryBASE,[qs]) 
    99         servicehost=self.config.get('NDG_B_SERVICE',self.repository,'unknown') 
     108 
     109        # config file should have details on the service to use for the repository 
     110        # - if not, default to 'unknown' 
     111        servicehost = 'unknown' 
     112        if self.config.has_option('NDG_B_SERVICE',self.repository): 
     113            servicehost=self.config.get('NDG_B_SERVICE',self.repository) 
     114             
    100115        # If this record is itself a discovery record, then we don't have much more to do 
    101116        if self.schema in DISCOVERY_SCHEMES: 
     
    116131            self.printableURL=url+'?format=xml' 
    117132            if servicehost!='unknown': self.gettable=0 
     133            self.useDiscoveryService = 0 
    118134        else: 
    119135            #currently we don't know how to get this one 
    120136            self.URL='unknown' 
    121             self.discoveryURL,self.baseURL,self.xmlURL,self.printableURL=None,None,None,None 
     137            self.setDefaultProperties() 
    122138 
    123139        logging.debug("Set up URL: '%s'\ndiscoveryURL: '%s'" %(self.URL, self.discoveryURL)) 
     
    138154             
    139155    def get(self,securityCredentials=None): 
    140         ''' Actually retrieve an ORIGINAL xml record corresponding to an ndg URI ''' 
     156        ''' Actually retrieve an ORIGINAL xml record corresponding to an ndg URI 
     157        NB, not sure if this method is actually used anywhere - since get is  
     158        usually done via ndgRetrieve  
     159        ''' 
    141160        if self.config is None: return None 
    142         status,xmlh=ndgRetrieve(self,self.config) 
     161        status,xmlh=ndgRetrieve.ndgRetrieve(self,self.config, \ 
     162                                            discovery = self.useDiscoveryService) 
    143163        if status: 
    144164            x=xmlHandler2.xmlHandler(xmlh,string=1) 
  • exist/trunk/python/ndgUtils/test_ndgObject.py

    r4167 r4168  
    7979           
    8080    def testAtom(self): 
    81         ''' Test the url components of a stub-b ''' 
     81        ''' Test the url components of an atom ''' 
    8282        uri=tc.VALID_PROVIDER_ID + '__' + no.ATOM_DOC_TYPE + '__' + \ 
    8383            tc.VALID_ATOM_DOC_ID 
     
    8787        self.assertEqual(n.xmlURL, tc.VALID_REPOSITORY + '?format=raw') 
    8888        self.assertEqual(n.printableURL, tc.VALID_REPOSITORY + '?format=xml') 
     89           
     90    def testGetAtom(self): 
     91        ''' Get an atom doc ''' 
     92        uri=tc.VALID_PROVIDER_ID + '__' + no.ATOM_DOC_TYPE + '__' + \ 
     93            tc.VALID_ATOM_DOC_ID 
     94        n=ndgObject(uri,self.config) 
     95        doc = n.get() 
     96        print "type: %s\ndata: --%s--" %(type(doc), doc) 
     97        self.assertNotEqual(doc.find(tc.VALID_ATOM_DOC_ID), -1) 
     98           
     99    def testGetInvalidAtom(self): 
     100        ''' Get an atom doc ''' 
     101        uri=tc.VALID_PROVIDER_ID + '__' + no.ATOM_DOC_TYPE + '__' + \ 
     102            tc.VALID_ATOM_DOC_ID + 'blah' 
     103        n=ndgObject(uri,self.config) 
     104        doc = n.get() 
     105        self.assertEqual(doc, 0) 
    89106 
    90107    def testPMLuri(self): 
Note: See TracChangeset for help on using the changeset viewer.