Hi Olaf I appreciate the feedback. You're correct that this is a desire to modularize on the component level, as I stated in my email, when I'm dealing with people ramping up on the framework this question of co-location is the most common I get.
I had half expected that someone had implemented something where the default java ScriptEngine was removed and an Event based compiler added to handle java files. Not that I'm bothered too much, I'm doing more due diligence then anything else. I will check out slice and neba. -Jason ________________________________________ From: Olaf Otto <[email protected]> Sent: Thursday, July 17, 2014 6:06 PM To: [email protected] Subject: RE: adding java classes into the jcr Hi Jason I take it the idea is to strictly modularize on a CQ component level? While there is some support for placing java files in the JCR and use them as servlets for specific resources, this approach is somewhat exotic and you're better of providing application code - such as models - in OSGi bundles. This is much better in terms of separation of layers and concerns, and allows you to use all the OSGi goodness Felix provides, such as SCR (http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-pl ugin/scr-annotations.html) as well as any of the following solutions: 1.) The #1 way to provide specific models for resource in Sling is to use an AdapterFactory so you can .adaptTo(SpecificModel.class) from a resource, e.g. in a view, taglib, servlet and the like. (http://sling.apache.org/documentation/the-sling-engine/adapters.html) 2.) Nowadays, you can do so declaratively using Sling Models (http://sling.apache.org/documentation/bundles/models.html). This also gives you Resource - to - model mapping, i.e. mapping properties and resources onto a POJO java model. 3.) If you'd like to leverage google guice, you can use Slice from cognifide (http://www.cognifide.com/blogs/cq/make-your-cq-life-easier-with-slice/). This will also support .adaptTo and provides resource to model mapping. 4.) Finally, there is NEBA (http://neba.io), which gives you .adaptTo + resource to model mapping and Spring MVC plus some more features. I'm a bit biased towards that one - since I am NEBA's lead developer ;-) Kind regards, Olaf -----Original Message----- From: Jason Bailey [mailto:[email protected]] Sent: Mittwoch, 16. Juli 2014 21:07 To: [email protected] Subject: adding java classes into the jcr We're using CQ5 pretty extensively for our external web presence and I'm in the process of evaluating Sling for a wider range of use cases internally. One of the questions that comes up on a regular basis is whether we are able to define a java object alongside the JSP when we are creating a widget. So that we can potentially implement a very specific business logic and have it co-located with the presentation logic. There seems to be support in Sling for compiling java classes located in the JCR, but there's a lack of clarity on when/how that occurs. Any information would be appreciated. -Jason
