danielf 2004/06/09 06:50:43
Modified: src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript
Form.js
src/blocks/forms/samples sitemap.xmap
src/blocks/forms/samples/flow binding_example.js
Log:
Added loadXML and saveXML to the api for XMLAdapter and updated the
smaples to reflect this.
Revision Changes Path
1.17 +58 -2
cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/Form.js
Index: Form.js
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/flow/javascript/Form.js,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- Form.js 8 Jun 2004 15:40:08 -0000 1.16
+++ Form.js 9 Jun 2004 13:50:43 -0000 1.17
@@ -31,6 +31,7 @@
var formMgr = null;
var resolver = null;
var src = null;
+ var xmlAdapter = null;
try {
formMgr =
cocoon.getComponent(Packages.org.apache.cocoon.forms.FormManager.ROLE);
resolver =
cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
@@ -184,7 +185,62 @@
}
Form.prototype.getXML = function() {
- return new Packages.org.apache.cocoon.forms.util.XMLAdapter(this.form);
+ if (this.xmlAdapter == null)
+ this.xmlAdapter = new
Packages.org.apache.cocoon.forms.util.XMLAdapter(this.form);
+ return this.xmlAdapter;
+}
+
+Form.prototype.loadXML = function(uri) {
+ var source = null;
+ var resolver = null;
+ try {
+ resolver =
cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
+ source = resolver.resolveURI(uri);
+
Packages.org.apache.cocoon.components.source.SourceUtil.toSAX(source,
this.getXML());
+ } finally {
+ if (source != null)
+ resolver.release(source);
+ cocoon.releaseComponent(resolver);
+ }
+}
+
+Form.prototype.saveXML = function(uri) {
+ var source = null;
+ var resolver = null;
+ var outputStream = null;
+ try {
+ resolver =
cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.ROLE);
+ source = resolver.resolveURI(uri);
+
+ var tf =
Packages.javax.xml.transform.TransformerFactory.newInstance();
+
+ if (source instanceof
Packages.org.apache.excalibur.source.ModifiableSource
+ &&
tf.getFeature(Packages.javax.xml.transform.sax.SAXTransformerFactory.FEATURE)) {
+
+ outputStream = source.getOutputStream();
+ var transformerHandler = tf.newTransformerHandler();
+ var transformer = transformerHandler.getTransformer();
+
transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.INDENT,
"true");
+
transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.METHOD,
"xml");
+ transformerHandler.setResult(new
Packages.javax.xml.transform.stream.StreamResult(outputStream));
+ this.getXML().toSAX(transformerHandler);
+ } else {
+ throw new Packages.org.apache.cocoon.ProcessingException("Cannot
write to source " + uri);
+ }
+
+ } finally {
+ if (source != null)
+ resolver.release(source);
+ cocoon.releaseComponent(resolver);
+ if (outputStream != null) {
+ try {
+ outputStream.flush();
+ outputStream.close();
+ } catch (error) {
+ cocoon.log.error("Could not flush/close outputstream: " +
error);
+ }
+ }
+ }
}
function handleForm() {
1.10 +0 -5 cocoon-2.1/src/blocks/forms/samples/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/samples/sitemap.xmap,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- sitemap.xmap 8 Jun 2004 15:40:08 -0000 1.9
+++ sitemap.xmap 9 Jun 2004 13:50:43 -0000 1.10
@@ -224,11 +224,6 @@
</map:call>
</map:match>
- <map:match pattern="forms/form2_simple_data.xml">
- <map:generate src="forms/form2_simple_data.xml"/>
- <map:serialize type="xml"/>
- </map:match>
-
<map:match pattern="form2-success-pipeline">
<map:generate src="forms/form2_data-result.xml"/>
<map:transform type="i18n">
1.4 +6 -8
cocoon-2.1/src/blocks/forms/samples/flow/binding_example.js
Index: binding_example.js
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/forms/samples/flow/binding_example.js,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- binding_example.js 8 Jun 2004 15:40:08 -0000 1.3
+++ binding_example.js 9 Jun 2004 13:50:43 -0000 1.4
@@ -51,19 +51,17 @@
// location of the file to be edited
var documentURI = cocoon.parameters["documentURI"];
- // get the XML adapter
- var xmlAdapter = form.getXML();
-
- // parse the document to a widget tree
- var pipeUtil =
-
cocoon.createObject(Packages.org.apache.cocoon.components.flow.util.PipelineUtil);
- pipeUtil.processToSAX(documentURI, null, xmlAdapter);
+ // populate the form
+ form.loadXML(documentURI);
// show the form to the user until it is validated successfully
form.showForm("form2-display-pipeline");
+ // save the content of the form to a file
+ form.saveXML(makeTargetURI(documentURI));
+
// show the xml generated from the form
- cocoon.sendPage("form2simpleXML-success-pipeline", xmlAdapter);
+ cocoon.sendPage("form2simpleXML-success-pipeline", form.getXML());
}
// bean variant of the binding sample