[ 
http://issues.apache.org/jira/browse/TAPESTRY-796?page=comments#action_12360221 
] 

Michael Frericks commented on TAPESTRY-796:
-------------------------------------------

had to face the problem, too. My application uses a different servlet-path for 
each user.
I solved this problem by contributing an own  
org.apache.tapestry.engine.ServiceEncoder:

public class ServletPathEncoder implements ServiceEncoder
{
      private String _extension;
      private String _servletPath;

  public void decode(ServiceEncoding encoding)
    {
        if (!encoding.getServletPath().endsWith(_extension))
        {
            return;
        }

        _servletPath = encoding.getServletPath();
    }

    public void encode(ServiceEncoding encoding)
    {
        encoding.setServletPath(_servletPath);
    }

    public void setExtension(String string)
    {
        _extension = string;
    }
}


        <service-point
                id="ServletPathEncoder"
                interface="org.apache.tapestry.engine.ServiceEncoder">

                <invoke-factory service-id="hivemind.BuilderFactory" 
model="threaded">
                        <construct class="ServletPathEncoder" >
                                <set
                                        property="extension"
                                        value="yourExtension" />
                        </construct>
                </invoke-factory>
        </service-point>

        <contribution configuration-id="tapestry.url.ServiceEncoders">
                <encoder id="servletPathEncoder" 
object="service:ServletPathEncoder"/>
        </contribution>

> page-service-encoder for external service no longer working
> -----------------------------------------------------------
>
>          Key: TAPESTRY-796
>          URL: http://issues.apache.org/jira/browse/TAPESTRY-796
>      Project: Tapestry
>         Type: Bug
>     Versions: 4.0
>  Environment: 4.0rc1, Tomcat 5.5.9, OS X 10.4.3
>     Reporter: Paul Cantrell

>
> Using the page-service-encoder to map a file extension to the external page 
> service no longer works.
> If I create these three files, the Home page correctly links to Page 2:
> Home.html:
>     <html>
>     <body>
>         <h1>Home Page</h1>
>         <a href="#" jwcid="@ExternalLink" page="Page2">Page 2</a>
>     </html>
> Page2.html:
>     <html>
>     <body>
>         <h1>Page 2</h1>
>     </html>
> Page2.java:
>     // insert default page package and imports here
>     public class Page2 extends BasePage implements IExternalPage {
>         public void activateExternalPage(Object[] x, IRequestCycle y) { }
>     }
> However, if I add this single configuration to my Hivemodule:
>     <contribution configuration-id="tapestry.url.ServiceEncoders">
>       <page-service-encoder id="external" extension="html" service="external" 
> />
>     </contribution>
> ...then every link goes to the home page. The link on Home correctly gets 
> encoded as /myapp/Page2.html, but that request just brings up the Home page 
> again.
> No errors appear in the log file.
> The Tapestry servlet is mapped in web.xml as follows:
>   <servlet>
>     <servlet-name>tapestry</servlet-name>
>     <servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
>     <load-on-startup>1</load-on-startup>
>   </servlet>
>   <servlet-mapping>
>     <servlet-name>tapestry</servlet-name> <url-pattern>/*</url-pattern>
>   </servlet-mapping>
> This didn't get a response on the user mailing list, so I'm presuming it's a 
> legitimate bug.
> This worked in Tapestry 4.0b6, but broken when I upgraded to rc1.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


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

Reply via email to