Author: sylvain
Date: Sun Feb 20 13:46:41 2005
New Revision: 154564
URL: http://svn.apache.org/viewcvs?view=rev&rev=154564
Log:
Merge branches
Added:
cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-bind.xml
(with props)
cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-data.xml
(with props)
cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-def.xml
(with props)
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/ContextJXPathBinding.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/StructJXPathBinding.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/Form.js
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v2/Form.js
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v2/ScriptableWidget.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v3/Form.js
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v3/ScriptableWidget.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/AbstractWidget.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/BooleanField.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Form.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/MultiValueField.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/SelectableWidget.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Widget.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/transformation/EffectPipe.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/transformation/EffectWidgetReplacingPipe.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/util/XMLAdapter.java
cocoon/trunk/src/blocks/forms/samples/forms/registration_template.xml
cocoon/trunk/src/blocks/forms/samples/swan/forms/xreport_model.xml
cocoon/trunk/src/blocks/forms/samples/welcome.xml
cocoon/trunk/src/blocks/forms/test/org/apache/cocoon/forms/datatype/convertor/EnumConvertorBuilderTestCase.java
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/ContextJXPathBinding.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/ContextJXPathBinding.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/ContextJXPathBinding.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/ContextJXPathBinding.java
Sun Feb 20 13:46:41 2005
@@ -76,6 +76,11 @@
getLogger().debug("done saving " + toString());
}
}
+
+ /** To allow child classes to know which path they bind to */
+ protected String getXPath() {
+ return this.xpath;
+ }
public String toString() {
return "ContextJXPathBinding [xpath=" + this.xpath + "]";
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java
Sun Feb 20 13:46:41 2005
@@ -16,6 +16,7 @@
package org.apache.cocoon.forms.binding;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import org.apache.avalon.framework.logger.LogEnabled;
@@ -155,6 +156,7 @@
throws BindingException {
boolean inheritedLeniency = jxpc.isLenient();
applyLeniency(jxpc);
+ applyNSDeclarations(jxpc);
if (this.commonAtts.loadEnabled) {
doLoad(frmModel, jxpc);
}
@@ -194,6 +196,7 @@
throws BindingException{
boolean inheritedLeniency = jxpc.isLenient();
applyLeniency(jxpc);
+ applyNSDeclarations(jxpc);
if (this.commonAtts.saveEnabled) {
doSave(frmModel, jxpc);
}
@@ -219,6 +222,20 @@
private void applyLeniency(JXPathContext jxpc) {
if (this.commonAtts.leniency != null) {
jxpc.setLenient(this.commonAtts.leniency.booleanValue());
+ }
+ }
+
+ private void applyNSDeclarations(JXPathContext jxpc)
+ {
+ if (this.commonAtts.nsDeclarations != null)
+ {
+ Iterator keysIter =
this.commonAtts.nsDeclarations.keySet().iterator();
+ while (keysIter.hasNext())
+ {
+ String nsuri = (String) keysIter.next();
+ String pfx = (String)
this.commonAtts.nsDeclarations.get(nsuri);
+ jxpc.registerNamespace(pfx, nsuri);
+ }
}
}
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBuilderBase.java
Sun Feb 20 13:46:41 2005
@@ -15,6 +15,8 @@
*/
package org.apache.cocoon.forms.binding;
+import java.util.Map;
+
import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.cocoon.forms.util.DomHelper;
@@ -111,7 +113,22 @@
String leniency = DomHelper.getAttribute(bindingElm, "lenient",
null);
- return new CommonAttributes(location, direction, leniency);
+ //TODO: current jxpath is not inheriting registered namespaces
over to
+ // child-relative jxpath contexts --> because of that we can't
just
+ // remember the getLocalNSDeclarations but need the full set from
+ // getInheritedNSDeclarations
+ // IMPORTANT NOTE: if jxpath would change this behaviour we would
however
+ // still need to be able to unregister namespace-declarations
+ // (in a smart way: unhide what is possably available from your
parent.
+ // So both changes to jxpath need to be available before changing
the below.
+ Map nsDeclarationMap =
DomHelper.getInheritedNSDeclarations(bindingElm);
+ // we (actually jxpath) doesn't support un-prefixed
namespace-declarations:
+ // so we decide to break on those above silently ignoring them
+ if (nsDeclarationMap != null &&
nsDeclarationMap.values().contains(null))
+ throw new BindingException("Error in binding file " + location
+ + "\nBinding doesn't support having
namespace-declarations without explicit prefixes.");
+
+ return new CommonAttributes(location, direction, leniency,
nsDeclarationMap);
} catch (BindingException e) {
throw e;
} catch (Exception e) {
@@ -143,18 +160,23 @@
* should be operating in lenient mode or not
*/
final Boolean leniency;
+ /**
+ * Array of namespace-declarations (prefix-uri pairs) that need to be
set on the jxpath
+ */
+ final Map nsDeclarations;
- final static CommonAttributes DEFAULT = new CommonAttributes("location
unknown", true, true, null);
+ final static CommonAttributes DEFAULT = new CommonAttributes("location
unknown", true, true, null, null);
- CommonAttributes(String location, String direction, String leniency){
- this(location, isLoadEnabled(direction), isSaveEnabled(direction),
decideLeniency(leniency));
+ CommonAttributes(String location, String direction, String leniency,
Map nsDeclarations){
+ this(location, isLoadEnabled(direction), isSaveEnabled(direction),
decideLeniency(leniency), nsDeclarations);
}
- CommonAttributes(String location, boolean loadEnabled, boolean
saveEnabled, Boolean leniency){
+ CommonAttributes(String location, boolean loadEnabled, boolean
saveEnabled, Boolean leniency, Map nsDeclarations){
this.location = location;
this.loadEnabled = loadEnabled;
this.saveEnabled = saveEnabled;
this.leniency = leniency;
+ this.nsDeclarations = nsDeclarations;
}
/**
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/StructJXPathBinding.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/StructJXPathBinding.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/StructJXPathBinding.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/binding/StructJXPathBinding.java
Sun Feb 20 13:46:41 2005
@@ -18,6 +18,7 @@
import org.apache.cocoon.forms.formmodel.Struct;
import org.apache.cocoon.forms.formmodel.Widget;
import org.apache.commons.jxpath.JXPathContext;
+import org.apache.commons.jxpath.Pointer;
/**
* StructJXPathBinding provides an implementation of a [EMAIL PROTECTED]
Binding}
@@ -30,9 +31,7 @@
*
* @version $Id$
*/
-public class StructJXPathBinding extends ComposedJXPathBindingBase {
-
- private final String xpath;
+public class StructJXPathBinding extends ContextJXPathBinding {
private final String widgetId;
@@ -43,9 +42,8 @@
* @param childBindings
*/
public StructJXPathBinding(JXPathBindingBuilderBase.CommonAttributes
commonAtts, String widgetId, String xpath, JXPathBindingBase[] childBindings) {
- super(commonAtts, childBindings);
+ super(commonAtts, xpath, childBindings);
this.widgetId = widgetId;
- this.xpath = xpath;
}
/**
@@ -55,11 +53,7 @@
*/
public void doLoad(Widget frmModel, JXPathContext jxpc) throws
BindingException {
Struct structWidget = (Struct)selectWidget(frmModel, this.widgetId);
- JXPathContext subContext =
jxpc.getRelativeContext(jxpc.getPointer(this.xpath));
- super.doLoad(structWidget, subContext);
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("done loading " + toString());
- }
+ super.doLoad(structWidget, jxpc);
}
/**
@@ -69,14 +63,10 @@
*/
public void doSave(Widget frmModel, JXPathContext jxpc) throws
BindingException {
Struct structWidget = (Struct)selectWidget(frmModel, this.widgetId);
- JXPathContext subContext =
jxpc.getRelativeContext(jxpc.getPointer(this.xpath));
- super.doSave(structWidget, subContext);
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("done saving " + toString());
- }
+ super.doSave(structWidget, jxpc);
}
public String toString() {
- return "StructJXPathBinding [widget=" + this.widgetId + ", xpath=" +
this.xpath + "]";
+ return "StructJXPathBinding [widget=" + this.widgetId + ", xpath=" +
getXPath() + "]";
}
}
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/Form.js
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/Form.js?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/Form.js
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/Form.js
Sun Feb 20 13:46:41 2005
@@ -115,9 +115,6 @@
throw "Forms do not support custom javascript validators anymore.
Declare your validators in the form model file.";
}
- // Fire any events pending from binding, etc.
- this.form.fireEvents();
-
do {
var k = cocoon.sendPageAndWait(uri, bizData);
if (result == null) result = k;
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v2/Form.js
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v2/Form.js?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v2/Form.js
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v2/Form.js
Sun Feb 20 13:46:41 2005
@@ -113,10 +113,6 @@
var FormContext = Packages.org.apache.cocoon.forms.FormContext;
// this is needed by the FormTemplateTransformer:
var javaWidget = this.formWidget_.unwrap();
-
- // Fire any events pending from binding, etc.
- javaWidget.fireEvents();
-
this.formWidget_["CocoonFormsInstance"] = javaWidget;
cocoon.request.setAttribute(Packages.org.apache.cocoon.forms.transformation.CFORMSKEY,
javaWidget);
var wk = cocoon.sendPageAndWait(uri, this.formWidget_, fun, ttl);
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v2/ScriptableWidget.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v2/ScriptableWidget.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v2/ScriptableWidget.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v2/ScriptableWidget.java
Sun Feb 20 13:46:41 2005
@@ -683,12 +683,6 @@
}
}
- public void jsFunction_removeSelectionList() {
- if (delegate instanceof SelectableWidget) {
- ((SelectableWidget)delegate).removeSelectionList();
- }
- }
-
static final Object[] WIDGET_CLASS_MAP = {
Form.class, "Form",
Field.class, "Field",
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v3/Form.js
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v3/Form.js?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v3/Form.js
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v3/Form.js
Sun Feb 20 13:46:41 2005
@@ -83,9 +83,6 @@
viewData = new Object();
viewData["CocoonFormsInstance"] = this.form;
- // Fire any events pending from binding, etc.
- this.form.fireEvents();
-
var webCont;
var finished = false;
while (!finished) {
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v3/ScriptableWidget.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v3/ScriptableWidget.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v3/ScriptableWidget.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/v3/ScriptableWidget.java
Sun Feb 20 13:46:41 2005
@@ -390,7 +390,7 @@
delegate.setValue(value);
} else if (delegate instanceof BooleanField) {
BooleanField field = (BooleanField)delegate;
- field.setValue(new Boolean(Context.toBoolean(value)));
+ field.setValue(Boolean.valueOf(Context.toBoolean(value)));
} else if (delegate instanceof Repeater) {
Repeater repeater = (Repeater)delegate;
if (value instanceof NativeArray) {
@@ -752,12 +752,6 @@
}
}
}
- }
-
- public void jsFunction_removeSelectionList() {
- if (delegate instanceof SelectableWidget) {
- ((SelectableWidget)delegate).removeSelectionList();
- }
}
static final Object[] WIDGET_CLASS_MAP = {
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/AbstractWidget.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/AbstractWidget.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/AbstractWidget.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/AbstractWidget.java
Sun Feb 20 13:46:41 2005
@@ -45,16 +45,6 @@
private Widget parent;
/**
- * Process request parameters for this widget?
- */
- private boolean processMyRequests = true;
-
- /**
- * Process request parameters for children of this widget?
- */
- private boolean processChildRequests = true;
-
- /**
* The widget's own state
*/
private WidgetState state = WidgetState.ACTIVE;
@@ -241,31 +231,6 @@
public void setValue(Object object) {
throw new RuntimeException("Cannot set the value of widget " +
getRequestParameterName());
- }
-
- /**
- * Controls whether [EMAIL PROTECTED] #readFromRequest(FormContext
formContext)}
- * processes the request parameter(s) for this widget and its children.
- */
- public void setProcessRequests(boolean processRequests) {
- this.processMyRequests = processRequests;
- this.processChildRequests = processRequests;
- }
-
- /**
- * Controls whether [EMAIL PROTECTED] #readFromRequest(FormContext
formContext)}
- * processes the request parameter(s) for this widget.
- */
- public void setProcessMyRequests(boolean processMyRequests) {
- this.processMyRequests = processMyRequests;
- }
-
- /**
- * Controls whether [EMAIL PROTECTED] #readFromRequest(FormContext
formContext)}
- * processes the request parameter(s) for children of this widget.
- */
- public void setProcessChildRequests(boolean processChildRequests) {
- this.processChildRequests = processChildRequests;
}
public boolean isRequired() {
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/BooleanField.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/BooleanField.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/BooleanField.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/BooleanField.java
Sun Feb 20 13:46:41 2005
@@ -69,12 +69,8 @@
validationError = null;
Object oldValue = value;
String param =
formContext.getRequest().getParameter(getRequestParameterName());
- if (param != null && param.equalsIgnoreCase("true"))
- value = Boolean.TRUE;
- else
- value = Boolean.FALSE;
-
- if (value != oldValue) {
+ value = Boolean.valueOf(param);
+ if (!value.equals(oldValue)) {
getForm().addWidgetEvent(new ValueChangedEvent(this, oldValue,
value));
}
}
@@ -148,7 +144,7 @@
Object oldValue = value;
value = (Boolean)object;
- if (value != oldValue) {
+ if (!value.equals(oldValue)) {
getForm().addWidgetEvent(new ValueChangedEvent(this, oldValue,
value));
}
}
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java
Sun Feb 20 13:46:41 2005
@@ -453,14 +453,6 @@
setSelectionList(getFieldDefinition().buildSelectionListFromModel(model,
valuePath, labelPath));
}
- /**
- * Delete this field's selection list.
- */
- public void removeSelectionList() {
- this.selectionList = null;
- getFieldDefinition().setSelectionList(null);
- }
-
public Datatype getDatatype() {
return getFieldDefinition().getDatatype();
}
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Form.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Form.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Form.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Form.java
Sun Feb 20 13:46:41 2005
@@ -86,7 +86,7 @@
* Fire the events that have been queued.
* Note that event handling can fire new events.
*/
- public void fireEvents() {
+ private void fireEvents() {
if (this.events != null) {
CursorableLinkedList.Cursor cursor = this.events.cursor();
while(cursor.hasNext()) {
@@ -248,7 +248,7 @@
* @param redisplayForm indicates if the form should be redisplayed to the
user.
*/
public void endProcessing(boolean redisplayForm) {
- this.endProcessing = new Boolean(!redisplayForm);
+ this.endProcessing = Boolean.valueOf(!redisplayForm);
}
/**
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/MultiValueField.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/MultiValueField.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/MultiValueField.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/MultiValueField.java
Sun Feb 20 13:46:41 2005
@@ -213,16 +213,6 @@
}
/**
- * Delete this field's selection list.
- */
- public void removeSelectionList() {
- this.selectionList = null;
- if(this.definition != null) {
- this.definition.setSelectionList(null);
- }
- }
-
- /**
* Set this field's selection list using values from an in-memory
* object. The <code>object</code> parameter should point to a collection
* (Java collection or array, or Javascript array) of objects. Each object
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/SelectableWidget.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/SelectableWidget.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/SelectableWidget.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/SelectableWidget.java
Sun Feb 20 13:46:41 2005
@@ -28,6 +28,4 @@
public void setSelectionList(String uri);
public void setSelectionList(Object model, String valuePath, String
labelPath);
-
- public void removeSelectionList();
}
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Widget.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Widget.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Widget.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Widget.java
Sun Feb 20 13:46:41 2005
@@ -146,24 +146,6 @@
public Widget lookupWidget(String path);
/**
- * Controls whether [EMAIL PROTECTED] #readFromRequest(FormContext
formContext)}
- * processes the request parameter(s) for this widget and its children.
- */
- public void setProcessRequests(boolean processRequests);
-
- /**
- * Controls whether [EMAIL PROTECTED] #readFromRequest(FormContext
formContext)}
- * processes the request parameter(s) for this widget.
- */
- public void setProcessMyRequests(boolean processMyRequests);
-
- /**
- * Controls whether [EMAIL PROTECTED] #readFromRequest(FormContext
formContext)}
- * processes the request parameter(s) for children of this widget.
- */
- public void setProcessChildRequests(boolean processChildRequests);
-
- /**
* Lets this widget read its data from a request. At this point the Widget
* may try to convert the request parameter to its native datatype (if it
* is not a string), but it should not yet generate any validation errors.
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/transformation/EffectPipe.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/transformation/EffectPipe.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/transformation/EffectPipe.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/transformation/EffectPipe.java
Sun Feb 20 13:46:41 2005
@@ -59,7 +59,7 @@
protected static final int EVENT_END_CDATA =17;
protected static final int EVENT_COMMENT =18;
- protected class Element {
+ protected static class Element {
public final String prefix;
public final String uri;
public final String loc;
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/transformation/EffectWidgetReplacingPipe.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/transformation/EffectWidgetReplacingPipe.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/transformation/EffectWidgetReplacingPipe.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/transformation/EffectWidgetReplacingPipe.java
Sun Feb 20 13:46:41 2005
@@ -610,13 +610,19 @@
if (isVisible(widget)) {
contextWidgets.addFirst(contextWidget);
contextWidget = widget;
- return this;
+ //Don't output fi:struct
+ // out.element(Constants.INSTANCE_PREFIX,
Constants.INSTANCE_NS, "union");
+ // out.attributes();
+ // out.startElement();
+ return this;
} else {
return nullHandler;
}
case EVENT_ELEMENT:
return nestedTemplate();
case EVENT_END_ELEMENT:
+ // don't output fi:struct
+ // out.endElement();
contextWidget = (Widget)contextWidgets.removeFirst();
return this;
default:
@@ -822,7 +828,7 @@
case EVENT_START_ELEMENT:
// Insert the continuation id
// FIXME(SW) we could avoid costly JXPath evaluation if we had
the objectmodel here.
- Object idObj =
pipeContext.evaluateExpression("$continuation/id");
+ Object idObj =
pipeContext.evaluateExpression("$cocoon/continuation/id");
if (idObj == null) {
throwSAXException("No continuation found");
}
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/util/DomHelper.java
Sun Feb 20 13:46:41 2005
@@ -17,6 +17,11 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
@@ -33,9 +38,11 @@
import org.apache.xerces.xni.XMLAttributes;
import org.apache.xerces.xni.XMLLocator;
import org.apache.xerces.xni.XNIException;
+import org.w3c.dom.Attr;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
@@ -58,6 +65,8 @@
*/
public class DomHelper {
+ public static final String XMLNS_URI = "http://www.w3.org/2000/xmlns/";
+
/**
* Retrieves the location of an element node in the source file from which
* the Document was created. This will only work for Document's created
@@ -118,8 +127,7 @@
* Returns all Element children of an Element that belong to the given
* namespace.
*/
- public static Element[] getChildElements(Element element,
- String namespace) {
+ public static Element[] getChildElements(Element element, String
namespace) {
ArrayList elements = new ArrayList();
NodeList nodeList = element.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
@@ -128,7 +136,7 @@
&& namespace.equals(node.getNamespaceURI()))
elements.add(node);
}
- return (Element[])elements.toArray(new Element[0]);
+ return (Element[])elements.toArray(new Element[elements.size()]);
}
/**
@@ -147,7 +155,7 @@
elements.add(node);
}
}
- return (Element[])elements.toArray(new Element[0]);
+ return (Element[])elements.toArray(new Element[elements.size()]);
}
/**
@@ -390,5 +398,54 @@
node.setUserData("location", location, null);
}
}
+ }
+
+ public static Map getLocalNSDeclarations(Element elm)
+ {
+ return addLocalNSDeclarations(elm, null);
+ }
+
+ private static Map addLocalNSDeclarations(Element elm, Map nsDeclarations)
+ {
+ NamedNodeMap atts = elm.getAttributes();
+ int attsSize = atts.getLength();
+
+ for (int i = 0; i < attsSize; i++)
+ {
+ Attr attr = (Attr)atts.item(i);
+ if (XMLNS_URI.equals(attr.getNamespaceURI()))
+ {
+ String nsUri = attr.getValue();
+ String pfx = attr.getLocalName();
+ if (nsDeclarations == null)
+ nsDeclarations = new HashMap();
+ nsDeclarations.put(nsUri, pfx);
+ }
+ }
+ return nsDeclarations; }
+
+ public static Map getInheritedNSDeclarations(Element elm)
+ {
+ List ancestorsAndSelf = new LinkedList();
+ Element current = elm;
+ while (current != null)
+ {
+ ancestorsAndSelf.add(current);
+ Node parent = current.getParentNode();
+ if (parent.getNodeType() == Node.ELEMENT_NODE)
+ current = (Element)parent;
+ else
+ current = null;
+ }
+
+ Map nsDeclarations = null;
+ ListIterator iter =
ancestorsAndSelf.listIterator(ancestorsAndSelf.size());
+ while (iter.hasPrevious())
+ {
+ Element element = (Element) iter.previous();
+ nsDeclarations = addLocalNSDeclarations(element, nsDeclarations);
+ }
+
+ return nsDeclarations;
}
}
Modified:
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/util/XMLAdapter.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/util/XMLAdapter.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/util/XMLAdapter.java
(original)
+++
cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/util/XMLAdapter.java
Sun Feb 20 13:46:41 2005
@@ -307,7 +307,7 @@
// FIXME: BooleanField should implement DataWidget, which
// would make this case unnecessary
if (widget.getValue() != null) {
- data((Boolean)widget.getValue() == Boolean.TRUE ? "true" :
"false");
+ data(widget.getValue().toString());
}
} else if (widget instanceof MultiValueField) {
Datatype datatype = ((MultiValueField)widget).getDatatype();
Added: cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-bind.xml
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-bind.xml?view=auto&rev=154564
==============================================================================
--- cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-bind.xml
(added)
+++ cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-bind.xml
Sun Feb 20 13:46:41 2005
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ 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.
+-->
+
+<fb:context xmlns:fb="http://apache.org/cocoon/forms/1.0#binding"
+ xmlns:fd="http://apache.org/cocoon/forms/1.0#definition"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ path="/" >
+
+<!--
+ | This file binds form data to a namespaced XML
+ -->
+
+ <fb:context path="h:html/h:head" >
+ <fb:value id="title" path="html:title" lenient="true" />
+ </fb:context>
+
+ <fb:context path="x:stylesheet"
xmlns:x="http://www.w3.org/1999/XSL/Transform">
+ <fb:value id="template" path="x:template/@name" lenient="true"/>
+ </fb:context>
+
+ <fb:context path="." xmlns:f="http://www.w3.org/1999/XSL/Format">
+ <fb:value id="flowname" path="f:root/f:page-sequence/f:flow/@flow-name"
lenient="true"/>
+ </fb:context>
+
+</fb:context>
Propchange:
cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-bind.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-bind.xml
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-data.xml
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-data.xml?view=auto&rev=154564
==============================================================================
--- cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-data.xml
(added)
+++ cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-data.xml
Sun Feb 20 13:46:41 2005
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ 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.
+-->
+<test>
+ <html:html xmlns:html="http://www.w3.org/1999/xhtml">
+ <html:head>
+ <html:title>some title</html:title>
+ </html:head>
+ </html:html>
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:template name="template-name"/>
+ </xsl:stylesheet>
+ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+ <fo:page-sequence><fo:flow flow-name="flow-name" /></fo:page-sequence>
+ </fo:root>
+</test>
Propchange:
cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-data.xml
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-def.xml
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-def.xml?view=auto&rev=154564
==============================================================================
--- cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-def.xml
(added)
+++ cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-def.xml
Sun Feb 20 13:46:41 2005
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!--
+ Copyright 1999-2004 The Apache Software Foundation
+
+ 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.
+-->
+<fd:form
+ xmlns:fd="http://apache.org/cocoon/forms/1.0#definition"
+ xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
+
+ <fd:widgets>
+ <fd:field id="title">
+ <fd:label>Enter an HTML title</fd:label>
+ <fd:datatype base="string" />
+ </fd:field>
+ <fd:field id="template">
+ <fd:label>Enter an XSL template name</fd:label>
+ <fd:datatype base="string" />
+ </fd:field>
+ <fd:field id="flowname">
+ <fd:label>And now a XSL:FO flow name</fd:label>
+ <fd:datatype base="string" />
+ </fd:field>
+ </fd:widgets>
+</fd:form>
Propchange:
cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-def.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cocoon/trunk/src/blocks/forms/samples/forms/binding/06namespaced-def.xml
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/src/blocks/forms/samples/forms/registration_template.xml
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/samples/forms/registration_template.xml?view=diff&r1=154563&r2=154564
==============================================================================
--- cocoon/trunk/src/blocks/forms/samples/forms/registration_template.xml
(original)
+++ cocoon/trunk/src/blocks/forms/samples/forms/registration_template.xml Sun
Feb 20 13:46:41 2005
@@ -18,7 +18,8 @@
xmlns:fi="http://apache.org/cocoon/forms/1.0#instance">
<title>Registration</title>
<content>
- <ft:form-template action="#{$cocoon/continuation/id}.continue"
method="POST">
+ <ft:form-template action="continue" method="POST">
+ <ft:continuation-id/>
<fi:group>
<fi:styling layout="columns"/>
<fi:items>
Modified: cocoon/trunk/src/blocks/forms/samples/swan/forms/xreport_model.xml
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/samples/swan/forms/xreport_model.xml?view=diff&r1=154563&r2=154564
==============================================================================
--- cocoon/trunk/src/blocks/forms/samples/swan/forms/xreport_model.xml
(original)
+++ cocoon/trunk/src/blocks/forms/samples/swan/forms/xreport_model.xml Sun Feb
20 13:46:41 2005
@@ -82,11 +82,11 @@
var union = widget.lookupWidget("../union");
var type = widget.lookupWidget("../type-selector");
if(widget.getValue().equals("edit")) {
- union.setProcessRequests(true);
- type.setProcessRequests(true);
+
union.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.ACTIVE);
+
type.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.ACTIVE);
} else {
- union.setProcessRequests(false);
- type.setProcessRequests(false);
+
union.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);
+
type.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);
}
</javascript>
</fd:on-value-changed>
Modified: cocoon/trunk/src/blocks/forms/samples/welcome.xml
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/samples/welcome.xml?view=diff&r1=154563&r2=154564
==============================================================================
--- cocoon/trunk/src/blocks/forms/samples/welcome.xml (original)
+++ cocoon/trunk/src/blocks/forms/samples/welcome.xml Sun Feb 20 13:46:41 2005
@@ -37,6 +37,7 @@
<sample name="Various (Flowscript)" href="form1.flow">The same sample as
above using Flowscript.</sample>
<sample name="Registration" href="registration">A simple registration
form.</sample>
<sample name="Car selector" href="carselector">Illustrates programmatically
changing selectionlists.</sample>
+ <sample name="XHR Car selector" href="xhr_carselector">Same sample, using
XmlHttpRequest to reduce client/server roundtrips.</sample>
<sample name="Country selector" href="countryselector">Illustrates
programmatically changing flow-jxpath selectionlists.</sample>
<sample name="Upload" href="upload">Shows an upload widget used with
Flowscript</sample>
<sample name="Form Model GUI" href="form_model_gui.flow">Illustrates the use
of Class, New, Struct, and Union.</sample>
@@ -60,6 +61,7 @@
<sample name="3. Aggregate Binding"
href="binding-03aggregate.flow">fb:aggregate</sample>
<sample name="4. Heavy Form" href="binding-04heavy-XML.flow">Form with lots
of select boxes - test memory utilization, performance</sample>
<sample name="5. Custom Bindings using Java or Javascript"
href="binding-05custom.flow">fb:javascript and fb:custom</sample>
+ <sample name="6. XML binding using namespaces"
href="binding-06namespaced-XML.flow">Using XML binding with complex namespaced
XML</sample>
<!-- TODO: provide more tutorial samples like these:
<sample name="6. MultiValue/Repeater Binding"
href="binding-03multi.flow">fb:multi-value</sample>
<sample name="7. Repeater Binding"
href="binding-06repeater.flow">fb:repeater</sample>
Modified:
cocoon/trunk/src/blocks/forms/test/org/apache/cocoon/forms/datatype/convertor/EnumConvertorBuilderTestCase.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/forms/test/org/apache/cocoon/forms/datatype/convertor/EnumConvertorBuilderTestCase.java?view=diff&r1=154563&r2=154564
==============================================================================
---
cocoon/trunk/src/blocks/forms/test/org/apache/cocoon/forms/datatype/convertor/EnumConvertorBuilderTestCase.java
(original)
+++
cocoon/trunk/src/blocks/forms/test/org/apache/cocoon/forms/datatype/convertor/EnumConvertorBuilderTestCase.java
Sun Feb 20 13:46:41 2005
@@ -39,16 +39,12 @@
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
+ super.setUp();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
parser = factory.newDocumentBuilder();
}
- /* (non-Javadoc)
- * @see junit.framework.TestCase#tearDown()
- */
- protected void tearDown() throws Exception {
- }
public EnumConvertorBuilderTestCase(String name) {
super(name);