True; so we need the Resource passed in, but also another object to
collect additional dependencies, to trigger reloads.  Say:

public interface ResourceTransformer
{
    /**
     * Read the source input stream and provide a new input stream of
the transformed content.
     *
     * @param source
     *            resource to be transformed
     * @return stream of output content
     * @throws IOException
     */
    InputStream transform(Resource source, ResourceDependencies
dependencies) throws IOException;
}

public interface ResourceDependencies {
   // Adding a dependency tracks the dependency for changes; if the
dependency changes then, at a minimum,
// the main resource will be marked invalidated in any caches and
reloaded/rebuilt as necessary.
  void addDependency(Resource dependency);
}


So, when you process an @import, you can use the source Resource to
find the corresponding imported Resource, and you can then add that
resource as a dependency.


On Fri, Oct 7, 2011 at 9:30 AM, Cezary Biernacki <cezary...@gmail.com> wrote:
> On Fri, Oct 7, 2011 at 5:17 PM, Howard Lewis Ship <hls...@gmail.com> wrote:
>
>> On Thu, Oct 6, 2011 at 11:23 AM, Cezary Biernacki <cezary...@gmail.com>
>> wrote:
>> > Hi,
>> > OK. I need to get a permission as code is owned by my employer, hopefully
>> I
>> > should be able to get it next week. Anyway, it is easy to build such
>> > integration with Tapestry 5.3 by implementing ResourceTransformer
>> interface
>> > and contributing it StreamableResourceSource.
>> >
>> > For both CoffeeScript and LessCSS  I use their JavaScript compilers
>> executed
>> > from Java using for  Mozilla's Rhino. CoffeeScript source is used
>> > unmodified, but LessCSS required small bit of hacking.
>> >
>> > Only deficiency of ResourceTransformer is that does not support well
>> > situations when a resource includes other files, e.g. by @import
>> directive
>> > in LessCSS - relative location of transformed files is unknown (so
>> resolving
>> > included files can not relative) and there is no good way to inform about
>> > changes to dependencies (solved in my hack, but it would not work in
>> T5.3).
>> >
>>
>> So, could this be addressed by passing the underlying Resource to the
>> ResourceTransformer?  That's a minor change; it might be a breaking
>> one, but that's acceptable in a beta for functionality introduced in
>> the same release.
>
>
> Great idea, it would solve problems with relative resources. What about
> reporting of changes to included resources? I can not find a way to do that
> in Tapestry 5.3 at least using non-internal services.
>
> Best regards,
> Cezary
>



-- 
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

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

Reply via email to