Ignore:
Timestamp:
01/04/10 16:38:01 (10 years ago)
Author:
pjkersha
Message:

Added AttributeValueFactory? to generate <type>AttributeValue? classes.

File:
1 moved

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/functions/v2/regexp_match.py

    r6792 r6797  
    1010__revision__ = '$Id: $' 
    1111import re 
     12import sys 
    1213 
    1314from ndg.xacml.core.functions import AbstractFunction 
    1415 
    1516 
    16 class AnyURIRegexpMatch(AbstractFunction): 
    17     """Any URI Regular Expression matching function 
     17class RegexpMatchBase(AbstractFunction): 
     18    """XACML 2.0 Regular Expression matching base class function 
    1819    """ 
    19     FUNCTION_NS = 'urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match' 
     20    FUNCTION_NS = None 
     21    FUNCTION_NS_SUFFIX = '-regexp-match' 
     22    CLASS_NAME_SUFFIX = 'RegexpMatch' 
     23    TYPE = None 
     24    TYPE_MAP = {}.fromkeys( 
     25        ('AnyURI',  
     26        'IpAddress',  
     27        'DnsName', 
     28        'Rfc822Name', 
     29        'X500Name'), 
     30        basestring) 
    2031     
    21     def evaluate(self, uriPat, uri): 
     32    def evaluate(self, pat, input): 
    2233        """Match URI against regular expression pattern 
    2334         
    24         @param uriPat: regular expression 
    25         @type uriPat: basestring 
    26         @param uri: URI to match 
    27         @type uri: basestring 
     35        @param pat: regular expression 
     36        @type pat: basestring 
     37        @param input: URI to match 
     38        @type input: type 
    2839        @return: True if URI matches pattern, False otherwise 
    2940        @rtype: bool 
    3041        """ 
    31         if not isinstance(uriPat, basestring): 
    32             raise TypeError('Expecting %r derived type for "uriPat"; got %r' % 
    33                             (basestring, type(uri1))) 
     42        if not isinstance(pat, basestring): 
     43            raise TypeError('Expecting %r derived type for "pat"; got %r' % 
     44                            (basestring, type(pat))) 
    3445             
    35         if not isinstance(uri, basestring): 
    36             raise TypeError('Expecting %r derived type for "uri"; got %r' % 
    37                             (basestring, type(uri))) 
     46        if not isinstance(input, self.__class__.TYPE): 
     47            raise TypeError('Expecting %r derived type for "input"; got %r' % 
     48                            (self.__class__.TYPE, type(input))) 
    3849             
    39         return bool(re.match(uriPat, uri)) 
     50        return bool(re.match(pat, input)) 
    4051     
    41 #AbstractFunction.register(AnyURIRegexpMatch) 
     52_thisModule = sys.modules[__name__] 
     53 
     54for typeName, _type in RegexpMatchBase.TYPE_MAP.items(): 
     55    className = typeName + RegexpMatchBase.CLASS_NAME_SUFFIX 
     56    classVars = { 
     57        'TYPE': _type, 
     58        'FUNCTION_NS': AbstractFunction.V2_0_FUNCTION_NS + typeName[0 
     59            ].lower() + typeName[1:] + RegexpMatchBase.FUNCTION_NS_SUFFIX 
     60    } 
     61    setattr(_thisModule,  
     62            className,  
     63            type(className, (RegexpMatchBase, ), classVars))  
Note: See TracChangeset for help on using the changeset viewer.