You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by Alexander Saar <al...@googlemail.com> on 2008/01/17 14:33:05 UTC

Reference to SlingRepository

Hi all,
not sure if this is the right place to ask as this is somehow OSGi 
related, but I'm currently working on a service that integrates via SCR 
and tries which has a reference to the SlingRepository service.

I used the following code:

/**
 * @scr.reference
 */
private SlingRepository repository;

protected void bindRepository(SlingRepository repository) {
    this.repository = repository;
}

Bundling work fine (with SCR plugin) and the SCR config file looks ok to me:

<?xml version="1.0" encoding="UTF-8"?>
<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
<scr:component enabled="true" immediate="true" 
name="com.day.cq.workflow.osgi.WorkflowServiceWrapper">
<scr:implementation 
class="com.day.cq.workflow.osgi.WorkflowServiceWrapper"/>
<scr:service servicefactory="false">
<scr:provide interface="com.day.cq.workflow.WorkflowService"/>
</scr:service>
<scr:property name="cq.workflow.workspace" value="crx.default"/>
<scr:property name="CQWorkflowService.CQ_WORKFLOW_ROOT" 
value="/cq-workflow/content"/>
<scr:property name="service.vendor" value="Day Management AG"/>
<scr:property name="cq.workflow.nodetype.url" 
value="CQ-INF/nodetypes/workflow.cnd"/>
<scr:property name="service.description" value="Communique 5 workflow 
service."/>
<scr:property name="service.pid" 
value="com.day.cq.workflow.osgi.WorkflowServiceWrapper"/>
<scr:reference name="repository" 
interface="org.apache.sling.jcr.api.SlingRepository" cardinality="1..1" 
policy="static" bind="bindRepository" unbind="unbindRepository"/>
</scr:component>
</components>

But when I deploy my service, I get the following exception:

java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at 
org.apache.felix.scr.impl.DependencyManager.invokeBindMethod(DependencyManager.java:886)
    at 
org.apache.felix.scr.impl.DependencyManager.bind(DependencyManager.java:668)
    at 
org.apache.felix.scr.impl.ImmediateComponentManager.createImplementationObject(ImmediateComponentManager.java:204)
    at 
org.apache.felix.scr.impl.ImmediateComponentManager.createComponent(ImmediateComponentManager.java:134)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.activateInternal(AbstractComponentManager.java:412)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.enableInternal(AbstractComponentManager.java:333)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.access$000(AbstractComponentManager.java:45)
    at 
org.apache.felix.scr.impl.AbstractComponentManager$1.run(AbstractComponentManager.java:103)
    at 
org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:85)
17.01.2008 14:21:18 *ERROR* o.a.f.scr: Unexpected problem executing task 
(java.lang.NullPointerException)
java.lang.NullPointerException
    at 
org.apache.felix.scr.impl.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:271)
    at 
org.apache.felix.scr.impl.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:151)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:479)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.disableInternal(AbstractComponentManager.java:496)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.enableInternal(AbstractComponentManager.java:341)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.access$000(AbstractComponentManager.java:45)
    at 
org.apache.felix.scr.impl.AbstractComponentManager$1.run(AbstractComponentManager.java:103)
    at 
org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:85)

Any idea what might be the cause for that problem and how to solve it?

Best regards,
Alex


Re: Reference to SlingRepository

Posted by Alexander Saar <al...@googlemail.com>.
Hi Carsten,
I have installed the newest SCR bundle (Rev 612379). The line numbers 
have changed, but the problem still persists:

java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at 
org.apache.felix.scr.impl.DependencyManager.invokeBindMethod(DependencyManager.java:873)
    at 
org.apache.felix.scr.impl.DependencyManager.bind(DependencyManager.java:655)
    at 
org.apache.felix.scr.impl.ImmediateComponentManager.createImplementationObject(ImmediateComponentManager.java:204)
    at 
org.apache.felix.scr.impl.ImmediateComponentManager.createComponent(ImmediateComponentManager.java:134)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.activateInternal(AbstractComponentManager.java:402)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.enableInternal(AbstractComponentManager.java:323)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.access$000(AbstractComponentManager.java:36)
    at 
org.apache.felix.scr.impl.AbstractComponentManager$1.run(AbstractComponentManager.java:94)
    at 
org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:85)
17.01.2008 16:38:12 *ERROR* o.a.f.scr: Unexpected problem executing task 
(java.lang.NullPointerException)
java.lang.NullPointerException
    at 
org.apache.felix.scr.impl.ImmediateComponentManager.disposeImplementationObject(ImmediateComponentManager.java:271)
    at 
org.apache.felix.scr.impl.ImmediateComponentManager.deleteComponent(ImmediateComponentManager.java:151)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.deactivateInternal(AbstractComponentManager.java:469)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.disableInternal(AbstractComponentManager.java:486)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.enableInternal(AbstractComponentManager.java:331)
    at 
org.apache.felix.scr.impl.AbstractComponentManager.access$000(AbstractComponentManager.java:36)
    at 
org.apache.felix.scr.impl.AbstractComponentManager$1.run(AbstractComponentManager.java:94)
    at 
org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:85)

Do I need to update anything else? Let me add that I'm able to get a 
reference if I use the following:

/**
  * @scr.reference
 */
private Repository repository;

Is it possible that the SLingRepository service is not available and 
that this has lead to the problem? I have checked the components page in 
the Sling console and have a factory for both: javax.jxr.Repository and 
org.apache.sling.jcr.api.SlingRepository

Regards,
Alex



Carsten Ziegeler schrieb:
> Hi,
>
> Alexander Saar wrote:
>> Hi all,
>> not sure if this is the right place to ask as this is somehow OSGi 
>> related, but I'm currently working on a service that integrates via 
>> SCR and tries which has a reference to the SlingRepository service.
>>
>> I used the following code:
>>
>> /**
>> * @scr.reference
>> */
>> private SlingRepository repository;
>>
>> protected void bindRepository(SlingRepository repository) {
>>    this.repository = repository;
>> }
>>
> just as a minor improvement: you don't need to write the bind method,
> the scr plugin will generate it for you (like it generates the unbind 
> method as well).
>
> Apart from that, I think I've seen this problem in an older version of 
> the SCR implementation (not the plugin). The line numbers from your 
> stacktrace do not match latest from Felix svn. So I suggest to check
> latest SCR first.
>
> Carsten


Re: Reference to SlingRepository

Posted by Carsten Ziegeler <cz...@apache.org>.
Hi,

Alexander Saar wrote:
> Hi all,
> not sure if this is the right place to ask as this is somehow OSGi 
> related, but I'm currently working on a service that integrates via SCR 
> and tries which has a reference to the SlingRepository service.
> 
> I used the following code:
> 
> /**
> * @scr.reference
> */
> private SlingRepository repository;
> 
> protected void bindRepository(SlingRepository repository) {
>    this.repository = repository;
> }
> 
just as a minor improvement: you don't need to write the bind method,
the scr plugin will generate it for you (like it generates the unbind 
method as well).

Apart from that, I think I've seen this problem in an older version of 
the SCR implementation (not the plugin). The line numbers from your 
stacktrace do not match latest from Felix svn. So I suggest to check
latest SCR first.

Carsten
-- 
Carsten Ziegeler
cziegeler@apache.org