1 24 package org.ofbiz.minilang.method.conditional; 25 26 import java.util.Iterator ; 27 import java.util.LinkedList ; 28 import java.util.List ; 29 30 import org.ofbiz.base.util.UtilValidate; 31 import org.ofbiz.base.util.UtilXml; 32 import org.ofbiz.base.util.string.FlexibleStringExpander; 33 import org.ofbiz.minilang.SimpleMethod; 34 import org.ofbiz.minilang.method.ContextAccessor; 35 import org.ofbiz.minilang.method.MethodContext; 36 import org.ofbiz.minilang.method.MethodOperation; 37 import org.w3c.dom.Element ; 38 39 46 public class Assert extends MethodOperation { 47 48 public static final String module = Assert.class.getName(); 49 50 protected ContextAccessor errorListAcsr; 51 protected FlexibleStringExpander titleExdr; 52 53 54 protected List conditionalList = new LinkedList (); 55 56 public Assert(Element element, SimpleMethod simpleMethod) { 57 super(element, simpleMethod); 58 59 errorListAcsr = new ContextAccessor(element.getAttribute("error-list-name"), "error_list"); 60 titleExdr = new FlexibleStringExpander(element.getAttribute("title")); 61 62 List conditionalElementList = UtilXml.childElementList(element); 63 Iterator conditionalElementIter = conditionalElementList.iterator(); 64 while (conditionalElementIter.hasNext()) { 65 Element conditionalElement = (Element ) conditionalElementIter.next(); 66 this.conditionalList.add(ConditionalFactory.makeConditional(conditionalElement, simpleMethod)); 67 } 68 } 69 70 public boolean exec(MethodContext methodContext) { 71 List messages = (List ) errorListAcsr.get(methodContext); 72 String title = this.titleExdr.expandString(methodContext.getEnvMap()); 73 74 Iterator conditionalIter = conditionalList.iterator(); 76 while (conditionalIter.hasNext()) { 77 Conditional condition = (Conditional) conditionalIter.next(); 78 boolean conditionTrue = condition.checkCondition(methodContext); 79 80 if (!conditionTrue) { 81 StringBuffer messageBuffer = new StringBuffer (); 83 messageBuffer.append("Assertion "); 84 if (UtilValidate.isNotEmpty(title)) { 85 messageBuffer.append("["); 86 messageBuffer.append(title); 87 messageBuffer.append("] "); 88 } 89 messageBuffer.append("failed: "); 90 condition.prettyPrint(messageBuffer, methodContext); 91 messages.add(messageBuffer.toString()); 92 } 93 } 94 95 return true; 96 } 97 98 public String rawString() { 99 return expandedString(null); 100 } 101 102 public String expandedString(MethodContext methodContext) { 103 String title = this.titleExdr.expandString(methodContext.getEnvMap()); 104 105 StringBuffer messageBuf = new StringBuffer (); 106 messageBuf.append("<assert"); 107 if (UtilValidate.isNotEmpty(title)) { 108 messageBuf.append(" title=\""); 109 messageBuf.append(title); 110 messageBuf.append("\""); 111 } 112 messageBuf.append(">"); 113 Iterator conditionalIter = conditionalList.iterator(); 114 while (conditionalIter.hasNext()) { 115 Conditional condition = (Conditional) conditionalIter.next(); 116 condition.prettyPrint(messageBuf, methodContext); 117 } 118 messageBuf.append("</assert>"); 119 return messageBuf.toString(); 120 } 121 } 122 | Popular Tags |