Re: html+js+css resources in a discovered module

2013-09-24 Thread Thiago H de Paula Figueiredo

On Tue, 24 Sep 2013 16:53:09 -0300, Daniel Jue  wrote:


Thanks Thiago!!  Good to hear from you.


Hello, Daniel! Nice to see you back at the mailing list. :)


One of my little concerns with the location of html and js files is that
the developer who's writing those doesn't want to have anything to do  
with Tapestry.  He's a bit challenging to work with (in an old school,  
hand
crafted servlet kind of way), and I'm trying to make this the least  
painful for him.  So hopefully all the static js and html files he's  
writing can be served up out of an Assets directory without T5 touching  
them, and it'll

look like it coming out of a WEB-INF directory (where they are now).


Looking at just Tapestry, if you want to add assets to a web app from a  
separate JAR, the best way of doing it is to put it in the classpath and  
use the ${classpath:xxx/yyy} way of including them. Looking at the code  
and services side, the best way of dealing with that is defining services  
with distributed configurations and having the JARs contribute to them.


Looking at Maven, you can actually have a WAR project (x) depend on  
another (y), with the x WAR files created with y as a starting point and  
files from x overriding the ones from y when both x and y have the same  
file in the same path. This is called an WAR overlay. Fortunately, a  
Google search comes up with a lot of results, so you'll probably won't  
have problem in finding good articles or tutorials on it. :)





On Tue, Sep 24, 2013 at 3:41 PM, Daniel Jue  wrote:


Ok, I made some progress in the meantime, preparing the code to be split
up for different and future customers.  To me it looks like whatever I  
want

to be in the root of the web app, I just stick under
/src/main/resources/com/customer/app/ , based on how I see it being done
with tapestry bootstrap (for example)

https://github.com/trsvax/tapestry-bootstrap/tree/master/src/main/resources/com/trsvax/bootstrap

My intended goal is to cobble together a customer specific web app, with
the customer specific pieces being in a jar file. (just as in Igor's  
blog

post)  This is the inverse of how a T5 library is usually used, to my
knowledge.

*Usually (for me anyway) I'm writing a web app and include pieces from  
3rd
party modules, like pre built components.  In this case I'm setting up  
the
main web app as a core of basic functionality, that has the ability to  
find
other pages in other modules and add them to menus, etc.  The core web  
app

has the web.xml and filter definition, and the customer jar file should
just contribute extra pages and services.

*I'm using the term 'customers' here because it translates well.  In
reality these add on modules are more closely tied to specific  
datasets.  A

com.company may have one, two or ten datasets, and that would mean
dataset1.jar  dataset10.jar
would be packaged in an app's war file.  Each datasetX.jar has it's
supporting pages and services (DAOs, etc)   Many customers have just one
dataset at the moment, but more could be added.


My next question is more of a maven one:  What's a good way to set up  
the

pom?  I want the core module (com.mycompany.web) to have the web.xml
servlet filter definition, AppModule.class etc.  I want each module
(com.othercompany.datasetX) to be a jar.  But in the end I want to build
individual war files for each customer.
Edit: looks like this may help me, when i get to that point:

http://stackoverflow.com/questions/7897114/how-to-assemble-multimodule-maven-project-into-one-war

I guess it's really no different than what I was doing before, except:
For the core module, that can be spit out as a war file that does stuff
(just no customer specifc stuff)
For each customer module, it will spit out a war file using the core  
plus

a jar for each dataset that customer has.

Sometimes it just helps to type things out.  If anyone has any
suggestions, or has had to do this sort of setup, please, please drop  
your

$0.02 here!

Thanks


On Mon, Sep 23, 2013 at 11:17 PM, Daniel Jue  wrote:


Hi, I was reading over this older blog link


http://blog.tapestry5.de/index.php/2010/01/19/tapestry-ioc-modularization-of-web-applications-without-osgi/

now that I have to architect our app to work for other customers.  We
want to keep the core parts together and refactor out the customer  
specific

parts to their own JARs, which can then be added into a WAR file.

I'm still in the middle of changing the code, but...

1) I'm assuming this is still the way to roll out customer specific  
WARs
when you have a core set of pages/services. (The customer specific  
portion

becomes a JAR with a module that is discovered by the core WAR file you
launch)

2) For some of my customers I have REST resources using  
Tynamo+RESTEasy,
and I also have static HTML+JS+CSS files that are customer specific,  
which
talk to those REST resources.  How/where should I package those in my  
JAR
file, so that they'll end up in the right place in one b

Re: html+js+css resources in a discovered module

2013-09-24 Thread Daniel Jue
Thanks Thiago!!  Good to hear from you.

