You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by captain_rhino <gr...@axa-travel-insurance.com> on 2011/12/21 13:08:34 UTC

How to handle urls for a White Label site

A little xmas cheer to all!

I'm in the process of creating a white label site to handle insurance claims
for different partners.

I'm looking for a general steer on how to handle the urls.

The web page flow is generic for all the different white label partners.

Currently external sites use the following links to access my site
www.mydomain.com/makeaclaim/whitelabelpartner1
www.mydomain.com/makeaclaim/whitelabelpartner2

for a white label partner entering our site I use a
PageRenderLinkTransformer to then look at the that url and move them onto to
the start of the journey and store where they came from in the session.
i.e. move them from 
www.mydomain.com/makeaclaim/whitelabelpartner1 
to 
www.mydomain.com/makeaclaim/claimdetails


My problem is if they bookmark the claimsdetails or any future page links I
have no idea where they came from.  I have thought of passing a request
parameter through the entire journey but that seems a bit clunky.
Ideally i'd like to be to do the following

www.mydomain.com/makeaclaim/whitelabelpartner1/claimdetails
www.mydomain.com/makeaclaim/whitelabelpartner1/personaldetails

www.mydomain.com/makeaclaim/whitelabelpartner2/claimdetails
www.mydomain.com/makeaclaim/whitelabelpartner2/personaldetails

where claim details is one single tapestry page  not placed in two separate
packages as this needs to be configurable as new partners can be added all
the time.

Is some kind of url masking to page actions available in tapestry?
i.e. 
www.mydomain.com/makeaclaim/*/claimdetails

Any ideas/Suggestions welcome.

--
View this message in context: http://tapestry.1045711.n5.nabble.com/How-to-handle-urls-for-a-White-Label-site-tp5091687p5091687.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: How to handle urls for a White Label site

Posted by Lance Java <la...@googlemail.com>.
1. You would want to use tapestry's URL rewriting support to remove
"whitelabelpartnerX" from the URL before passing it down the request
processing pipeline.

2. As your URLRewriterRule removes the whitelabelpartner from the url, it
should push it onto the Environment so that it can be accessed later. This
can be done by @inject-ing the Environment and calling environment.push(new
WhitelabelPartner(partnerValueFromUrl));

3. Your layout component (and other pages / components) can then use the
@Environmental annotation to get the WhitelabelPartner instance from the
stack and style the page / provide priviledges accordingly

Links
http://tapestry.apache.org/url-rewriting.html
http://tapestry.apache.org/request-processing.html
http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/Environment.html
http://tapestry.apache.org/environmental-services.html




On Wednesday, 21 December 2011, captain_rhino <
graeme.kitchen@axa-travel-insurance.com> wrote:
> A little xmas cheer to all!
>
> I'm in the process of creating a white label site to handle insurance
claims
> for different partners.
>
> I'm looking for a general steer on how to handle the urls.
>
> The web page flow is generic for all the different white label partners.
>
> Currently external sites use the following links to access my site
> www.mydomain.com/makeaclaim/whitelabelpartner1
> www.mydomain.com/makeaclaim/whitelabelpartner2
>
> for a white label partner entering our site I use a
> PageRenderLinkTransformer to then look at the that url and move them onto
to
> the start of the journey and store where they came from in the session.
> i.e. move them from
> www.mydomain.com/makeaclaim/whitelabelpartner1
> to
> www.mydomain.com/makeaclaim/claimdetails
>
>
> My problem is if they bookmark the claimsdetails or any future page links
I
> have no idea where they came from.  I have thought of passing a request
> parameter through the entire journey but that seems a bit clunky.
> Ideally i'd like to be to do the following
>
> www.mydomain.com/makeaclaim/whitelabelpartner1/claimdetails
> www.mydomain.com/makeaclaim/whitelabelpartner1/personaldetails
>
> www.mydomain.com/makeaclaim/whitelabelpartner2/claimdetails
> www.mydomain.com/makeaclaim/whitelabelpartner2/personaldetails
>
> where claim details is one single tapestry page  not placed in two
separate
> packages as this needs to be configurable as new partners can be added all
> the time.
>
> Is some kind of url masking to page actions available in tapestry?
> i.e.
> www.mydomain.com/makeaclaim/*/claimdetails
>
> Any ideas/Suggestions welcome.
>
> --
> View this message in context:
http://tapestry.1045711.n5.nabble.com/How-to-handle-urls-for-a-White-Label-site-tp5091687p5091687.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: How to handle urls for a White Label site

