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.

Reply via email to