Jesse,
The problem wasn't the internals it was how a "library" was defined in the 
.application file.

I have a component that is say a Support component.  It describes the running 
Server.  The information in that Component is not just straight HTML, it is 
other Tapestry Components.  For instance, we put a copyright on the bottom.  
For our product it says our company name.  For the OEM version, it says 
something else.  Now I could go through my entire application and put if 
"if/else" where ever there is a difference, but how do I go back and maintain 
them in the future?  Tapestry is based on Components!  Or what if I want to add 
another OEM partner, do I now have to go back and put in if/else/else?  
Tapestry is based on Components!  So, I create two components, how do I tell it 
which one to use?  I am not going to put in if/else all I should have to do is 
use a different library.  How do I do that?  The only way is to keep the name 
the same but have a different location for the .library an d its pieces.  Which 
means I have to either change the .application file or I have to put out a 
"bogus" .library file that gets replaced in a build.

What I would like to see happen in T5 is for me not to have to specify in the 
.application file the location of the .libraries, I would like to have it read 
each .jar and if it has a .library file, then it is a library.  The problem 
there is how do we determine the "name" of the library?  For instance, I use 
"@branded:PingLogo", how does it associate "branded" with a particular .library 
file?  Either use the name of the .library file or come up with some mechanism 
for it to determine it automatically.  I don't know, but having to hard-code it 
in a .application file caused me a lot of grief.  We know create a .library 
file for each branding and then parse it to generate a .library that has the 
correct path to the components.

I have a working version based on T3.  Converting to T4 from T3 and then to T5 
is to much work.  Therefore, we will either switch to T5 if I can make it work, 
or abandon it and move to something else.

regards,

Nark


Mark J. Stang
Senior Engineer/Architect
office: +1 303.468.2900
mobile: +1 303.507.2833
Ping Identity



-----Original Message-----
From: Jesse Kuhnert [mailto:[EMAIL PROTECTED]
Sent: Mon 1/29/2007 6:15 PM
To: Tapestry development
Subject: Re: T5: Brandable
 
Looking at it from a t4 viewpoint of services / etc I can't imagine
this isn't do-able in some way other than having to generate
.application files and drop in jars. (unless the jars only contain
resources)

Of course you and Howard know more, just throwing in the idea that you
have a ~lot~ more access to how the internal works than you did in
t3..

On 1/29/07, Mark Stang <[EMAIL PROTECTED]> wrote:
> Howard,
> We ship two versions of our product.  The first is a Ping Identity version, 
> says Ping Identity/PingFederate all over it.  The other version is "branded" 
> for our OEM customer to re-sell.  In T3, in order to do this I have two jar 
> files to implement this.  Each is a Tapestry Library.
>
> When I have a "branded" component I do something like this:
>
>    <span jwcid="@branded:HeaderLogo"/>
>
> However, I have had to create hacks to work-around issues like the 
> .application file.  I have a Library refence:
>
> <library id="branded" 
> specification-path="/com/pingidentity/component/branded/Branded.library"/>
>
> And then I generate a "Branded.library" for each release and copy to the 
> above location.
>
> 1 <!DOCTYPE library-specification PUBLIC "-//Apache Software 
> Foundation//Tapestry Specification 3.0//EN" 
> "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd";><library-specification>
>  2   <library id="common" 
> specification-path="/com/pingidentity/component/common/PingCommon.library"/>
>  3   <component-type type="About" specification-path="ping/About.jwc"/>
>  4   <component-type type="Licensing" 
> specification-path="ping/Licensing.jwc"/>
>  5   <component-type type="HeaderLogo" 
> specification-path="ping/HeaderLogo.jwc"/>
>  6   <component-type type="LoginHeader" 
> specification-path="ping/LoginHeader.jwc"/>
>  7   <component-type type="Support" specification-path="ping/Support.jwc"/>
>  8   <component-type type="Welcome" specification-path="ping/Welcome.jwc"/>
>  9   <component-type type="AdditionalResources" 
> specification-path="ping/AdditionalResources.jwc"/>
> 10   <component-type type="PingLogo" specification-path="ping/PingLogo.jwc"/>
> 11   <component-type type="ConnectionLimit" 
> specification-path="ping/ConnectionLimit.jwc"/>
> 12   <component-type type="AdditionalAdapters" 
> specification-path="ping/AdditionalAdapters.jwc"/>
> 13 </library-specification>
>
>
> What I would like in T5 is some support for being able to "brand" components.
>
> thanks,
>
> Mark
>
> Mark J. Stang
> Senior Engineer/Architect
> office: +1 303.468.2900
> mobile: +1 303.507.2833
> Ping Identity
>
>
>


-- 
Jesse Kuhnert
Tapestry/Dojo team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com

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


Reply via email to