Ignore:
Timestamp:
31/03/10 16:41:23 (10 years ago)
Author:
pjkersha
Message:

Made ndg.xacml.core.expression.Expression abstract: derived classes must implement the evaluate method used to evaluate a result in a rule condition.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/context/pdp.py

    r6790 r6792  
    1616 
    1717from ndg.xacml.core.context.pdpinterface import PDPInterface 
    18 from ndg.xacml.core.rule import Effect 
    1918from ndg.xacml.core.policy import Policy 
    2019from ndg.xacml.core.apply import Apply 
     
    6463    def __init__(self, *arg, **kw): 
    6564        super(UnsupportedFunctionError, self).__init__(*arg, **kw) 
    66         self.response.results[0].status.statusCode = StatusCode.PROCESSING_ERROR 
     65        self.response.results[0].status.statusCode.value = \ 
     66                                                    StatusCode.PROCESSING_ERROR 
    6767 
    6868 
     
    7676    def __init__(self, *arg, **kw): 
    7777        super(UnsupportedElementError, self).__init__(*arg, **kw) 
    78         self.response.results[0].status.statusCode = StatusCode.SYNTAX_ERROR 
     78        self.response.results[0].status.statusCode.value = \ 
     79                                                    StatusCode.SYNTAX_ERROR 
    7980 
    8081 
     
    433434         
    434435        _attributeMatch = lambda attribute: ( 
    435             matchFunc.evaluate(matchAttributeValue,  
    436                                attribute.attributeValue.value) and 
     436            any([matchFunc.evaluate(matchAttributeValue, attrVal.value)  
     437                 for attrVal in attribute.attributeValues]) and 
    437438            attribute.attributeId == attributeId and 
    438439            attribute.dataType == dataType and 
     
    489490         
    490491        # Marshall inputs 
    491         funcInputs = ('',)*len(applyElem.expressions) 
     492        funcInputs = ['',]*len(applyElem.expressions) 
    492493        for i, expression in enumerate(applyElem.expressions): 
    493494            marshaller = inputMarshallerMap.get(expression.__class__) 
     
    506507             
    507508        # Execute function on the retrieved inputs 
    508         result = func(*funcInputs) 
     509        result = func(*tuple(funcInputs)) 
    509510         
    510511        # Pass the result back to the parent <Apply> element 
     
    524525        if isinstance(attributeDesignator, SubjectAttributeDesignator): 
    525526            for i in self.request.subjects: 
    526                 attributeValues.extend( 
    527                     [j.attributeValue for j in i.attributes 
    528                      if j.attributeValue.dataType == dataType]) 
     527                for j in i.attributes: 
     528                    attributeValues.extend([k.value for k in j.attributeValues 
     529                                            if k.dataType == dataType]) 
    529530 
    530531        elif isinstance(attributeDesignator, ResourceAttributeDesignator): 
    531532            for i in self.request.resources: 
    532                 attributeValues.extend( 
    533                     [j.attributeValue for j in i.attributes 
    534                      if j.attributeValue.dataType == dataType]) 
     533                for j in i.attributes: 
     534                    attributeValues.extend([k.value for k in j.attributeValues 
     535                                            if k.dataType == dataType]) 
    535536 
    536537        elif isinstance(attributeDesignator, ActionAttributeDesignator): 
    537             attributeValues.append([j.attributeValue for j in i.attributes 
    538                                     if j.attributeValue.dataType == dataType]) 
     538            for j in i.attributes: 
     539                attributeValues.extend([k.value for k in j.attributeValues 
     540                                        if k.dataType == dataType]) 
    539541             
    540542        elif isinstance(attributeDesignator, EnvironmentAttributeDesignator): 
    541             attributeValues.append([j.attributeValue for j in i.attributes 
    542                                     if j.attributeValue.dataType == dataType]) 
     543            for j in i.attributes: 
     544                attributeValues.extend([k.value for k in j.attributeValues 
     545                                        if k.dataType == dataType]) 
    543546        else: 
    544547            raise TypeError('Expecting %r derived type got %r' % 
Note: See TracChangeset for help on using the changeset viewer.