Removed some debuggin print statements.
[sfa.git] / sfatables / xmlrule.py
index d137e4e..d8b30dc 100644 (file)
@@ -10,7 +10,6 @@ class XMLRule:
         filepath = os.path.join(sfatables_config, 'processors', processor)
         # XXX
 
-        print filepath
         styledoc = libxml2.parseFile(filepath)
         style = libxslt.parseStylesheetDoc(styledoc)
         result = style.applyStylesheet(doc, None)
@@ -57,15 +56,19 @@ class XMLRule:
 
     def add_rule_context_to_rspec(self, doc):
         p = doc.xpathNewContext()
-        context = p.xpathEval("//rspec")
+        context = p.xpathEval("//RSpec")
         if (not context):
             raise Exception('Request is not an rspec')
         else:
             # Add the request context
             matchNode = libxml2.newNode('match-context')
-            matchNode.addChild(self.arguments['match'])
+            for match_argument in self.arguments['match']:
+                matchNode.addChild(match_argument)
+
             targetNode = libxml2.newNode('target-context')
-            targetNode.addChild(self.arguments['target'])
+            for target_argument in self.arguments['target']:
+                targetNode.addChild(target_argument)
+
             context[0].addChild(matchNode)
             context[0].addChild(targetNode)
         p.xpathFreeContext()
@@ -73,7 +76,7 @@ class XMLRule:
         return doc
 
     def apply_interpreted(self, rspec):
-        self.add_rule_context_to_rspec(rspec)
+        rspec = self.add_rule_context_to_rspec(rspec)
         # Interpreted
         #
         # output =
@@ -107,21 +110,11 @@ class XMLRule:
             self.terminal = 1
         
         self.processors[type] = processor[0].content
-        self.arguments[type] = p.xpathEval('//rule')
+        self.arguments[type] = p.xpathEval('//rule//argument[value!=""]')
 
         p.xpathFreeContext()
 
 
-    def wrap_rspec (self, type, rspec):
-        argument = self.arguments[type]
-        p = rspec.xmldoc.xpathNewContext()
-        root_node = p.xpathEval('/RSpec')
-        if (not root_node or not root_node):
-            raise Exception('An evil aggregate manager sent me a malformed RSpec. Please see the stack trace to identify it.')
-
-        root_node.addChild(arguments[type])
-        return rspec
-
     def __init__(self, chain=None, rule_number=None):
         self.rule_number = None
         self.chain = None