[opencms-dev] On how to integrate OpenCMS and velocity:
Alexander Kandzior
alex at opencms.com
Tue Apr 2 11:24:52 CEST 2002
Michael,
This gets pointless. Have a look at
http://jakarta.apache.org/velocity/developer-guide.html . There you will
see how Velocity works, and what we need that "Velocity Servlet class"
for in case we build a launcher. And the issue with the ResourceLoader
is all about how to pass the CmsObject to it and how to get rid of the
synchroninzation mechanism in the LC_Velocity_OpenCMS. Where Werner has
already pointed out a promising solution.
Regards,
Alex.
Alexander Kandzior
OpenCms Group
> >> Sure, the ResourceLoader cannot be accessed directly from
> >> outside of Velocity. But you do not need that, and you do not
> >> need to inititalize it form within an OpenCms Launcher since
> >> the ResourceLoader is some kind of driver to access the
> >> normal filesystem or to hook into something else (like
> >> Werners OpenCMSResourceLoader accesses the OpenCms VFS).
> >
> >Sorry, but this is wrong. Currently, you need to pass the
> CmsObject to
> >the resource launcher. Otherwise the ResouceLoader can not
> access the
> >VFS. Again, look at the code.
>
> I have looked at the code - you can be sure about that - and
> the only place where the ResourceLoader is accessed is the
> LC_Velocity_OpenCMS class where you pass the CmsObject to it,
> OpenCMSResourceLoader.setCmsObject(cms). Since I count the
> LC_Velocity_OpenCMS as the mediator between OpenCms and
> Velocity, I said that you do not need to access the
> OpenCMSResourceLoader from the outside.
>
>
> >> 1) Read the requested file header, its a Velocity recource,
> >> so use the Velocity Launcher
> >> 2) Get an instance of the LC_Velocity_OpenCMS class
> >> 3) call the parseTemplate method of the LC_Velocity_OpenCMS
> >> class and forward the requested URI, the current parameters
> >> and the current CmsObject to it (similar to Werners code,
> >> except the template name would be the URI)
> >> 4) the parseTemplate method will update the CmsObject in the
> >> OpenCMSResourceLoader, load the requested template via the
> >> OpenCMSResourceLoader and parse it (see Werners code).
> >> 5) fetch the created output and send it to the response stream.
> >
> >There's something missing here between 2) and 3). If I have the VTL
> >resource and even an instance of the LC_Velocity_OpenCMS, I
> could start
> >a VTL. But what for? Velocity requires a VTL _and_ a class
> belonging to
> >this Template. This is not the LC_Velocity_OpenCMS class, since this
> >just handles the synchronization issue right now. This "Velocity
> >Servlet class" must be initialized and called before 3).
>
> I was a bit wondering about this as well, since you mentioned
> it in your mail from Saturday evening and I did not find the
> connection to the "Velocity Servlet class" in the the code example.
> So please tell me where this tell me if this "Velocity
> Servlet class" is used in the code example. We have four
> elements, the LC_Velocity_OpenCMS class, the
> OpenCMSResourceLoader, the Velocity sample template and the
> Cms Template class. The only component that gets not totaly
> clear by the example is the "Velocity" object in the
> LC_Velocity_OpenCMS class - is this the "Velocity Servlet
> class" to be used?
>
> Bye,
> Michael
>
>
>
More information about the opencms-dev
mailing list