You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/12/05 23:02:39 UTC

svn commit: r601548 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry/corelib/base/ main/java/org/apache/tapestry/corelib/components/ main/java/org/apache/tapestry/internal/services/ main/java/org/apache/tapestry/test/ tes...

Author: hlship
Date: Wed Dec  5 14:02:04 2007
New Revision: 601548

URL: http://svn.apache.org/viewvc?rev=601548&view=rev
Log:
TAPESTRY-1879: PageLink does not have an anchor parameter

Added:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractLink.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocationImpl.java
      - copied, changed from r594319, tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/corelib/base/
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/corelib/base/AbstractLinkTest.java
Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/ActionLink.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/Form.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/PageLink.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MarkupWriterFactoryImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MarkupWriterImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/PageTester.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/conf/testng.xml
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/corelib/components/SelectTest.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/DefaultValidationDecoratorTest.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInvocationTest.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/PageElementFactoryImplTest.java

Added: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractLink.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractLink.java?rev=601548&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractLink.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractLink.java Wed Dec  5 14:02:04 2007
@@ -0,0 +1,81 @@
+// Copyright 2007 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.corelib.base;
+
+import org.apache.tapestry.ComponentResources;
+import org.apache.tapestry.Link;
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.annotations.Parameter;
+import org.apache.tapestry.dom.Element;
+import org.apache.tapestry.internal.services.ComponentInvocationMap;
+import org.apache.tapestry.ioc.annotations.Inject;
+
+/**
+ * Provides base utilities for classes that generate clickable links.
+ */
+public abstract class AbstractLink
+{
+    @Inject
+    private ComponentInvocationMap _componentInvocationMap;
+
+    /**
+     * An anchor value to append to the generated URL (the hash separator will be added automatically).
+     */
+    @Parameter
+    private String _anchor;
+
+    @Inject
+    private ComponentResources _resources;
+
+    private final String buildHref(Link link)
+    {
+        String href = link.toURI();
+
+        if (_anchor == null) return href;
+
+        return href + "#" + _anchor;
+    }
+
+    /**
+     * Writes an <a> element with the provided link as the href attribute.  A call to
+     * {@link org.apache.tapestry.MarkupWriter#end()} is <em>not</em> provided.            Automatically appends
+     * an anchor if the component's anchor parameter is non-null.  Informal parameters are rendered as well.
+     *
+     * @param writer         to write markup to
+     * @param clientId       value written as the id attribute
+     * @param link           the link that will form the href
+     * @param namesAndValues additional attributes to write
+     */
+    protected void writeLink(MarkupWriter writer, String clientId, Link link, Object... namesAndValues)
+    {
+        Element e = writer.element("a", "href", buildHref(link), "id", clientId);
+
+        writer.attributes(namesAndValues);
+
+        _resources.renderInformalParameters(writer);
+
+        _componentInvocationMap.store(e, link);
+    }
+
+    /**
+     * Used for testing.
+     */
+    void inject(String anchor, ComponentInvocationMap map, ComponentResources resources)
+    {
+        _anchor = anchor;
+        _componentInvocationMap = map;
+        _resources = resources;
+    }
+}

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/ActionLink.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/ActionLink.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/ActionLink.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/ActionLink.java Wed Dec  5 14:02:04 2007
@@ -19,6 +19,7 @@
 import org.apache.tapestry.annotations.Environmental;
 import org.apache.tapestry.annotations.Parameter;
 import org.apache.tapestry.annotations.SupportsInformalParameters;
+import org.apache.tapestry.corelib.base.AbstractLink;
 import org.apache.tapestry.internal.services.ZoneSetup;
 import org.apache.tapestry.ioc.annotations.Inject;
 
@@ -28,7 +29,7 @@
  * Component that triggers an action on the server with a subsequent full page refresh.
  */
 @SupportsInformalParameters
