[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