org.apache.tapestry.engine
Class ExternalService

java.lang.Object
  extended by org.apache.tapestry.engine.ExternalService
All Implemented Interfaces:
IEngineService

public class ExternalService
extends Object
implements IEngineService

The external service enables external applications to reference Tapestry pages via a URL. Pages which can be referenced by the external service must implement the IExternalPage interface. The external service enables the bookmarking of pages.

You can try and second guess the URL format used by Tapestry. The default URL format for the external service is:

http://localhost/app?service=external/[Page Name]&sp=[Param 0]&sp=[Param 1]...
For example to view the "ViewCustomer" page the service parameters 5056 (customer ID) and 309 (company ID) the external service URL would be:
http://localhost/myapp?service=external&context=ViewCustomer&sp=5056&sp=302
In this example external service will get a "ViewCustomer" page and invoke the IExternalPage.activateExternalPage(Object[], IRequestCycle)method with the parameters: Object[] { new Integer(5056), new Integer(302) }.

Note service parameters (sp) need to be prefixed by valid DataSqueezerImpladaptor char. These adaptor chars are automatically provided in URL's created by the buildGesture() method. However if you hand coded an external service URL you will need to ensure valid prefix chars are present.

Prefix char(s) Mapped Java Type
 TF  boolean
 b  byte
 c  char
 d  double
 -0123456789  integer
 l  long
 S  String
 s  short
 other chars   String without truncation of first char

A good rule of thumb is to keep the information encoded in the URL short and simple, and restrict it to just Strings and Integers. Integers can be encoded as-is. Prefixing all Strings with the letter 'S' will ensure that they are decoded properly. Again, this is only relevant if an IExternalPageis being referenced from static HTML or JSP and the URL must be assembled in user code ... when the URL is generated by Tapestry, it is automatically created with the correct prefixes and encodings (as with any other service).

Since:
2.2
Author:
Howard Lewis Ship, Malcolm Edgar
See Also:
IExternalPage

Constructor Summary
ExternalService()
           
 
Method Summary
 ILink getLink(boolean post, Object parameter)
          Builds a URL for a service.
 String getName()
          Returns the name of the service.
 void service(IRequestCycle cycle)
          Perform the service, interpreting the URL (from the HttpServletRequest) responding appropriately, and rendering a result page.
 void setLinkFactory(LinkFactory linkFactory)
           
 void setResponseRenderer(ResponseRenderer responseRenderer)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExternalService

public ExternalService()
Method Detail

getLink

public ILink getLink(boolean post,
                     Object parameter)
Builds a URL for a service. This is performed during the rendering phase of one request cycle and builds URLs that will invoke activity in a subsequent request cycle.

This method changed incompatibly between release 3.0 and release 4.0.

Specified by:
getLink in interface IEngineService
Parameters:
post - if true, then the link will be used for a post (not a get, i.e., for a HTML form); this may affect what information is encoded into the link
parameter - An object that provide any additional information needed by the service. Each service implementation will expect that an object of the proper type be passed in. In some cases, a simple String will do; in others, a specific object (possibly implementing an interface) will be required.
Returns:
The URL for the service. The URL will always be encoded when it is returned.

service

public void service(IRequestCycle cycle)
             throws IOException
Description copied from interface: IEngineService
Perform the service, interpreting the URL (from the HttpServletRequest) responding appropriately, and rendering a result page.

Specified by:
service in interface IEngineService
Parameters:
cycle - the incoming request
Throws:
IOException

getName

public String getName()
Description copied from interface: IEngineService
Returns the name of the service.

Specified by:
getName in interface IEngineService

setResponseRenderer

public void setResponseRenderer(ResponseRenderer responseRenderer)
Since:
4.0

setLinkFactory

public void setLinkFactory(LinkFactory linkFactory)
Since:
4.0


Copyright © 2006-2008 Apache Software Foundation. All Rights Reserved.