You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2006/07/02 22:12:52 UTC
svn commit: r418644 - in /tapestry/tapestry4/trunk:
examples/TimeTracker/src/context/ examples/TimeTracker/src/context/WEB-INF/
examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/
framework/src/descriptor/META-INF/ framework/src/java/or...
Author: jkuhnert
Date: Sun Jul 2 13:12:51 2006
New Revision: 418644
URL: http://svn.apache.org/viewvc?rev=418644&view=rev
Log:
Some initial dynamic field support.
Modified:
tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html
tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Home.properties
tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java
tapestry/tapestry4/trunk/framework/src/descriptor/META-INF/tapestry.services.xml
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/FormBehavior.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/engine/RequestCycle.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/error/StaleLinkExceptionPresenterImpl.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/AbstractFormComponent.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/IFormComponent.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/pages/StaleLink.html
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/pages/StaleSession.html
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/ResponseBuilder.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseContributorImpl.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/RequestCycleFactoryImpl.java
tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/wml/GoFormSupportImpl.java
tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/form/MockForm.java
tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/services/impl/DojoAjaxResponseBuilderTest.java
Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html Sun Jul 2 13:12:51 2006
@@ -47,18 +47,16 @@
</td>
</tr>
- <!--
- <tr>
- <td>
- <div class="field required">
- <input jwcid="emailInput@TextField" value="ognl:email"
- validators="validators:email,required" />
- </div>
- </td>
- </tr>
- -->
-
</table>
+
+ <div jwcid="feedbackBlock@Any">
+ <span jwcid="@If" condition="ognl:selectedProject">
+ <label jwcid="@FieldLabel" field="component:feedbackField" />
+ <input jwcid="feedbackField@TextField" displayName="message:feedback"
+ value="ognl:feedback" />
+ </span>
+ </div>
+
</fieldset>
</form>
Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Home.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Home.properties?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Home.properties (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Home.properties Sun Jul 2 13:12:51 2006
@@ -8,3 +8,5 @@
task.end.time=End
task.duration=Duration
task.description=Description
+
+feedback=Feedback
Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java Sun Jul 2 13:12:51 2006
@@ -15,8 +15,6 @@
import java.util.Date;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.annotations.Component;
import org.apache.tapestry.annotations.EventListener;
@@ -42,7 +40,6 @@
*/
public abstract class TaskEntryPage extends BasePage
{
- private static final Log _log = LogFactory.getLog(TaskEntryPage.class);
@Component(type = "Autocompleter", id = "projectChoose",
bindings = { "model=projectModel", "value=selectedProject",
@@ -61,7 +58,7 @@
@Component(type = "DropdownDatePicker", id = "datePicker",
bindings = {"value=date",
"displayName=message:task.start.date",
- "validators=validators:required,maxDate=05/29/2006"})
+ "validators=validators:required"})
public abstract DropdownDatePicker getDatePicker();
public abstract Date getDate();
@@ -87,7 +84,7 @@
@InjectObject("service:timetracker.dao.TaskDao")
public abstract TaskDao getTaskDao();
- public abstract String getEmail();
+ public abstract String getFeedback();
/**
* Selection model for projects.
@@ -106,8 +103,8 @@
submitForm = "taskForm")
public void projectSelected(IRequestCycle cycle)
{
- _log.debug("projectSelected() " + getSelectedProject());
cycle.getResponseBuilder().updateComponent("projectDescription");
+ cycle.getResponseBuilder().updateComponent("feedbackBlock");
}
/**
Modified: tapestry/tapestry4/trunk/framework/src/descriptor/META-INF/tapestry.services.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/descriptor/META-INF/tapestry.services.xml?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/descriptor/META-INF/tapestry.services.xml (original)
+++ tapestry/tapestry4/trunk/framework/src/descriptor/META-INF/tapestry.services.xml Sun Jul 2 13:12:51 2006
@@ -247,6 +247,8 @@
<set-object property="webResponse" value="infrastructure:response"/>
<set-object property="webRequest" value="infrastructure:request"/>
<set-object property="exceptionPageName" value="infrastructure:exceptionPageName"/>
+ <set-object property="staleSessionPageName" value="infrastructure:staleSessionPageName" />
+ <set-object property="staleLinkPageName" value="infrastructure:staleLinkPageName" />
</construct>
</invoke-factory>
</service-point>
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/FormBehavior.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/FormBehavior.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/FormBehavior.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/FormBehavior.java Sun Jul 2 13:12:51 2006
@@ -168,4 +168,29 @@
* @return {@link JSONObject} profile.
*/
JSONObject getProfile();
+
+ /**
+ * Sets a flag denoting whether or not an {@link IFormComponent} field has been
+ * updated according to the logic defined in
+ * {@link org.apache.tapestry.services.ResponseBuilder#updateComponent(String)}.
+ *
+ * <p>
+ * Currently this flag is used during ajax/json responses so that cooperating
+ * {@link ResponseBuilder}s can be worked with to ensure form state is properly
+ * updated on the client. Specifically, that the hidden form input fields and
+ * any associated validation profiles are updated.
+ * </p>
+ *
+ * @param value
+ * The value to set.
+ */
+ void setFormFieldUpdating(boolean value);
+
+ /**
+ * Checks to see if a form field has been updated.
+ *
+ * @see #setFormFieldUpdating(boolean)
+ * @return
+ */
+ boolean isFormFieldUpdating();
}
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/engine/RequestCycle.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/engine/RequestCycle.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/engine/RequestCycle.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/engine/RequestCycle.java Sun Jul 2 13:12:51 2006
@@ -288,7 +288,7 @@
return result;
}
-
+
public void setResponseBuilder(ResponseBuilder builder)
{
//if (_responseBuilder != null)
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/error/StaleLinkExceptionPresenterImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/error/StaleLinkExceptionPresenterImpl.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/error/StaleLinkExceptionPresenterImpl.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/error/StaleLinkExceptionPresenterImpl.java Sun Jul 2 13:12:51 2006
@@ -44,7 +44,7 @@
throws IOException
{
IPage exceptionPage = cycle.getPage(_pageName);
-
+
PropertyUtils.write(exceptionPage, "message", cause.getMessage());
cycle.activate(exceptionPage);
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/AbstractFormComponent.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/AbstractFormComponent.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/AbstractFormComponent.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/AbstractFormComponent.java Sun Jul 2 13:12:51 2006
@@ -19,6 +19,7 @@
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.TapestryUtils;
+import org.apache.tapestry.engine.NullWriter;
import org.apache.tapestry.valid.IValidationDelegate;
import org.apache.tapestry.valid.ValidationConstants;
@@ -98,31 +99,34 @@
IForm form = TapestryUtils.getForm(cycle, this);
setForm(form);
-
+
if (form.wasPrerendered(writer, this))
return;
IValidationDelegate delegate = form.getDelegate();
delegate.setFormComponent(this);
-
+
setName(form);
-
+
if (form.isRewinding())
{
if (!isDisabled())
{
rewindFormComponent(writer, cycle);
}
-
+
// This is for the benefit of the couple of components (LinkSubmit) that allow a body.
// The body should render when the component rewinds.
-
+
if (getRenderBodyOnRewind())
renderBody(writer, cycle);
}
else if (!cycle.isRewinding())
{
+ if (!NullWriter.class.isInstance(writer))
+ form.setFormFieldUpdating(true);
+
renderFormComponent(writer, cycle);
if (getCanTakeFocus() && !isDisabled())
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.java Sun Jul 2 13:12:51 2006
@@ -452,4 +452,20 @@
{
return _formSupport.getProfile();
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isFormFieldUpdating()
+ {
+ return _formSupport.isFormFieldUpdating();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setFormFieldUpdating(boolean value)
+ {
+ _formSupport.setFormFieldUpdating(value);
+ }
}
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java Sun Jul 2 13:12:51 2006
@@ -41,6 +41,7 @@
import org.apache.tapestry.engine.ILink;
import org.apache.tapestry.event.BrowserEvent;
import org.apache.tapestry.json.JSONObject;
+import org.apache.tapestry.services.ResponseBuilder;
import org.apache.tapestry.services.ServiceConstants;
import org.apache.tapestry.util.IdAllocator;
import org.apache.tapestry.valid.IValidationDelegate;
@@ -160,6 +161,8 @@
private final JSONObject _profile;
+ private boolean _fieldUpdating;
+
public FormSupportImpl(IMarkupWriter writer, IRequestCycle cycle, IForm form)
{
Defense.notNull(writer, "writer");
@@ -170,7 +173,7 @@
_cycle = cycle;
_form = form;
_delegate = form.getDelegate();
-
+
_rewinding = cycle.isRewound(form);
_allocatedIdIndex = 0;
@@ -268,14 +271,14 @@
sep = ",";
hasExtra = true;
}
-
+
addHiddenFieldsForLinkParameter(link, name);
}
-
+
if (hasExtra)
addHiddenValue(RESERVED_FORM_IDS, extraIds.toString());
}
-
+
public void addHiddenValue(String name, String value)
{
_hiddenValues.add(new HiddenFieldData(name, value));
@@ -638,54 +641,70 @@
writer.beginEmpty("input");
writer.attribute("type", "hidden");
writer.attribute("name", name);
-
+
if (HiveMind.isNonBlank(id))
writer.attribute("id", id);
-
+
writer.attribute("value", value == null ? "" : value);
writer.println();
}
- private void writeHiddenField(String name, String id, String value)
- {
- writeHiddenField(_writer, name, id, value);
- }
-
/**
* Writes out all hidden values previously added by
* {@link #addHiddenValue(String, String, String)}. Writes a <div> tag around
* {@link #writeHiddenFieldList()}. Overriden by
* {@link org.apache.tapestry.wml.GoFormSupportImpl}.
*/
-
+
protected void writeHiddenFields()
{
- _writer.begin("div");
- _writer.attribute("style", "display:none;");
-
- writeHiddenFieldList();
-
- _writer.end();
+ IMarkupWriter writer = getHiddenFieldWriter();
+
+ writer.begin("div");
+ writer.attribute("style", "display:none;");
+ writer.attribute("id", _form.getName() + "hidden");
+
+ writeHiddenFieldList(writer);
+
+ writer.end();
}
-
+
/**
* Writes out all hidden values previously added by
* {@link #addHiddenValue(String, String, String)}, plus the allocated id list.
*/
-
- protected void writeHiddenFieldList()
+
+ protected void writeHiddenFieldList(IMarkupWriter writer)
{
- writeHiddenField(FORM_IDS, null, buildAllocatedIdList());
-
+ writeHiddenField(writer, FORM_IDS, null, buildAllocatedIdList());
+
Iterator i = _hiddenValues.iterator();
while (i.hasNext())
{
HiddenFieldData data = (HiddenFieldData) i.next();
-
- writeHiddenField(data.getName(), data.getId(), data.getValue());
+
+ writeHiddenField(writer, data.getName(), data.getId(), data.getValue());
}
}
-
+
+ /**
+ * Determines if a hidden field change has occurred, which would require
+ * that we write hidden form fields using the {@link ResponseBuilder}
+ * writer.
+ *
+ * @return The default {@link IMarkupWriter} if not doing a managed ajax/json
+ * response, else whatever is returned from {@link ResponseBuilder}.
+ */
+ protected IMarkupWriter getHiddenFieldWriter()
+ {
+ if (!_fieldUpdating || !_cycle.getResponseBuilder().isDynamic()) {
+ return _writer;
+ }
+
+ return _cycle.getResponseBuilder().getWriter(_form.getName() + "hidden",
+ ResponseBuilder.ELEMENT_TYPE);
+ }
+
private void addHiddenFieldsForLinkParameter(ILink link, String parameterName)
{
String[] values = link.getParameterValues(parameterName);
@@ -763,5 +782,21 @@
public JSONObject getProfile()
{
return _profile;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isFormFieldUpdating()
+ {
+ return _fieldUpdating;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setFormFieldUpdating(boolean value)
+ {
+ _fieldUpdating = value;
}
}
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/IFormComponent.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/IFormComponent.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/IFormComponent.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/IFormComponent.java Sun Jul 2 13:12:51 2006
@@ -28,7 +28,7 @@
{
/**
* Returns the {@link org.apache.tapestry.IForm} which contains the component, or null if the
- * component is not contained by a form, of if the containing Form is not currently renderring.
+ * component is not contained by a form, or if the containing Form is not currently rendering.
*/
IForm getForm();
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/pages/StaleLink.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/pages/StaleLink.html?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/pages/StaleLink.html (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/pages/StaleLink.html Sun Jul 2 13:12:51 2006
@@ -1,5 +1,5 @@
-<span jwcid="@Shell" stylesheet="ognl:assets.stylesheet" title="Stale Link">
+<span jwcid="@Shell" stylesheet="ognl:assets.stylesheet" doctype="ognl:''" title="Stale Link">
<body>
@@ -9,12 +9,13 @@
<span jwcid="@Insert" value="ognl:message" class="exception-message">
Exception message goes here.
</span>
+</p>
<p>This is most likely the result of using your
-browser's <b>back</b> button, but can also be an application error.
+browser's <b>back</b> button, but can also be an application error.</p>
<p>You may continue by returning to the
-application's
+application's</p>
<b>
<a jwcid="home">home page</a></b>.
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/pages/StaleSession.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/pages/StaleSession.html?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/pages/StaleSession.html (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/pages/StaleSession.html Sun Jul 2 13:12:51 2006
@@ -1,18 +1,18 @@
-<span jwcid="@Shell" title="Stale Session" stylesheet="ognl:assets.stylesheet">
+<span jwcid="@Shell" title="Stale Session" doctype="ognl:''" stylesheet="ognl:assets.stylesheet">
<body>
Your session has timed out.
<p>Web applications store information about what you are doing on the server. This information
-is called the <em>session</em>.
+is called the <em>session</em>.</p>
<p>Web servers must track many, many sessions. If you
are inactive for a long enough time (usually, a few minutes), this information is discarded to
-make room for active users.
+make room for active users.</p>
<p>At this point you may <b>
-<a jwcid="restart">restart</a></b> the session to continue.
+<a jwcid="restart">restart</a></b> the session to continue.</p>
</body>
</span>
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/ResponseBuilder.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/ResponseBuilder.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/ResponseBuilder.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/ResponseBuilder.java Sun Jul 2 13:12:51 2006
@@ -30,6 +30,27 @@
*/
public interface ResponseBuilder {
+ /**
+ * Inside a {@link org.apache.tapestry.util.ContentType}, the output encoding is called
+ * "charset".
+ */
+ String ENCODING_KEY = "charset";
+
+ /**
+ * The content type of the response that will be returned.
+ */
+ String CONTENT_TYPE = "text/xml";
+
+ /**
+ * The response element type.
+ */
+ String ELEMENT_TYPE = "element";
+
+ /**
+ * The response exception type.
+ */
+ String EXCEPTION_TYPE = "exception";
+
String SCRIPT_TYPE = "script";
String BODY_SCRIPT = "bodyscript";
@@ -37,6 +58,13 @@
String INCLUDE_SCRIPT = "includescript";
String INITIALIZATION_SCRIPT = "initializationscript";
+
+ /**
+ * Implementors that manage content writes dynamically (ie {@link DojoAjaxResponseBuilder}) should
+ * return true to denote that dynamic behaviour is on for a particular response.
+ * @return
+ */
+ boolean isDynamic();
/**
* Renders the response to a client. Handles transitioning logic
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java Sun Jul 2 13:12:51 2006
@@ -38,13 +38,6 @@
*/
public class DefaultResponseBuilder implements ResponseBuilder
{
- /**
- * Inside a {@link org.apache.tapestry.util.ContentType}, the output encoding is called
- * "charset".
- */
-
- public static final String ENCODING_KEY = "charset";
-
private RequestLocaleManager _localeManager;
private MarkupWriterSource _markupWriterSource;
@@ -84,6 +77,15 @@
_markupWriterSource = markupWriterSource;
_webResponse = webResponse;
_renderWorker = renderWorker;
+ }
+
+ /**
+ *
+ * {@inheritDoc}
+ */
+ public boolean isDynamic()
+ {
+ return Boolean.FALSE;
}
/**
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java Sun Jul 2 13:12:51 2006
@@ -46,29 +46,11 @@
*/
public class DojoAjaxResponseBuilder implements ResponseBuilder
{
- /**
- * Inside a {@link org.apache.tapestry.util.ContentType}, the output encoding is called
- * "charset".
- */
- public static final String ENCODING_KEY = "charset";
- /**
- * The content type of the response that will be returned.
- */
- public static final String CONTENT_TYPE = "text/xml";
- /**
- * The response element type.
- */
- public static final String ELEMENT_TYPE = "element";
- /**
- * The response exception type.
- */
- public static final String EXCEPTION_TYPE = "exception";
-
// used to create IMarkupWriter
private RequestLocaleManager _localeManager;
private MarkupWriterSource _markupWriterSource;
private WebResponse _webResponse;
- private String _exceptionPageName;
+ private List _errorPages;
// our response writer
private IMarkupWriter _writer;
@@ -106,12 +88,21 @@
*/
public DojoAjaxResponseBuilder(RequestLocaleManager localeManager,
MarkupWriterSource markupWriterSource,
- WebResponse webResponse, String exceptionPageName)
+ WebResponse webResponse, List errorPages)
{
_localeManager = localeManager;
_markupWriterSource = markupWriterSource;
_webResponse = webResponse;
- _exceptionPageName = exceptionPageName;
+ _errorPages = errorPages;
+ }
+
+ /**
+ *
+ * {@inheritDoc}
+ */
+ public boolean isDynamic()
+ {
+ return Boolean.TRUE;
}
/**
@@ -266,7 +257,7 @@
writer.printRaw("\n//]]>\n");
writer.end();
}
-
+
/**
* {@inheritDoc}
*/
@@ -277,10 +268,12 @@
return;
}
- if (IPage.class.isInstance(render)
- && ((IPage)render).getPageName().indexOf(_exceptionPageName) > -1) {
- render.render(getWriter(_exceptionPageName, EXCEPTION_TYPE), cycle);
- return;
+ if (IPage.class.isInstance(render)) {
+ String errorPage = getErrorPage(((IPage)render).getPageName());
+ if (errorPage != null) {
+ render.render(getWriter(errorPage, EXCEPTION_TYPE), cycle);
+ return;
+ }
}
if (IComponent.class.isInstance(render)
@@ -291,6 +284,17 @@
}
render.render(NullWriter.getSharedInstance(), cycle);
+ }
+
+ private String getErrorPage(String pageName)
+ {
+ for (int i=0; i < _errorPages.size(); i++) {
+ String page = (String)_errorPages.get(i);
+ if (pageName.indexOf(page) > -1)
+ return page;
+ }
+
+ return null;
}
/**
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseContributorImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseContributorImpl.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseContributorImpl.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseContributorImpl.java Sun Jul 2 13:12:51 2006
@@ -14,6 +14,8 @@
package org.apache.tapestry.services.impl;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.markup.MarkupWriterSource;
@@ -43,14 +45,23 @@
private String _exceptionPageName;
+ private String _staleSessionPageName;
+
+ private String _staleLinkPageName;
+
/**
* {@inheritDoc}
*/
public ResponseBuilder createBuilder(IRequestCycle cycle)
throws IOException
{
+ List errorPages = new ArrayList();
+ errorPages.add(_exceptionPageName);
+ errorPages.add(_staleSessionPageName);
+ errorPages.add(_staleLinkPageName);
+
return new DojoAjaxResponseBuilder(_localeManager, _markupWriterSource,
- _webResponse, _exceptionPageName);
+ _webResponse, errorPages);
}
/**
@@ -84,5 +95,15 @@
public void setExceptionPageName(String name)
{
_exceptionPageName = name;
+ }
+
+ public void setStaleSessionPageName(String name)
+ {
+ _staleSessionPageName = name;
+ }
+
+ public void setStaleLinkPageName(String name)
+ {
+ _staleLinkPageName = name;
}
}
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java Sun Jul 2 13:12:51 2006
@@ -41,13 +41,6 @@
*/
public class JSONResponseBuilder implements ResponseBuilder
{
- /**
- * Inside a {@link org.apache.tapestry.util.ContentType}, the output encoding is called
- * "charset".
- */
-
- public static final String ENCODING_KEY = "charset";
-
/** Writer that creates JSON output response. */
protected IJSONWriter _writer;
/** Passed in to bypass normal rendering. */
@@ -80,6 +73,15 @@
_localeManager = localeManager;
_markupWriterSource = markupWriterSource;
_webResponse = webResponse;
+ }
+
+ /**
+ *
+ * {@inheritDoc}
+ */
+ public boolean isDynamic()
+ {
+ return Boolean.TRUE;
}
/**
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/RequestCycleFactoryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/RequestCycleFactoryImpl.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/RequestCycleFactoryImpl.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/RequestCycleFactoryImpl.java Sun Jul 2 13:12:51 2006
@@ -72,9 +72,9 @@
WebRequest request = _infrastructure.getRequest();
QueryParameterMap parameters = extractParameters(request);
-
+
decodeParameters(request.getActivationPath(), request.getPathInfo(), parameters);
-
+
String serviceName = findService(parameters);
IRequestCycle cycle = new RequestCycle(engine, parameters, serviceName, _environment);
Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/wml/GoFormSupportImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/wml/GoFormSupportImpl.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/wml/GoFormSupportImpl.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/wml/GoFormSupportImpl.java Sun Jul 2 13:12:51 2006
@@ -48,10 +48,10 @@
{
// The super-implementation writes a <div> tag that's not
// valid as WML.
-
- writeHiddenFieldList();
+
+ writeHiddenFieldList(getHiddenFieldWriter());
}
-
+
protected void writeHiddenField(IMarkupWriter writer, String name,
String id, String value)
{
Modified: tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/form/MockForm.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/form/MockForm.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/form/MockForm.java (original)
+++ tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/form/MockForm.java Sun Jul 2 13:12:51 2006
@@ -383,4 +383,20 @@
{
return _profile;
}
-}
\ No newline at end of file
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isFormFieldUpdating()
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setFormFieldUpdating(boolean value)
+ {
+
+ }
+}
Modified: tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/services/impl/DojoAjaxResponseBuilderTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/services/impl/DojoAjaxResponseBuilderTest.java?rev=418644&r1=418643&r2=418644&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/services/impl/DojoAjaxResponseBuilderTest.java (original)
+++ tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/services/impl/DojoAjaxResponseBuilderTest.java Sun Jul 2 13:12:51 2006
@@ -144,7 +144,7 @@
nested.begin("response");
nested.attribute("id", "id1");
- nested.attribute("type", DojoAjaxResponseBuilder.ELEMENT_TYPE);
+ nested.attribute("type", ResponseBuilder.ELEMENT_TYPE);
comp1.render(nested, cycle);