Posted by captain_rhino <gr...@axa-travel-insurance.com>.
The following seems to work but I'm not an experieinced tapestry developer so
comments are more than welcome.  Thx for the advice so far.

	   public Link transformPageRenderLink(
	         Link defaultLink,
	         PageRenderRequestParameters parameters) {
		   
		     if (defaultLink.getBasePath().contains("/partner")) {
		    	 return defaultLink.copyWithBasePath("/makeaclaim/amex/testdetails");
		     }
		   
		   
		  
	      return defaultLink;

	   }


--
View this message in context: http://tapestry.1045711.n5.nabble.com/How-to-handle-urls-for-a-White-Label-site-tp5091687p5094862.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: How to handle urls for a White Label site

Posted by captain_rhino <gr...@axa-travel-insurance.com>.
I think i can see how to rewrite the incoming urls but the outgoing ones I
seem to be stuck in a loop?  Any suggestions?  Am i coding correctly for
outgoing urls please?

import com.axa.cao.pages.partner.Test;
import com.axa.cao.pages.partner.TestDetails;


public class UrlLinkTransformer implements PageRenderLinkTransformer{
	
	
	   public PageRenderRequestParameters decodePageRenderRequest(
	                  Request request) {
	      String path = request.getPath();
	      
	 
	      Map<String,Integer> urlQuestionSetMap = new
HashMap<String,Integer>();
	      urlQuestionSetMap.put("/LLOYDS",1);
	      urlQuestionSetMap.put("/AMEX",2);
	      
	      PageRenderRequestParameters pageRenderRequestParameters = null;
	      for (Map.Entry<String, Integer> entry : urlQuestionSetMap.entrySet())
{
	    	    String key = entry.getKey();
	    	    Integer value = entry.getValue();
	    	    
	    	    if (path.toUpperCase().contains(key)) {
	    	    	
	    	    	int keyIndex = path.toUpperCase().indexOf(key);
	    	    	String requestPath = path.substring(keyIndex+key.length());
	    	    	pageRenderRequestParameters = new
PageRenderRequestParameters("partner"+requestPath, new
IssuerEventContext(value), true);
	    	    	return pageRenderRequestParameters;
	    	    }
	    	}
	      
	      return null;
	    }
	   
	   @Inject
	   private PageRenderLinkSource renderLinkSource; 
	   
	   @Inject
	   private PageRenderLinkSource pageRenderLinkSource;
	 
	   public Link transformPageRenderLink(
	         Link defaultLink,
	         PageRenderRequestParameters parameters) {
		   
		     if (defaultLink.getBasePath().contains("/partner")) {
		    	 	         return this.pageRenderLinkSource
		    	 	               .createPageRenderLink(TestDetails.class);
		     }
		  
		  
	      return defaultLink;

	   }
	
}

--
View this message in context: http://tapestry.1045711.n5.nabble.com/How-to-handle-urls-for-a-White-Label-site-tp5091687p5094605.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: How to handle urls for a White Label site

Posted by captain_rhino <gr...@axa-travel-insurance.com>.
I got some basic rewriting of differrent partners working.  One for Lloyds
and one for Amex.

Simple requests such as 

http://localhost:8080/makeaclaim/lloyds/test
or
http://localhost:8080/makeaclaim/amex/test
got url rewrote to 
makeaclaim.partner.test

So good so far.


I have a Test class where the onSuccess method is looking to create a link.

Currently I have a very messy way of passing a context (the context
indicates which prtner site it is from) through so as the
PageRenderLinkTransformer can then use this context to dynamically create
the url displayed to the user?

Is there an wasier way to do this?  Any examples/comments would be much
appreciated?



