You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by iv...@apache.org on 2002/07/04 22:57:48 UTC
cvs commit: xml-cocoon2/src/webapp/samples/xmlform/wizard confirm.xml deployment.xml end.xml start.xml system.xml userIdentity.xml
ivelin 2002/07/04 13:57:48
Modified: src/java/org/apache/cocoon/acting AbstractXMLFormAction.java
src/java/org/apache/cocoon/components/xmlform Form.java
src/java/org/apache/cocoon/samples/xmlform WizardAction.java
src/webapp/WEB-INF/db cocoondb.backup cocoondb.data
cocoondb.properties
src/webapp/samples samples.xml
src/webapp/samples/xmlform sitemap.xmap
src/webapp/samples/xmlform/stylesheets wizard2html.xsl
src/webapp/samples/xmlform/wizard confirm.xml deployment.xml
end.xml start.xml system.xml userIdentity.xml
Added: src/java/org/apache/cocoon/generation
WebServiceProxyGenerator.java
src/webapp/samples/webserviceproxy README.txt sitemap.xmap
Log:
WebServiceProxyGenerator combined with the XMLForm framework and XSLT, allows vendors to share interactive content with little effort.
Revision Changes Path
1.3 +7 -7 xml-cocoon2/src/java/org/apache/cocoon/acting/AbstractXMLFormAction.java
Index: AbstractXMLFormAction.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/acting/AbstractXMLFormAction.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractXMLFormAction.java 13 Jun 2002 09:28:14 -0000 1.2
+++ AbstractXMLFormAction.java 4 Jul 2002 20:57:47 -0000 1.3
@@ -196,15 +196,15 @@
// find and save the action command
findCommand();
- // ensure that there is a form available
- // through the rest of the flow
- Form form = getForm();
-
// call the subclass prepare()
// give it a chance to get ready for action
Map prepareResult = prepare();
if ( prepareResult != null ) return prepareResult;
+ // ensure that there is a form available
+ // through the rest of the flow
+ Form form = getForm();
+
// populate form with request parameters
// population is automatically followed by validation by default.
// If this is not the desired behaviour, the Form class can be subclassed
1.4 +7 -5 xml-cocoon2/src/java/org/apache/cocoon/components/xmlform/Form.java
Index: Form.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/xmlform/Form.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Form.java 13 Jun 2002 02:35:04 -0000 1.3
+++ Form.java 4 Jul 2002 20:57:47 -0000 1.4
@@ -505,7 +505,9 @@
*/
protected boolean filterDefaultRequestParameter( String paramName )
{
- if ( paramName.startsWith ( Constants.ACTION_PARAM_PREFIX ) )
+ if ( paramName.startsWith ( Constants.ACTION_PARAM_PREFIX )
+ || paramName.startsWith ( Constants.VIEW_PARAM )
+ )
return true;
if ( paramName.equals ( FORM_VIEW_PARAM ) )
return true;
1.1 xml-cocoon2/src/java/org/apache/cocoon/generation/WebServiceProxyGenerator.java
Index: WebServiceProxyGenerator.java
===================================================================
/*
============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The names "Apache Cocoon" and "Apache Software Foundation" must not be
used to endorse or promote products derived from this software without
prior written permission. For written permission, please contact
apache@apache.org.
5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
Stefano Mazzocchi <st...@apache.org>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.cocoon.generation;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.ResourceNotFoundException;
import org.apache.cocoon.caching.CacheableProcessingComponent;
import org.apache.cocoon.components.source.SourceUtil;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.xml.dom.DOMStreamer;
import org.apache.cocoon.xml.XMLUtils;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceException;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.excalibur.xml.Parser;
import org.apache.avalon.framework.component.ComponentException;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import org.xml.sax.InputSource;
// HttpClient imports
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpMultiClient;
import org.apache.commons.httpclient.HttpConnection;
import org.apache.commons.httpclient.HttpState;
import org.apache.commons.httpclient.methods.UrlGetMethod;
import org.apache.commons.httpclient.NameValuePair;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.sax.SAXResult;
import java.io.BufferedInputStream;
import java.io.StringWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.StringReader;
import java.util.Enumeration;
import java.util.Map;
import java.util.ArrayList;
/**
*
* The WebServiceProxyGenerator is intended to:
*
* 1) Allow easy syndication of dynamic interactive content as a natural extension of the currently popular static content syndication with RSS.
*
* 2) Allow transparent routing of web service request through GET, POST, SOAP-RPC and SOAP-DOC binding methods.
*
* 3) Allow almost full control through sitemap configuration.
*
* 4) Allow use of Cocoon components for content formatting, aggregation and styling through a tight integration with the Cocoon sitemap.
*
* 5) Require 0 (zero) lines of Java or other business logic code in most cases.
*
* 6) Be generic and flexible enough to allow custom extensions for advanced and non-typical uses.
*
* 7) Support sessions, authentication, http 1.1, https, request manipulation, redirects following, connection pooling, and others.
*
* 8) Use the Jakarta HttpClient library which provides many sophisticated features for HTTP connections.
*
* 9) (TBD) Use Axis for SOAP-RPC and SOAP-DOC bindings.
*
*
* @author <a href="mailto:ivelin@apache.org">Ivelin Ivanov</a>, June 30, 2002
*/
public class WebServiceProxyGenerator extends ComposerGenerator
{
/**
* Setup the WSP generator.
*
*/
public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
throws ProcessingException, SAXException, IOException
{
super.setup(resolver, objectModel, src, par);
try {
Source inputSource = resolver.resolveURI(super.source);
this.source = inputSource.getSystemId();
} catch (SourceException se) {
throw SourceUtil.handle("Unable to resolve " + super.source, se);
}
httpClient = getHttpClient();
}
/**
* Recycle this component.
* All instance variables are set to <code>null</code>.
*/
public void recycle()
{
httpClient = null;
super.recycle();
}
/**
* Generate XML data.
*/
public void generate()
throws IOException, SAXException, ProcessingException
{
Parser parser = null;
try
{
if (this.getLogger().isDebugEnabled()) {
this.getLogger().debug("processing Web Service request: " + this.source );
}
// forward request and bring response back
String remoteResponseXml = fetch();
InputSource inputSource = new InputSource(new StringReader( remoteResponseXml ));
if (getLogger().isDebugEnabled()) {
getLogger().debug( "processing Web Service Response " + remoteResponseXml );
}
parser = (Parser)this.manager.lookup(Parser.ROLE);
parser.parse(inputSource, super.xmlConsumer);
}
catch (ComponentException ex)
{
throw new ProcessingException( "WebServiceProxyGenerator.generate() error", ex);
}
finally
{
this.manager.release(parser);
}
} // generate
/**
*
* Forward the request and return the response
*
* Will use an UrlGetMethod to benefit the cacheing mechanism
* and intermediate proxy servers.
* It is potentially possible that the size of the request
* may grow beyond a certain limit for GET and it will require POST instead.
*
* @return String XML response
*
*/
public String fetch() throws ProcessingException
{
try
{
UrlGetMethod method = new UrlGetMethod( this.source );
method.setUseDisk(false);
// this should probably be exposed as a sitemap option
method.setFollowRedirects( true );
// copy request parameters and merge with URL parameters
Request request = ObjectModelHelper.getRequest( objectModel );
ArrayList paramList = new ArrayList();
Enumeration enum = request.getParameterNames();
while ( enum.hasMoreElements() )
{
String pname = (String)enum.nextElement();
String[] paramsForName = request.getParameterValues( pname );
for (int i = 0; i < paramsForName.length; i++)
{
NameValuePair pair =
new NameValuePair( pname, paramsForName[i] );
paramList.add( pair );
}
}
if ( paramList.size() > 0 )
{
NameValuePair[] allSubmitParams =
new NameValuePair[ paramList.size() ];
paramList.toArray( allSubmitParams );
String urlQryString = method.getQueryString();
// use HttpClient encoding routines
method.setQueryString( allSubmitParams );
String submitQryString = method.getQueryString();
// set final web service query string
method.setQueryString( urlQryString + "&" + submitQryString );
} // if there are submit parameters
httpClient.executeMethod( method );
String ret = method.getResponseBodyAsString();
int startOfXML = ret.indexOf("<?xml");
if (startOfXML == -1)
{ // No xml?!
throw new ProcessingException("Invalid response - no xml");
}
ret.substring(startOfXML);
return ret;
} catch (Exception ex)
{
throw new ProcessingException("Error invoking remote service: " + ex,
ex);
}
} // fetch
/**
* Create once per client session and
* consequetively return an HttpMultiClient
*
*/
protected HttpMultiClient getHttpClient()
{
Request request = ObjectModelHelper.getRequest( objectModel );
Session session = request.getSession( true );
HttpMultiClient httpClient = null;
if (session != null)
{
httpClient = (HttpMultiClient) session.getAttribute( HTTP_CLIENT );
}
if (httpClient == null)
{
httpClient = new HttpMultiClient();
if (System.getProperty("http.proxyHost") != null)
{
String proxyHost = System.getProperty("http.proxyHost");
int proxyPort = Integer.parseInt(System.getProperty("http.proxyPort"));
httpClient.setProxyHost( proxyHost );
httpClient.setProxyPort( proxyPort );
}
session.setAttribute( HTTP_CLIENT, httpClient );
}
return httpClient;
}
// private attributes section
private static String HTTP_CLIENT = "HTTP_CLIENT";
private HttpMultiClient httpClient;
} // class
1.5 +9 -9 xml-cocoon2/src/java/org/apache/cocoon/samples/xmlform/WizardAction.java
Index: WizardAction.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/samples/xmlform/WizardAction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- WizardAction.java 22 Jun 2002 20:33:06 -0000 1.4
+++ WizardAction.java 4 Jul 2002 20:57:47 -0000 1.5
@@ -126,12 +126,7 @@
// initial link
return page( VIEW_START );
}
- else if ( Form.lookup ( getObjectModel(), getFormId() ) == null)
- {
- // session expired
- return page( VIEW_START );
- }
- else if ( getCommand().equals( CMD_START ) )
+ else if ( getCommand().equals( CMD_START ) )
{
// reset state by removing old form
// if one exists
@@ -140,6 +135,11 @@
return page( VIEW_USERID );
}
+ else if ( Form.lookup ( getObjectModel(), getFormId() ) == null)
+ {
+ // session expired
+ return page( VIEW_START );
+ }
// get ready for action
1.4 +2 -1 xml-cocoon2/src/webapp/WEB-INF/db/cocoondb.backup
<<Binary file>>
1.6 +1 -1 xml-cocoon2/src/webapp/WEB-INF/db/cocoondb.data
<<Binary file>>
1.7 +1 -1 xml-cocoon2/src/webapp/WEB-INF/db/cocoondb.properties
Index: cocoondb.properties
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/WEB-INF/db/cocoondb.properties,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- cocoondb.properties 2 Jun 2002 03:33:35 -0000 1.6
+++ cocoondb.properties 4 Jul 2002 20:57:47 -0000 1.7
@@ -1,4 +1,4 @@
#HSQL database
-#Sat Jun 01 22:28:33 CDT 2002
+#Thu Jul 04 15:52:54 CDT 2002
version=1.6
modified=yes
1.15 +9 -1 xml-cocoon2/src/webapp/samples/samples.xml
Index: samples.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/samples.xml,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- samples.xml 2 Jul 2002 14:22:11 -0000 1.14
+++ samples.xml 4 Jul 2002 20:57:47 -0000 1.15
@@ -82,6 +82,14 @@
</sample>
</group>
+ <group name="Remote Web Site Integration">
+ <sample name="Examples" href="webserviceproxy/">
+ Demonstrates how to embed One Web Site in Another.
+ Using the WebServiceProxyGenerator remote web app
+ integration is easy.
+ </sample>
+ </group>
+
<group name="Internationalization & Localization">
<sample name="i18n samples" href="i18n/">
Internationalization with Cocoon
1.1 xml-cocoon2/src/webapp/samples/webserviceproxy/README.txt
Index: README.txt
===================================================================
------------------------------------------------------------------------
The WebServiceProxyGenerator is intended to allow one
Web Site to Embed Another Web Site's presentation and logic.
It is an extension of the popular RSS based content syndication.
Requirements:
1) Easy syndication of interactive content.
2) Transparent routing of web service request through GET, POST, SOAP-RPC and SOAP-DOC binding methods.
3) Near complete control only through sitemap configuration.
4) Reuse of Cocoon components for content formatting, aggregation and styling through a tight integration with the Cocoon sitemap.
5) Require 0 (zero) lines of Java or other business logic code in most cases.
6) Be generic and flexible enough to allow custom extensions for advanced and non-typical uses.
7) Support sessions, authentication, http 1.1, https, request manipulation, redirects following, connection pooling, and others.
8) Use the Jakarta HttpClient library which provides many sophisticated features for HTTP connections.
9) (TBD) Use Axis for SOAP-RPC and SOAP-DOC bindings.
------------------------------------------------------------------------
Example I: Integration of the Amazon book search service in a Cocoon portal:
------------------------------------------------------------------------
pipeline:
---------
<map:pipeline>
<map:match pattern="amazon/searchform">
<map:generate src="AmazonForm.xml"/>
<map:transform src="AmazonForm2html.xsl"/>
<map:transform src="context://stylesheets/xmlform/xmlform2html.xsl"/>
<map:serialize type="html"/>
</map:act>
</map:match>
<map:match pattern="amazon/search*">
<map:generate type="wsproxy" src="http://rcm.amazon.com/e/cm{1}">
<!-- The WebSericeProxy generator takes 3 arguments: -->
<!-- 1) The URL of the targeted web service -->
<!-- 2) The binding method: GET, POST, SOAP-RPC or SOAP-DOC -->
<!-- 3) Optionally, name of the session to the remote service, which allows scoping and grouping between different sitemap sections. -->
<!-- Only 1) is required. 2) and 3) are optional and should not be used for most applications -->
<map:parameter name="wsproxy-method" value="GET"/>
<map:parameter name="wsproxy-session" value="myAmazonSession"/>
</map:generate>
<map:transform src="amazonform2html.xsl"/>
<map:transform src="context://stylesheets/xmlform/xmlform2html.xsl"/>
<map:serialize type="html"/>
</map:act>
</map:match>
</map:pipeline>
AmazonForm.xml:
---------------
<?xml version="1.0" ?>
<document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002">
<xf:form id="form-amazon" view="search" action="amazon/search?t=myAmazonId-02-20&l=st1&mode=books&p=102&o=1&f=xml">
<xf:caption>Amazon book search by keyword</xf:caption>
<xf:textbox ref="search">
<xf:caption>Keywords</xf:caption>
</xf:textbox>
<xf:submit id="submit" class="button">
<xf:caption>Submit</xf:caption>
</xf:submit>
</xf:form>
</document>
------------------------------------------------------------------------
Example II: Even more interesting.
Integration with an interactive web service - the Cocoon FeedBack Wizard.
Notice that it is actually simpler to integrate with an interactive
service then a "single call" based one, because WebServiceProxy supports sessions !
------------------------------------------------------------------------
<map:pipeline>
<map:match pattern="RemoteWizard/*">
<map:generate type="wsproxy" src="http://remotehost:8080/cocoon/samples/xmlform/{1}">
<map:parameter name="wsproxy-method" value="POST"/>
<map:parameter name="wsproxy-session" value="myFeedbackWizardSession"/>
</map:generate>
<map:transform src="myNewStyle-wizard2html.xsl"/>
<map:transform src="context://stylesheets/xmlform/xmlform2html.xsl"/>
<map:serialize type="html"/>
</map:match>
</map:pipeline>
------------------------------------------------------------------------
End of file
------------------------------------------------------------------------
--
-= Ivelin =-
1.1 xml-cocoon2/src/webapp/samples/webserviceproxy/sitemap.xmap
Index: sitemap.xmap
===================================================================
<?xml version="1.0"?>
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
<!-- =========================== Components ================================ -->
<map:components>
<map:generators default="file">
<map:generator name="wsproxy" src="org.apache.cocoon.generation.WebServiceProxyGenerator" logger="webapp.wsproxy"/>
</map:generators>
</map:components>
<!-- =========================== Views =================================== -->
<map:views>
<map:view name="xml" from-label="xml">
<map:serialize type="xml"/>
</map:view>
</map:views>
<!-- =========================== Pipelines ================================= -->
<map:pipelines>
<map:pipeline>
<!-- Interactive Web Application Syndication -->
<map:match pattern="*">
<map:generate type="wsproxy"
src="http://{header:host}/cocoon/samples/xmlform/wizard?cocoon-view=xml"
label="xml"/>
<map:transform src="stylesheets/newWizard2html.xsl" />
<map:transform src="context://samples/stylesheets/xmlform/xmlform2html.xsl"/>
<map:serialize type="html"/>
</map:match>
</map:pipeline>
</map:pipelines>
</map:sitemap>
<!-- end of file -->
1.6 +9 -6 xml-cocoon2/src/webapp/samples/xmlform/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/xmlform/sitemap.xmap,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- sitemap.xmap 4 Jul 2002 05:20:44 -0000 1.5
+++ sitemap.xmap 4 Jul 2002 20:57:47 -0000 1.6
@@ -27,11 +27,14 @@
transformers to understand each processing
stage better.
-->
- <map:views>
+<map:views>
<map:view name="debug" from-label="debug">
- <map:serialize type="xml"/>
+ <map:serialize type="xml"/>
</map:view>
- </map:views>
+ <map:view name="xml" from-label="xml">
+ <map:serialize type="xml"/>
+ </map:view>
+</map:views>
<!-- =========================== Resources ================================= -->
@@ -52,7 +55,7 @@
</map:match>
<!-- A non-trivial example - Feedback Wizard -->
- <map:match pattern="wizard.html">
+ <map:match pattern="wizard*">
<map:act type="WizardAction">
<!-- XMLForm parameters for the AbstractXMLFormAction -->
@@ -64,10 +67,10 @@
<!-- Content transformation logic -->
<map:generate src="wizard/{page}.xml"/>
- <map:transform type="xmlform" label="debug"/>
+ <map:transform type="xmlform" label="debug, xml"/>
<map:transform src="stylesheets/wizard2html.xsl" />
<map:transform src="context://samples/stylesheets/xmlform/xmlform2html.xsl"/>
- <map:serialize type="html"/>
+ <map:serialize type="xhtml"/>
</map:act>
</map:match>
</map:pipeline>
1.4 +1 -1 xml-cocoon2/src/webapp/samples/xmlform/stylesheets/wizard2html.xsl
Index: wizard2html.xsl
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/xmlform/stylesheets/wizard2html.xsl,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- wizard2html.xsl 8 Jun 2002 20:02:47 -0000 1.3
+++ wizard2html.xsl 4 Jul 2002 20:57:48 -0000 1.4
@@ -26,7 +26,7 @@
<![CDATA[
H1{font-family : sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;}
BODY{font-family : sans-serif,Arial,Tahoma;color : black;background-color : white;}
- B{color : white;background-color : #0086b2;}
+ B{color : white;background-color : yellow;}
HR{color : #0086b2;}
input { background-color: #FFFFFF; color: #000099; border: 1px solid #0000FF; }
table { background-color: #EEEEEE; color: #000099; font-size: x-small; border: 2px solid brown;}
1.3 +1 -1 xml-cocoon2/src/webapp/samples/xmlform/wizard/confirm.xml
Index: confirm.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/xmlform/wizard/confirm.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- confirm.xml 2 Jun 2002 03:33:35 -0000 1.2
+++ confirm.xml 4 Jul 2002 20:57:48 -0000 1.3
@@ -12,7 +12,7 @@
<document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002">
- <xf:form id="form-feedback" view="confirm" action="wizard.html">
+ <xf:form id="form-feedback" view="confirm" action="wizard">
<xf:caption>Confirm Input</xf:caption>
1.3 +1 -1 xml-cocoon2/src/webapp/samples/xmlform/wizard/deployment.xml
Index: deployment.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/xmlform/wizard/deployment.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- deployment.xml 30 Jun 2002 17:00:45 -0000 1.2
+++ deployment.xml 4 Jul 2002 20:57:48 -0000 1.3
@@ -13,7 +13,7 @@
<document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002">
- <xf:form id="form-feedback" view="deployment" action="wizard.html" method="GET">
+ <xf:form id="form-feedback" view="deployment" action="wizard" method="GET">
<xf:caption>Cocoon Deployment Information</xf:caption>
1.2 +1 -1 xml-cocoon2/src/webapp/samples/xmlform/wizard/end.xml
Index: end.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/xmlform/wizard/end.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- end.xml 20 May 2002 13:33:50 -0000 1.1
+++ end.xml 4 Jul 2002 20:57:48 -0000 1.2
@@ -21,7 +21,7 @@
<tr>
<td align="center">
<h3>
- <a href="wizard.html">Go to home page.</a>
+ <a href="wizard">Go to home page.</a>
</h3>
</td>
</tr>
1.3 +1 -1 xml-cocoon2/src/webapp/samples/xmlform/wizard/start.xml
Index: start.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/xmlform/wizard/start.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- start.xml 17 Jun 2002 09:11:07 -0000 1.2
+++ start.xml 4 Jul 2002 20:57:48 -0000 1.3
@@ -28,7 +28,7 @@
<tr>
<td align="center">
<h3>
- <a href="wizard.html?cocoon-action-start=true">
+ <a href="wizard?cocoon-action-start=true">
Start!
</a>
</h3>
1.4 +1 -1 xml-cocoon2/src/webapp/samples/xmlform/wizard/system.xml
Index: system.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/xmlform/wizard/system.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- system.xml 30 Jun 2002 17:00:45 -0000 1.3
+++ system.xml 4 Jul 2002 20:57:48 -0000 1.4
@@ -14,7 +14,7 @@
<document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002">
- <xf:form id="form-feedback" view="system" action="wizard.html" method="GET">
+ <xf:form id="form-feedback" view="system" action="wizard" method="GET">
<xf:caption>System Information</xf:caption>
1.4 +1 -1 xml-cocoon2/src/webapp/samples/xmlform/wizard/userIdentity.xml
Index: userIdentity.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/webapp/samples/xmlform/wizard/userIdentity.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- userIdentity.xml 30 Jun 2002 17:00:45 -0000 1.3
+++ userIdentity.xml 4 Jul 2002 20:57:48 -0000 1.4
@@ -13,7 +13,7 @@
<document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002">
- <xf:form id="form-feedback" view="userIdentity" action="wizard.html" method="GET">
+ <xf:form id="form-feedback" view="userIdentity" action="wizard" method="GET">
<xf:caption>Personal Information</xf:caption>
----------------------------------------------------------------------
In case of troubles, e-mail: webmaster@xml.apache.org
To unsubscribe, e-mail: cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org