Example #1
0
 def getListener(self, xmlNode, context):
     if xmlNode.hasAttribute('listener'):
         listenerName = xmlNode.getAttribute('listener')
         listenerClass = smart_load(listenerName)()
         return listenerClass
         
     if xmlNode.hasAttribute('bean'):
         beanName = xmlNode.getAttribute('bean')
         listenerClass = context.getBean(beanName)
         return listenerClass
     raise Exception('listener or bean')
Example #2
0
	def array2event(self, refDict):
		if not refDict.has_key('type'):
			raise scrutator.core.exception.BadTypeException("Do not contain a type for reconstruction")
		try:
			recons = smart_load(refDict['type'])()
		except TypeError:
			raise Exception(refDict['type']+" can't be unserialize")
			
		import pickle
		recons.setArg(pickle.loads(refDict['arg']))
		
		return recons
Example #3
0
    def load(self, filename, eventManager, context = CoreManager()):
        from xml.dom.minidom import parse
        from sys import path
        resource_name = path[0] + '/' + filename
        
        doc = parse(resource_name)
        
        for trigger in doc.getElementsByTagName('trigger'):
            eventName = trigger.getAttribute('event')

            
            #if it's not "all" events
            if not eventName == 'all':
                eventName = smart_load(eventName)().getType()
            
            
            eventManager.bind(eventName, self.getListener(trigger, context))
Example #4
0
 def loadBean(self, bean):
     """load a bean"""
     bean_id = bean.getAttribute('id')
     class_name = bean.getAttribute('class')
     
     argument_list = list()
     
     #fetch element in constructor arg
     args = bean.getElementsByTagName('constructor-arg')
     #if we have params for constructor
     if len(args) == 1:
         arg = args[0]
         for node in arg.childNodes:
             
             #fetch value
             if (node.nodeName == "value"):
                 val = getText(node.childNodes)
                 
                 #if value is an int, convert it
                 if val.isdigit():
                     val = int(val)
                     
                 #append element to argument list
                 argument_list.append(val)
             
             #if we have reference element, fetch it with the getBean method
             #warning: you must declare reference before using it
             if (node.nodeName == "ref"):
                 argument_list.append(self.context.getBean(node.getAttribute("bean")))
     
     #smart load reference of the class            
     class_obj = smart_load(class_name)
     try:
         if (len(argument_list) == 0):
             class_inst = class_obj()
         else:
             class_inst = class_obj(*argument_list)
     except TypeError, e:
         raise XMLBeanConstArgError(class_obj.__name__ + " bad args " + str(argument_list) + "\n" + str(e))