Home | Trees | Indices | Help |
|
---|
|
1 """NDG XACML ElementTree based Generic Target Child Element reader - for 2 Reosurce, Subject, Action and Environment 3 4 NERC DataGrid 5 """ 6 __author__ = "P J Kershaw" 7 __date__ = "18/03/10" 8 __copyright__ = "(C) 2010 Science and Technology Facilities Council" 9 __contact__ = "Philip.Kershaw@stfc.ac.uk" 10 __license__ = "BSD - see LICENSE file in top-level directory" 11 __contact__ = "Philip.Kershaw@stfc.ac.uk" 12 __revision__ = "$Id: targetchildreader.py 8028 2012-02-27 14:38:01Z rwilkinson $" 13 from ndg.xacml.parsers import XMLParseError 14 from ndg.xacml.parsers.etree import QName, getElementChildren 15 from ndg.xacml.parsers.etree.reader import ETreeAbstractReader 16 from ndg.xacml.parsers.etree.factory import ReaderFactory 17 1820 '''ElementTree based XACML generic target child element parser 21 @cvar TYPE: XACML type to instantiate from parsed object 22 @type TYPE: type 23 ''' 245926 """Parse target child element object 27 28 @param obj: input object to parse 29 @type obj: ElementTree Element, or stream object 30 @return: new XACML expression instance 31 @rtype: ndg.xacml.core.TargetChildBase derived type 32 @raise XMLParseError: error reading element 33 """ 34 elem = super(TargetChildReader, self)._parse(obj) 35 36 xacmlType = self.__class__.TYPE 37 targetChild = xacmlType() 38 39 localName = QName.getLocalPart(elem.tag) 40 if localName != xacmlType.ELEMENT_LOCAL_NAME: 41 raise XMLParseError("No \"%s\" element found" % 42 xacmlType.ELEMENT_LOCAL_NAME) 43 44 # Parse match elements 45 for childElem in getElementChildren(elem): 46 localName = QName.getLocalPart(childElem.tag) 47 48 if localName == xacmlType.MATCH_TYPE.ELEMENT_LOCAL_NAME: 49 # Get reader for the match type 50 matchReader = ReaderFactory.getReader(xacmlType.MATCH_TYPE) 51 targetChild.matches.append(matchReader.parse(childElem, common)) 52 53 else: 54 raise XMLParseError("XACML %r child element name %r not " 55 "recognised" % (xacmlType.ELEMENT_LOCAL_NAME, 56 localName)) 57 58 return targetChild
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Thu Apr 5 08:44:38 2012 | http://epydoc.sourceforge.net |