From 387a2239720b306a5b44abc366ae96e3e7c8e0e8 Mon Sep 17 00:00:00 2001 From: Keith Donald Date: Tue, 15 Jul 2008 21:18:52 +0000 Subject: [PATCH] binder config; update to 2.5.5 --- spring-binding/ivy.xml | 6 +- spring-faces/ivy.xml | 12 ++-- spring-js/ivy.xml | 12 ++-- spring-webflow-samples/booking-faces/ivy.xml | 20 +++--- spring-webflow-samples/booking-mvc/ivy.xml | 22 +++---- .../webapp/WEB-INF/hotels/booking/booking.xml | 9 +++ spring-webflow/ivy.xml | 22 +++---- .../webflow/engine/model/BinderModel.java | 55 +++++++++++++++++ .../webflow/engine/model/ViewStateModel.java | 32 +++------- .../builder/xml/XmlFlowModelBuilder.java | 15 ++++- .../model/builder/xml/spring-webflow-2.0.xsd | 61 +++++++++++++++---- .../builder/xml/XmlFlowModelBuilderTests.java | 5 +- .../xml/flow-viewstate-model-binding.xml | 4 +- 13 files changed, 186 insertions(+), 89 deletions(-) create mode 100644 spring-webflow/src/main/java/org/springframework/webflow/engine/model/BinderModel.java diff --git a/spring-binding/ivy.xml b/spring-binding/ivy.xml index 7054b1b4..681f55c4 100644 --- a/spring-binding/ivy.xml +++ b/spring-binding/ivy.xml @@ -23,9 +23,9 @@ - - - + + + diff --git a/spring-faces/ivy.xml b/spring-faces/ivy.xml index a17092a8..840319a3 100644 --- a/spring-faces/ivy.xml +++ b/spring-faces/ivy.xml @@ -27,11 +27,11 @@ - - - - - + + + + + @@ -50,7 +50,7 @@ - + diff --git a/spring-js/ivy.xml b/spring-js/ivy.xml index f23229f3..02fcb135 100644 --- a/spring-js/ivy.xml +++ b/spring-js/ivy.xml @@ -25,17 +25,17 @@ - - - - - + + + + + - + diff --git a/spring-webflow-samples/booking-faces/ivy.xml b/spring-webflow-samples/booking-faces/ivy.xml index bf85d443..f66bdea7 100755 --- a/spring-webflow-samples/booking-faces/ivy.xml +++ b/spring-webflow-samples/booking-faces/ivy.xml @@ -33,15 +33,15 @@ - - - - - - - - - + + + + + + + + + @@ -50,7 +50,7 @@ - + diff --git a/spring-webflow-samples/booking-mvc/ivy.xml b/spring-webflow-samples/booking-mvc/ivy.xml index 5bf67b61..0523495e 100755 --- a/spring-webflow-samples/booking-mvc/ivy.xml +++ b/spring-webflow-samples/booking-mvc/ivy.xml @@ -36,16 +36,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -54,7 +54,7 @@ - + diff --git a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/booking.xml b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/booking.xml index a3f27007..ec70efee 100644 --- a/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/booking.xml +++ b/spring-webflow-samples/booking-mvc/src/main/webapp/WEB-INF/hotels/booking/booking.xml @@ -14,6 +14,15 @@ + + + + + + + + + diff --git a/spring-webflow/ivy.xml b/spring-webflow/ivy.xml index d6d8cbbe..924903c3 100644 --- a/spring-webflow/ivy.xml +++ b/spring-webflow/ivy.xml @@ -30,14 +30,14 @@ - - - - - - - - + + + + + + + + @@ -51,9 +51,9 @@ - - - + + + diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/BinderModel.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/BinderModel.java new file mode 100644 index 00000000..ba2a0295 --- /dev/null +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/BinderModel.java @@ -0,0 +1,55 @@ +/* + * Copyright 2004-2008 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.webflow.engine.model; + +import java.util.LinkedList; + +/** + * Model support for the view-state binder element. + * @author Scott Andrews + */ +public class BinderModel extends AbstractModel { + + private String autoBind; + + private LinkedList bindings; + + public String getAutoBind() { + return autoBind; + } + + public void setAutoBind(String autoBind) { + this.autoBind = autoBind; + } + + public LinkedList getBindings() { + return bindings; + } + + public void setBindings(LinkedList bindings) { + this.bindings = bindings; + } + + public boolean isMergeableWith(Model model) { + return model instanceof BinderModel; + } + + public void merge(Model model) { + BinderModel binder = (BinderModel) model; + setAutoBind(merge(getAutoBind(), binder.getAutoBind())); + setBindings(merge(getBindings(), binder.getBindings())); + } +} diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/ViewStateModel.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/ViewStateModel.java index aa01a499..938a1ec2 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/ViewStateModel.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/ViewStateModel.java @@ -37,7 +37,7 @@ public class ViewStateModel extends AbstractTransitionableStateModel { private LinkedList vars; - private LinkedList bindings; + private BinderModel binder; private LinkedList onRenderActions; @@ -71,7 +71,7 @@ public class ViewStateModel extends AbstractTransitionableStateModel { setPopup(merge(getPopup(), state.getPopup())); setModel(merge(getModel(), state.getModel())); setVars(merge(getVars(), state.getVars(), false)); - setBindings(merge(getBindings(), state.getBindings(), false)); + setBinder((BinderModel) merge(getBinder(), state.getBinder())); setOnRenderActions(merge(getOnRenderActions(), state.getOnRenderActions(), false)); } @@ -174,31 +174,12 @@ public class ViewStateModel extends AbstractTransitionableStateModel { vars.add(var); } - /** - * @return the bindings - */ - public LinkedList getBindings() { - return bindings; + public BinderModel getBinder() { + return binder; } - /** - * @param bindings the bindings to set - */ - public void setBindings(LinkedList bindings) { - this.bindings = bindings; - } - - /** - * @param var the var to add - */ - public void addBinding(BindingModel binding) { - if (binding == null) { - return; - } - if (bindings == null) { - bindings = new LinkedList(); - } - bindings.add(binding); + public void setBinder(BinderModel binder) { + this.binder = binder; } /** @@ -214,4 +195,5 @@ public class ViewStateModel extends AbstractTransitionableStateModel { public void setOnRenderActions(LinkedList onRenderActions) { this.onRenderActions = onRenderActions; } + } diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilder.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilder.java index a8ca1d84..cbfeece7 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilder.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilder.java @@ -33,6 +33,7 @@ import org.springframework.webflow.engine.model.AbstractStateModel; import org.springframework.webflow.engine.model.ActionStateModel; import org.springframework.webflow.engine.model.AttributeModel; import org.springframework.webflow.engine.model.BeanImportModel; +import org.springframework.webflow.engine.model.BinderModel; import org.springframework.webflow.engine.model.BindingModel; import org.springframework.webflow.engine.model.DecisionStateModel; import org.springframework.webflow.engine.model.EndStateModel; @@ -518,6 +519,18 @@ public class XmlFlowModelBuilder implements FlowModelBuilder { } } + private BinderModel parseBinder(Element element) { + Element binderElement = DomUtils.getChildElementByTagName(element, "binder"); + if (binderElement != null) { + BinderModel binder = new BinderModel(); + binder.setAutoBind(binderElement.getAttribute("auto-bind")); + binder.setBindings(parseBindings(binderElement)); + return binder; + } else { + return null; + } + } + private LinkedList parseBindings(Element element) { List bindingElements = DomUtils.getChildElementsByTagName(element, "binding"); if (bindingElements.isEmpty()) { @@ -594,7 +607,7 @@ public class XmlFlowModelBuilder implements FlowModelBuilder { state.setPopup(element.getAttribute("popup")); state.setModel(element.getAttribute("model")); state.setVars(parseVars(element)); - state.setBindings(parseBindings(element)); + state.setBinder(parseBinder(element)); state.setOnRenderActions(parseOnRenderActions(element)); state.setAttributes(parseAttributes(element)); state.setSecured(parseSecured(element)); diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/spring-webflow-2.0.xsd b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/spring-webflow-2.0.xsd index b0f3cb1b..1d9759a9 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/spring-webflow-2.0.xsd +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/builder/xml/spring-webflow-2.0.xsd @@ -327,33 +327,68 @@ fully-qualified class name (e.g. 'java.lang.Integer'). The class must be a conc - + - + - - - - + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + - + diff --git a/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilderTests.java b/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilderTests.java index eba77416..35defacf 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilderTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/XmlFlowModelBuilderTests.java @@ -152,8 +152,9 @@ public class XmlFlowModelBuilderTests extends TestCase { FlowModel flow = builder.getFlowModel(); ViewStateModel model = (ViewStateModel) flow.getStates().get(0); assertEquals("formObject", model.getModel()); - assertEquals("objectProperty", ((BindingModel) model.getBindings().get(0)).getProperty()); - assertEquals("customConverter", ((BindingModel) model.getBindings().get(0)).getConverter()); + assertEquals("true", model.getBinder().getAutoBind()); + assertEquals("objectProperty", ((BindingModel) model.getBinder().getBindings().get(0)).getProperty()); + assertEquals("customConverter", ((BindingModel) model.getBinder().getBindings().get(0)).getConverter()); } public void testViewStateRedirect() { diff --git a/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-model-binding.xml b/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-model-binding.xml index ff717e66..aada0e0f 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-model-binding.xml +++ b/spring-webflow/src/test/java/org/springframework/webflow/engine/model/builder/xml/flow-viewstate-model-binding.xml @@ -3,7 +3,9 @@ xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd"> - + + + \ No newline at end of file