One of my little concerns with the location of html and js files is that
the developer who's writing those doesn't want to have anything to do with
Tapestry.  He's a bit challenging to work with (in an old school, hand
crafted servlet kind of way), and I'm trying to make this the least painful
for him.  So hopefully all the static js and html files he's writing can be
served up out of an Assets directory without T5 touching them, and it'll
look like it coming out of a WEB-INF directory (where they are now).


On Tue, Sep 24, 2013 at 3:41 PM, Daniel Jue  wrote:

> Ok, I made some progress in the meantime, preparing the code to be split
> up for different and future customers.  To me it looks like whatever I want
> to be in the root of the web app, I just stick under
> /src/main/resources/com/customer/app/ , based on how I see it being done
> with tapestry bootstrap (for example)
>
> https://github.com/trsvax/tapestry-bootstrap/tree/master/src/main/resources/com/trsvax/bootstrap
>
> My intended goal is to cobble together a customer specific web app, with
> the customer specific pieces being in a jar file. (just as in Igor's blog
> post)  This is the inverse of how a T5 library is usually used, to my
> knowledge.
>
> *Usually (for me anyway) I'm writing a web app and include pieces from 3rd
> party modules, like pre built components.  In this case I'm setting up the
> main web app as a core of basic functionality, that has the ability to find
> other pages in other modules and add them to menus, etc.  The core web app
> has the web.xml and filter definition, and the customer jar file should
> just contribute extra pages and services.
>
> *I'm using the term 'customers' here because it translates well.  In
> reality these add on modules are more closely tied to specific datasets.  A
> com.company may have one, two or ten datasets, and that would mean
> dataset1.jar  dataset10.jar
> would be packaged in an app's war file.  Each datasetX.jar has it's
> supporting pages and services (DAOs, etc)   Many customers have just one
> dataset at the moment, but more could be added.
>
>
> My next question is more of a maven one:  What's a good way to set up the
> pom?  I want the core module (com.mycompany.web) to have the web.xml
> servlet filter definition, AppModule.class etc.  I want each module
> (com.othercompany.datasetX) to be a jar.  But in the end I want to build
> individual war files for each customer.
> Edit: looks like this may help me, when i get to that point:
>
> http://stackoverflow.com/questions/7897114/how-to-assemble-multimodule-maven-project-into-one-war
>
> I guess it's really no different than what I was doing before, except:
> For the core module, that can be spit out as a war file that does stuff
> (just no customer specifc stuff)
> For each customer module, it will spit out a war file using the core plus
> a jar for each dataset that customer has.
>
> Sometimes it just helps to type things out.  If anyone has any
> suggestions, or has had to do this sort of setup, please, please drop your
> $0.02 here!
>
> Thanks
>
>
> On Mon, Sep 23, 2013 at 11:17 PM, Daniel Jue  wrote:
>
>> Hi, I was reading over this older blog link
>>
>>
>> http://blog.tapestry5.de/index.php/2010/01/19/tapestry-ioc-modularization-of-web-applications-without-osgi/
>>
>> now that I have to architect our app to work for other customers.  We
>> want to keep the core parts together and refactor out the customer specific
>> parts to their own JARs, which can then be added into a WAR file.
>>
>> I'm still in the middle of changing the code, but...
>>
>> 1) I'm assuming this is still the way to roll out customer specific WARs
>> when you have a core set of pages/services. (The customer specific portion
>> becomes a JAR with a module that is discovered by the core WAR file you
>> launch)
>>
>> 2) For some of my customers I have REST resources using Tynamo+RESTEasy,
>> and I also have static HTML+JS+CSS files that are customer specific, which
>> talk to those REST resources.  How/where should I package those in my JAR
>> file, so that they'll end up in the right place in one big, exploded WAR
>> file?  It would be easiest if those HTML+JS+CSS files are just served up
>> instead of being converted to TML files, because the developer in charge of
>> those files doesn't want to adopt anything new.
>>
>> Can I just lay out my customer specific maven module in the same way as a
>> normal T5 App, but package it as a JAR and without any web.xml (since it
>> would use the core app's T5 ServletFilter)
>>
>> I'm using Tomcat, if that matters--hopefully it doesn't.
>>
>>
>>
>


Re: html+js+css resources in a discovered module

2013-09-24 Thread Daniel Jue
Thanks for the recommendation to peek into tapestry-security, I hadn't
thought to look there but I'm definitely looking for those types of
examples.

I'll definitely be using the MANIFEST.MF method of discovery, since the
core module will have no idea about the customer/dataset specific modules
until startup.




On Tue, Sep 24, 2013 at 3:33 PM, Thiago H de Paula Figueiredo <
thiag...@gmail.com> wrote:

> For Tapestry 5.4, the location in the classpath you put assets may have
> changed, but everything else didn't, so I see no reason for what you
> describe not working. This isn't any different from what happens in
> tapestry-security, for example. It includes pages, components, etc.
>
> As long there's a WAR with a web.xml in the end, you can package the
> customer-specific parts as Tapestry component libraries in JARs and it'll
> work. The only difference between a WAR project (with a web.xml) and a JAR
> one (without) is that in the WAR project the component library containing
> your classes is added automatically, while in the JAR you need to do it
> through MANIFEST.MF entry or @SubModule.
>
>
> On Tue, 24 Sep 2013 00:17:51 -0300, Daniel Jue  wrote:
>
>  Hi, I was reading over this older blog link
>>
>> http://blog.tapestry5.de/**index.php/2010/01/19/tapestry-**
>> ioc-modularization-of-web-**applications-without-osgi/
>>
>> now that I have to architect our app to work for other customers.  We want
>> to keep the core parts together and refactor out the customer specific
>> parts to their own JARs, which can then be added into a WAR file.
>>
>> I'm still in the middle of changing the code, but...
>>
>> 1) I'm assuming this is still the way to roll out customer specific WARs
>> when you have a core set of pages/services. (The customer specific portion
>> becomes a JAR with a module that is discovered by the core WAR file you
>> launch)
>>
>> 2) For some of my customers I have REST resources using Tynamo+RESTEasy,
>> and I also have static HTML+JS+CSS files that are customer specific, which
>> talk to those REST resources.  How/where should I package those in my JAR
>> file, so that they'll end up in the right place in one big, exploded WAR
>> file?  It would be easiest if those HTML+JS+CSS files are just served up
>> instead of being converted to TML files, because the developer in charge
>> of
>> those files doesn't want to adopt anything new.
>>
>> Can I just lay out my customer specific maven module in the same way as a
>> normal T5 App, but package it as a JAR and without any web.xml (since it
>> would use the core app's T5 ServletFilter)
>>
>> I'm using Tomcat, if that matters--hopefully it doesn't.
>>
>
>
> --
> Thiago H. de Paula Figueiredo
>
> --**--**-
> To unsubscribe, e-mail: 
> users-unsubscribe@tapestry.**apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>


Re: html+js+css resources in a discovered module

2013-09-24 Thread Daniel Jue
Ok, I made some progress in the meantime, preparing the code to be split up
for different and future customers.  To me it looks like whatever I want to
be in the root of the web app, I just stick under
/src/main/resources/com/customer/app/ , based on how I see it being done
with tapestry bootstrap (for example)
https://github.com/trsvax/tapestry-bootstrap/tree/master/src/main/resources/com/trsvax/bootstrap

My intended goal is to cobble together a customer specific web app, with
the customer specific pieces being in a jar file. (just as in Igor's blog
post)  This is the inverse of how a T5 library is usually used, to my
knowledge.

*Usually (for me anyway) I'm writing a web app and include pieces from 3rd
party modules, like pre built components.  In this case I'm setting up the
main web app as a core of basic functionality, that has the ability to find
other pages in other modules and add them to menus, etc.  The core web app
has the web.xml and filter definition, and the customer jar file should
just contribute extra pages and services.

*I'm using the term 'customers' here because it translates well.  In
reality these add on modules are more closely tied to specific datasets.  A
com.company may have one, two or ten datasets, and that would mean
dataset1.jar  dataset10.jar
would be packaged in an app's war file.  Each datasetX.jar has it's
supporting pages and services (DAOs, etc)   Many customers have just one
dataset at the moment, but more could be added.


My next question is more of a maven one:  What's a good way to set up the
pom?  I want the core module (com.mycompany.web) to have the web.xml
servlet filter definition, AppModule.class etc.  I want each module
(com.othercompany.datasetX) to be a jar.  But in the end I want to build
individual war files for each customer.
Edit: looks like this may help me, when i get to that point:
http://stackoverflow.com/questions/7897114/how-to-assemble-multimodule-maven-project-into-one-war

I guess it's really no different than what I was doing before, except:
For the core module, that can be spit out as a war file that does stuff
(just no customer specifc stuff)
For each customer module, it will spit out a war file using the core plus a
jar for each dataset that customer has.

Sometimes it just helps to type things out.  If anyone has any suggestions,
or has had to do this sort of setup, please, please drop your $0.02 here!

Thanks


On Mon, Sep 23, 2013 at 11:17 PM, Daniel Jue  wrote:

> Hi, I was reading over this older blog link
>
>
> http://blog.tapestry5.de/index.php/2010/01/19/tapestry-ioc-modularization-of-web-applications-without-osgi/
>
> now that I have to architect our app to work for other customers.  We want
> to keep the core parts together and refactor out the customer specific
> parts to their own JARs, which can then be added into a WAR file.
>
> I'm still in the middle of changing the code, but...
>
> 1) I'm assuming this is still the way to roll out customer specific WARs
> when you have a core set of pages/services. (The customer specific portion
> becomes a JAR with a module that is discovered by the core WAR file you
> launch)
>
> 2) For some of my customers I have REST resources using Tynamo+RESTEasy,
> and I also have static HTML+JS+CSS files that are customer specific, which
> talk to those REST resources.  How/where should I package those in my JAR
> file, so that they'll end up in the right place in one big, exploded WAR
> file?  It would be easiest if those HTML+JS+CSS files are just served up
> instead of being converted to TML files, because the developer in charge of
> those files doesn't want to adopt anything new.
>
> Can I just lay out my customer specific maven module in the same way as a
> normal T5 App, but package it as a JAR and without any web.xml (since it
> would use the core app's T5 ServletFilter)
>
> I'm using Tomcat, if that matters--hopefully it doesn't.
>
>
>


Re: html+js+css resources in a discovered module

2013-09-24 Thread Thiago H de Paula Figueiredo
For Tapestry 5.4, the location in the classpath you put assets may have  
changed, but everything else didn't, so I see no reason for what you  
describe not working. This isn't any different from what happens in  
tapestry-security, for example. It includes pages, components, etc.


As long there's a WAR with a web.xml in the end, you can package the  
customer-specific parts as Tapestry component libraries in JARs and it'll  
work. The only difference between a WAR project (with a web.xml) and a JAR  
one (without) is that in the WAR project the component library containing  
your classes is added automatically, while in the JAR you need to do it  
through MANIFEST.MF entry or @SubModule.


On Tue, 24 Sep 2013 00:17:51 -0300, Daniel Jue  wrote:


Hi, I was reading over this older blog link

http://blog.tapestry5.de/index.php/2010/01/19/tapestry-ioc-modularization-of-web-applications-without-osgi/

now that I have to architect our app to work for other customers.  We  
want

to keep the core parts together and refactor out the customer specific
parts to their own JARs, which can then be added into a WAR file.

I'm still in the middle of changing the code, but...

1) I'm assuming this is still the way to roll out customer specific WARs
when you have a core set of pages/services. (The customer specific  
portion

becomes a JAR with a module that is discovered by the core WAR file you
launch)