-public class ActionLink implements ClientElement
+public class ActionLink extends AbstractLink implements ClientElement
 {
     /**
      * The context for the link (optional parameter). This list of values will be converted into
@@ -56,6 +57,7 @@
 
     private String _clientId;
 
+
     /**
      * Binding zone turns the link into a an Ajax control that causes the
      * related zone to be updated.
@@ -73,9 +75,7 @@
 
         Link link = _resources.createActionLink(ACTION_EVENT, false, contextArray);
 
-        writer.element("a", "href", link, "id", _clientId);
-
-        _resources.renderInformalParameters(writer);
+        writeLink(writer, _clientId, link);
 
         if (_zone != null) _zoneSetup.linkZone(_clientId, _zone);
     }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/Form.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/Form.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/Form.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/Form.java Wed Dec  5 14:02:04 2007
@@ -23,6 +23,7 @@
 import org.apache.tapestry.corelib.mixins.RenderInformals;
 import org.apache.tapestry.dom.Element;
 import org.apache.tapestry.internal.TapestryInternalUtils;
+import org.apache.tapestry.internal.services.ComponentInvocationMap;
 import org.apache.tapestry.internal.services.HeartbeatImpl;
 import org.apache.tapestry.internal.util.Base64ObjectInputStream;
 import org.apache.tapestry.internal.util.Base64ObjectOutputStream;
@@ -141,6 +142,9 @@
     @Persist
     private ValidationTracker _defaultTracker;
 
+    @Inject
+    private ComponentInvocationMap _componentInvocationMap;
+
     private FormSupportImpl _formSupport;
 
     private Element _form;
@@ -207,6 +211,8 @@
 
         _form = writer
                 .element("form", "name", _name, "id", _name, "method", "post", "action", link);
+
+        _componentInvocationMap.store(_form, link);
 
         _resources.renderInformalParameters(writer);
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/PageLink.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/PageLink.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/PageLink.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/components/PageLink.java Wed Dec  5 14:02:04 2007
@@ -18,6 +18,7 @@
 import org.apache.tapestry.annotations.Environmental;
 import org.apache.tapestry.annotations.Parameter;
 import org.apache.tapestry.annotations.SupportsInformalParameters;
+import org.apache.tapestry.corelib.base.AbstractLink;
 import org.apache.tapestry.ioc.annotations.Inject;
 
 import java.util.List;
@@ -33,7 +34,7 @@
  * manipulated by the page.
  */
 @SupportsInformalParameters
-public class PageLink implements ClientElement
+public class PageLink extends AbstractLink implements ClientElement
 {
     /**
      * The logical name of the page to link to.
@@ -74,14 +75,9 @@
 
         Object[] activationContext = _context != null ? _context.toArray() : _emptyContext;
 
-        Link link = _resources.createPageLink(
-                _page,
-                _resources.isBound("context"),
-                activationContext);
+        Link link = _resources.createPageLink(_page, _resources.isBound("context"), activationContext);
 
-        writer.element("a", "href", link, "id", _clientId);
-
-        _resources.renderInformalParameters(writer);
+        writeLink(writer, _clientId, link);
     }
 
     void afterRender(MarkupWriter writer)

Added: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java?rev=601548&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java Wed Dec  5 14:02:04 2007
@@ -0,0 +1,39 @@
+// Copyright 2007 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.internal.services;
+
+import java.util.List;
+
+public interface ComponentInvocation
+{
+    /**
+     * @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.
+     */
+    String buildURI(boolean isForm);
+
+    String[] getContext();
+
+    String[] getActivationContext();
+
+    void addParameter(String parameterName, String value);
+
+    List<String> getParameterNames();
+
+    String getParameterValue(String name);
+
+    InvocationTarget getTarget();
+}

Copied: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocationImpl.java (from r594319, tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocationImpl.java?p2=tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocationImpl.java&p1=tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java&r1=594319&r2=601548&rev=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocation.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/ComponentInvocationImpl.java Wed Dec  5 14:02:04 2007
@@ -28,7 +28,7 @@
  * is extracted from incoming URLs for a running application (or created by the {@link PageTester}.
  * Each invocation may provide a context (Object[]) and parameters to the invocation target.
  */
-public class ComponentInvocation
+public class ComponentInvocationImpl implements ComponentInvocation
 {
     private final String[] _context;
 
@@ -47,18 +47,14 @@
      *                          passivate event to the page's root component (used when an action component
      *                          invocation is for a page with an activation context)
      */
-    public ComponentInvocation(InvocationTarget target, String[] context, String[] activationContext)
+    public ComponentInvocationImpl(InvocationTarget target, String[] context, String[] activationContext)
     {
         _target = target;
         _context = context;
         _activationContext = activationContext;
     }
 
-    /**
-     * @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();
@@ -125,10 +121,8 @@
 
         if (_parameters == null) _parameters = newMap();
 
-        if (_parameters.containsKey(parameterName))
-            throw new IllegalArgumentException(ServicesMessages.parameterNameMustBeUnique(
-                    parameterName,
-                    _parameters.get(parameterName)));
+        if (_parameters.containsKey(parameterName)) throw new IllegalArgumentException(
+                ServicesMessages.parameterNameMustBeUnique(parameterName, _parameters.get(parameterName)));
 
         _parameters.put(parameterName, value);
     }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkFactoryImpl.java Wed Dec  5 14:02:04 2007
@@ -118,7 +118,7 @@
 
         String[] activationContext = collectActivationContextForPage(containingPage);
 
-        ComponentInvocation invocation = new ComponentInvocation(target, contextStrings, activationContext);
+        ComponentInvocation invocation = new ComponentInvocationImpl(target, contextStrings, activationContext);
 
         Link link = new LinkImpl(_response, _request.getContextPath(), invocation, forForm);
 
@@ -165,7 +165,7 @@
                 activationContext) : collectActivationContextForPage(page);
 
         PageLinkTarget target = new PageLinkTarget(logicalPageName);
-        ComponentInvocation invocation = new ComponentInvocation(target, context, null);
+        ComponentInvocation invocation = new ComponentInvocationImpl(target, context, null);
 
         Link link = new LinkImpl(_response, _request.getContextPath(), invocation, false);
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkImpl.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/LinkImpl.java Wed Dec  5 14:02:04 2007
@@ -41,12 +41,11 @@
 
     public LinkImpl(Response encoder, String contextPath, String targetPath, boolean forForm)
     {
-        this(encoder, contextPath, new ComponentInvocation(new OpaqueConstantTarget(targetPath),
-                                                           new String[0], null), forForm);
+        this(encoder, contextPath,
+             new ComponentInvocationImpl(new OpaqueConstantTarget(targetPath), new String[0], null), forForm);
     }
 
-    public LinkImpl(Response encoder, String contextPath, ComponentInvocation invocation,
-                    boolean forForm)
+    public LinkImpl(Response encoder, String contextPath, ComponentInvocation invocation, boolean forForm)
     {
         _contextPath = contextPath;
         _response = encoder;

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MarkupWriterFactoryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MarkupWriterFactoryImpl.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MarkupWriterFactoryImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MarkupWriterFactoryImpl.java Wed Dec  5 14:02:04 2007
@@ -20,20 +20,13 @@
 
 public class MarkupWriterFactoryImpl implements MarkupWriterFactory
 {
-    private final ComponentInvocationMap _componentInvocationMap;
-
-    public MarkupWriterFactoryImpl(ComponentInvocationMap componentInvocationMap)
-    {
-        _componentInvocationMap = componentInvocationMap;
-    }
-
     public MarkupWriter newMarkupWriter()
     {
         // TODO: Analyze the response type to determine the correct model? Maybe ContentType should
         // be passed into to make this determination. DefaultMarkupModel is for SGML style (legacy)
         // HTML.
 
-        return new MarkupWriterImpl(new DefaultMarkupModel(), _componentInvocationMap);
+        return new MarkupWriterImpl(new DefaultMarkupModel());
     }
 
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MarkupWriterImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MarkupWriterImpl.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MarkupWriterImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/MarkupWriterImpl.java Wed Dec  5 14:02:04 2007
@@ -14,7 +14,6 @@
 
 package org.apache.tapestry.internal.services;
 
-import org.apache.tapestry.Link;
 import org.apache.tapestry.MarkupWriter;
 import org.apache.tapestry.dom.*;
 import org.apache.tapestry.ioc.internal.util.InternalUtils;
@@ -29,17 +28,14 @@
 
     private Text _currentText;
 
-    private final ComponentInvocationMap _invocationMap;
-
     public MarkupWriterImpl()
     {
-        this(new DefaultMarkupModel(), new NoOpComponentInvocationMap());
+        this(new DefaultMarkupModel());
     }
 
-    public MarkupWriterImpl(MarkupModel model, ComponentInvocationMap invocationMap)
+    public MarkupWriterImpl(MarkupModel model)
     {
         _document = new Document(model);
-        _invocationMap = invocationMap;
     }
 
     public void toMarkup(PrintWriter writer)
@@ -66,13 +62,11 @@
     public void write(String text)
     {
         // Whitespace before and after the root element is quietly ignored.
-        if (_current == null && InternalUtils.isBlank(text))
-            return;
+        if (_current == null && InternalUtils.isBlank(text)) return;
 
         ensureCurrentElement();
 
-        if (text == null)
-            return;
+        if (text == null) return;
 
         if (_currentText == null)
         {
@@ -104,11 +98,7 @@
             String name = namesAndValues[i++].toString();
             Object value = namesAndValues[i++];
 
-            if (value == null)
-                continue;
-
-            if (value instanceof Link)
-                _invocationMap.store(_current, (Link) value);
+            if (value == null) continue;
 
             _current.attribute(name, value.toString());
         }
@@ -117,16 +107,13 @@
 
     private void ensureCurrentElement()
     {
-        if (_current == null)
-            throw new IllegalStateException(ServicesMessages.markupWriterNoCurrentElement());
+        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);
+        if (_current == null) _current = _document.newRootElement(name);
+        else _current = _current.element(name);
 
         attributes(namesAndValues);
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/PageTester.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/PageTester.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/PageTester.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/PageTester.java Wed Dec  5 14:02:04 2007
@@ -126,7 +126,7 @@
      */
     public Document renderPage(String pageName)
     {
-        return invoke(new ComponentInvocation(new PageLinkTarget(pageName), new String[0], null));
+        return invoke(new ComponentInvocationImpl(new PageLinkTarget(pageName), new String[0], null));
     }
 
     /**

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/conf/testng.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/conf/testng.xml?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/conf/testng.xml (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/conf/testng.xml Wed Dec  5 14:02:04 2007
@@ -15,18 +15,21 @@
    limitations under the License.
 -->
 
-<suite name="Tapestry Core" annotations="1.5" verbose="2" parallel="tests">
+<suite name="Tapestry Core" thread-count="10" annotations="1.5" verbose="2" parallel="tests">
     <test name="Integration Tests">
         <packages>
             <package name="org.apache.tapestry.integration"/>
         </packages>
     </test>
+    <test name="Components">
+        <package name="org.apache.tapestry.integration.pagelevel"/>
+        <package name="org.apache.tapestry.corelib.base"/>
+        <package name="org.apache.tapestry.corelib.components"/>
+        <package name="org.apache.tapestry.corelib.internal"/>
+    </test>
     <test name="Public APIs">
         <packages>
             <package name="org.apache.tapestry"/>
-            <package name="org.apache.tapestry.integration.pagelevel"/>
-            <package name="org.apache.tapestry.corelib.components"/>
-            <package name="org.apache.tapestry.corelib.internal"/>
             <package name="org.apache.tapestry.dom"/>
             <package name="org.apache.tapestry.json"/>
             <package name="org.apache.tapestry.services"/>

Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/corelib/base/AbstractLinkTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/corelib/base/AbstractLinkTest.java?rev=601548&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/corelib/base/AbstractLinkTest.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/corelib/base/AbstractLinkTest.java Wed Dec  5 14:02:04 2007
@@ -0,0 +1,109 @@
+// Copyright 2007 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.corelib.base;
+
+import org.apache.tapestry.ComponentResources;
+import org.apache.tapestry.Link;
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.dom.Element;
+import org.apache.tapestry.internal.services.ComponentInvocation;
+import org.apache.tapestry.internal.services.ComponentInvocationMap;
+import org.apache.tapestry.internal.services.MarkupWriterImpl;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.internal.test.PageTesterComponentInvocationMap;
+import org.testng.annotations.Test;
+
+public class AbstractLinkTest extends InternalBaseTestCase
+{
+    private final static String LINK_URI = "/foo/bar.baz";
+
+    private final AbstractLink _linkFixture = new AbstractLink()
+    {
+    };
+
+    @Test
+    public void no_anchor()
+    {
+        Link link = mockLink();
+        ComponentResources resources = mockComponentResources();
+        ComponentInvocationMap map = new PageTesterComponentInvocationMap();
+        MarkupWriter writer = new MarkupWriterImpl();
+        ComponentInvocation invocation = mockComponentInvocation();
+
+        map.store(link, invocation);
+
+        train_toURI(link, LINK_URI);
+
+        resources.renderInformalParameters(writer);
+
+        replay();
+
+        _linkFixture.inject(null, map, resources);
+
+        _linkFixture.writeLink(writer, "fred", link);
+
+        verify();
+
+        Element e = writer.getElement();
+
+        writer.write("link text");
+        writer.end();
+
+        assertEquals(writer.toString(), "<a href=\"/foo/bar.baz\" id=\"fred\">link text</a>");
+        assertSame(map.get(e), invocation);
+    }
+
+    @Test
+    public void with_anchor()
+    {
+        Link link = mockLink();
+        ComponentResources resources = mockComponentResources();
+        ComponentInvocationMap map = new PageTesterComponentInvocationMap();
+        MarkupWriter writer = new MarkupWriterImpl();
+        ComponentInvocation invocation = mockComponentInvocation();
+
+        map.store(link, invocation);
+
+        train_toURI(link, LINK_URI);
+
+        resources.renderInformalParameters(writer);
+
+        replay();
+
+        _linkFixture.inject("wilma", map, resources);
+
+        _linkFixture.writeLink(writer, "barney", link);
+
+        verify();
+
+        Element e = writer.getElement();
+
+        writer.write("link text");
+        writer.end();
+
+        assertEquals(writer.toString(), "<a href=\"/foo/bar.baz#wilma\" id=\"barney\">link text</a>");
+        assertSame(map.get(e), invocation);
+    }
+
+    protected final void train_toURI(Link link, String URI)
+    {
+        expect(link.toURI()).andReturn(URI);
+    }
+
+    protected final ComponentInvocation mockComponentInvocation()
+    {
+        return newMock(ComponentInvocation.class);
+    }
+}

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/corelib/components/SelectTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/corelib/components/SelectTest.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/corelib/components/SelectTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/corelib/components/SelectTest.java Wed Dec  5 14:02:04 2007
@@ -89,7 +89,7 @@
         select.setValueEncoder(new StringValueEncoder());
         select.setValue("barney");
 
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
+        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
 
         writer.element("select");
 
@@ -105,8 +105,8 @@
     {
         // Extra cast needed for Sun compiler, not Eclipse compiler.
 
-        List<OptionModel> options = Arrays.asList((OptionModel) new OptionModelImpl("Fred", false,
-                                                                                    "fred", "class", "pixie"));
+        List<OptionModel> options = Arrays.asList(
+                (OptionModel) new OptionModelImpl("Fred", false, "fred", "class", "pixie"));
 
         Select select = new Select();
 
@@ -114,7 +114,7 @@
         select.setValueEncoder(new StringValueEncoder());
         select.setValue("barney");
 
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
+        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
 
         writer.element("select");
 
@@ -130,8 +130,8 @@
     {
         // Extra cast needed for Sun compiler, not Eclipse compiler.
 
-        List<OptionModel> options = CollectionFactory.newList((OptionModel) new OptionModelImpl(
-                "Fred", true, "fred", "class", "pixie"));
+        List<OptionModel> options = CollectionFactory.newList(
+                (OptionModel) new OptionModelImpl("Fred", true, "fred", "class", "pixie"));
 
         Select select = new Select();
 
@@ -139,7 +139,7 @@
         select.setValueEncoder(new StringValueEncoder());
         select.setValue("barney");
 
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
+        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
 
         writer.element("select");
 
@@ -166,7 +166,7 @@
         select.setValueEncoder(new StringValueEncoder());
         select.setValue("Fred");
 
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
+        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
 
         writer.element("select");
 
@@ -190,7 +190,7 @@
         select.setValueEncoder(new StringValueEncoder());
         select.setValue("Fred");
 
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
+        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
 
         writer.element("select");
 
@@ -216,7 +216,7 @@
         select.setValueEncoder(new StringValueEncoder());
         select.setValue("Fred");
 
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
+        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
 
         writer.element("select");
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/DefaultValidationDecoratorTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/DefaultValidationDecoratorTest.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/DefaultValidationDecoratorTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/DefaultValidationDecoratorTest.java Wed Dec  5 14:02:04 2007
@@ -44,7 +44,7 @@
     @Test
     public void label_error_no_existing_class_attribute()
     {
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
+        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
         Environment env = mockEnvironment();
         Field field = mockField();
         ValidationTracker tracker = mockValidationTracker();
@@ -68,7 +68,7 @@
     @Test
     public void label_error_with_existing_class_attribute()
     {
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
+        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
         Environment env = mockEnvironment();
         Field field = mockField();
         ValidationTracker tracker = mockValidationTracker();
@@ -92,7 +92,7 @@
     @Test
     public void field_error()
     {
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
+        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
         Environment env = mockEnvironment();
         Field field = mockField();
         ValidationTracker tracker = mockValidationTracker();

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInvocationTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInvocationTest.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInvocationTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/ComponentInvocationTest.java Wed Dec  5 14:02:04 2007
@@ -22,8 +22,8 @@
     @Test
     public void no_context()
     {
-        ComponentInvocation invocation = new ComponentInvocation(new OpaqueConstantTarget("abc"),
-                                                                 new String[0], null);
+        ComponentInvocation invocation = new ComponentInvocationImpl(new OpaqueConstantTarget("abc"), new String[0],
+                                                                     null);
         assertEquals(invocation.buildURI(false), "abc");
         assertEquals(invocation.buildURI(true), "abc");
     }
@@ -31,9 +31,8 @@
     @Test
     public void context()
     {
-        ComponentInvocation invocation = new ComponentInvocation(new OpaqueConstantTarget("abc"),
-                                                                 new String[]
-                                                                         {"x", "123"}, null);
+        ComponentInvocation invocation = new ComponentInvocationImpl(new OpaqueConstantTarget("abc"),
+                                                                     new String[]{"x", "123"}, null);
         assertEquals(invocation.buildURI(false), "abc/x/123");
         assertEquals(invocation.buildURI(true), "abc/x/123");
     }
@@ -41,9 +40,8 @@
     @Test
     public void parameters()
     {
-        ComponentInvocation invocation = new ComponentInvocation(new OpaqueConstantTarget("abc"),
-                                                                 new String[]
-                                                                         {"x", "123"}, null);
+        ComponentInvocation invocation = new ComponentInvocationImpl(new OpaqueConstantTarget("abc"),
+                                                                     new String[]{"x", "123"}, null);
         invocation.addParameter("p1", "foo");
         invocation.addParameter("p2", "bar");
         assertEquals(invocation.buildURI(false), "abc/x/123?p1=foo&p2=bar");

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/LinkFactoryImplTest.java Wed Dec  5 14:02:04 2007
@@ -55,63 +55,34 @@
     @Test
     public void action_link_root_context_no_ids()
     {
-        testActionLink(
-                "",
-                PAGE_LOGICAL_NAME,
-                "foo.bar",
-                "someaction",
-                "/sub/mypage.foo.bar:someaction");
+        testActionLink("", PAGE_LOGICAL_NAME, "foo.bar", "someaction", "/sub/mypage.foo.bar:someaction");
 
     }
 
     @Test
     public void action_link_root_context_with_ids()
     {
-        testActionLink(
-                "",
-                PAGE_LOGICAL_NAME,
-                "foo.bar",
-                "publish",
-                "/sub/mypage.foo.bar:publish/fred/5",
-                "fred",
-                5);
+        testActionLink("", PAGE_LOGICAL_NAME, "foo.bar", "publish", "/sub/mypage.foo.bar:publish/fred/5", "fred", 5);
     }
 
     @Test
     public void action_link_with_default_action()
     {
-        testActionLink(
-                "",
-                PAGE_LOGICAL_NAME,
-                "foo.bar",
-                TapestryConstants.ACTION_EVENT,
-                "/sub/mypage.foo.bar/fred/5",
-                "fred",
-                5);
+        testActionLink("", PAGE_LOGICAL_NAME, "foo.bar", TapestryConstants.ACTION_EVENT, "/sub/mypage.foo.bar/fred/5",
+                       "fred", 5);
     }
 
     @Test
     public void page_level_event_always_includes_action()
     {
-        testActionLink(
-                "",
-                PAGE_LOGICAL_NAME,
-                "",
-                TapestryConstants.ACTION_EVENT,
-                "/sub/mypage:action/barney/99",
-                "barney",
-                99);
+        testActionLink("", PAGE_LOGICAL_NAME, "", TapestryConstants.ACTION_EVENT, "/sub/mypage:action/barney/99",
+                       "barney", 99);
     }
 
     @Test
     public void action_link_named_context_no_ids()
     {
-        testActionLink(
-                "/fred",
-                PAGE_LOGICAL_NAME,
-                "foo.bar",
-                "someaction",
-                "/fred/sub/mypage.foo.bar:someaction");
+        testActionLink("/fred", PAGE_LOGICAL_NAME, "foo.bar", "someaction", "/fred/sub/mypage.foo.bar:someaction");
     }
 
     @SuppressWarnings("unchecked")
@@ -134,14 +105,11 @@
 
         train_triggerPassivateEventForPageLink(rootElement, listener, holder);
 
-        train_encodeRedirectURL(
-                response,
-                "/barney/" + PAGE_LOGICAL_NAME.toLowerCase() + "/foo/bar",
-                ENCODED);
+        train_encodeRedirectURL(response, "/barney/" + PAGE_LOGICAL_NAME.toLowerCase() + "/foo/bar", ENCODED);
 
         // This needs to be refactored a bit to be more testable.
 
-        map.store(isA(Link.class), isA(ComponentInvocation.class));
+        map.store(isA(Link.class), isA(ComponentInvocationImpl.class));
 
         replay();
 
@@ -179,12 +147,11 @@
         listener.createdPageLink(isA(Link.class));
         getMocksControl().andAnswer(createdPageLinkAnswer);
 
-        train_encodeRedirectURL(response, "/barney/" + PAGE_LOGICAL_NAME.toLowerCase()
-                + "/biff/bazz", ENCODED);
+        train_encodeRedirectURL(response, "/barney/" + PAGE_LOGICAL_NAME.toLowerCase() + "/biff/bazz", ENCODED);
 
         // This needs to be refactored a bit to be more testable.
 
-        map.store(isA(Link.class), isA(ComponentInvocation.class));
+        map.store(isA(Link.class), isA(ComponentInvocationImpl.class));
 
         replay();
 
@@ -226,7 +193,7 @@
 
         // This needs to be refactored a bit to be more testable.
 
-        map.store(isA(Link.class), isA(ComponentInvocation.class));
+        map.store(isA(Link.class), isA(ComponentInvocationImpl.class));
 
         replay();
 
@@ -267,14 +234,11 @@
 
         train_triggerPassivateEventForPageLink(rootElement, listener, holder);
 
-        train_encodeRedirectURL(
-                response,
-                "/barney/" + PAGE_LOGICAL_NAME.toLowerCase() + "/foo/bar",
-                ENCODED);
+        train_encodeRedirectURL(response, "/barney/" + PAGE_LOGICAL_NAME.toLowerCase() + "/foo/bar", ENCODED);
 
         // This needs to be refactored a bit to be more testable.
 
-        map.store(isA(Link.class), isA(ComponentInvocation.class));
+        map.store(isA(Link.class), isA(ComponentInvocationImpl.class));
 
         replay();
 
@@ -293,8 +257,8 @@
     }
 
     @SuppressWarnings("unchecked")
-    private void train_triggerPassivateEventForPageLink(ComponentPageElement rootElement,
-                                                        LinkFactoryListener listener, Holder<Link> holder)
+    private void train_triggerPassivateEventForPageLink(ComponentPageElement rootElement, LinkFactoryListener listener,
+                                                        Holder<Link> holder)
     {
         IAnswer<Boolean> triggerEventAnswer = newAnswerForPassivateEventTrigger();
 
@@ -303,11 +267,8 @@
         // Intercept the call to handle component event, and let the IAnswer
         // do the work.
 
-        expect(
-                rootElement.triggerEvent(
-                        eq(TapestryConstants.PASSIVATE_EVENT),
-                        (Object[]) isNull(),
-                        isA(ComponentEventHandler.class))).andAnswer(triggerEventAnswer);
+        expect(rootElement.triggerEvent(eq(TapestryConstants.PASSIVATE_EVENT), (Object[]) isNull(),
+                                        isA(ComponentEventHandler.class))).andAnswer(triggerEventAnswer);
 
         listener.createdPageLink(isA(Link.class));
         getMocksControl().andAnswer(createdPageLinkAnswer);
@@ -324,11 +285,8 @@
         // Intercept the call to handle component event, and let the IAnswer
         // do the work.
 
-        expect(
-                rootElement.triggerEvent(
-                        eq(TapestryConstants.PASSIVATE_EVENT),
-                        (Object[]) isNull(),
-                        isA(ComponentEventHandler.class))).andAnswer(triggerEventAnswer);
+        expect(rootElement.triggerEvent(eq(TapestryConstants.PASSIVATE_EVENT), (Object[]) isNull(),
+                                        isA(ComponentEventHandler.class))).andAnswer(triggerEventAnswer);
 
         listener.createdActionLink(isA(Link.class));
         getMocksControl().andAnswer(createdPageLinkAnswer);
@@ -359,8 +317,7 @@
                 ComponentEventHandler handler = (ComponentEventHandler) EasyMock
                         .getCurrentArguments()[2];
 
-                handler.handleResult(new Object[]
-                        {"foo", "bar"}, null, null);
+                handler.handleResult(new Object[]{"foo", "bar"}, null, null);
 
                 return true;
             }
@@ -368,8 +325,8 @@
     }
 
     @SuppressWarnings("unchecked")
-    private void testActionLink(String contextPath, String logicalPageName, String nestedId,
-                                String eventName, String expectedURI, Object... context)
+    private void testActionLink(String contextPath, String logicalPageName, String nestedId, String eventName,
+                                String expectedURI, Object... context)
     {
         Request request = mockRequest();
         Response response = mockResponse();
@@ -392,12 +349,10 @@
 
         // This needs to be refactored a bit to be more testable.
 
-        map.store(isA(Link.class), isA(ComponentInvocation.class));
+        map.store(isA(Link.class), isA(ComponentInvocationImpl.class));
 
-        train_encodeURL(response, String.format(
-                "%s?%s=foo/bar",
-                expectedURI,
-                InternalConstants.PAGE_CONTEXT_NAME), ENCODED);
+        train_encodeURL(response, String.format("%s?%s=foo/bar", expectedURI, InternalConstants.PAGE_CONTEXT_NAME),
+                        ENCODED);
 
         replay();
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/MarkupWriterImplTest.java Wed Dec  5 14:02:04 2007
@@ -14,7 +14,6 @@
 
 package org.apache.tapestry.internal.services;
 
-import org.apache.tapestry.Link;
 import org.apache.tapestry.MarkupWriter;
 import org.apache.tapestry.dom.Element;
 import org.apache.tapestry.dom.XMLMarkupModel;
@@ -34,7 +33,7 @@
     @Test
     public void write_whitespace_before_start_of_root_element_is_ignored()
     {
-        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel(), null);
+        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel());
 
         w.write("  ");
 
@@ -47,7 +46,7 @@
     @Test
     public void write_whitespace_after_end_of_root_element_is_ignored()
     {
-        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel(), null);
+        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel());
 
         w.element("root");
         w.end();
@@ -112,9 +111,8 @@
 
         root.attribute("gnip", "gnop");
 
-        assertEquals(
-                w.toString(),
-                "<root foo=\"bar\" gnip=\"gnop\">before child<nested>inner text</nested>after child</root>");
+        assertEquals(w.toString(),
+                     "<root foo=\"bar\" gnip=\"gnop\">before child<nested>inner text</nested>after child</root>");
     }
 
     @Test
@@ -191,24 +189,6 @@
         assertEquals(w.toString(), "<root>Test name: writef</root>");
     }
 
-    @Test
-    public void writer_notifies_map_about_links()
-    {
-        ComponentInvocationMap map = mockComponentInvocationMap();
-
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), map);
-        Link link = mockLink();
-
-        Element e = writer.element("form");
-
-        map.store(e, link);
-
-        replay();
-
-        writer.attributes("action", link);
-
-        verify();
-    }
 
     @Test
     public void write_raw()

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/PageElementFactoryImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/PageElementFactoryImplTest.java?rev=601548&r1=601547&r2=601548&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/PageElementFactoryImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry/internal/services/PageElementFactoryImplTest.java Wed Dec  5 14:02:04 2007
@@ -66,7 +66,7 @@
     {
         ComponentInstantiatorSource source = mockComponentInstantiatorSource();
         ComponentClassResolver resolver = mockComponentClassResolver();
-        MarkupWriter writer = new MarkupWriterImpl(_xmlModel, null);
+        MarkupWriter writer = new MarkupWriterImpl(_xmlModel);
         Location l = mockLocation();
         RenderQueue queue = mockRenderQueue();
 
@@ -91,7 +91,7 @@
     {
         ComponentInstantiatorSource source = mockComponentInstantiatorSource();
         ComponentClassResolver resolver = mockComponentClassResolver();
-        MarkupWriter writer = new MarkupWriterImpl(_xmlModel, null);
+        MarkupWriter writer = new MarkupWriterImpl(_xmlModel);
         RenderQueue queue = mockRenderQueue();
 
         replay();
@@ -194,8 +194,8 @@
 
         replay();
 
-        PageElementFactory factory = new PageElementFactoryImpl(source, resolver, typeCoercer,
-                                                                bindingSource, messagesSource);
+        PageElementFactory factory = new PageElementFactoryImpl(source, resolver, typeCoercer, bindingSource,
+                                                                messagesSource);
 
         try
         {
@@ -204,9 +204,7 @@
         }
         catch (TapestryException ex)
         {
-            assertEquals(
-                    ex.getMessage(),
-                    "Attribute expression \'${flintstone\' is missing a closing brace.");
+            assertEquals(ex.getMessage(), "Attribute expression \'${flintstone\' is missing a closing brace.");
             assertSame(ex.getLocation(), location);
         }