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