FWIW, I was not able to reproduce this using either Velocity or JSP. I would suggest either moving this to the CQ forum or DayCare.
Justin On Mon, Nov 29, 2010 at 5:16 PM, Levine, David <[email protected]> wrote: > Hah. Actually, it seems like any possible value is protected in CQ. I tried > updating my BindingsValuesProvider quickly before leaving for the day with a > new key: > > "org.apache.sling.api.scripting.ScriptEvaluationException: > java.lang.IllegalArgumentException: Key testCUData is protected." > > --David > > > -----Original Message----- > From: Levine, David [mailto:[email protected]] > Sent: Monday, November 29, 2010 5:13 PM > To: [email protected] > Subject: RE: BindingValuesProvider > > I think this is what I was looking for. Perfect! I updated CQ using the > Felix console (I had 2.0.9 for scripting.core), but got some odd > NoSuchMethodErrors when evaluating scripts until I actually restarted CQ. I > was under the impression that OSGi was supposed to prevent this kind of > thing, but at least it worked once I restarted. > > Oddly, instead I now get an IllegalArgumentException "Key testData is > protected", which comes from > org.apache.sling.scripting.core.impl.helper.ProtectedBindings (the > put(key,value) method). > > Does this mean that "testData" is reserved key in CQ, but not in a standalone > Jackrabbit/Sling install? I'm not sure where the Set of protectedKeys is > specified in CQ. Anyway, if this is the case then it is simply my bad luck > to choose that key during testing, and I'll try again in the morning with an > updated key. > > Thanks again! > --David > > > -----Original Message----- > From: Justin Edelson [mailto:[email protected]] > Sent: Monday, November 29, 2010 3:56 PM > To: [email protected] > Subject: Re: BindingValuesProvider > > Check the versions of the scripting.api and scripting.core bundles. You > need versions 2.1.0 and 2.0.14, respectively. > > Justin > > On 11/29/10 3:42 PM, Levine, David wrote: >> I've been doing initial development on Day CQ. In order to provide a test >> project for the mailing list, I decided to implement this just using >> Jackrabbit and Sling alone. When I did that, it worked with no problem >> (testing using both Velocity and ESP scripting, although I didn't check >> JSPs)! So my assumption is that this is something I will need to talk with >> Day/Adobe about... there may be a CQ-specific problem or simply something I >> need to do differently. >> >> When using CQ, I had developed my OSGi bundle with the >> BindingsValuesProvider service within CRXDE. For the "standalone" test I >> just created it using Maven with the SCR and bundle plugins. As one last >> test I decided to install the JAR bundle which worked within Jackrabbit into >> CQ. It appears to have installed correctly, but I'm still not getting >> access to the newly bound "testData" object. I'll talk to Day. >> >> Thanks for the offer of help, though! >> >> --David >> >> >> >> -----Original Message----- >> From: Justin Edelson [mailto:[email protected]] >> Sent: Monday, November 29, 2010 2:15 PM >> To: [email protected] >> Subject: Re: BindingValuesProvider >> >> Hi, >> >> Can you package up a test project demonstrating this? >> >> Justin >> >> On 11/29/10 1:53 PM, Levine, David wrote: >>> Thanks, Bertrand. >>> >>> It is odd: my BindingsValuesProvider implementing class is in a separate >>> OSGi bundle from the Velocity bundle, and it is defined as a service. I >>> can see it in the Felix console - it has a Service ID assigned to it and a >>> Component ID. So I would think this is a good thing. But I'm not seeing >>> the binding in the scripts. >>> >>> My class is fairly simple: >>> >>> /* >>> * @scr.component immediate="true" metatype="no" >>> * @scr.service >>> * >>> * @scr.property name="service.description" value="Test Bindings" >>> * @scr.property name="service.vendor" value="CU" >>> * >>> * @scr.property name="javax.script.name" value="any" >>> */ >>> public class CUBindingsValuesProvider implements BindingsValuesProvider { >>> public void addBindings(Bindings bindings) { >>> bindings.put("testData","Hello world"); >>> } >>> } >>> >>> In my Velocity template I attempt to access it via ${testData} and in JSP I >>> attempt to access it via <c:out value="${bindings.testData}"/> but nothing >>> shows up in either case. >>> >>> I have the "javax.script.name" property set to "any", similar to the >>> CurrentNodeBindingsValuesProvider example on the wiki. I tried removing >>> the property entirely (in case "any" is the incorrect way of specifying >>> this... although this is what is done on the wiki page) but it did not help. >>> >>> --David >>> >>> >>> -----Original Message----- >>> From: Bertrand Delacretaz [mailto:[email protected]] >>> Sent: Monday, November 29, 2010 1:02 PM >>> To: [email protected] >>> Subject: Re: BindingValuesProvider >>> >>> Hi David, >>> >>> On Mon, Nov 29, 2010 at 6:28 PM, Levine, David <[email protected]> wrote: >>>> ...I'd like to now take this a step further and add a few additional >>>> scripting variables >>>> as discussed here: >>>> https://cwiki.apache.org/SLING/adding-new-scripting-variables.html >>>> >>>> So I want to create a class which implements the BindingsValuesProvider >>>> interface. OK... >>>> but what do I do with it once I create it?... >>> >>> There are a few examples in [1] that are used in integration tests [2]. >>> >>> No configuration is needed - all active OSGi services which implement >>> BindingsValuesProvider are used by script engines, and the >>> javax.script.name service property can be used to restrict them to a >>> specific script engine. I guess the value of that would be "velocity" >>> in your case, haven't checked. >>> >>> -Bertrand >>> >>> [1] >>> http://svn.apache.org/repos/asf/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/scripting >>> >>> [2] >>> http://svn.apache.org/repos/asf/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/ScriptBindingsValuesProviderTest.java >>> >>> *** >>> Scanned >>> >>> ** >>> This e-mail message is intended only for the designated recipient(s) named >>> above. The information contained in this e-mail and any attachments may be >>> confidential or legally privileged. If you are not the intended recipient, >>> you may not review, retain, copy, redistribute or use this e-mail or any >>> attachment for any purpose, or disclose all or any part of its contents. >>> If you have received this e-mail in error, please immediately notify the >>> sender by reply e-mail and permanently delete this e-mail and any >>> attachments from your computer system. >> >> >> *** >> Scanned >> >> ** >> This e-mail message is intended only for the designated recipient(s) named >> above. The information contained in this e-mail and any attachments may be >> confidential or legally privileged. If you are not the intended recipient, >> you may not review, retain, copy, redistribute or use this e-mail or any >> attachment for any purpose, or disclose all or any part of its contents. If >> you have received this e-mail in error, please immediately notify the sender >> by reply e-mail and permanently delete this e-mail and any attachments from >> your computer system. > > > *** > Scanned > > ** > This e-mail message is intended only for the designated recipient(s) named > above. The information contained in this e-mail and any attachments may be > confidential or legally privileged. If you are not the intended recipient, > you may not review, retain, copy, redistribute or use this e-mail or any > attachment for any purpose, or disclose all or any part of its contents. If > you have received this e-mail in error, please immediately notify the sender > by reply e-mail and permanently delete this e-mail and any attachments from > your computer system. > > *** > Scanned > > ** > This e-mail message is intended only for the designated recipient(s) named > above. The information contained in this e-mail and any attachments may be > confidential or legally privileged. If you are not the intended recipient, > you may not review, retain, copy, redistribute or use this e-mail or any > attachment for any purpose, or disclose all or any part of its contents. If > you have received this e-mail in error, please immediately notify the sender > by reply e-mail and permanently delete this e-mail and any attachments from > your computer system. >
