1 16 package org.apache.cocoon.woody.binding; 17 18 import java.util.Locale ; 19 20 import org.apache.cocoon.woody.Constants; 21 import org.apache.cocoon.woody.util.DomHelper; 22 import org.apache.cocoon.woody.datatype.convertor.Convertor; 23 import org.apache.cocoon.i18n.I18nUtils; 24 import org.w3c.dom.Element ; 25 26 42 public class MultiValueJXPathBindingBuilder 43 extends JXPathBindingBuilderBase { 44 45 public JXPathBindingBase buildBinding( 46 Element bindingElem, 47 JXPathBindingManager.Assistant assistant) throws BindingException { 48 49 try { 50 CommonAttributes commonAtts = JXPathBindingBuilderBase.getCommonAttributes(bindingElem); 51 52 String multiValueId = DomHelper.getAttribute(bindingElem, "id"); 53 String parentPath = DomHelper.getAttribute(bindingElem, "parent-path"); 54 String rowPath = DomHelper.getAttribute(bindingElem, "row-path"); 55 56 Element updateWrapElement = 57 DomHelper.getChildElement(bindingElem, BindingManager.NAMESPACE, "on-update"); 58 JXPathBindingBase[] updateBindings = assistant.makeChildBindings(updateWrapElement); 59 60 Convertor convertor = null; 61 Locale convertorLocale = Locale.US; 62 Element convertorEl = DomHelper.getChildElement(bindingElem, Constants.WD_NS, "convertor"); 63 if (convertorEl != null) { 64 String datatype = DomHelper.getAttribute(convertorEl, "datatype"); 65 String localeStr = convertorEl.getAttribute("datatype"); 66 if (!localeStr.equals("")) { 67 convertorLocale = I18nUtils.parseLocale(localeStr); 68 } 69 70 convertor = assistant.getDatatypeManager().createConvertor(datatype, convertorEl); 71 } 72 73 return new MultiValueJXPathBinding( commonAtts, multiValueId, parentPath, rowPath, 74 updateBindings, convertor, convertorLocale); 75 } catch (BindingException e) { 76 throw e; 77 } catch (Exception e) { 78 throw new BindingException("Error building multi value binding defined at " + DomHelper.getLocation(bindingElem), e); 79 } 80 } 81 } 82 | Popular Tags |