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
  
  
  

Reply via email to