http://snipt.org/tvpo9 PageRenderLinkTransformer 
http://snipt.org/tvpj8 Test.java 



--
View this message in context: http://tapestry.1045711.n5.nabble.com/How-to-handle-urls-for-a-White-Label-site-tp5091687p5117073.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: How to handle urls for a White Label site

Posted by Cezary Biernacki <ce...@gmail.com>.
Hi,
I have built a quite large white-label  web app using Tapestry 5, and I am
aware of other white-label Tapestry-based sites.

I recommend following approach:

   - Encode partner information in URL for (nearly) all your pages, not
   only 'gateway' ones. I use 'http://example.com/PARTNER/PAGE....'.

   - If necessary, put some pages that are not partner-dependent in a
   separate package.

   - Write code that performs URL rewriting for both incoming and outgoing
   links. In Tapestry 5.1 you need to contribute 'URLRewriteRule'-s to
   URLRewriter service. URLRewriter works in T5.2 too, but it is deprecated,
   so in Tapestry 5.2 and 5.3 you need to decorate ComponentEventLinkEncoder.
   Remember to not-rewrite requests to '/assets/' and your special package (or
   packages).

   - Your code after rewriting URL, should store information about partner
   as 'Request' attribute. It is important to NOT store that in the  session,
   otherwise you would invite problems like e.g. loosing partner branding when
   the session expires.

   - Write a service that provides a nice interface for getting information
   about the current partner from the request.

   - If you feel especially adventurous and not afraid of Tapestry
   internals, you can even write an InjectionProvider
   and/or ComponentClassTransformWorker to automagically inject necessary data
   about partner into your pages and class. However, it is not recommended for
   beginners, and please do not overuse such mechanism, as it could make your
   code hard to understand for less Tapestry-proficient developers.



Best regards,
Cezary



On Wed, Dec 21, 2011 at 1:08 PM, captain_rhino <
graeme.kitchen@axa-travel-insurance.com> wrote:

> A little xmas cheer to all!
>
> I'm in the process of creating a white label site to handle insurance
> claims
> for different partners.
>
> I'm looking for a general steer on how to handle the urls.
>
> The web page flow is generic for all the different white label partners.
>
> Currently external sites use the following links to access my site
> www.mydomain.com/makeaclaim/whitelabelpartner1
> www.mydomain.com/makeaclaim/whitelabelpartner2
>
> for a white label partner entering our site I use a
> PageRenderLinkTransformer to then look at the that url and move them onto
> to
> the start of the journey and store where they came from in the session.
> i.e. move them from
> www.mydomain.com/makeaclaim/whitelabelpartner1
> to
> www.mydomain.com/makeaclaim/claimdetails
>
>
> My problem is if they bookmark the claimsdetails or any future page links I
> have no idea where they came from.  I have thought of passing a request
> parameter through the entire journey but that seems a bit clunky.
> Ideally i'd like to be to do the following
>
> www.mydomain.com/makeaclaim/whitelabelpartner1/claimdetails
> www.mydomain.com/makeaclaim/whitelabelpartner1/personaldetails
>
> www.mydomain.com/makeaclaim/whitelabelpartner2/claimdetails
> www.mydomain.com/makeaclaim/whitelabelpartner2/personaldetails
>
> where claim details is one single tapestry page  not placed in two separate
> packages as this needs to be configurable as new partners can be added all
> the time.
>
> Is some kind of url masking to page actions available in tapestry?
> i.e.
> www.mydomain.com/makeaclaim/*/claimdetails
>
> Any ideas/Suggestions welcome.
>
> --
> View this message in context:
> http://tapestry.1045711.n5.nabble.com/How-to-handle-urls-for-a-White-Label-site-tp5091687p5091687.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: How to handle urls for a White Label site

Posted by trsvax <tr...@gmail.com>.
I have not used this but I think it does what you want.

http://tynamo.org/tapestry-routing+guide

--
View this message in context: http://tapestry.1045711.n5.nabble.com/How-to-handle-urls-for-a-White-Label-site-tp5091687p5092265.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org