No, I agree; I'm thinking of a refactoring where SRS does just what it
says: create an SR from a Resource and cross-compile it (i.e., CoffeeScript
to JavaScript), and then add a second service to which filters can be
contributed to do all the other work: CSS rewrites, minimization, caching,
gzipping. The current approach is a bit too complicated.


On Fri, Apr 19, 2013 at 3:50 PM, Nenad Nikolic <iznenad.niko...@gmail.com>wrote:

> Documentation sake :
> I have solved the problem by extending StreamableResourceSourceImpl with my
> local class and binding that class with a local interface with the same
> methods as StreamableResourceSource, hence avoiding the decorators bound to
> StreamableResourceSource.
>
> I feel that this is a very bad solution, but it was just simpler than if i
> wrote it servlet style.
> I think StreamableResourceSource itself should be a plpeline into which a
> user could contribute and override existing instances.
>
> Also i could be completely wrong :)
>
> Regards.
>
>
>
> On Wed, Apr 17, 2013 at 7:24 PM, Nenad Nikolic <iznenad.niko...@gmail.com
> >wrote:
>
> > Thank you for the quick response! I was considering such an approach,
> > implementing a separate dispatcher at first but figured it would just be
> > too much work and tapestry already provides the features and
> infrastructure
> > i need for delivering assets. I seems that i wasn't looking at the
> problem
> > i need to solve good enough.
> >
> > But still, if it would be possible to somehow override the
> > SRSCachingInterceptor's implementation of isCachable i think i would
> > actually have a valid solution.
> > I could have a special handling for the resources with the custom
> > extension and just not cache them.
> >
> > Is it possible to do this? Am i missing something in thinking this?
> >
> > Thanks again.
> >
> >
> >
> > On Wed, Apr 17, 2013 at 7:05 PM, Howard Lewis Ship <hls...@gmail.com
> >wrote:
> >
> >> Generally speaking, assets are expected to be static (that is,
> unchanging)
> >> and global, which is why there's so much caching going on.
> >>
> >> I would say that you should implement your own Dispatcher (contributed
> to
> >> the MasterDispatcher) service and just take control of this, using the
> >> same
> >> techniques you might use to server content out of a database. It ends up
> >> being more like a servlet at that point (Dispatcher is very similar to
> >> HttpServlet) and you have control over everything that happens: you
> >> control
> >> the cache, the URL format, the works.  With a little bit of effort, you
> >> can
> >> probably leverage some of the features of Tapestry's asset pipeline
> >> (minimization, CSS rewriting in 5.4, etc.), by making your data
> implement
> >> StreamableResource.
> >>
> >>
> >> On Wed, Apr 17, 2013 at 5:33 PM, Nenad Nikolic <
> iznenad.niko...@gmail.com
> >> >wrote:
> >>
> >> > Hello, i'm struggling with delivering a transformed resource for each
> >> > request.
> >> >
> >> > Here is exactly what i mean:
> >> >
> >> > There are two requests expected to hit the app.
> >> > 1) a request containing a unique identifier and some other values as
> >> > request parameters.
> >> > This request will hit a dispatcher which will store the data into
> >> > hazelcast, and render a response which will contain urls to two assets
> >> (one
> >> > js one css) with a request parameter (the unique identifier).
> >> > Here is how an example response looks like:
> >> >
> >> > <modifier>
> >> > <javascript>
> >> > <filepath>
> >> >
> >> >
> >>
> http://localhost:8080/app/assets/1.0.0-SNAPSHOT/ccdd/template.nmjs?trid=unique_identifier
> >> > </filepath>
> >> > </javascript>
> >> > <css>
> >> > <filepath>
> >> >
> >> >
> >>
> http://localhost:8080/app/assets/1.0.0-SNAPSHOT/ccdd/template.nmcss?trid=unique_identifier
> >> > </filepath>
> >> > </css>
> >> > </modifier>
> >> >
> >> > This is a machine-to-machine request. The system that made the request
> >> will
> >> > give the asset urls to the client when rendering a webpage.
> >> >
> >> > 2) the second request is the one coming from the client. It is a
> request
> >> > for the actuall assets. It should return the asset but replace the
> >> > placeholders within the asset with values from hazelcast.
> >> > I currently have an AssetHandler mapped to the "ccdd" path.
> >> > In the AssetHandler i get the request parameter and get the values
> from
> >> the
> >> > hazelcast map. Then the values are stored on the environment stack for
> >> my
> >> > ResourceTransformer to access. This whole thing is working and i get a
> >> > properly transformed asset for the first request.
> >> >
> >> > My problem is that when the unique identifier changes the resource is
> >> not
> >> > transformed again.
> >> >
> >> > So my questions are:
> >> >
> >> > Is it possible to cache resources selectively?
> >> > Am i doing this in a completely shitty way?
> >> >
> >> > I hope that my explanation is understandable. Thx in advance for any
> >> > responses!
> >> >
> >>
> >>
> >>
> >> --
> >> Howard M. Lewis Ship
> >>
> >> Creator of Apache Tapestry
> >>
> >> The source for Tapestry training, mentoring and support. Contact me to
> >> learn how I can get you up and productive in Tapestry fast!
> >>
> >> (971) 678-5210
> >> http://howardlewisship.com
> >>
> >
> >
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

Reply via email to