Copied: 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/engine/RestartServiceTest.java
 (from r332478, 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/engine/TestRestartService.java)
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/engine/RestartServiceTest.java?p2=jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/engine/RestartServiceTest.java&p1=jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/engine/TestRestartService.java&r1=332478&r2=332810&rev=332810&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/engine/TestRestartService.java
 (original)
+++ 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/engine/RestartServiceTest.java
 Sat Nov 12 10:22:15 2005
@@ -20,9 +20,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.junit.TapestryTestCase;
 import org.apache.tapestry.services.AbsoluteURLBuilder;
-import org.easymock.MockControl;
 
 /**
  * Tests for [EMAIL PROTECTED] org.apache.tapestry.engine.RestartService}.
@@ -30,38 +28,24 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-public class TestRestartService extends TapestryTestCase
+public class RestartServiceTest extends ServiceTestCase
 {
     public void testNoSession() throws Exception
     {
-        MockControl requestControl = newControl(HttpServletRequest.class);
-        HttpServletRequest request = (HttpServletRequest) 
requestControl.getMock();
-
-        HttpServletResponse response = (HttpServletResponse) 
newMock(HttpServletResponse.class);
-
-        MockControl builderControl = newControl(AbsoluteURLBuilder.class);
-        AbsoluteURLBuilder builder = (AbsoluteURLBuilder) 
builderControl.getMock();
-
-        MockControl cycleControl = newControl(IRequestCycle.class);
-        IRequestCycle cycle = (IRequestCycle) cycleControl.getMock();
+        HttpServletRequest request = newServletRequest();
+        HttpServletResponse response = newServletResponse();
+        IRequestCycle cycle = newCycle();
 
         // Training
 
-        request.getSession(false);
-        requestControl.setReturnValue(null);
-
-        cycle.getAbsoluteURL("/app");
-        cycleControl.setReturnValue("http://myserver/app";);
-
-        builder.constructURL("http://myserver/app";);
-        builderControl.setReturnValue("http://myserver/app";);
+        trainGetSession(request, false, null);
+        trainGetAbsoluteURL(cycle, "/app", "http://myserver/app";);
 
         response.sendRedirect("http://myserver/app";);
 
         replayControls();
 
         RestartService s = new RestartService();
-        s.setBuilder(builder);
         s.setRequest(request);
         s.setResponse(response);
         s.setServletPath("/app");
@@ -71,99 +55,95 @@
         verifyControls();
     }
 
-    public void testWithSession() throws Exception
+    private void trainGetSession(HttpServletRequest request, boolean create, 
HttpSession session)
+    {
+        request.getSession(create);
+        setReturnValue(request, session);
+    }
+
+    private AbsoluteURLBuilder newBuilder()
     {
-        MockControl requestControl = newControl(HttpServletRequest.class);
-        HttpServletRequest request = (HttpServletRequest) 
requestControl.getMock();
+        return (AbsoluteURLBuilder) newMock(AbsoluteURLBuilder.class);
+    }
 
-        HttpServletResponse response = (HttpServletResponse) 
newMock(HttpServletResponse.class);
+    private HttpServletResponse newServletResponse()
+    {
+        return (HttpServletResponse) newMock(HttpServletResponse.class);
+    }
 
-        MockControl builderControl = newControl(AbsoluteURLBuilder.class);
-        AbsoluteURLBuilder builder = (AbsoluteURLBuilder) 
builderControl.getMock();
+    private HttpServletRequest newServletRequest()
+    {
+        return (HttpServletRequest) newMock(HttpServletRequest.class);
+    }
 
-        MockControl cycleControl = newControl(IRequestCycle.class);
-        IRequestCycle cycle = (IRequestCycle) cycleControl.getMock();
+    public void testWithSession() throws Exception
+    {
+        HttpServletRequest request = newServletRequest();
+        HttpServletResponse response = newServletResponse();
+        HttpSession session = newHttpSession();
 
-        HttpSession session = (HttpSession) newMock(HttpSession.class);
+        IRequestCycle cycle = newCycle();
 
         // Training
 
-        request.getSession(false);
-        requestControl.setReturnValue(session);
+        trainGetSession(request, false, session);
 
         session.invalidate();
 
-        cycle.getAbsoluteURL("/tap");
-        cycleControl.setReturnValue("http://myserver/tap";);
+        trainGetAbsoluteURL(cycle, "/app", "http://myserver/app";);
 
-        builder.constructURL("http://myserver/tap";);
-        builderControl.setReturnValue("http://myserver/tap";);
-
-        response.sendRedirect("http://myserver/tap";);
+        response.sendRedirect("http://myserver/app";);
 
         replayControls();
 
         RestartService s = new RestartService();
-        s.setBuilder(builder);
         s.setRequest(request);
         s.setResponse(response);
-        s.setServletPath("/tap");
+        s.setServletPath("/app");
 
         s.service(cycle);
 
         verifyControls();
     }
 
-    public void testErrorInvalidatingSession() throws Exception
+    private HttpSession newHttpSession()
     {
-        MockControl requestControl = newControl(HttpServletRequest.class);
-        HttpServletRequest request = (HttpServletRequest) 
requestControl.getMock();
-
-        HttpServletResponse response = (HttpServletResponse) 
newMock(HttpServletResponse.class);
-
-        MockControl builderControl = newControl(AbsoluteURLBuilder.class);
-        AbsoluteURLBuilder builder = (AbsoluteURLBuilder) 
builderControl.getMock();
-
-        MockControl sessionControl = newControl(HttpSession.class);
-        HttpSession session = (HttpSession) sessionControl.getMock();
-
-        MockControl cycleControl = newControl(IRequestCycle.class);
-        IRequestCycle cycle = (IRequestCycle) cycleControl.getMock();
+        return (HttpSession) newMock(HttpSession.class);
+    }
 
-        Log log = (Log) newMock(Log.class);
+    public void testErrorInvalidatingSession() throws Exception
+    {
+        HttpServletRequest request = newServletRequest();
+        HttpServletResponse response = newServletResponse();
+        HttpSession session = newHttpSession();
+        Log log = newLog();
+        Throwable ex = new IllegalStateException("Bad state");
 
-        IllegalStateException ex = new IllegalStateException();
+        IRequestCycle cycle = newCycle();
 
         // Training
 
-        request.getSession(false);
-        requestControl.setReturnValue(session);
+        trainGetSession(request, false, session);
 
         session.invalidate();
-        sessionControl.setThrowable(ex);
+        setThrowable(session, ex);
 
         log.warn("Exception thrown invalidating HttpSession.", ex);
 
-        cycle.getAbsoluteURL("/app");
-        cycleControl.setReturnValue("http://myserver/app";);
-
-        builder.constructURL("http://myserver/app";);
-        builderControl.setReturnValue("http://myserver/app";);
+        trainGetAbsoluteURL(cycle, "/app", "http://myserver/app";);
 
         response.sendRedirect("http://myserver/app";);
 
         replayControls();
 
         RestartService s = new RestartService();
-        s.setBuilder(builder);
         s.setRequest(request);
         s.setResponse(response);
-        s.setLog(log);
         s.setServletPath("/app");
+        s.setLog(log);
 
         s.service(cycle);
 
         verifyControls();
     }
-
 }

Modified: 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/engine/ServiceTestCase.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/engine/ServiceTestCase.java?rev=332810&r1=332809&r2=332810&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/engine/ServiceTestCase.java
 (original)
+++ 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/engine/ServiceTestCase.java
 Sat Nov 12 10:22:15 2005
@@ -19,7 +19,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
+import org.apache.commons.logging.Log;
 import org.apache.tapestry.BaseComponentTestCase;
+import org.apache.tapestry.IComponent;
 import org.apache.tapestry.IPage;
 import org.apache.tapestry.IRequestCycle;
 import org.apache.tapestry.services.LinkFactory;
@@ -121,12 +123,11 @@
         return (ILink) newMock(ILink.class);
     }
 
-    protected LinkFactory newLinkFactory(IRequestCycle cycle, Map parameters, 
boolean stateful,
-            ILink link)
+    protected LinkFactory newLinkFactory(Map parameters, boolean stateful, 
ILink link)
     {
         LinkFactory lf = (LinkFactory) newMock(LinkFactory.class);
 
-        lf.constructLink(false, parameters, stateful);
+        lf.constructLink(null, false, parameters, stateful);
 
         setReturnValue(lf, link);
 
@@ -136,6 +137,53 @@
     protected ResponseRenderer newResponseRenderer()
     {
         return (ResponseRenderer) newMock(ResponseRenderer.class);
+    }
+
+    protected void trainConstructLink(LinkFactory linkFactory, IEngineService 
service,
+            boolean post, Map parameters, boolean stateful, ILink link)
+    {
+        linkFactory.constructLink(service, post, parameters, stateful);
+        setReturnValue(linkFactory, link);
+    }
+
+    protected LinkFactory newLinkFactory()
+    {
+        return (LinkFactory) newMock(LinkFactory.class);
+    }
+
+    protected void trainGetPage(IRequestCycle cycle, IPage page)
+    {
+        cycle.getPage();
+        setReturnValue(cycle, page);
+    }
+
+    protected void trainGetNestedComponent(IPage page, String idPath, 
IComponent component)
+    {
+        page.getNestedComponent(idPath);
+        setReturnValue(page, component);
+    }
+
+    protected void trainGetPage(IRequestCycle cycle, String pageName, IPage 
page)
+    {
+        cycle.getPage(pageName);
+        setReturnValue(cycle, page);
+    }
+
+    protected void trainExtractListenerParameters(LinkFactory factory, 
IRequestCycle cycle, Object[] parameters)
+    {
+        factory.extractListenerParameters(cycle);
+        setReturnValue(factory, parameters);
+    }
+
+    protected void trainGetAbsoluteURL(IRequestCycle cycle, String shortURL, 
String fullURL)
+    {
+        cycle.getAbsoluteURL(shortURL);
+        setReturnValue(cycle, fullURL);
+    }
+
+    protected Log newLog()
+    {
+        return (Log) newMock(Log.class);
     }
 
 }

Copied: 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/LinkFactoryTest.java
 (from r332478, 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/TestLinkFactory.java)
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/LinkFactoryTest.java?p2=jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/LinkFactoryTest.java&p1=jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/TestLinkFactory.java&r1=332478&r2=332810&rev=332810&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/TestLinkFactory.java
 (original)
+++ 
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/services/impl/LinkFactoryTest.java
 Sat Nov 12 10:22:15 2005
@@ -21,16 +21,19 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.hivemind.ErrorLog;
 import org.apache.hivemind.test.HiveMindTestCase;
 import org.apache.tapestry.IEngine;
 import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.engine.IEngineService;
 import org.apache.tapestry.engine.ILink;
 import org.apache.tapestry.engine.ServiceEncoder;
 import org.apache.tapestry.engine.ServiceEncoding;
 import org.apache.tapestry.engine.encoders.PageServiceEncoder;
 import org.apache.tapestry.record.PropertyPersistenceStrategy;
 import org.apache.tapestry.record.PropertyPersistenceStrategySource;
+import org.apache.tapestry.services.LinkFactory;
 import org.apache.tapestry.services.ServiceConstants;
 import org.apache.tapestry.util.io.DataSqueezerUtil;
 import org.apache.tapestry.web.WebRequest;
@@ -42,7 +45,7 @@
  * @author Howard M. Lewis Ship
  * @since 4.0
  */
