You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by fr...@apache.org on 2006/12/22 06:48:43 UTC
svn commit: r489563 [1/2] - in /tapestry/tapestry5/tapestry-core/trunk/src:
main/java/org/apache/tapestry/
main/java/org/apache/tapestry/corelib/components/
main/java/org/apache/tapestry/internal/services/
main/java/org/apache/tapestry/internal/structu...
Author: freemant
Date: Thu Dec 21 21:48:41 2006
New Revision: 489563
URL: http://svn.apache.org/viewvc?view=rev&rev=489563
Log:
1) Rename InAppInvocation* to ComponentInvocation*.
2) Move the logic to associate a component invocation to an element from
LinkFactoryImpl to MarkupWriterImpl. In particular, a new method linkElement()
is added to MarkupWriter.
Added:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java
- copied, changed from r489555, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InAppInvocation.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInvocationMap.java
- copied, changed from r489555, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InAppInvocationMap.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/NoOpComponentInvocationMap.java
- copied, changed from r489555, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/NoOpInAppInvocationMap.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/ComponentInvoker.java
- copied, changed from r489555, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/InAppInvoker.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentInvocationTest.java
- copied, changed from r489555, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InAppInvocationTest.java
Removed:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InAppInvocation.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InAppInvocationMap.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/NoOpInAppInvocationMap.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/InAppInvoker.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InAppInvocationTest.java
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ComponentResourcesCommon.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/MarkupWriter.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/ActionLink.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Form.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ActionLinkHandler.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ActionLinkHandlerImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentEventDispatcher.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InvocationTarget.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkFactory.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/MarkupWriterImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkHandler.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkHandlerImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkTarget.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/InternalComponentResourcesImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/Page.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/PageImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/ActionLinkInvoker.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/InAppInvocationMapForPageTester.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageLinkInvoker.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageTester.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageElementFactoryImplTest.java
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ComponentResourcesCommon.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ComponentResourcesCommon.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ComponentResourcesCommon.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/ComponentResourcesCommon.java Thu Dec 21 21:48:41 2006
@@ -17,7 +17,6 @@
import java.util.Locale;
import org.apache.commons.logging.Log;
-import org.apache.tapestry.dom.Element;
import org.apache.tapestry.internal.structure.ComponentPageElement;
import org.apache.tapestry.model.ComponentModel;
import org.apache.tapestry.services.ComponentSource;
@@ -43,9 +42,6 @@
/**
* Creates a link that will trigger an action for this component.
*
- * @param linkElement
- * The element where the link is used (usually an <a> or an <form>). Pass
- * null if the link is not to be used in an element.
* @param action
* a name for the action associated with the link
* @param forForm
@@ -55,7 +51,7 @@
* additional objects to be encoded into the path portion of the link; each is
* converted to a string an URI encoded
*/
- Link createActionLink(Element linkElement, String action, boolean forForm, Object... context);
+ Link createActionLink(String action, boolean forForm, Object... context);
/**
* Returns a string consisting of the fully qualified class name of the containing page, and the
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/MarkupWriter.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/MarkupWriter.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/MarkupWriter.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/MarkupWriter.java Thu Dec 21 21:48:41 2006
@@ -35,6 +35,10 @@
* Begins a new element as a child of the current element. The new element becomes the current
* element. The new Element is returned and can be directly manipulated (possibly at a later
* date). Optionally, attributes for the new element can be specified directly.
+ * <p>
+ * If the element is intended to be clickable or submittable in the
+ * {@link org.apache.tapestry.test.pagelevel.PageTester}, you should call
+ * {@link #linkElement(String, Link, Object[])} instead.
*
* @param name
* the name of the element to create
@@ -44,6 +48,26 @@
* @see #attributes(Object[])
*/
Element element(String name, Object... attributes);
+
+ /**
+ * Just like {@link #element(String, Object[])} except that the element represents a link such
+ * as <a> or <form>. By calling this method to create the element, the Link object
+ * is associated with the element and this will allow the
+ * {@link org.apache.tapestry.test.pagelevel.PageTester} to simulate a click on it. If you call
+ * {@link #element(String, Object[])} instead of this method, the element will still work in a
+ * browser but won't work in the PageTester.
+ *
+ * @param name
+ * the name of the element to create
+ * @param link
+ * the link associated with the element being created. Usually you will use the URL
+ * of the link as the <code>href</code> attribute or <code>action</code>
+ * attribute of the element.
+ * @param attributes
+ * an even number of values, alternating names and values
+ * @return the new DOM Element node
+ */
+ Element linkElement(String name, Link link, Object... attributes);
/**
* Ends the current element. The new current element will be the parent element. Returns the new
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/ActionLink.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/ActionLink.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/ActionLink.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/ActionLink.java Thu Dec 21 21:48:41 2006
@@ -29,7 +29,6 @@
import org.apache.tapestry.annotations.Mixin;
import org.apache.tapestry.annotations.Parameter;
import org.apache.tapestry.corelib.mixins.RenderInformals;
-import org.apache.tapestry.dom.Element;
import org.apache.tapestry.services.PageRenderSupport;
/**
@@ -63,11 +62,9 @@
Object[] contextArray = _context == null ? new Object[0] : _context.toArray();
- Element element = writer.element("a");
+ Link link = _resources.createActionLink(DEFAULT_EVENT, false, contextArray);
- Link link = _resources.createActionLink(element, DEFAULT_EVENT, false, contextArray);
-
- element.attributes("href", link.toURI(), "id", clientId);
+ writer.linkElement("a", link, "href", link.toURI(), "id", clientId);
// TODO: Support for informal parameters, etc.
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Form.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Form.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Form.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Form.java Thu Dec 21 21:48:41 2006
@@ -147,14 +147,10 @@
String name = _pageRenderSupport.allocateClientId(_resources.getId());
- Element element = writer.element("form");
-
- Link link = _resources.createActionLink(
- element,
- TapestryConstants.DEFAULT_EVENT,
- true,
- contextArray);
- element.attributes("name", name, "id", name, "method", "post", "action", link.toFormURI());
+ Link link = _resources
+ .createActionLink(TapestryConstants.DEFAULT_EVENT, true, contextArray);
+ writer.linkElement("form", link, "name", name, "id", name, "method", "post", "action", link
+ .toFormURI());
// TODO: Informal parameters
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ActionLinkHandler.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ActionLinkHandler.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ActionLinkHandler.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ActionLinkHandler.java Thu Dec 21 21:48:41 2006
@@ -18,5 +18,5 @@
public interface ActionLinkHandler
{
- Link handle(InAppInvocation invocation);
+ Link handle(ComponentInvocation invocation);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ActionLinkHandlerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ActionLinkHandlerImpl.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ActionLinkHandlerImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ActionLinkHandlerImpl.java Thu Dec 21 21:48:41 2006
@@ -36,7 +36,7 @@
_linkFactory = linkFactory;
}
- public Link handle(InAppInvocation invocation)
+ public Link handle(ComponentInvocation invocation)
{
InvocationTarget target = invocation.getTarget();
ActionLinkTarget actionLinkTarget = Defense.cast(target, ActionLinkTarget.class, "target");
@@ -60,7 +60,7 @@
page = _cache.getActive();
- return _linkFactory.createPageLink(null, page);
+ return _linkFactory.createPageLink(page);
}
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentEventDispatcher.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentEventDispatcher.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentEventDispatcher.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentEventDispatcher.java Thu Dec 21 21:48:41 2006
@@ -61,7 +61,7 @@
for (int i = 1; i < chunks.length; i++)
context[i - 1] = chunks[i];
- Link link = _actionLinkHandler.handle(new InAppInvocation(new ActionLinkTarget(eventType,
+ Link link = _actionLinkHandler.handle(new ComponentInvocation(new ActionLinkTarget(eventType,
logicalPageName, nestedComponentId), context));
String URL = link.toRedirectURI();
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java (from r489555, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InAppInvocation.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java?view=diff&rev=489563&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InAppInvocation.java&r1=489555&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InAppInvocation.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java Thu Dec 21 21:48:41 2006
@@ -12,129 +12,129 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newMap;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.codec.EncoderException;
-import org.apache.commons.codec.net.URLCodec;
-import org.apache.tapestry.ioc.internal.util.InternalUtils;
-
-/**
- * It represents an invocation for a page or a component within the current app. Each invocation may
- * provide a context (Object[]) and parameters to the invocation target.
- */
-public class InAppInvocation
-{
- private final Object[] _context;
-
- private Map<String, String> _parameters;
-
- private InvocationTarget _target;
-
- public InAppInvocation(InvocationTarget target, Object[] context)
- {
- _target = target;
- _context = context;
- }
-
- /**
- * @return A path taking the format <em>target-path</em>/e1/e2?&q1=v1&q2=v2. where the
- * <em>target-path</em> is the path provided by the invocation target; e1 and e2 are
- * elements of the context; q1 and q2 are the parameters.
- */
- public String buildURI(boolean isForm)
- {
- String path = getPath();
- if (isForm || _parameters == null)
- return path;
-
- StringBuilder builder = new StringBuilder();
-
- builder.append(path);
-
- try
- {
- URLCodec codec = new URLCodec();
-
- String sep = "?";
-
- for (String name : getParameterNames())
- {
- String value = _parameters.get(name);
-
- builder.append(sep);
-
- // TODO: encode the parameter name?
-
- builder.append(name);
- builder.append("=");
- builder.append(codec.encode(value));
-
- sep = "&";
- }
- }
- catch (EncoderException ex)
- {
- throw new RuntimeException(ex);
- }
-
- return builder.toString();
- }
-
- /**
- * @return Just like the return value of {@link #buildURI(boolean)} except that parameters are
- * not included.
- */
- private String getPath()
- {
- StringBuilder builder = new StringBuilder();
- builder.append(_target.getPath());
-
- for (Object id : _context)
- {
- builder.append("/");
-
- // TODO: Need to encode this for URLs? What if the string contains slashes, etc.?
-
- builder.append(id.toString());
- }
- return builder.toString();
- }
-
- public Object[] getContext()
- {
- return _context;
- }
-
- public void addParameter(String parameterName, String value)
- {
- if (_parameters == null)
- _parameters = newMap();
-
- if (_parameters.containsKey(parameterName))
- throw new IllegalArgumentException(ServicesMessages.parameterNameMustBeUnique(
- parameterName,
- _parameters.get(parameterName)));
-
- _parameters.put(parameterName, value);
- }
-
- public List<String> getParameterNames()
- {
- return InternalUtils.sortedKeys(_parameters);
- }
-
- public String getParameterValue(String name)
- {
- return InternalUtils.get(_parameters, name);
- }
-
- public InvocationTarget getTarget()
- {
- return _target;
- }
-}
+package org.apache.tapestry.internal.services;
+
+import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newMap;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.codec.EncoderException;
+import org.apache.commons.codec.net.URLCodec;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
+
+/**
+ * It represents an invocation for a page or a component in the current app. Each invocation may
+ * provide a context (Object[]) and parameters to the invocation target.
+ */
+public class ComponentInvocation
+{
+ private final Object[] _context;
+
+ private Map<String, String> _parameters;
+
+ private InvocationTarget _target;
+
+ public ComponentInvocation(InvocationTarget target, Object[] context)
+ {
+ _target = target;
+ _context = context;
+ }
+
+ /**
+ * @return A path taking the format <em>target-path</em>/e1/e2?&q1=v1&q2=v2. where the
+ * <em>target-path</em> is the path provided by the invocation target; e1 and e2 are
+ * elements of the context; q1 and q2 are the parameters.
+ */
+ public String buildURI(boolean isForm)
+ {
+ String path = getPath();
+ if (isForm || _parameters == null)
+ return path;
+
+ StringBuilder builder = new StringBuilder();
+
+ builder.append(path);
+
+ try
+ {
+ URLCodec codec = new URLCodec();
+
+ String sep = "?";
+
+ for (String name : getParameterNames())
+ {
+ String value = _parameters.get(name);
+
+ builder.append(sep);
+
+ // TODO: encode the parameter name?
+
+ builder.append(name);
+ builder.append("=");
+ builder.append(codec.encode(value));
+
+ sep = "&";
+ }
+ }
+ catch (EncoderException ex)
+ {
+ throw new RuntimeException(ex);
+ }
+
+ return builder.toString();
+ }
+
+ /**
+ * @return Just like the return value of {@link #buildURI(boolean)} except that parameters are
+ * not included.
+ */
+ private String getPath()
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append(_target.getPath());
+
+ for (Object id : _context)
+ {
+ builder.append("/");
+
+ // TODO: Need to encode this for URLs? What if the string contains slashes, etc.?
+
+ builder.append(id.toString());
+ }
+ return builder.toString();
+ }
+
+ public Object[] getContext()
+ {
+ return _context;
+ }
+
+ public void addParameter(String parameterName, String value)
+ {
+ if (_parameters == null)
+ _parameters = newMap();
+
+ if (_parameters.containsKey(parameterName))
+ throw new IllegalArgumentException(ServicesMessages.parameterNameMustBeUnique(
+ parameterName,
+ _parameters.get(parameterName)));
+
+ _parameters.put(parameterName, value);
+ }
+
+ public List<String> getParameterNames()
+ {
+ return InternalUtils.sortedKeys(_parameters);
+ }
+
+ public String getParameterValue(String name)
+ {
+ return InternalUtils.get(_parameters, name);
+ }
+
+ public InvocationTarget getTarget()
+ {
+ return _target;
+ }
+}
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInvocationMap.java (from r489555, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InAppInvocationMap.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInvocationMap.java?view=diff&rev=489563&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InAppInvocationMap.java&r1=489555&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInvocationMap.java&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InAppInvocationMap.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentInvocationMap.java Thu Dec 21 21:48:41 2006
@@ -12,14 +12,17 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-import org.apache.tapestry.dom.Element;
-
-/**
- * Associates an in-app invocation object with an element (usually an action link or a form).
- */
-public interface InAppInvocationMap
-{
- void put(Element element, InAppInvocation invocation);
-}
+package org.apache.tapestry.internal.services;
+
+import org.apache.tapestry.dom.Element;
+
+/**
+ * Associates an {@link org.apache.tapestry.internal.services.ComponentInvocation} object with an
+ * element (usually an action link or a form). The purpose is to allow the
+ * {@link org.apache.tapestry.test.pagelevel.PageTester} to simulate a click on an element by
+ * finding out the ComponentInvocation from the element and then invoking it.
+ */
+public interface ComponentInvocationMap
+{
+ void put(Element element, ComponentInvocation invocation);
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java Thu Dec 21 21:48:41 2006
@@ -510,11 +510,9 @@
/** Service used to create links for components and pages. */
public LinkFactory buildLinkFactory(@InjectService("ContextPathSource")
ContextPathSource contextPathSource, @InjectService("URLEncoder")
- URLEncoder encoder, @InjectService("InAppInvocationMap")
- InAppInvocationMap inAppInvocationMap)
+ URLEncoder encoder)
{
- return new LinkFactoryImpl(contextPathSource, encoder, _componentClassResolver,
- inAppInvocationMap);
+ return new LinkFactoryImpl(contextPathSource, encoder, _componentClassResolver);
}
public ContextPathSource buildContextPathSource()
@@ -562,16 +560,16 @@
}
/**
- * It is a map from a {@link org.apache.tapestry.dom.Element} to a {@link InAppInvocation}
+ * It is a map from a {@link org.apache.tapestry.dom.Element} to a {@link ComponentInvocation}
* Components rendering a link element that is intended to be "clickable" by the
* {@link org.apache.tapestry.test.pagelevel.PageTester} must map that element to an
- * InAppInvocation so that the PageTester can find it.
+ * ComponentInvocation so that the PageTester can find it.
* <p>
* By default (production mode), the map does nothing.
*/
- public static InAppInvocationMap buildInAppInvocationMap()
+ public static ComponentInvocationMap buildInAppInvocationMap()
{
- return new NoOpInAppInvocationMap();
+ return new NoOpComponentInvocationMap();
}
public FormParameterLookup buildFormParameterLookup()
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InvocationTarget.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InvocationTarget.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InvocationTarget.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InvocationTarget.java Thu Dec 21 21:48:41 2006
@@ -15,14 +15,14 @@
package org.apache.tapestry.internal.services;
/**
- * It represents target for an in-app invocation. For example, it may be a page or an action for a
- * component within a page.
+ * It represents target for a {@link org.apache.tapestry.internal.services.ComponentInvocation}.
+ * For example, it may be a page or an action for a component within a page.
*/
public interface InvocationTarget
{
/**
- * @see InAppInvocation#getPath()
+ * @see ComponentInvocation#getPath()
*/
String getPath();
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkFactory.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkFactory.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkFactory.java Thu Dec 21 21:48:41 2006
@@ -15,7 +15,6 @@
package org.apache.tapestry.internal.services;
import org.apache.tapestry.Link;
-import org.apache.tapestry.dom.Element;
import org.apache.tapestry.internal.structure.ComponentPageElement;
import org.apache.tapestry.internal.structure.Page;
@@ -30,9 +29,6 @@
* Creates a stateful action link. Action links are built for components. Action links are
* encoded by the current request (that is, bound to the current request's session, if any).
*
- * @param linkElement
- * The element for the link (most usually a <a> or <form>). Pass null if
- * the link is not to be used as an element.
* @param component
* the component for which an action link is to be generated
* @param action
@@ -44,19 +40,16 @@
* URI
* @return a link
*/
- Link createActionLink(Element linkElement, ComponentPageElement component, String action,
- boolean forForm, Object... context);
+ Link createActionLink(ComponentPageElement component, String action, boolean forForm,
+ Object... context);
/**
* Creates a link to a page. TODO: What about context? Additional query parameters?
*
- * @param linkElement
- * The element for the link (most usually a <a>). Pass null if the link is not
- * to be used as an element.
* @param page
* @return
*/
- Link createPageLink(Element linkElement, Page page);
+ Link createPageLink(Page page);
void addListener(LinkFactoryListener listener);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java Thu Dec 21 21:48:41 2006
@@ -25,7 +25,6 @@
import org.apache.tapestry.ComponentEventHandler;
import org.apache.tapestry.Link;
import org.apache.tapestry.TapestryConstants;
-import org.apache.tapestry.dom.Element;
import org.apache.tapestry.internal.structure.ComponentPageElement;
import org.apache.tapestry.internal.structure.Page;
import org.apache.tapestry.ioc.internal.util.Defense;
@@ -45,20 +44,17 @@
private final StrategyRegistry<PassivateContextHandler> _registry;
- private final InAppInvocationMap _invocationMap;
-
private interface PassivateContextHandler<T>
{
void handle(T result, List context);
}
public LinkFactoryImpl(ContextPathSource contextPathSource, URLEncoder encoder,
- ComponentClassResolver componentClassResolver, InAppInvocationMap invocationMap)
+ ComponentClassResolver componentClassResolver)
{
_contextPathSource = contextPathSource;
_encoder = encoder;
_componentClassResolver = componentClassResolver;
- _invocationMap = invocationMap;
Map<Class, PassivateContextHandler> registrations = newMap();
@@ -99,7 +95,7 @@
_listeners.add(listener);
}
- public Link createActionLink(Element linkElement, ComponentPageElement component,
+ public Link createActionLink(ComponentPageElement component,
String action, boolean forForm, Object... context)
{
Defense.notBlank(action, "action");
@@ -110,7 +106,7 @@
ActionLinkTarget target = new ActionLinkTarget(action, logicalPageName, component
.getNestedId());
- InAppInvocation invocation = new InAppInvocation(target, context);
+ ComponentInvocation invocation = new ComponentInvocation(target, context);
Link link = new LinkImpl(_encoder, _contextPathSource.getContextPath(), invocation);
@@ -120,19 +116,10 @@
// TODO: Much more: query parameter for case where active page != component page.
// Letting listeners add extra parameters.
- mapElementToInvocation(linkElement, invocation);
-
return link;
}
- private void mapElementToInvocation(Element linkElement, InAppInvocation invocation)
- {
- // Allow the PageTester to extract the invocation object to invoke it later.
- if (linkElement != null)
- _invocationMap.put(linkElement, invocation);
- }
-
- public Link createPageLink(Element linkElement, final Page page)
+ public Link createPageLink(final Page page)
{
Defense.notNull(page, "page");
@@ -157,7 +144,7 @@
rootElement.triggerEvent(TapestryConstants.PASSIVATE_EVENT, null, handler);
PageLinkTarget target = new PageLinkTarget(logicalPageName);
- InAppInvocation invocation = new InAppInvocation(target, context.toArray());
+ ComponentInvocation invocation = new ComponentInvocation(target, context.toArray());
Link link = new LinkImpl(_encoder, _contextPathSource.getContextPath(), invocation);
@@ -166,8 +153,6 @@
// TODO: Much more: query parameter for case where active page != component page.
// Letting listeners add extra parameters.
-
- mapElementToInvocation(linkElement, invocation);
return link;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkImpl.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LinkImpl.java Thu Dec 21 21:48:41 2006
@@ -27,15 +27,15 @@
private final String _contextPath;
- private final InAppInvocation _invocation;
+ private final ComponentInvocation _invocation;
public LinkImpl(URLEncoder encoder, String contextPath, String targetPath)
{
- this(encoder, contextPath, new InAppInvocation(new OpaqueConstantTarget(targetPath),
+ this(encoder, contextPath, new ComponentInvocation(new OpaqueConstantTarget(targetPath),
new Object[0]));
}
- public LinkImpl(URLEncoder encoder, String contextPath, InAppInvocation invocation)
+ public LinkImpl(URLEncoder encoder, String contextPath, ComponentInvocation invocation)
{
_contextPath = contextPath;
_encoder = encoder;
@@ -81,7 +81,7 @@
return _encoder.encodeRedirectURL(buildURI(false));
}
- public InAppInvocation getInvocation()
+ public ComponentInvocation getInvocation()
{
return _invocation;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/MarkupWriterImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/MarkupWriterImpl.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/MarkupWriterImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/MarkupWriterImpl.java Thu Dec 21 21:48:41 2006
@@ -12,137 +12,153 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-import java.io.PrintWriter;
-
-import org.apache.tapestry.MarkupWriter;
-import org.apache.tapestry.dom.DefaultMarkupModel;
-import org.apache.tapestry.dom.Document;
-import org.apache.tapestry.dom.Element;
-import org.apache.tapestry.dom.MarkupModel;
-import org.apache.tapestry.dom.Text;
-
-/**
- *
- */
-public class MarkupWriterImpl implements MarkupWriter
-{
- private final Document _document;
-
- private Element _current;
-
- private Text _currentText;
-
- public MarkupWriterImpl()
- {
- this(new DefaultMarkupModel());
- }
-
- public MarkupWriterImpl(MarkupModel model)
- {
- _document = new Document(model);
- }
-
- public void toMarkup(PrintWriter writer)
- {
- _document.toMarkup(writer);
- }
-
- @Override
- public String toString()
- {
- return _document.toString();
+package org.apache.tapestry.internal.services;
+
+import java.io.PrintWriter;
+
+import org.apache.tapestry.Link;
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.dom.DefaultMarkupModel;
+import org.apache.tapestry.dom.Document;
+import org.apache.tapestry.dom.Element;
+import org.apache.tapestry.dom.MarkupModel;
+import org.apache.tapestry.dom.Text;
+import org.apache.tapestry.ioc.internal.util.Defense;
+
+/**
+ *
+ */
+public class MarkupWriterImpl implements MarkupWriter
+{
+ private final Document _document;
+
+ private Element _current;
+
+ private Text _currentText;
+
+ private final ComponentInvocationMap _invocationMap;
+
+ public MarkupWriterImpl()
+ {
+ this(new DefaultMarkupModel(), null);
+ }
+
+ public MarkupWriterImpl(MarkupModel model, ComponentInvocationMap invocationMap)
+ {
+ _document = new Document(model);
+ _invocationMap = invocationMap;
+ }
+
+ public void toMarkup(PrintWriter writer)
+ {
+ _document.toMarkup(writer);
+ }
+
+ @Override
+ public String toString()
+ {
+ return _document.toString();
}
-
+
public Document getDocument()
{
return _document;
- }
-
- public void write(String text)
- {
- ensureCurrentElement();
-
- if (text == null)
- return;
-
- if (_currentText == null)
- {
- _currentText = _current.text(text);
- return;
- }
-
- _currentText.write(text);
- }
-
- public void writef(String format, Object... args)
- {
- // A bit of a cheat:
-
- write("");
- _currentText.writef(format, args);
- }
-
- public void attributes(Object... namesAndValues)
- {
- ensureCurrentElement();
-
- int i = 0;
-
- while (i < namesAndValues.length)
- {
- // name should never be null.
-
- String name = namesAndValues[i++].toString();
- Object value = namesAndValues[i++];
-
- if (value == null)
- continue;
-
- _current.attribute(name, value.toString());
- }
-
- }
-
- private void ensureCurrentElement()
- {
- if (_current == null)
- throw new IllegalStateException(ServicesMessages.markupWriterNoCurrentElement());
- }
-
- public Element element(String name, Object... namesAndValues)
- {
- if (_current == null)
- _current = _document.newRootElement(name);
- else
- _current = _current.element(name);
-
- attributes(namesAndValues);
-
- _currentText = null;
-
- return _current;
- }
-
- public Element end()
- {
- ensureCurrentElement();
-
- _current = _current.getParent();
-
- _currentText = null;
-
- return _current;
- }
-
- public void comment(String text)
- {
- ensureCurrentElement();
-
- _current.comment(text);
-
- _currentText = null;
- }
-
-}
+ }
+
+ public void write(String text)
+ {
+ ensureCurrentElement();
+
+ if (text == null)
+ return;
+
+ if (_currentText == null)
+ {
+ _currentText = _current.text(text);
+ return;
+ }
+
+ _currentText.write(text);
+ }
+
+ public void writef(String format, Object... args)
+ {
+ // A bit of a cheat:
+
+ write("");
+ _currentText.writef(format, args);
+ }
+
+ public void attributes(Object... namesAndValues)
+ {
+ ensureCurrentElement();
+
+ int i = 0;
+
+ while (i < namesAndValues.length)
+ {
+ // name should never be null.
+
+ String name = namesAndValues[i++].toString();
+ Object value = namesAndValues[i++];
+
+ if (value == null)
+ continue;
+
+ _current.attribute(name, value.toString());
+ }
+
+ }
+
+ private void ensureCurrentElement()
+ {
+ if (_current == null)
+ throw new IllegalStateException(ServicesMessages.markupWriterNoCurrentElement());
+ }
+
+ public Element element(String name, Object... namesAndValues)
+ {
+ if (_current == null)
+ _current = _document.newRootElement(name);
+ else
+ _current = _current.element(name);
+
+ attributes(namesAndValues);
+
+ _currentText = null;
+
+ return _current;
+ }
+
+ public Element linkElement(String name, Link link, Object... namesAndValues)
+ {
+ Defense.notNull(link, "link");
+ Element element = element(name, namesAndValues);
+ if (_invocationMap != null)
+ {
+ _invocationMap.put(element, ((LinkImpl) link).getInvocation());
+ }
+ return element;
+ }
+
+ public Element end()
+ {
+ ensureCurrentElement();
+
+ _current = _current.getParent();
+
+ _currentText = null;
+
+ return _current;
+ }
+
+ public void comment(String text)
+ {
+ ensureCurrentElement();
+
+ _current.comment(text);
+
+ _currentText = null;
+ }
+
+}
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/NoOpComponentInvocationMap.java (from r489555, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/NoOpInAppInvocationMap.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/NoOpComponentInvocationMap.java?view=diff&rev=489563&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/NoOpInAppInvocationMap.java&r1=489555&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/NoOpComponentInvocationMap.java&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/NoOpInAppInvocationMap.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/NoOpComponentInvocationMap.java Thu Dec 21 21:48:41 2006
@@ -12,20 +12,21 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-import org.apache.tapestry.dom.Element;
-
-/**
- * The production implementation for InAppInvocationMap. It does absolutely nothing because it is
- * not needed in production.
- */
-public class NoOpInAppInvocationMap implements InAppInvocationMap
-{
-
- public void put(Element element, InAppInvocation invocation)
- {
-
- }
-
-}
+package org.apache.tapestry.internal.services;
+
+import org.apache.tapestry.dom.Element;
+
+/**
+ * The production implementation for
+ * {@link org.apache.tapestry.internal.services.ComponentInvocationMap}. It does absolutely nothing
+ * because it is not needed in production.
+ */
+public class NoOpComponentInvocationMap implements ComponentInvocationMap
+{
+
+ public void put(Element element, ComponentInvocation invocation)
+ {
+
+ }
+
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkHandler.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkHandler.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkHandler.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkHandler.java Thu Dec 21 21:48:41 2006
@@ -16,5 +16,5 @@
public interface PageLinkHandler
{
- void handle(InAppInvocation invocation, PageRenderer renderer);
+ void handle(ComponentInvocation invocation, PageRenderer renderer);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkHandlerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkHandlerImpl.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkHandlerImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkHandlerImpl.java Thu Dec 21 21:48:41 2006
@@ -31,7 +31,7 @@
_cache = cache;
}
- public void handle(InAppInvocation invocation, PageRenderer renderer)
+ public void handle(ComponentInvocation invocation, PageRenderer renderer)
{
InvocationTarget target = invocation.getTarget();
PageLinkTarget pageLinkTarget = Defense.cast(target, PageLinkTarget.class, "target");
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkTarget.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkTarget.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkTarget.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLinkTarget.java Thu Dec 21 21:48:41 2006
@@ -12,38 +12,37 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-
-/**
- * It represents an in-app invocation target for a page link. It is passed to an
- * {@link org.apache.tapestry.internal.services.ActionLinkHandler} by both the
- * {@link org.apache.tapestry.test.pagelevel.PageTester} and the real Tapestry code
- * {@link org.apache.tapestry.internal.services.PageRenderDispatcher} in order to invoke a page
- * link.
- */
-public class PageLinkTarget implements InvocationTarget
-{
-
- private final String _pageName;
-
- public PageLinkTarget(String pageName)
- {
- _pageName = pageName;
-
- }
-
- public String getPath()
- {
- StringBuilder builder = new StringBuilder();
- builder.append(_pageName);
- builder.append(".html");
- return builder.toString();
- }
-
- public String getPageName()
- {
- return _pageName;
- }
-
-}
+package org.apache.tapestry.internal.services;
+
+/**
+ * It represents a component invocation target for a page link. It is passed to an
+ * {@link org.apache.tapestry.internal.services.ActionLinkHandler} by both the
+ * {@link org.apache.tapestry.test.pagelevel.PageTester} and the real Tapestry code
+ * {@link org.apache.tapestry.internal.services.PageRenderDispatcher} in order to invoke a page
+ * link.
+ */
+public class PageLinkTarget implements InvocationTarget
+{
+
+ private final String _pageName;
+
+ public PageLinkTarget(String pageName)
+ {
+ _pageName = pageName;
+
+ }
+
+ public String getPath()
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append(_pageName);
+ builder.append(".html");
+ return builder.toString();
+ }
+
+ public String getPageName()
+ {
+ return _pageName;
+ }
+
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java Thu Dec 21 21:48:41 2006
@@ -65,7 +65,7 @@
context[i - 1] = terms[i];
}
_handler.handle(
- new InAppInvocation(new PageLinkTarget(logicalPageName), context),
+ new ComponentInvocation(new PageLinkTarget(logicalPageName), context),
new PageRenderer()
{
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/ComponentPageElementImpl.java Thu Dec 21 21:48:41 2006
@@ -669,10 +669,9 @@
* {@link Page#createActionLink(Element, ComponentPageElement, String, boolean, Object[]) the containing page}.
* Why the extra layer? Because
*/
- public Link createActionLink(Element linkElement, String action, boolean forForm,
- Object... context)
+ public Link createActionLink(String action, boolean forForm, Object... context)
{
- return _page.createActionLink(linkElement, this, action, forForm, context);
+ return _page.createActionLink(this, action, forForm, context);
}
public void enqueueBeforeRenderBody(RenderQueue queue)
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/InternalComponentResourcesImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/InternalComponentResourcesImpl.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/InternalComponentResourcesImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/InternalComponentResourcesImpl.java Thu Dec 21 21:48:41 2006
@@ -23,7 +23,6 @@
import org.apache.tapestry.ComponentEventHandler;
import org.apache.tapestry.Link;
import org.apache.tapestry.MarkupWriter;
-import org.apache.tapestry.dom.Element;
import org.apache.tapestry.internal.InternalComponentResources;
import org.apache.tapestry.internal.services.Instantiator;
import org.apache.tapestry.ioc.Messages;
@@ -98,10 +97,9 @@
return _element.hasFieldChange(fieldName);
}
- public Link createActionLink(Element linkElement, String action, boolean forForm,
- Object... context)
+ public Link createActionLink(String action, boolean forForm, Object... context)
{
- return _element.createActionLink(linkElement, action, forForm, context);
+ return _element.createActionLink(action, forForm, context);
}
public String getCompleteId()
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/Page.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/Page.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/Page.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/Page.java Thu Dec 21 21:48:41 2006
@@ -18,7 +18,6 @@
import org.apache.commons.logging.Log;
import org.apache.tapestry.Link;
-import org.apache.tapestry.dom.Element;
import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.runtime.PageLifecycleListener;
@@ -115,16 +114,13 @@
/**
* Creates a link that will trigger behavior in a component within the page.
*
- * @param linkElement
- * The element where the link is used (usually an <a>). Pass null if the link is
- * not to be used in an element.
* @param element
* @param action
* @param forForm
* @param context
* @return
*/
- Link createActionLink(Element linkElement, ComponentPageElement element, String action,
+ Link createActionLink(ComponentPageElement element, String action,
boolean forForm, Object... context);
/**
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/PageImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/PageImpl.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/PageImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/structure/PageImpl.java Thu Dec 21 21:48:41 2006
@@ -21,7 +21,6 @@
import org.apache.commons.logging.Log;
import org.apache.tapestry.Link;
-import org.apache.tapestry.dom.Element;
import org.apache.tapestry.internal.services.LinkFactory;
import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.runtime.PageLifecycleListener;
@@ -147,10 +146,10 @@
return _rootElement.getLog();
}
- public Link createActionLink(Element linkElement, ComponentPageElement element, String action,
- boolean forForm, Object... context)
+ public Link createActionLink(ComponentPageElement element, String action, boolean forForm,
+ Object... context)
{
- return _linkFactory.createActionLink(linkElement, element, action, forForm, context);
+ return _linkFactory.createActionLink(element, action, forForm, context);
}
public void persistFieldChange(ComponentPageElement element, String fieldName, Object newValue)
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java Thu Dec 21 21:48:41 2006
@@ -38,6 +38,7 @@
import org.apache.tapestry.annotations.CleanupRender;
import org.apache.tapestry.annotations.InjectPage;
import org.apache.tapestry.annotations.SetupRender;
+import org.apache.tapestry.dom.DefaultMarkupModel;
import org.apache.tapestry.internal.InternalConstants;
import org.apache.tapestry.internal.bindings.ComponentBindingFactory;
import org.apache.tapestry.internal.bindings.LiteralBindingFactory;
@@ -68,6 +69,7 @@
import org.apache.tapestry.internal.services.EnvironmentalWorker;
import org.apache.tapestry.internal.services.FieldValidatorSourceImpl;
import org.apache.tapestry.internal.services.HeartbeatImpl;
+import org.apache.tapestry.internal.services.ComponentInvocationMap;
import org.apache.tapestry.internal.services.InfrastructureImpl;
import org.apache.tapestry.internal.services.InfrastructureManagerImpl;
import org.apache.tapestry.internal.services.InjectAnonymousWorker;
@@ -303,14 +305,16 @@
return new InfrastructureImpl(manager);
}
- public static MarkupWriterFactory buildMarkupWriterFactory()
+ public static MarkupWriterFactory buildMarkupWriterFactory(
+ @InjectService("tapestry.internal.InAppInvocationMap")
+ final ComponentInvocationMap inAppInvocationMap)
{
// Temporary ...
return new MarkupWriterFactory()
{
public MarkupWriter newMarkupWriter()
{
- return new MarkupWriterImpl();
+ return new MarkupWriterImpl(new DefaultMarkupModel(), inAppInvocationMap);
}
};
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/ActionLinkInvoker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/ActionLinkInvoker.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/ActionLinkInvoker.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/ActionLinkInvoker.java Thu Dec 21 21:48:41 2006
@@ -17,22 +17,22 @@
import org.apache.tapestry.Link;
import org.apache.tapestry.dom.Document;
import org.apache.tapestry.internal.services.ActionLinkHandler;
-import org.apache.tapestry.internal.services.InAppInvocation;
+import org.apache.tapestry.internal.services.ComponentInvocation;
import org.apache.tapestry.internal.services.LinkImpl;
import org.apache.tapestry.ioc.Registry;
/**
* Simulates a click on an action link.
*/
-public class ActionLinkInvoker implements InAppInvoker
+public class ActionLinkInvoker implements ComponentInvoker
{
private final Registry _registry;
- private final InAppInvoker _followupInvoker;
+ private final ComponentInvoker _followupInvoker;
private final ActionLinkHandler _actionLinkHandler;
- public ActionLinkInvoker(Registry registry, InAppInvoker followupInvoker)
+ public ActionLinkInvoker(Registry registry, ComponentInvoker followupInvoker)
{
_registry = registry;
_followupInvoker = followupInvoker;
@@ -41,19 +41,19 @@
/**
* Click on the action link and get another link in return. Then follow up the link with another
- * {@link InAppInvoker}.
+ * {@link ComponentInvoker}.
*
* @param invocation
- * The in-app invocation object corresponding to the action link.
+ * The ComponentInvocation object corresponding to the action link.
* @return The DOM created. Typically you will assert against it.
*/
- public Document invoke(InAppInvocation invocation)
+ public Document invoke(ComponentInvocation invocation)
{
Link followupLink = click(invocation);
return _followupInvoker.invoke(((LinkImpl) followupLink).getInvocation());
}
- private Link click(InAppInvocation invocation)
+ private Link click(ComponentInvocation invocation)
{
try
{
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/ComponentInvoker.java (from r489555, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/InAppInvoker.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/ComponentInvoker.java?view=diff&rev=489563&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/InAppInvoker.java&r1=489555&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/ComponentInvoker.java&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/InAppInvoker.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/ComponentInvoker.java Thu Dec 21 21:48:41 2006
@@ -12,21 +12,21 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.test.pagelevel;
-
-import org.apache.tapestry.dom.Document;
-import org.apache.tapestry.internal.services.InAppInvocation;
-
-/**
- * Invokes an in-app invocation.
- */
-public interface InAppInvoker
-{
- /**
- * @param invocation
- * The in-app invocation object to be invoked.
- * @return The DOM created. Typically you will assert against it.
- */
- Document invoke(InAppInvocation invocation);
-
-}
+package org.apache.tapestry.test.pagelevel;
+
+import org.apache.tapestry.dom.Document;
+import org.apache.tapestry.internal.services.ComponentInvocation;
+
+/**
+ * Invokes a {@link org.apache.tapestry.internal.services.ComponentInvocation}.
+ */
+public interface ComponentInvoker
+{
+ /**
+ * @param invocation
+ * The ComponentInvocation object to be invoked.
+ * @return The DOM created. Typically you will assert against it.
+ */
+ Document invoke(ComponentInvocation invocation);
+
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/InAppInvocationMapForPageTester.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/InAppInvocationMapForPageTester.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/InAppInvocationMapForPageTester.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/InAppInvocationMapForPageTester.java Thu Dec 21 21:48:41 2006
@@ -19,24 +19,24 @@
import java.util.Map;
import org.apache.tapestry.dom.Element;
-import org.apache.tapestry.internal.services.InAppInvocation;
-import org.apache.tapestry.internal.services.InAppInvocationMap;
+import org.apache.tapestry.internal.services.ComponentInvocation;
+import org.apache.tapestry.internal.services.ComponentInvocationMap;
-public class InAppInvocationMapForPageTester implements InAppInvocationMap
+public class InAppInvocationMapForPageTester implements ComponentInvocationMap
{
- private Map<Element, InAppInvocation> map = newMap();
+ private Map<Element, ComponentInvocation> map = newMap();
public void clear()
{
map.clear();
}
- public void put(Element element, InAppInvocation invocation)
+ public void put(Element element, ComponentInvocation invocation)
{
map.put(element, invocation);
}
- public InAppInvocation get(Element element)
+ public ComponentInvocation get(Element element)
{
return map.get(element);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageLinkInvoker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageLinkInvoker.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageLinkInvoker.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageLinkInvoker.java Thu Dec 21 21:48:41 2006
@@ -12,62 +12,66 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.test.pagelevel;
-
-import org.apache.tapestry.dom.Document;
-import org.apache.tapestry.internal.services.InAppInvocation;
-import org.apache.tapestry.internal.services.MarkupWriterImpl;
-import org.apache.tapestry.internal.services.PageLinkHandler;
-import org.apache.tapestry.internal.services.PageMarkupRenderer;
-import org.apache.tapestry.internal.services.PageRenderer;
-import org.apache.tapestry.internal.structure.Page;
-import org.apache.tapestry.ioc.Registry;
-
-/**
- * Simulates a click on a page link.
- */
-public class PageLinkInvoker implements InAppInvoker
-{
- private final Registry _registry;
-
- private final PageLinkHandler _pageLinkHandler;
-
- private final PageMarkupRenderer _renderer;
-
- public PageLinkInvoker(Registry registry)
- {
- _registry = registry;
- _pageLinkHandler = _registry.getService(PageLinkHandler.class);
- _renderer = _registry.getService(PageMarkupRenderer.class);
- }
-
- /**
- * Click on the page link.
- *
- * @param invocation
- * The in-app invocation object corresponding to the page link.
- * @return The DOM created. Typically you will assert against it.
- */
- public Document invoke(InAppInvocation invocation)
- {
- try
- {
- final MarkupWriterImpl writer = new MarkupWriterImpl();
- _pageLinkHandler.handle(invocation, new PageRenderer()
- {
-
- public void renderPage(Page page)
- {
- _renderer.renderPageMarkup(page, writer);
- }
-
- });
- return writer.getDocument();
- }
- finally
- {
- _registry.cleanupThread();
- }
- }
-
-}
+package org.apache.tapestry.test.pagelevel;
+
+import org.apache.tapestry.dom.Document;
+import org.apache.tapestry.internal.services.ComponentInvocation;
+import org.apache.tapestry.internal.services.MarkupWriterImpl;
+import org.apache.tapestry.internal.services.PageLinkHandler;
+import org.apache.tapestry.internal.services.PageMarkupRenderer;
+import org.apache.tapestry.internal.services.PageRenderer;
+import org.apache.tapestry.internal.structure.Page;
+import org.apache.tapestry.ioc.Registry;
+import org.apache.tapestry.services.MarkupWriterFactory;
+
+/**
+ * Simulates a click on a page link.
+ */
+public class PageLinkInvoker implements ComponentInvoker
+{
+ private final Registry _registry;
+
+ private final PageLinkHandler _pageLinkHandler;
+
+ private final PageMarkupRenderer _renderer;
+
+ private final MarkupWriterFactory _writerFactory;
+
+ public PageLinkInvoker(Registry registry)
+ {
+ _registry = registry;
+ _pageLinkHandler = _registry.getService(PageLinkHandler.class);
+ _renderer = _registry.getService(PageMarkupRenderer.class);
+ _writerFactory = _registry.getService(MarkupWriterFactory.class);
+ }
+
+ /**
+ * Click on the page link.
+ *
+ * @param invocation
+ * The ComponentInvocation object corresponding to the page link.
+ * @return The DOM created. Typically you will assert against it.
+ */
+ public Document invoke(ComponentInvocation invocation)
+ {
+ try
+ {
+ final MarkupWriterImpl writer = (MarkupWriterImpl) _writerFactory.newMarkupWriter();
+ _pageLinkHandler.handle(invocation, new PageRenderer()
+ {
+
+ public void renderPage(Page page)
+ {
+ _renderer.renderPageMarkup(page, writer);
+ }
+
+ });
+ return writer.getDocument();
+ }
+ finally
+ {
+ _registry.cleanupThread();
+ }
+ }
+
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageTester.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageTester.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageTester.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageTester.java Thu Dec 21 21:48:41 2006
@@ -25,7 +25,7 @@
import org.apache.tapestry.dom.Node;
import org.apache.tapestry.internal.TapestryAppInitializer;
import org.apache.tapestry.internal.services.ActionLinkTarget;
-import org.apache.tapestry.internal.services.InAppInvocation;
+import org.apache.tapestry.internal.services.ComponentInvocation;
import org.apache.tapestry.internal.services.LocalizationSetter;
import org.apache.tapestry.internal.services.PageLinkTarget;
import org.apache.tapestry.ioc.Registry;
@@ -38,7 +38,7 @@
* element in the DOM object to get the next page. Because no servlet container is required, it is
* very fast and you can directly debug into your code in your IDE.
*/
-public class PageTester implements InAppInvoker
+public class PageTester implements ComponentInvoker
{
private Registry _registry;
@@ -49,7 +49,7 @@
// For the moment, a page tester instance works in a single session.
private SessionHolderForPageTester _sessionHolder;
- private StrategyRegistry<InAppInvoker> _invokerRegistry;
+ private StrategyRegistry<ComponentInvoker> _invokerRegistry;
private Locale _preferedLanguage;
@@ -89,10 +89,10 @@
private void buildInvokersRegistry()
{
- Map<Class, InAppInvoker> map = newMap();
+ Map<Class, ComponentInvoker> map = newMap();
map.put(PageLinkTarget.class, new PageLinkInvoker(_registry));
map.put(ActionLinkTarget.class, new ActionLinkInvoker(_registry, this));
- _invokerRegistry = new StrategyRegistry<InAppInvoker>(InAppInvoker.class, map);
+ _invokerRegistry = new StrategyRegistry<ComponentInvoker>(ComponentInvoker.class, map);
}
private Map<String, Object> addDefaultOverrides(Map<String, Object> serviceOverrides)
@@ -146,7 +146,7 @@
*/
public Document renderPage(String pageName)
{
- return invoke(new InAppInvocation(new PageLinkTarget(pageName), new Object[0]));
+ return invoke(new ComponentInvocation(new PageLinkTarget(pageName), new Object[0]));
}
/**
@@ -159,28 +159,28 @@
public Document clickLink(Element link)
{
Defense.notNull(link, "link");
- InAppInvocation invocation = getInvocation(link);
+ ComponentInvocation invocation = getInvocation(link);
return invoke(invocation);
}
- private InAppInvocation getInvocation(Element element)
+ private ComponentInvocation getInvocation(Element element)
{
- InAppInvocation invocation = _invocationMap.get(element);
+ ComponentInvocation invocation = _invocationMap.get(element);
if (invocation == null)
{
throw new IllegalArgumentException(
- "No in-app invocation object is associated with the Element");
+ "No component invocation object is associated with the Element");
}
return invocation;
}
- public Document invoke(InAppInvocation invocation)
+ public Document invoke(ComponentInvocation invocation)
{
// It is critical to clear the map before invoking an invocation (render a page or click a
// link).
_invocationMap.clear();
setThreadLocale();
- InAppInvoker invoker = _invokerRegistry.getByInstance(invocation.getTarget());
+ ComponentInvoker invoker = _invokerRegistry.getByInstance(invocation.getTarget());
return invoker.invoke(invocation);
}
@@ -208,7 +208,7 @@
_formParameterLookup.clear();
_formParameterLookup.addFieldValues(fieldValues);
addHiddenFormFields(form);
- InAppInvocation invocation = getInvocation(form);
+ ComponentInvocation invocation = getInvocation(form);
return invoke(invocation);
}
Copied: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentInvocationTest.java (from r489555, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InAppInvocationTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentInvocationTest.java?view=diff&rev=489563&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InAppInvocationTest.java&r1=489555&p2=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentInvocationTest.java&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InAppInvocationTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ComponentInvocationTest.java Thu Dec 21 21:48:41 2006
@@ -17,12 +17,12 @@
import org.testng.Assert;
import org.testng.annotations.Test;
-public class InAppInvocationTest extends Assert
+public class ComponentInvocationTest extends Assert
{
@Test
public void no_context()
{
- InAppInvocation invocation = new InAppInvocation(new OpaqueConstantTarget("abc"),
+ ComponentInvocation invocation = new ComponentInvocation(new OpaqueConstantTarget("abc"),
new Object[0]);
assertEquals(invocation.buildURI(false), "abc");
assertEquals(invocation.buildURI(true), "abc");
@@ -31,7 +31,7 @@
@Test
public void context()
{
- InAppInvocation invocation = new InAppInvocation(new OpaqueConstantTarget("abc"),
+ ComponentInvocation invocation = new ComponentInvocation(new OpaqueConstantTarget("abc"),
new Object[]
{ "x", 123 });
assertEquals(invocation.buildURI(false), "abc/x/123");
@@ -41,7 +41,7 @@
@Test
public void parameters()
{
- InAppInvocation invocation = new InAppInvocation(new OpaqueConstantTarget("abc"),
+ ComponentInvocation invocation = new ComponentInvocation(new OpaqueConstantTarget("abc"),
new Object[]
{ "x", 123 });
invocation.addParameter("p1", "foo");
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java Thu Dec 21 21:48:41 2006
@@ -130,10 +130,10 @@
replay();
- LinkFactory factory = new LinkFactoryImpl(request, response, resolver, null);
+ LinkFactory factory = new LinkFactoryImpl(request, response, resolver);
factory.addListener(listener);
- Link link = factory.createPageLink(null, page);
+ Link link = factory.createPageLink(page);
assertEquals(link.toRedirectURI(), "*encoded*");
@@ -187,10 +187,10 @@
replay();
- LinkFactory factory = new LinkFactoryImpl(request, response, resolver, null);
+ LinkFactory factory = new LinkFactoryImpl(request, response, resolver);
factory.addListener(listener);
- Link link = factory.createActionLink(null, element, "someaction", false, context);
+ Link link = factory.createActionLink(element, "someaction", false, context);
assertEquals(link.toURI(), "*encoded*");
assertSame(link, holder.get());
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java?view=diff&rev=489563&r1=489562&r2=489563
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java Thu Dec 21 21:48:41 2006
@@ -12,155 +12,207 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-import org.apache.tapestry.MarkupWriter;
-import org.apache.tapestry.dom.Element;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-
-public class MarkupWriterImplTest extends Assert
-{
- @Test(expectedExceptions = IllegalStateException.class)
- public void write_with_no_current_element()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- w.write("fail!");
- }
-
- @Test(expectedExceptions = IllegalStateException.class)
- public void comment_with_no_current_element()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- w.comment("fail!");
- }
-
- @Test(expectedExceptions = IllegalStateException.class)
- public void end_with_no_current_element()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- w.end();
- }
-
- @Test(expectedExceptions = IllegalStateException.class)
- public void attributes_with_no_current_element()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- w.attributes("fail", "now");
- }
-
- @Test
- public void current_element_at_end_of_root_element_is_null()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- w.element("root");
-
- assertNull(w.end());
- }
-
- @Test
- public void element_nesting()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- Element root = w.element("root");
-
- w.attributes("foo", "bar");
-
- w.write("before child");
-
- assertNotSame(w.element("nested"), root);
-
- w.write("inner text");
-
- assertSame(w.end(), root);
-
- w.write("after child");
-
- root.attribute("gnip", "gnop");
-
- assertEquals(
- w.toString(),
- "<root foo=\"bar\" gnip=\"gnop\">before child<nested>inner text</nested>after child</root>");
- }
-
- @Test
- public void element_with_attributes()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- w.element("img", "src", "foo.png", "width", 20, "height", 20);
- w.end();
-
- // img is a tag with an end tag style of omit, so no close tag is written.
-
- assertEquals(w.toString(), "<img height=\"20\" src=\"foo.png\" width=\"20\">");
- }
-
- @Test
- public void attributes()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- w.element("root");
-
- w.attributes("foo", "bar", "gnip", "gnop");
-
- assertEquals(w.toString(), "<root foo=\"bar\" gnip=\"gnop\"></root>");
- }
-
- @Test
- public void comment()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- w.element("root");
- w.comment("A comment");
- w.end();
-
- assertEquals(w.toString(), "<root><!-- A comment --></root>");
- }
-
- @Test
- public void new_text_node_after_comment_node()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- w.element("root");
- w.write("before");
- w.comment("A comment");
- w.write("after");
- w.end();
-
- assertEquals(w.toString(), "<root>before<!-- A comment -->after</root>");
- }
-
- @Test
- public void null_write_is_ok()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- w.element("root");
- w.write(null);
- w.end();
-
- assertEquals(w.toString(), "<root></root>");
- }
-
- @Test
- public void writef()
- {
- MarkupWriter w = new MarkupWriterImpl();
-
- w.element("root");
- w.writef("Test name: %s", "writef");
-
- assertEquals(w.toString(), "<root>Test name: writef</root>");
- }
-}
+package org.apache.tapestry.internal.services;
+
+import java.util.Map;
+
+import org.apache.tapestry.Link;
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.dom.DefaultMarkupModel;
+import org.apache.tapestry.dom.Element;
+import org.apache.tapestry.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry.test.pagelevel.NoOpURLEncoder;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class MarkupWriterImplTest extends Assert
+{
+ @Test(expectedExceptions = IllegalStateException.class)
+ public void write_with_no_current_element()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.write("fail!");
+ }
+
+ @Test(expectedExceptions = IllegalStateException.class)
+ public void comment_with_no_current_element()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.comment("fail!");
+ }
+
+ @Test(expectedExceptions = IllegalStateException.class)
+ public void end_with_no_current_element()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.end();
+ }
+
+ @Test(expectedExceptions = IllegalStateException.class)
+ public void attributes_with_no_current_element()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.attributes("fail", "now");
+ }
+
+ @Test
+ public void current_element_at_end_of_root_element_is_null()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.element("root");
+
+ assertNull(w.end());
+ }
+
+ @Test
+ public void element_nesting()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ Element root = w.element("root");
+
+ w.attributes("foo", "bar");
+
+ w.write("before child");
+
+ assertNotSame(w.element("nested"), root);
+
+ w.write("inner text");
+
+ assertSame(w.end(), root);
+
+ w.write("after child");
+
+ root.attribute("gnip", "gnop");
+
+ assertEquals(
+ w.toString(),
+ "<root foo=\"bar\" gnip=\"gnop\">before child<nested>inner text</nested>after child</root>");
+ }
+
+ @Test
+ public void element_with_attributes()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.element("img", "src", "foo.png", "width", 20, "height", 20);
+ w.end();
+
+ // img is a tag with an end tag style of omit, so no close tag is written.
+
+ assertEquals(w.toString(), "<img height=\"20\" src=\"foo.png\" width=\"20\">");
+ }
+
+ @Test
+ public void attributes()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.element("root");
+
+ w.attributes("foo", "bar", "gnip", "gnop");
+
+ assertEquals(w.toString(), "<root foo=\"bar\" gnip=\"gnop\"></root>");
+ }
+
+ @Test
+ public void comment()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.element("root");
+ w.comment("A comment");
+ w.end();
+
+ assertEquals(w.toString(), "<root><!-- A comment --></root>");
+ }
+
+ @Test
+ public void new_text_node_after_comment_node()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.element("root");
+ w.write("before");
+ w.comment("A comment");
+ w.write("after");
+ w.end();
+
+ assertEquals(w.toString(), "<root>before<!-- A comment -->after</root>");
+ }
+
+ @Test
+ public void null_write_is_ok()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.element("root");
+ w.write(null);
+ w.end();
+
+ assertEquals(w.toString(), "<root></root>");
+ }
+
+ @Test
+ public void writef()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+
+ w.element("root");
+ w.writef("Test name: %s", "writef");
+
+ assertEquals(w.toString(), "<root>Test name: writef</root>");
+ }
+
+ @Test
+ public void link_element()
+ {
+ final Map<Element, ComponentInvocation> map = CollectionFactory.newMap();
+ MarkupWriter w = new MarkupWriterImpl(new DefaultMarkupModel(),
+ new ComponentInvocationMap()
+ {
+
+ public void put(Element element, ComponentInvocation invocation)
+ {
+ map.put(element, invocation);
+
+ }
+
+ });
+ ComponentInvocation invocation = new ComponentInvocation(new OpaqueConstantTarget("foo"),
+ new Object[0]);
+ Link link = new LinkImpl(new NoOpURLEncoder(), "", invocation);
+ Element element = w.linkElement("a", link, "href", "foo.png");
+ w.end();
+ assertEquals(w.toString(), "<a href=\"foo.png\"></a>");
+ assertEquals(map.size(), 1);
+ assertSame(map.get(element), invocation);
+ }
+
+ @Test
+ public void link_element_no_map()
+ {
+ final Map<Element, ComponentInvocation> map = CollectionFactory.newMap();
+ MarkupWriter w = new MarkupWriterImpl();
+ ComponentInvocation invocation = new ComponentInvocation(new OpaqueConstantTarget("foo"),
+ new Object[0]);
+ Link link = new LinkImpl(new NoOpURLEncoder(), "", invocation);
+ w.linkElement("a", link, "href", "foo.png");
+ w.end();
+ assertEquals(w.toString(), "<a href=\"foo.png\"></a>");
+ assertEquals(map.size(), 0);
+ }
+
+ @Test(expectedExceptions =
+ { IllegalArgumentException.class })
+ public void link_null()
+ {
+ MarkupWriter w = new MarkupWriterImpl();
+ w.linkElement("a", null, "href", "foo.png");
+ }
+}