You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by co...@apache.org on 2003/07/19 22:18:51 UTC

cvs commit: cocoon-2.1/src/blocks/jxforms/samples/view confirm.xml end.xml

coliver     2003/07/19 13:18:51

  Modified:    src/blocks/jxforms/java/org/apache/cocoon/components/jxforms/flow/javascript
                        JXForm.java
               src/blocks/jxforms/java/org/apache/cocoon/components/jxforms/xmlform
                        Form.java
               src/blocks/jxforms/samples/view confirm.xml end.xml
  Log:
  Fixed sample, updated to use latest FOM Java API, and fixed bug with jxpath coercions
  
  Revision  Changes    Path
  1.3       +18 -29    cocoon-2.1/src/blocks/jxforms/java/org/apache/cocoon/components/jxforms/flow/javascript/JXForm.java
  
  Index: JXForm.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/jxforms/java/org/apache/cocoon/components/jxforms/flow/javascript/JXForm.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JXForm.java	13 Jul 2003 03:36:12 -0000	1.2
  +++ JXForm.java	19 Jul 2003 20:18:49 -0000	1.3
  @@ -52,14 +52,13 @@
   import org.apache.cocoon.components.jxforms.validation.*;
   import org.apache.cocoon.components.jxforms.xmlform.*;
   import org.mozilla.javascript.*;
  +import org.mozilla.javascript.continuations.Continuation;
   import org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon;
  -import org.apache.cocoon.components.flow.ContinuationsManager;
  -import org.apache.cocoon.components.flow.WebContinuation;
  -import org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon.FOM_WebContinuation;
  +import org.apache.cocoon.components.flow.javascript.fom.FOM_WebContinuation;
   import org.apache.commons.jxpath.JXPathContext;
  -import org.apache.cocoon.environment.SourceResolver;
  -import org.apache.cocoon.components.source.SourceUtil;
  +import org.apache.excalibur.source.SourceResolver;
   import org.apache.excalibur.source.Source;
  +import org.apache.cocoon.components.source.SourceUtil;
   import org.xml.sax.InputSource;
   import java.util.Set;
   import java.util.List;
  @@ -121,8 +120,8 @@
           context = JXPathContext.newContext(model);
           form.setAutoValidate(false);
           if (validatorNamespace != null && validatorDocument != null) {
  -            SourceResolver resolver = 
  -                getCocoon().getEnvironment();
  +            SourceResolver resolver = (SourceResolver)
  +                getCocoon().getComponentManager().lookup(SourceResolver.ROLE);
               Source schemaSrc = resolver.resolveURI(validatorDocument);
               InputSource is = SourceUtil.getInputSource(schemaSrc);
               SchemaFactory schf = SchemaFactory.lookup(validatorNamespace);
  @@ -150,14 +149,10 @@
           FOM_Cocoon cocoon = getCocoon();
           FOM_WebContinuation fom_wk = 
               (FOM_WebContinuation)unwrap(continuation);
  -        String redUri = "cocoon://" + 
  -            cocoon.getEnvironment().getURIPrefix() + uri;
  -        cocoon.getInterpreter().forwardTo(getTopLevelScope(cocoon),
  -                                          cocoon,
  -                                          redUri, 
  -                                          unwrap(bizData),
  -                                          fom_wk == null ? null: fom_wk.getWebContinuation(),
  -                                          cocoon.getEnvironment());
  +        cocoon.forwardTo(uri,
  +                         unwrap(bizData),
  +                         fom_wk);
  +                         
       }
   
       public void jsFunction_addViolation(String xpath, String message) 
  @@ -183,8 +178,7 @@
                                                              Object cocoon_) 
           throws Exception {
           FOM_Cocoon cocoon = (FOM_Cocoon)unwrap(cocoon_);
  -        cocoon.getInterpreter().handleContinuation(kontId, null, 
  -                                                   cocoon.getEnvironment());
  +        cocoon.handleContinuation(kontId, null);
       }
   
       public Object jsFunction_iterate(String expr) {
  @@ -195,17 +189,11 @@
                                                                 Object lastContinuation,
                                                                 int ttl) 
           throws Exception {
  -        FOM_Cocoon cocoon = getCocoon();
  -        WebContinuation wk;
  -        ContinuationsManager contMgr;
  -        contMgr = (ContinuationsManager)
  -            cocoon.getComponentManager().lookup(ContinuationsManager.ROLE);
  +        Continuation kont = (Continuation)unwrap(k);
           FOM_WebContinuation fom_wk = 
               (FOM_WebContinuation)unwrap(lastContinuation);
  -        wk = contMgr.createWebContinuation(unwrap(k),
  -                                           (WebContinuation)(fom_wk == null ? null : fom_wk.getWebContinuation()),
  -                                           ttl);
  -        return cocoon.makeWebContinuation(wk);
  +        FOM_Cocoon cocoon = getCocoon();
  +        return cocoon.makeWebContinuation(kont, fom_wk, ttl);
       }
   
       // unwrap Wrapper's and convert undefined to null
  @@ -220,18 +208,19 @@
   
       public void jsFunction_removeForm() {
           FOM_Cocoon cocoon = getCocoon();
  -        Form.remove(cocoon.getEnvironment().getObjectModel(), id);
  +
  +        Form.remove(cocoon.getObjectModel(), id);
           cocoon.getRequest().removeAttribute(this.id);
       }
   
       public void jsFunction_saveForm() {
           FOM_Cocoon cocoon = getCocoon();
  -        form.save(cocoon.getEnvironment().getObjectModel(), "request");
  +        form.save(cocoon.getObjectModel(), "request");
       }
   
       public void jsFunction_populateForm() {
           FOM_Cocoon cocoon = getCocoon();
  -        form.populate(cocoon.getEnvironment().getObjectModel());
  +        form.populate(cocoon.getObjectModel());
       }
   
       public void jsFunction_validateForm(String view) {
  
  
  
  1.3       +11 -2     cocoon-2.1/src/blocks/jxforms/java/org/apache/cocoon/components/jxforms/xmlform/Form.java
  
  Index: Form.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/jxforms/java/org/apache/cocoon/components/jxforms/xmlform/Form.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Form.java	14 Jul 2003 21:05:48 -0000	1.2
  +++ Form.java	19 Jul 2003 20:18:49 -0000	1.3
  @@ -172,6 +172,15 @@
           if (model_==null) {
               throw new IllegalStateException("Form model not set");
           }
  +        // Convert empty string to null, before passing to jxpath
  +        // so proper xpath coercions occur for number and boolean
  +        if (value instanceof String &&
  +            ((String)value).length() == 0) {
  +            Object node = jxcontext_.getPointer(xpath).getNode();
  +            if (!(node instanceof String)) {
  +                value = null;
  +            }
  +        }
           jxcontext_.setValue(xpath, value);
       }
   
  @@ -243,7 +252,7 @@
                   Context.exit();
               }
           } else {
  -            jxcontext_.setValue(xpath, values[0]);
  +            setValue(xpath, values[0]);
           }
       }
   
  
  
  
  1.2       +1 -1      cocoon-2.1/src/blocks/jxforms/samples/view/confirm.xml
  
  Index: confirm.xml
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/jxforms/samples/view/confirm.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- confirm.xml	12 Jul 2003 19:22:31 -0000	1.1
  +++ confirm.xml	19 Jul 2003 20:18:50 -0000	1.2
  @@ -1,6 +1,6 @@
   <?xml version="1.0"?>
   <document xmlns:xf="http://apache.org/cocoon/jxforms/1.0">
  -  <xf:form id="form-feedback" view="confirm" action="" method="GET">
  +  <xf:form id="form-feedback" view="confirm">
       <xf:label>Confirm Input</xf:label>
       <!-- from page1 -->
       <xf:output ref="firstName">
  
  
  
  1.2       +1 -1      cocoon-2.1/src/blocks/jxforms/samples/view/end.xml
  
  Index: end.xml
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/jxforms/samples/view/end.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- end.xml	12 Jul 2003 19:22:31 -0000	1.1
  +++ end.xml	19 Jul 2003 20:18:50 -0000	1.2
  @@ -21,7 +21,7 @@
           <tr>
               <td align="center">
                   <h3>
  -                    <a href="../scratchpad">Go to home page.</a>
  +                    <a href="../">Go to home page.</a>
                   </h3>
               </td>
           </tr>