1 24 package org.ofbiz.minilang.method.callops; 25 26 import java.util.*; 27 28 import org.w3c.dom.*; 29 import org.ofbiz.base.util.*; 30 import org.ofbiz.minilang.*; 31 import org.ofbiz.minilang.method.*; 32 import org.ofbiz.minilang.operation.*; 33 34 41 public class CallSimpleMapProcessor extends MethodOperation { 42 43 String xmlResource; 44 String processorName; 45 ContextAccessor inMapAcsr; 46 ContextAccessor outMapAcsr; 47 ContextAccessor errorListAcsr; 48 49 MapProcessor inlineMapProcessor = null; 50 51 public CallSimpleMapProcessor(Element element, SimpleMethod simpleMethod) { 52 super(element, simpleMethod); 53 xmlResource = element.getAttribute("xml-resource"); 54 processorName = element.getAttribute("processor-name"); 55 inMapAcsr = new ContextAccessor(element.getAttribute("in-map-name")); 56 outMapAcsr = new ContextAccessor(element.getAttribute("out-map-name")); 57 errorListAcsr = new ContextAccessor(element.getAttribute("error-list-name"), "error_list"); 58 59 Element simpleMapProcessorElement = UtilXml.firstChildElement(element, "simple-map-processor"); 60 if (simpleMapProcessorElement != null) { 61 inlineMapProcessor = new MapProcessor(simpleMapProcessorElement); 62 } 63 } 64 65 public boolean exec(MethodContext methodContext) { 66 List messages = (List) errorListAcsr.get(methodContext); 67 if (messages == null) { 68 messages = new LinkedList(); 69 errorListAcsr.put(methodContext, messages); 70 } 71 72 Map inMap = (Map) inMapAcsr.get(methodContext); 73 if (inMap == null) { 74 inMap = new HashMap(); 75 inMapAcsr.put(methodContext, inMap); 76 } 77 78 Map outMap = (Map) outMapAcsr.get(methodContext); 79 if (outMap == null) { 80 outMap = new HashMap(); 81 outMapAcsr.put(methodContext, outMap); 82 } 83 84 if (this.xmlResource != null && this.xmlResource.length() > 0 && 86 this.processorName != null && this.processorName.length() > 0) { 87 String xmlResource = methodContext.expandString(this.xmlResource); 88 String processorName = methodContext.expandString(this.processorName); 89 try { 90 org.ofbiz.minilang.SimpleMapProcessor.runSimpleMapProcessor( 91 xmlResource, processorName, inMap, outMap, messages, 92 methodContext.getLocale(), methodContext.getLoader()); 93 } catch (MiniLangException e) { 94 messages.add("Error running SimpleMapProcessor in XML file \"" + xmlResource + "\": " + e.toString()); 95 } 96 } 97 98 if (inlineMapProcessor != null) { 100 inlineMapProcessor.exec(inMap, outMap, messages, 101 (methodContext.getRequest() != null ? methodContext.getRequest().getLocale() : null), 102 methodContext.getLoader()); 103 } 104 105 return true; 106 } 107 108 public String rawString() { 109 return "<call-simple-map-processor/>"; 111 } 112 public String expandedString(MethodContext methodContext) { 113 return this.rawString(); 115 } 116 } 117 | Popular Tags |