2) For some of my customers I have REST resources using Tynamo+RESTEasy,
and I also have static HTML+JS+CSS files that are customer specific,  
which

talk to those REST resources.  How/where should I package those in my JAR
file, so that they'll end up in the right place in one big, exploded WAR
file?  It would be easiest if those HTML+JS+CSS files are just served up
instead of being converted to TML files, because the developer in charge  
of

those files doesn't want to adopt anything new.

Can I just lay out my customer specific maven module in the same way as a
normal T5 App, but package it as a JAR and without any web.xml (since it
would use the core app's T5 ServletFilter)

I'm using Tomcat, if that matters--hopefully it doesn't.



--
Thiago H. de Paula Figueiredo

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



html+js+css resources in a discovered module

2013-09-23 Thread Daniel Jue
Hi, I was reading over this older blog link

http://blog.tapestry5.de/index.php/2010/01/19/tapestry-ioc-modularization-of-web-applications-without-osgi/

now that I have to architect our app to work for other customers.  We want
to keep the core parts together and refactor out the customer specific
parts to their own JARs, which can then be added into a WAR file.

I'm still in the middle of changing the code, but...

1) I'm assuming this is still the way to roll out customer specific WARs
when you have a core set of pages/services. (The customer specific portion
becomes a JAR with a module that is discovered by the core WAR file you
launch)

2) For some of my customers I have REST resources using Tynamo+RESTEasy,
and I also have static HTML+JS+CSS files that are customer specific, which
talk to those REST resources.  How/where should I package those in my JAR
file, so that they'll end up in the right place in one big, exploded WAR
file?  It would be easiest if those HTML+JS+CSS files are just served up
instead of being converted to TML files, because the developer in charge of
those files doesn't want to adopt anything new.

Can I just lay out my customer specific maven module in the same way as a
normal T5 App, but package it as a JAR and without any web.xml (since it
would use the core app's T5 ServletFilter)

I'm using Tomcat, if that matters--hopefully it doesn't.