-public class TestLinkFactory extends HiveMindTestCase
+public class LinkFactoryTest extends HiveMindTestCase
 {
     private ErrorLog newErrorLog()
     {
@@ -101,28 +104,38 @@
         return result;
     }
 
-    private IRequestCycle newCycle()
+    private IEngine newEngine()
     {
-        MockControl enginec = newControl(IEngine.class);
-        IEngine engine = (IEngine) enginec.getMock();
-
-        MockControl cyclec = newControl(IRequestCycle.class);
-        IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
+        return (IEngine) newMock(IEngine.class);
+    }
 
-        cycle.getEngine();
-        cyclec.setReturnValue(engine);
+    private IRequestCycle newCycle()
+    {
+        return (IRequestCycle) newMock(IRequestCycle.class);
+    }
 
+    private void trainGetOutputEncoding(IEngine engine, String outputEncoding)
+    {
         engine.getOutputEncoding();
-        enginec.setReturnValue("utf-8");
+        setReturnValue(engine, outputEncoding);
+    }
 
-        return cycle;
+    private void trainGetEngine(IRequestCycle cycle, IEngine engine)
+    {
+        cycle.getEngine();
+        setReturnValue(cycle, engine);
     }
 
     public void testNoEncoders()
     {
         ErrorLog log = newErrorLog();
         WebRequest request = newRequest();
+        IEngine engine = newEngine();
         IRequestCycle cycle = newCycle();
+        IEngineService service = newService("myservice");
+
+        trainGetEngine(cycle, engine);
+        trainGetOutputEncoding(engine, "utf-8");
 
         replayControls();
 
@@ -138,33 +151,36 @@
         lf.initializeService();
 
         Map parameters = new HashMap();
-        parameters.put(ServiceConstants.SERVICE, "myservice");
 
-        ILink link = lf.constructLink(false, parameters, false);
+        ILink link = lf.constructLink(service, false, parameters, false);
 
         verifyControls();
 
         assertEquals("/context/app?service=myservice", link.getURL());
     }
 
+    private IEngineService newService(String name)
+    {
+        IEngineService service = (IEngineService) 
newMock(IEngineService.class);
+
+        service.getName();
+        setReturnValue(service, name);
+
+        return service;
+    }
+
     public void testStatefulRequest()
     {
         ErrorLog log = newErrorLog();
         WebRequest request = newRequest();
-        MockControl enginec = newControl(IEngine.class);
-        IEngine engine = (IEngine) enginec.getMock();
-
-        MockControl cyclec = newControl(IRequestCycle.class);
-        IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
-        cycle.getEngine();
-        cyclec.setReturnValue(engine);
+        IEngine engine = newEngine();
+        IEngineService service = newService("myservice");
+        IRequestCycle cycle = newCycle();
 
-        engine.getOutputEncoding();
-        enginec.setReturnValue("utf-8");
+        trainGetEngine(cycle, engine);
+        trainGetOutputEncoding(engine, "utf-8");
 
-        cycle.encodeURL("/context/app?foo=bar&service=myservice");
-        cyclec.setReturnValue("{encoded}");
+        trainEncodeURL(cycle, "/context/app?foo=bar&service=myservice", 
"{encoded}");
 
         replayControls();
 
@@ -181,20 +197,30 @@
         lf.initializeService();
 
         Map parameters = new HashMap();
-        parameters.put(ServiceConstants.SERVICE, "myservice");
 
-        ILink link = lf.constructLink(false, parameters, true);
+        ILink link = lf.constructLink(service, false, parameters, true);
 
         assertEquals("{encoded}", link.getURL());
 
         verifyControls();
     }
 
+    private void trainEncodeURL(IRequestCycle cycle, String inputURL, String 
encodeURL)
+    {
+        cycle.encodeURL(inputURL);
+        setReturnValue(cycle, encodeURL);
+    }
+
     public void testNoopEncoders()
     {
         WebRequest request = newRequest();
         IRequestCycle cycle = newCycle();
         ErrorLog log = newErrorLog();
+        IEngine engine = newEngine();
+        IEngineService service = newService("myservice");
+
+        trainGetEngine(cycle, engine);
+        trainGetOutputEncoding(engine, "utf-8");
 
         replayControls();
 
@@ -214,9 +240,8 @@
         lf.initializeService();
 
         Map parameters = new HashMap();
-        parameters.put(ServiceConstants.SERVICE, "myservice");
 
-        ILink link = lf.constructLink(false, parameters, false);
+        ILink link = lf.constructLink(service, false, parameters, false);
 
         verifyControls();
 
@@ -228,8 +253,14 @@
         WebRequest request = newRequest();
         IRequestCycle cycle = newCycle();
         ErrorLog log = newErrorLog();
+        IEngineService service = newService("page");
+        IEngine engine = newEngine();
+
+        trainGetEngine(cycle, engine);
+        trainGetOutputEncoding(engine, "utf-8");
 
         replayControls();
+
         PageServiceEncoder e = new PageServiceEncoder();
         e.setServiceName("page");
         e.setExtension("html");
@@ -248,21 +279,48 @@
         lf.initializeService();
 
         Map parameters = new HashMap();
-        parameters.put(ServiceConstants.SERVICE, "page");
         parameters.put(ServiceConstants.PAGE, "Barney");
 
-        ILink link = lf.constructLink(false, parameters, false);
+        ILink link = lf.constructLink(service, false, parameters, false);
 
         verifyControls();
 
         assertEquals("/context/Barney.html", link.getURL());
     }
 
+    public void testServiceNameIsNull()
+    {
+        IEngineService service = newService(null);
+
+        Map parameters = new HashMap();
+
+        replayControls();
+
+        LinkFactory lf = new LinkFactoryImpl();
+
+        try
+        {
+            lf.constructLink(service, false, parameters, true);
+            unreachable();
+        }
+        catch (ApplicationRuntimeException ex)
+        {
+            assertEquals(ImplMessages.serviceNameIsNull(), ex.getMessage());
+        }
+
+        verifyControls();
+    }
+
     public void testWithServiceParameters()
     {
         WebRequest request = newRequest();
         IRequestCycle cycle = newCycle();
         ErrorLog log = newErrorLog();
+        IEngineService service = newService("external");
+        IEngine engine = newEngine();
+
+        trainGetEngine(cycle, engine);
+        trainGetOutputEncoding(engine, "utf-8");
 
         replayControls();
 
@@ -285,12 +343,11 @@
         lf.initializeService();
 
         Map parameters = new HashMap();
-        parameters.put(ServiceConstants.SERVICE, "external");
         parameters.put(ServiceConstants.PAGE, "Barney");
         parameters.put(ServiceConstants.PARAMETER, new Object[]
         { Boolean.TRUE });
 
-        ILink link = lf.constructLink(false, parameters, false);
+        ILink link = lf.constructLink(service, false, parameters, false);
 
         verifyControls();
 

Modified: 
jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletHomeService.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletHomeService.java?rev=332810&r1=332809&r2=332810&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletHomeService.java
 (original)
+++ 
jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletHomeService.java
 Sat Nov 12 10:22:15 2005
@@ -59,9 +59,7 @@
 
         Map parameters = new HashMap();
 
-        parameters.put(ServiceConstants.SERVICE, getName());
-
-        return _linkFactory.constructLink(post, parameters, true);
+        return _linkFactory.constructLink(this, post, parameters, true);
     }
 
     public void setLinkFactory(LinkFactory linkFactory)

Modified: 
jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletLinkFactoryImpl.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletLinkFactoryImpl.java?rev=332810&r1=332809&r2=332810&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletLinkFactoryImpl.java
 (original)
+++ 
jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletLinkFactoryImpl.java
 Sat Nov 12 10:22:15 2005
@@ -21,6 +21,7 @@
 
 import org.apache.hivemind.util.Defense;
 import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.engine.IEngineService;
 import org.apache.tapestry.engine.ILink;
 import org.apache.tapestry.services.impl.LinkFactoryImpl;
 import org.apache.tapestry.util.QueryParameterMap;
@@ -43,7 +44,7 @@
         _renderResponse = renderResponse;
     }
 
