You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by si...@apache.org on 2007/02/12 23:21:54 UTC
svn commit: r506699 - in
/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main:
java/org/apache/cocoon/forms/binding/ resources/META-INF/cocoon/avalon/
Author: simoneg
Date: Mon Feb 12 14:21:53 2007
New Revision: 506699
URL: http://svn.apache.org/viewvc?view=rev&rev=506699
Log:
A simple binding for trees
Added:
cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/TreeModelJXPath.java
cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/TreeModelJXPathBuilder.java
Modified:
cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/META-INF/cocoon/avalon/cocoon-forms.xconf
Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/TreeModelJXPath.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/TreeModelJXPath.java?view=auto&rev=506699
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/TreeModelJXPath.java (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/TreeModelJXPath.java Mon Feb 12 14:21:53 2007
@@ -0,0 +1,59 @@
+package org.apache.cocoon.forms.binding;
+
+import org.apache.cocoon.forms.formmodel.Widget;
+import org.apache.cocoon.forms.formmodel.tree.Tree;
+import org.apache.cocoon.forms.formmodel.tree.TreeModel;
+import org.apache.commons.jxpath.JXPathContext;
+
+public class TreeModelJXPath extends JXPathBindingBase {
+
+ /**
+ * The xpath expression to the objectModel property
+ */
+ private final String xpath;
+
+ /**
+ * The id of the CForms form-widget
+ */
+ private final String fieldId;
+
+ /**
+ * Constructs FieldJXPathBinding.
+ *
+ * @param convertor may be null
+ */
+ public TreeModelJXPath(JXPathBindingBuilderBase.CommonAttributes commonAtts,
+ String widgetId,
+ String xpath) {
+ super(commonAtts);
+ this.fieldId = widgetId;
+ this.xpath = xpath;
+ }
+
+ public String getId() { return fieldId; }
+
+ /**
+ * Actively performs the binding from the ObjectModel wrapped in a jxpath
+ * context to the CForms-form-widget specified in this object.
+ */
+ public void doLoad(Widget frmModel, JXPathContext jxpc) throws BindingException {
+ Widget widget = selectWidget(frmModel, this.fieldId);
+ if (widget == null) {
+ throw new BindingException("The widget with the ID [" + this.fieldId
+ + "] referenced in the binding does not exist in the form definition.");
+ }
+ if (!(widget instanceof Tree)) throw new BindingException("Widget " + this.fieldId + " is not a Tree!");
+
+ Object value = jxpc.getValue(this.xpath);
+ if (value != null) {
+ if (!(value instanceof TreeModel)) throw new BindingException("Value found in " + this.xpath + " is not a TreeModel, instead it is a " + value.getClass().getName());
+ ((Tree)widget).setModel((TreeModel)value);
+ }
+ }
+
+ public void doSave(Widget frmModel, JXPathContext jxpc)
+ throws BindingException {
+ // Does nothing
+ }
+
+}
Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/TreeModelJXPathBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/TreeModelJXPathBuilder.java?view=auto&rev=506699
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/TreeModelJXPathBuilder.java (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/TreeModelJXPathBuilder.java Mon Feb 12 14:21:53 2007
@@ -0,0 +1,23 @@
+package org.apache.cocoon.forms.binding;
+
+import org.apache.cocoon.forms.binding.JXPathBindingManager.Assistant;
+import org.apache.cocoon.forms.util.DomHelper;
+import org.w3c.dom.Element;
+
+public class TreeModelJXPathBuilder extends JXPathBindingBuilderBase {
+
+ public JXPathBindingBase buildBinding(Element bindingElm, Assistant assistant) throws BindingException {
+ try {
+ CommonAttributes commonAtts = JXPathBindingBuilderBase.getCommonAttributes(bindingElm);
+ String xpath = DomHelper.getAttribute(bindingElm, "path", null);
+ String widgetId = DomHelper.getAttribute(bindingElm, "id", null);
+
+ return new TreeModelJXPath(commonAtts, widgetId, xpath);
+ } catch (BindingException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new BindingException("Error building binding defined at " + DomHelper.getLocation(bindingElm), e);
+ }
+ }
+
+}
Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/META-INF/cocoon/avalon/cocoon-forms.xconf
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/META-INF/cocoon/avalon/cocoon-forms.xconf?view=diff&rev=506699&r1=506698&r2=506699
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/META-INF/cocoon/avalon/cocoon-forms.xconf (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/resources/META-INF/cocoon/avalon/cocoon-forms.xconf Mon Feb 12 14:21:53 2007
@@ -50,6 +50,7 @@
<binding name="union" src="org.apache.cocoon.forms.binding.UnionJXPathBindingBuilder"/>
<binding name="expand" src="org.apache.cocoon.forms.binding.ExpandJXPathBindingBuilder"/>
<binding name="import" src="org.apache.cocoon.forms.binding.ImportJXPathBindingBuilder"/>
+ <binding name="treemodel" src="org.apache.cocoon.forms.binding.TreeModelJXPathBuilder"/>
</bindings>
</forms-binding>