1 16 package org.outerj.daisy.publisher.serverimpl.resolving; 17 18 import org.outerj.daisy.repository.query.PredicateExpression; 19 import org.outerj.daisy.repository.query.QueryException; 20 import org.outerj.daisy.repository.Document; 21 import org.outerj.daisy.repository.Version; 22 import org.outerj.daisy.publisher.PublisherException; 23 24 import java.util.List ; 25 import java.util.ArrayList ; 26 import java.util.Iterator ; 27 28 public class ResolveDefinition { 29 private List resolveRules = new ArrayList (); 30 31 protected void addRule(String expressionString, PredicateExpression expression, String publisherRequestName) { 32 resolveRules.add(new ResolveRule(expressionString, expression, publisherRequestName)); 33 } 34 35 public String resolve(Document document, Version version) throws PublisherException { 36 Iterator resolveRulesIt = resolveRules.iterator(); 37 while (resolveRulesIt.hasNext()) { 38 ResolveRule rule = (ResolveRule)resolveRulesIt.next(); 39 try { 40 if (rule.expression.evaluate(document, version)) 41 return rule.publisherRequestName; 42 } catch (QueryException e) { 43 throw new PublisherException("Error evaluating expression in publisher request mapping: " + rule.expressionString, e); 44 } 45 } 46 return null; 47 } 48 49 static class ResolveRule { 50 String expressionString; 51 PredicateExpression expression; 52 String publisherRequestName; 53 54 public ResolveRule(String expressionString, PredicateExpression expression, String publisherRequestName) { 55 this.expressionString = expressionString; 56 this.expression = expression; 57 this.publisherRequestName = publisherRequestName; 58 } 59 } 60 } 61 | Popular Tags |