-    public ILink constructLink(boolean post, Map parameters, boolean stateful)
+    public ILink constructLink(IEngineService service, boolean post, Map 
parameters, boolean stateful)
     {
         Defense.notNull(parameters, "parameters");
 

Modified: 
jakarta/tapestry/trunk/portlet/src/test/org/apache/tapestry/portlet/TestPortletHomeService.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/portlet/src/test/org/apache/tapestry/portlet/TestPortletHomeService.java?rev=332810&r1=332809&r2=332810&view=diff
==============================================================================
--- 
jakarta/tapestry/trunk/portlet/src/test/org/apache/tapestry/portlet/TestPortletHomeService.java
 (original)
+++ 
jakarta/tapestry/trunk/portlet/src/test/org/apache/tapestry/portlet/TestPortletHomeService.java
 Sat Nov 12 10:22:15 2005
@@ -117,20 +117,17 @@
     public void testGetLink()
     {
         Map parameters = new HashMap();
-        parameters.put(ServiceConstants.SERVICE, Tapestry.HOME_SERVICE);
-
-        MockControl factoryc = newControl(LinkFactory.class);
-        LinkFactory factory = (LinkFactory) factoryc.getMock();
 
+        LinkFactory factory = (LinkFactory) newMock(LinkFactory.class);
         ILink link = (ILink) newMock(ILink.class);
 
-        factory.constructLink(false, parameters, true);
-        factoryc.setReturnValue(link);
-
-        replayControls();
-
         PortletHomeService phs = new PortletHomeService();
         phs.setLinkFactory(factory);
+
+        factory.constructLink(phs, false, parameters, true);
+        setReturnValue(factory, link);
+
+        replayControls();
 
         assertSame(link, phs.getLink(false, null));
 

Modified: jakarta/tapestry/trunk/src/documentation/content/xdocs/index.xml
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/src/documentation/content/xdocs/index.xml?rev=332810&r1=332809&r2=332810&view=diff
==============================================================================
--- jakarta/tapestry/trunk/src/documentation/content/xdocs/index.xml (original)
+++ jakarta/tapestry/trunk/src/documentation/content/xdocs/index.xml Sat Nov 12 
10:22:15 2005
@@ -227,6 +227,16 @@
 
 </section>
   
+<section><title>Upgrading from 4.0-beta-12</title>
+
+  <p>
+    As part of the fix for <a 
href="http://issues.apache.org/jira/browse/TAPESTRY-620";>TAPESTRY-620: Expose 
the current IRequestCycle as an injectable service</a>, a number
+    of other interfaces within Tapestry were simplified, removing the 
IRequestCycle parameter. This may require minor code changes
+    in a small number of places.
+  </p>
+
+</section>  
+  
 <section><title>Upgrading from 4.0 beta-10</title>
     
    <p>

Modified: jakarta/tapestry/trunk/status.xml
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/status.xml?rev=332810&r1=332809&r2=332810&view=diff
==============================================================================
--- jakarta/tapestry/trunk/status.xml (original)
+++ jakarta/tapestry/trunk/status.xml Sat Nov 12 10:22:15 2005
@@ -65,6 +65,7 @@
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-741">PopupLinkRenderer 
overrides wrong method of DefaultLinkRenderer</action>
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-652">Checkbox does not 
support FieldLabel</action>
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-328">When an engine 
implementation is missing Tapestry does not throw an appropriate error</action>
+      <action type="fix" dev="HLS" fixes-bug="TAPESTRY-720">Tapestry should 
validate that all engine services provide a non-null service parameter</action>
     </release>
     <release version="4.0-beta-12" date="Oct 30 2005">
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-718">Asset injection 
makes assets appear as null inside finishLoad()</action>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to