You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2005/03/30 00:19:55 UTC
cvs commit: jakarta-tapestry/framework/src/java/org/apache/tapestry/form Form.java
hlship 2005/03/29 14:19:55
Modified: framework/src/java/org/apache/tapestry/describe
HTMLDescriptionReceiver.java HTMLDescriberImpl.java
portlet/src/descriptor/META-INF
tapestry.portlet.services.xml hivemodule.xml
portlet/src/java/org/apache/tapestry/portlet
PortletRendererImpl.java PortletLink.java
PortletWebSession.java
framework/src/descriptor/META-INF tapestry.describe.xml
hivemodule.xml tapestry.globals.xml
framework/src/java/org/apache/tapestry/web
ServletWebSession.java WebSession.java
framework/src/java/org/apache/tapestry/engine
RequestCycle.java
framework/src/java/org/apache/tapestry/services
Infrastructure.java ApplicationGlobals.java
portlet/src/test/org/apache/tapestry/portlet
TestPortletWebSession.java TestPortletRenderer.java
framework/src/java/org/apache/tapestry IRequestCycle.java
TapestryUtils.java
framework/src/java/org/apache/tapestry/html Body.java
Describe.jwc
framework/src/java/org/apache/tapestry/services/impl
ApplicationGlobalsImpl.java
AbstractSetupApplicationGlobals.java
InfrastructureImpl.java
framework/src/java/org/apache/tapestry/form Form.java
Added: framework/src/java/org/apache/tapestry/describe
HTMLDescriptionReceiverStyles.java
portlet/src/java/org/apache/tapestry/portlet
PortletSessionDescribableAdapter.java
Log:
Allow objects described inside a portlet to make use of the defined Portlet CSS styles.
Add a describable adapter for PortletSession.
Only generate a Form name during true render (when it is legal to obtain the portlet namespace).
Revision Changes Path
1.3 +14 -4 jakarta-tapestry/framework/src/java/org/apache/tapestry/describe/HTMLDescriptionReceiver.java
Index: HTMLDescriptionReceiver.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/describe/HTMLDescriptionReceiver.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- HTMLDescriptionReceiver.java 14 Mar 2005 22:29:47 -0000 1.2
+++ HTMLDescriptionReceiver.java 29 Mar 2005 22:19:54 -0000 1.3
@@ -46,13 +46,23 @@
private DescribableAdapter _adapter;
+ private HTMLDescriptionReceiverStyles _styles;
+
public HTMLDescriptionReceiver(IMarkupWriter writer, DescribableAdapter adapter)
{
+ this(writer, adapter, new HTMLDescriptionReceiverStyles());
+ }
+
+ public HTMLDescriptionReceiver(IMarkupWriter writer, DescribableAdapter adapter,
+ HTMLDescriptionReceiverStyles styles)
+ {
Defense.notNull(writer, "writer");
Defense.notNull(adapter, "adapter");
+ Defense.notNull(styles, "styles");
_writer = writer;
_adapter = adapter;
+ _styles = styles;
}
public void describe(Object object)
@@ -122,20 +132,20 @@
_emitDefault = false;
_writer.begin("div");
- _writer.attribute("class", "described-object-title");
+ _writer.attribute("class", _styles.getHeaderClass());
_writer.print(_title);
_writer.end();
_writer.println();
_writer.begin("table");
- _writer.attribute("class", "described-object");
+ _writer.attribute("class", _styles.getTableClass());
_writer.println();
}
if (_section != null)
{
_writer.begin("tr");
- _writer.attribute("class", "section");
+ _writer.attribute("class", _styles.getSubheaderClass());
_writer.begin("th");
_writer.attribute("colspan", 2);
_writer.print(_section);
@@ -188,7 +198,7 @@
return;
}
- new HTMLDescriptionReceiver(_writer, _adapter).describe(value);
+ new HTMLDescriptionReceiver(_writer, _adapter, _styles).describe(value);
}
public void property(String key, boolean value)
1.2 +18 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/describe/HTMLDescriberImpl.java
Index: HTMLDescriberImpl.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/describe/HTMLDescriberImpl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HTMLDescriberImpl.java 7 Mar 2005 19:51:54 -0000 1.1
+++ HTMLDescriberImpl.java 29 Mar 2005 22:19:54 -0000 1.2
@@ -24,9 +24,11 @@
{
private DescribableAdapter _adapter;
+ private HTMLDescriptionReceiverStyles _styles = new HTMLDescriptionReceiverStyles();
+
public void describeObject(Object object, IMarkupWriter writer)
{
- HTMLDescriptionReceiver dr = new HTMLDescriptionReceiver(writer, _adapter);
+ HTMLDescriptionReceiver dr = new HTMLDescriptionReceiver(writer, _adapter, _styles);
dr.describe(object);
}
@@ -35,4 +37,19 @@
{
_adapter = adapter;
}
+
+ public void setTableClass(String tableClass)
+ {
+ _styles.setTableClass(tableClass);
+ }
+
+ public void setHeaderClass(String headerClass)
+ {
+ _styles.setHeaderClass(headerClass);
+ }
+
+ public void setSubheaderClass(String subheaderClass)
+ {
+ _styles.setSubheaderClass(subheaderClass);
+ }
}
\ No newline at end of file
1.1 jakarta-tapestry/framework/src/java/org/apache/tapestry/describe/HTMLDescriptionReceiverStyles.java
Index: HTMLDescriptionReceiverStyles.java
===================================================================
// Copyright 2005 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package org.apache.tapestry.describe;
/**
* Holds the style information used by {@link org.apache.tapestry.describe.HTMLDescriptionReceiver}.
*
* @author Howard M. Lewis Ship
* @since 3.1
*/
public class HTMLDescriptionReceiverStyles
{
private String _tableClass = "described-object";
private String _headerClass = "described-object-title";
private String _subheaderClass = "section";
public String getHeaderClass()
{
return _headerClass;
}
public void setHeaderClass(String headerClass)
{
_headerClass = headerClass;
}
public String getSubheaderClass()
{
return _subheaderClass;
}
public void setSubheaderClass(String subheaderClass)
{
_subheaderClass = subheaderClass;
}
public String getTableClass()
{
return _tableClass;
}
public void setTableClass(String tableClass)
{
_tableClass = tableClass;
}
}
1.6 +3 -1 jakarta-tapestry/portlet/src/descriptor/META-INF/tapestry.portlet.services.xml
Index: tapestry.portlet.services.xml
===================================================================
RCS file: /home/cvs/jakarta-tapestry/portlet/src/descriptor/META-INF/tapestry.portlet.services.xml,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- tapestry.portlet.services.xml 25 Mar 2005 20:36:58 -0000 1.5
+++ tapestry.portlet.services.xml 29 Mar 2005 22:19:54 -0000 1.6
@@ -45,10 +45,12 @@
Service used to render a named page.
- <invoke-factory model="primitive">
+ <invoke-factory>
<construct class="PortletRendererImpl">
<set-object property="markupWriterSource" value="infrastructure:markupWriterSource"/>
<set-object property="response" value="infrastructure:response"/>
+ <set-object property="assetService" value="engine-service:asset"/>
+ <set-object property="applicationId" value="infrastructure:applicationId"/>
</construct>
</invoke-factory>
</service-point>
1.7 +18 -0 jakarta-tapestry/portlet/src/descriptor/META-INF/hivemodule.xml
Index: hivemodule.xml
===================================================================
RCS file: /home/cvs/jakarta-tapestry/portlet/src/descriptor/META-INF/hivemodule.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- hivemodule.xml 22 Mar 2005 21:54:39 -0000 1.6
+++ hivemodule.xml 29 Mar 2005 22:19:54 -0000 1.7
@@ -203,6 +203,7 @@
<set-service property="responseRenderer" service-id="tapestry.portlet.services.ResponseRenderer"/>
<set-service property="linkFactory" service-id="PortletLinkFactory"/>
<set-configuration property="factoryServices" configuration-id="tapestry.portlet.services.FactoryServices"/>
+ <set-service property="HTMLDescriber" service-id="PortletHTMLDescriber"/>
</construct>
</invoke-factory>
</service-point>
@@ -211,4 +212,21 @@
<command id="SetupServletApplicationGlobals" object="service:SetupPortletApplicationGlobals"/>
</contribution>
+ <service-point id="PortletHTMLDescriber" interface="org.apache.tapestry.describe.HTMLDescriber">
+
+ Describes an object in an HTML format.
+
+ <invoke-factory>
+ <construct class="org.apache.tapestry.describe.HTMLDescriberImpl">
+ <set-service property="adapter" service-id="tapestry.describe.DescribeAdaptor"/>
+ <set property="headerClass" value="portlet-section-header"/>
+ <set property="subheaderClass" value="portlet-section-subheader"/>
+ <set property="tableClass" value="portlet-section-body"/>
+ </construct>
+ </invoke-factory>
+ </service-point>
+
+ <contribution configuration-id="tapestry.describe.DescribeAdaptors">
+ <adapter class="javax.portlet.PortletSession" object="instance:PortletSessionDescribableAdapter"/>
+ </contribution>
</module>
\ No newline at end of file
1.3 +43 -3 jakarta-tapestry/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java
Index: PortletRendererImpl.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PortletRendererImpl.java 22 Mar 2005 13:40:53 -0000 1.2
+++ PortletRendererImpl.java 29 Mar 2005 22:19:54 -0000 1.3
@@ -16,12 +16,18 @@
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.Date;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IPage;
import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.PageRenderSupport;
+import org.apache.tapestry.Tapestry;
+import org.apache.tapestry.TapestryUtils;
+import org.apache.tapestry.engine.IEngineService;
import org.apache.tapestry.markup.MarkupWriterSource;
import org.apache.tapestry.util.ContentType;
+import org.apache.tapestry.util.PageRenderSupportImpl;
import org.apache.tapestry.web.WebResponse;
/**
@@ -38,8 +44,11 @@
private MarkupWriterSource _markupWriterSource;
- public void renderPage(IRequestCycle cycle, String pageName)
- throws IOException
+ private IEngineService _assetService;
+
+ private String _applicationId;
+
+ public void renderPage(IRequestCycle cycle, String pageName) throws IOException
{
cycle.activate(pageName);
@@ -51,7 +60,28 @@
IMarkupWriter writer = _markupWriterSource.newMarkupWriter(printWriter, contentType);
- cycle.renderPage(writer);
+ PageRenderSupportImpl support = new PageRenderSupportImpl(_assetService, null);
+
+ TapestryUtils.storePageRenderSupport(cycle, support);
+
+ IMarkupWriter nested = writer.getNestedWriter();
+
+ cycle.renderPage(nested);
+
+ String id = "Tapestry Portlet " + _applicationId + " " + _response.getNamespace();
+
+ writer.comment("BEGIN " + id);
+ writer.comment("Page: " + page.getPageName());
+ writer.comment("Generated: " + new Date());
+ writer.comment("Framework version: " + Tapestry.VERSION);
+
+ support.writeBodyScript(writer, cycle);
+
+ nested.close();
+
+ support.writeInitializationScript(writer);
+
+ writer.comment("END " + id);
writer.close();
@@ -67,4 +97,14 @@
{
_response = response;
}
+
+ public void setAssetService(IEngineService assetService)
+ {
+ _assetService = assetService;
+ }
+
+ public void setApplicationId(String applicationId)
+ {
+ _applicationId = applicationId;
+ }
}
\ No newline at end of file
1.3 +2 -1 jakarta-tapestry/portlet/src/java/org/apache/tapestry/portlet/PortletLink.java
Index: PortletLink.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/portlet/src/java/org/apache/tapestry/portlet/PortletLink.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PortletLink.java 22 Mar 2005 21:54:39 -0000 1.2
+++ PortletLink.java 29 Mar 2005 22:19:54 -0000 1.3
@@ -113,7 +113,8 @@
String name = names[i];
String[] values = _parameters.getParameterValues(name);
- _portletURL.setParameter(name, values);
+ if (values != null)
+ _portletURL.setParameter(name, values);
}
}
1.2 +7 -4 jakarta-tapestry/portlet/src/java/org/apache/tapestry/portlet/PortletWebSession.java
Index: PortletWebSession.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/portlet/src/java/org/apache/tapestry/portlet/PortletWebSession.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PortletWebSession.java 10 Mar 2005 13:23:31 -0000 1.1
+++ PortletWebSession.java 29 Mar 2005 22:19:54 -0000 1.2
@@ -19,6 +19,7 @@
import javax.portlet.PortletSession;
import org.apache.hivemind.util.Defense;
+import org.apache.tapestry.describe.DescriptionReceiver;
import org.apache.tapestry.web.WebSession;
import org.apache.tapestry.web.WebUtils;
@@ -39,6 +40,11 @@
_portletSession = portletSession;
}
+ public void describeTo(DescriptionReceiver receiver)
+ {
+ receiver.describeAlternate(_portletSession);
+ }
+
public String getId()
{
return _portletSession.getId();
@@ -61,10 +67,7 @@
public void setAttribute(String name, Object attribute)
{
- if (attribute == null)
- _portletSession.removeAttribute(name);
- else
- _portletSession.setAttribute(name, attribute);
+ _portletSession.setAttribute(name, attribute);
}
}
\ No newline at end of file
1.1 jakarta-tapestry/portlet/src/java/org/apache/tapestry/portlet/PortletSessionDescribableAdapter.java
Index: PortletSessionDescribableAdapter.java
===================================================================
// Copyright 2005 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package org.apache.tapestry.portlet;
import java.util.Date;
import java.util.Iterator;
import javax.portlet.PortletSession;
import org.apache.tapestry.describe.DescribableAdapter;
import org.apache.tapestry.describe.DescriptionReceiver;
import org.apache.tapestry.web.WebUtils;
/**
* Describes {@link javax.portlet.PortletSession}.
*
* @author Howard M. Lewis Ship
* @since 3.1
*/
public class PortletSessionDescribableAdapter implements DescribableAdapter
{
public void describeObject(Object object, DescriptionReceiver receiver)
{
PortletSession session = (PortletSession) object;
receiver.title("PortletSession");
receiver.property("creationTime", new Date(session.getCreationTime()));
receiver.property("id", session.getId());
receiver.property("lastAccessedTime", new Date(session.getLastAccessedTime()));
receiver.property("maxInactiveInterval", session.getMaxInactiveInterval());
receiver.property("new", session.isNew());
receiver.section("Attributes");
Iterator i = WebUtils.toSortedList(session.getAttributeNames()).iterator();
while (i.hasNext())
{
String key = (String) i.next();
receiver.property(key, session.getAttribute(key));
}
}
}
1.2 +1 -1 jakarta-tapestry/framework/src/descriptor/META-INF/tapestry.describe.xml
Index: tapestry.describe.xml
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/descriptor/META-INF/tapestry.describe.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- tapestry.describe.xml 7 Mar 2005 19:51:58 -0000 1.1
+++ tapestry.describe.xml 29 Mar 2005 22:19:54 -0000 1.2
@@ -61,7 +61,7 @@
<invoke-factory>
<construct class="DefaultRenderableAdapter">
- <set-service property="describer" service-id="HTMLDescriber"/>
+ <set-object property="describer" value="infrastructure:HTMLDescriber"/>
</construct>
</invoke-factory>
</service-point>
1.35 +1 -0 jakarta-tapestry/framework/src/descriptor/META-INF/hivemodule.xml
Index: hivemodule.xml
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/descriptor/META-INF/hivemodule.xml,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- hivemodule.xml 22 Mar 2005 21:54:39 -0000 1.34
+++ hivemodule.xml 29 Mar 2005 22:19:54 -0000 1.35
@@ -87,6 +87,7 @@
<set-service property="context" service-id="tapestry.globals.WebContext"/>
<set-service property="threadLocale" service-id="hivemind.ThreadLocale"/>
<set-service property="markupWriterSource" service-id="tapestry.markup.MarkupWriterSource"/>
+ <set-object property="HTMLDescriber" value="service-property:tapestry.globals.ApplicationGlobals:HTMLDescriber"/>
</construct>
</invoke-factory>
1.14 +1 -0 jakarta-tapestry/framework/src/descriptor/META-INF/tapestry.globals.xml
Index: tapestry.globals.xml
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/descriptor/META-INF/tapestry.globals.xml,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- tapestry.globals.xml 22 Mar 2005 21:54:39 -0000 1.13
+++ tapestry.globals.xml 29 Mar 2005 22:19:54 -0000 1.14
@@ -97,6 +97,7 @@
<set-service property="responseRenderer" service-id="tapestry.request.ResponseRenderer"/>
<set-service property="linkFactory" service-id="tapestry.url.LinkFactory"/>
<set-configuration property="factoryServices" configuration-id="tapestry.services.FactoryServices"/>
+ <set-service property="HTMLDescriber" service-id="tapestry.describe.HTMLDescriber"/>
</construct>
</invoke-factory>
</service-point>
1.3 +6 -0 jakarta-tapestry/framework/src/java/org/apache/tapestry/web/ServletWebSession.java
Index: ServletWebSession.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/web/ServletWebSession.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ServletWebSession.java 25 Feb 2005 15:01:53 -0000 1.2
+++ ServletWebSession.java 29 Mar 2005 22:19:54 -0000 1.3
@@ -19,6 +19,7 @@
import javax.servlet.http.HttpSession;
import org.apache.hivemind.util.Defense;
+import org.apache.tapestry.describe.DescriptionReceiver;
/**
* Adapts {@link javax.servlet.http.HttpSession} as
@@ -38,6 +39,11 @@
_httpSession = session;
}
+ public void describeTo(DescriptionReceiver receiver)
+ {
+ receiver.describeAlternate(_httpSession);
+ }
+
public List getAttributeNames()
{
return WebUtils.toSortedList(_httpSession.getAttributeNames());
1.3 +3 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/web/WebSession.java
Index: WebSession.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/web/WebSession.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- WebSession.java 25 Feb 2005 15:01:53 -0000 1.2
+++ WebSession.java 29 Mar 2005 22:19:54 -0000 1.3
@@ -14,13 +14,15 @@
package org.apache.tapestry.web;
+import org.apache.tapestry.describe.Describable;
+
/**
* Primarily concerned with maintaining server-side state as attributes.
*
* @author Howard M. Lewis Ship
* @since 3.1
*/
-public interface WebSession extends AttributeHolder
+public interface WebSession extends AttributeHolder, Describable
{
/**
* Returns a unique string identifier used to identify the session. This value is provided by
1.16 +6 -21 jakarta-tapestry/framework/src/java/org/apache/tapestry/engine/RequestCycle.java
Index: RequestCycle.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/engine/RequestCycle.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- RequestCycle.java 27 Mar 2005 17:42:23 -0000 1.15
+++ RequestCycle.java 29 Mar 2005 22:19:54 -0000 1.16
@@ -101,7 +101,7 @@
private boolean _rewinding = false;
- private Map _attributes;
+ private Map _attributes = new HashMap();
private int _actionId;
@@ -194,9 +194,6 @@
public Object getAttribute(String name)
{
- if (_attributes == null)
- return null;
-
return _attributes.get(name);
}
@@ -331,9 +328,6 @@
if (LOG.isDebugEnabled())
LOG.debug("Removing attribute " + name);
- if (_attributes == null)
- return;
-
_attributes.remove(name);
}
@@ -351,11 +345,6 @@
_actionId = -1;
_targetActionId = 0;
- // Forget any attributes from a previous render cycle.
-
- if (_attributes != null)
- _attributes.clear();
-
try
{
_page.renderPage(writer, this);
@@ -378,6 +367,7 @@
{
_actionId = 0;
_targetActionId = 0;
+ _attributes.clear();
}
_monitor.pageRenderEnd(pageName);
@@ -405,9 +395,6 @@
_monitor.pageRewindBegin(pageName);
- if (_attributes != null)
- _attributes.clear();
-
// Fake things a little for getNextActionId() / isRewound()
_targetActionId = Integer.parseInt(targetActionId, 16);
@@ -454,6 +441,8 @@
_monitor.pageRewindEnd(pageName);
_rewinding = false;
+
+ _attributes.clear();
}
}
@@ -475,9 +464,6 @@
_monitor.pageRewindBegin(pageName);
- if (_attributes != null)
- _attributes.clear();
-
_actionId = -1;
// Parse the action Id as hex since that's whats generated
@@ -520,6 +506,8 @@
_monitor.pageRewindEnd(pageName);
_rewinding = false;
+
+ _attributes.clear();
}
}
@@ -529,9 +517,6 @@
if (LOG.isDebugEnabled())
LOG.debug("Set attribute " + name + " to " + value);
- if (_attributes == null)
- _attributes = new HashMap();
-
_attributes.put(name, value);
}
1.25 +3 -0 jakarta-tapestry/framework/src/java/org/apache/tapestry/services/Infrastructure.java
Index: Infrastructure.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/services/Infrastructure.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- Infrastructure.java 24 Mar 2005 14:42:08 -0000 1.24
+++ Infrastructure.java 29 Mar 2005 22:19:54 -0000 1.25
@@ -19,6 +19,7 @@
import org.apache.hivemind.ClassResolver;
import org.apache.hivemind.Resource;
import org.apache.tapestry.IMarkupWriter;
+import org.apache.tapestry.describe.HTMLDescriber;
import org.apache.tapestry.engine.IPageSource;
import org.apache.tapestry.engine.IPropertySource;
import org.apache.tapestry.engine.IScriptSource;
@@ -206,4 +207,6 @@
public String getOutputEncoding();
public MarkupWriterSource getMarkupWriterSource();
+
+ public HTMLDescriber getHTMLDescriber();
}
\ No newline at end of file
1.11 +5 -0 jakarta-tapestry/framework/src/java/org/apache/tapestry/services/ApplicationGlobals.java
Index: ApplicationGlobals.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/services/ApplicationGlobals.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ApplicationGlobals.java 22 Mar 2005 21:54:39 -0000 1.10
+++ ApplicationGlobals.java 29 Mar 2005 22:19:54 -0000 1.11
@@ -16,6 +16,7 @@
import java.util.List;
+import org.apache.tapestry.describe.HTMLDescriber;
import org.apache.tapestry.spec.IApplicationSpecification;
import org.apache.tapestry.web.WebActivator;
import org.apache.tapestry.web.WebContext;
@@ -89,4 +90,8 @@
public void storeLinkFactory(LinkFactory linkFactory);
public LinkFactory getLinkFactory();
+
+ public void storeHTMLDescriber(HTMLDescriber describer );
+
+ public HTMLDescriber getHTMLDescriber();
}
\ No newline at end of file
1.2 +0 -15 jakarta-tapestry/portlet/src/test/org/apache/tapestry/portlet/TestPortletWebSession.java
Index: TestPortletWebSession.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/portlet/src/test/org/apache/tapestry/portlet/TestPortletWebSession.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestPortletWebSession.java 10 Mar 2005 13:23:36 -0000 1.1
+++ TestPortletWebSession.java 29 Mar 2005 22:19:55 -0000 1.2
@@ -87,21 +87,6 @@
verifyControls();
}
- public void testSetAttributeToNull()
- {
- MockControl control = newControl(PortletSession.class);
- PortletSession session = (PortletSession) control.getMock();
-
- session.removeAttribute("tonull");
-
- replayControls();
-
- WebSession ws = new PortletWebSession(session);
-
- ws.setAttribute("tonull", null);
-
- verifyControls();
- }
public void testGetId()
{
1.3 +51 -2 jakarta-tapestry/portlet/src/test/org/apache/tapestry/portlet/TestPortletRenderer.java
Index: TestPortletRenderer.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/portlet/src/test/org/apache/tapestry/portlet/TestPortletRenderer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestPortletRenderer.java 22 Mar 2005 13:40:53 -0000 1.2
+++ TestPortletRenderer.java 29 Mar 2005 22:19:55 -0000 1.3
@@ -17,12 +17,18 @@
import java.io.CharArrayWriter;
import java.io.PrintWriter;
+import org.apache.hivemind.test.AggregateArgumentsMatcher;
+import org.apache.hivemind.test.ArgumentMatcher;
import org.apache.hivemind.test.HiveMindTestCase;
+import org.apache.hivemind.test.RegexpMatcher;
+import org.apache.hivemind.test.TypeMatcher;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IPage;
import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.engine.IEngineService;
import org.apache.tapestry.markup.MarkupWriterSource;
import org.apache.tapestry.util.ContentType;
+import org.apache.tapestry.util.PageRenderSupportImpl;
import org.apache.tapestry.web.WebResponse;
import org.easymock.MockControl;
@@ -44,6 +50,11 @@
return new PrintWriter(new CharArrayWriter());
}
+ private IEngineService newAssetService()
+ {
+ return (IEngineService) newMock(IEngineService.class);
+ }
+
private WebResponse newWebResponse(ContentType contentType, PrintWriter writer)
throws Exception
{
@@ -53,6 +64,9 @@
response.getPrintWriter(contentType);
control.setReturnValue(writer);
+ response.getNamespace();
+ control.setReturnValue("NAMESPACE");
+
return response;
}
@@ -75,6 +89,9 @@
page.getResponseContentType();
control.setReturnValue(contentType);
+
+ page.getPageName();
+ control.setReturnValue("ZePage");
return page;
}
@@ -89,6 +106,14 @@
cycle.getPage();
control.setReturnValue(page);
+ cycle.getAttribute("org.apache.tapestry.PageRenderSupport");
+ control.setReturnValue(null);
+
+ cycle.setAttribute("org.apache.tapestry.PageRenderSupport", new PageRenderSupportImpl(
+ newAssetService(), null));
+ control.setMatcher(new AggregateArgumentsMatcher(new ArgumentMatcher[]
+ { null, new TypeMatcher() }));
+
return cycle;
}
@@ -97,14 +122,35 @@
ContentType ct = new ContentType("text/html");
PrintWriter pw = newPrintWriter();
WebResponse response = newWebResponse(ct, pw);
- IMarkupWriter writer = newWriter();
+ IMarkupWriter nested = newWriter();
+
+ MockControl control = newControl(IMarkupWriter.class);
+ IMarkupWriter writer = (IMarkupWriter) control.getMock();
+
+ writer.getNestedWriter();
+ control.setReturnValue(nested);
+
MarkupWriterSource source = newSource(pw, ct, writer);
IPage page = newPage(ct);
+ IEngineService assetService = newAssetService();
IRequestCycle cycle = newCycle("ZePage", page);
- cycle.renderPage(writer);
+ cycle.renderPage(nested);
+ writer.comment("BEGIN Tapestry Portlet appId NAMESPACE");
+ writer.comment("Page: ZePage");
+
+ writer.comment("Generated:.*");
+ control.setMatcher(new AggregateArgumentsMatcher(new RegexpMatcher()));
+
+ writer.comment("Framework version:.*");
+
+
+ nested.close();
+
+ writer.comment("END Tapestry Portlet appId NAMESPACE");
+
writer.close();
replayControls();
@@ -112,10 +158,13 @@
PortletRendererImpl r = new PortletRendererImpl();
r.setMarkupWriterSource(source);
r.setResponse(response);
+ r.setAssetService(assetService);
+ r.setApplicationId("appId");
r.renderPage(cycle, "ZePage");
verifyControls();
}
+ // TODO: Tests that prove the RenderPageSupport is working properly.
}
\ No newline at end of file
1.15 +10 -6 jakarta-tapestry/framework/src/java/org/apache/tapestry/IRequestCycle.java
Index: IRequestCycle.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/IRequestCycle.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- IRequestCycle.java 29 Mar 2005 13:35:42 -0000 1.14
+++ IRequestCycle.java 29 Mar 2005 22:19:55 -0000 1.15
@@ -80,7 +80,7 @@
/**
* Retrieves a previously stored attribute, returning null if not found. Attributes allow
* components to locate each other; primarily they allow a wrapped component to locate a
- * component which wraps it.
+ * component which wraps it. Attributes are cleared at the end of the render (or rewind).
*/
public Object getAttribute(String name);
@@ -148,6 +148,7 @@
* id is reached.
*
* @see IAction
+ * @see org.apache.tapestry.link.ActionLink
*/
public void rewindPage(String targetActionId, IComponent targetComponent);
@@ -160,6 +161,8 @@
* This is used by components to locate each other. A component, such as
* {@link org.apache.tapestry.html.Body}, will write itself under a well-known name into the
* request cycle, and components it wraps can locate it by that name.
+ * <p>
+ * Attributes are cleared at the end of each render or rewind phase.
*/
public void setAttribute(String name, Object value);
@@ -264,7 +267,7 @@
public String getParameter(String name);
/**
- * Returns all query parameter values for the given name. Returns null if no value were
+ * Returns all query parameter values for the given name. Returns null if no values were
* provided.
*
* @since 3.1
@@ -272,8 +275,9 @@
public String[] getParameters(String name);
/**
- * Converts a partial URL into an absoluate URL. Prefixes the provided URL with servlet context
- * path (if any), then expands it to a full URL by prepending with the scheme, server and port.
+ * Converts a partial URL into an absolute URL. Prefixes the provided URL with servlet context
+ * path (if any), then expands it to a full URL by prepending with the scheme, server and port
+ * (determined from the current {@link org.apache.tapestry.web.WebRequest request}.
*
* @since 3.1
*/
@@ -291,8 +295,8 @@
public void forgetPage(String name);
/**
- * Returns the central {@link org.apache.tapestry.services.Infrastructure}object used to manage
- * the processing of the request.
+ * Returns the central {@link org.apache.tapestry.services.Infrastructure} object used to
+ * manage the processing of the request.
*
* @since 3.1
*/
1.2 +1 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/TapestryUtils.java
Index: TapestryUtils.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/TapestryUtils.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TapestryUtils.java 29 Mar 2005 13:35:42 -0000 1.1
+++ TapestryUtils.java 29 Mar 2005 22:19:55 -0000 1.2
@@ -62,7 +62,7 @@
* Stores the support object using {@link #storeUniqueAttribute(IRequestCycle, String, Object)}.
*/
- public static void storeRenderPageSupport(IRequestCycle cycle, PageRenderSupport support)
+ public static void storePageRenderSupport(IRequestCycle cycle, PageRenderSupport support)
{
storeUniqueAttribute(cycle, PAGE_RENDER_SUPPORT_ATTRIBUTE, support);
}
1.7 +1 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/html/Body.java
Index: Body.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/html/Body.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Body.java 29 Mar 2005 13:35:42 -0000 1.6
+++ Body.java 29 Mar 2005 22:19:55 -0000 1.7
@@ -120,7 +120,7 @@
protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
{
- TapestryUtils.storeRenderPageSupport(cycle, this);
+ TapestryUtils.storePageRenderSupport(cycle, this);
IMarkupWriter nested = writer.getNestedWriter();
1.2 +1 -1 jakarta-tapestry/framework/src/java/org/apache/tapestry/html/Describe.jwc
Index: Describe.jwc
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/html/Describe.jwc,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Describe.jwc 7 Mar 2005 19:51:57 -0000 1.1
+++ Describe.jwc 29 Mar 2005 22:19:55 -0000 1.2
@@ -34,5 +34,5 @@
</description>
</parameter>
- <inject property="describer" object="service:tapestry.describe.HTMLDescriber"/>
+ <inject property="describer" object="infrastructure:HTMLDescriber"/>
</component-specification>
1.10 +13 -0 jakarta-tapestry/framework/src/java/org/apache/tapestry/services/impl/ApplicationGlobalsImpl.java
Index: ApplicationGlobalsImpl.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/services/impl/ApplicationGlobalsImpl.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ApplicationGlobalsImpl.java 22 Mar 2005 21:54:39 -0000 1.9
+++ ApplicationGlobalsImpl.java 29 Mar 2005 22:19:55 -0000 1.10
@@ -16,6 +16,7 @@
import java.util.List;
+import org.apache.tapestry.describe.HTMLDescriber;
import org.apache.tapestry.services.ApplicationGlobals;
import org.apache.tapestry.services.LinkFactory;
import org.apache.tapestry.services.ResponseRenderer;
@@ -43,6 +44,8 @@
private LinkFactory _linkFactory;
+ private HTMLDescriber _htmlDescriber;
+
public void storeActivator(WebActivator activator)
{
_activator = activator;
@@ -107,4 +110,14 @@
{
_linkFactory = linkFactory;
}
+
+ public HTMLDescriber getHTMLDescriber()
+ {
+ return _htmlDescriber;
+ }
+
+ public void storeHTMLDescriber(HTMLDescriber describer)
+ {
+ _htmlDescriber = describer;
+ }
}
\ No newline at end of file
1.2 +9 -0 jakarta-tapestry/framework/src/java/org/apache/tapestry/services/impl/AbstractSetupApplicationGlobals.java
Index: AbstractSetupApplicationGlobals.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/services/impl/AbstractSetupApplicationGlobals.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractSetupApplicationGlobals.java 22 Mar 2005 21:54:39 -0000 1.1
+++ AbstractSetupApplicationGlobals.java 29 Mar 2005 22:19:55 -0000 1.2
@@ -16,6 +16,7 @@
import java.util.List;
+import org.apache.tapestry.describe.HTMLDescriber;
import org.apache.tapestry.services.ApplicationGlobals;
import org.apache.tapestry.services.LinkFactory;
import org.apache.tapestry.services.ResponseRenderer;
@@ -38,11 +39,14 @@
private LinkFactory _linkFactory;
+ private HTMLDescriber _HTMLDescriber;
+
protected void initialize()
{
_globals.storeFactoryServices(_factoryServices);
_globals.storeResponseRenderer(_responseRenderer);
_globals.storeLinkFactory(_linkFactory);
+ _globals.storeHTMLDescriber(_HTMLDescriber);
}
public void setGlobals(ApplicationGlobals globals)
@@ -64,4 +68,9 @@
{
_linkFactory = linkFactory;
}
+
+ public void setHTMLDescriber(HTMLDescriber describer)
+ {
+ _HTMLDescriber = describer;
+ }
}
\ No newline at end of file
1.25 +13 -0 jakarta-tapestry/framework/src/java/org/apache/tapestry/services/impl/InfrastructureImpl.java
Index: InfrastructureImpl.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/services/impl/InfrastructureImpl.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- InfrastructureImpl.java 22 Mar 2005 13:40:54 -0000 1.24
+++ InfrastructureImpl.java 29 Mar 2005 22:19:55 -0000 1.25
@@ -19,6 +19,7 @@
import org.apache.hivemind.ClassResolver;
import org.apache.hivemind.Resource;
import org.apache.hivemind.service.ThreadLocale;
+import org.apache.tapestry.describe.HTMLDescriber;
import org.apache.tapestry.engine.IPageSource;
import org.apache.tapestry.engine.IPropertySource;
import org.apache.tapestry.engine.IScriptSource;
@@ -102,6 +103,8 @@
private MarkupWriterSource _markupWriterSource;
+ private HTMLDescriber _htmlDescriber;
+
public String getApplicationId()
{
return _applicationId;
@@ -362,4 +365,14 @@
{
_markupWriterSource = markupWriterSource;
}
+
+ public HTMLDescriber getHTMLDescriber()
+ {
+ return _htmlDescriber;
+ }
+
+ public void setHTMLDescriber(HTMLDescriber htmlDescriber)
+ {
+ _htmlDescriber = htmlDescriber;
+ }
}
\ No newline at end of file
1.13 +7 -4 jakarta-tapestry/framework/src/java/org/apache/tapestry/form/Form.java
Index: Form.java
===================================================================
RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/Form.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Form.java 29 Mar 2005 15:24:29 -0000 1.12
+++ Form.java 29 Mar 2005 22:19:55 -0000 1.13
@@ -343,10 +343,6 @@
{
String actionId = cycle.getNextActionId();
- // Integrate the namespace into the form name;
-
- _name = getDisplayName() + actionId + getResponse().getNamespace();
-
boolean renderForm = !cycle.isRewinding();
boolean rewound = cycle.isRewound(this);
@@ -362,10 +358,17 @@
IMarkupWriter nested = writer.getNestedWriter();
+ // Note: not safe to invoke getNamespace() in Portlet world
+ // except during a RenderRequest.
+
+ if (renderForm)
+ _name = getDisplayName() + actionId + getResponse().getNamespace();
+
renderBody(nested, cycle);
if (renderForm)
{
+
ILink link = getLink(cycle, actionId);
writeAttributes(writer, link);
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org