You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by fabiolf <fa...@gmail.com> on 2012/06/15 02:40:16 UTC

Problem when creating a callback bind method for a Architecture[] field injection in iPOJO

Hello all,

I am trying to create a component that tells me when instances became valid.
To do this I have created a component that has a field injection of type
Architecture[] and configured it with the metadata below:

<iPOJO>
       <component classname="org.test.iPOJO.archtest.ArchTestImpl"
immediate="true">
               <Provides />
               <requires field="m_arch" aggregate="true">
		    <callback type="bind" method="bindArch" />
		    <callback type="unbind" method="unbindArch" />
		</requires>
       </component>

       <instance component="org.test.iPOJO.archtest.ArchTestImpl"
name="archtest"/>
</iPOJO>

When I start it bundle I receive the error below:

-> start 12
-> [ERROR]  : The method bindArch in the implementation class
org.test.iPOJO.archtest.ArchTestImpl throws an exception : null
java.lang.NullPointerException
	at org.test.iPOJO.archtest.ArchTestImpl.__bindArch(ArchTestImpl.java:15)
	at org.test.iPOJO.archtest.ArchTestImpl.bindArch(ArchTestImpl.java)
	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:597)
	at org.apache.felix.ipojo.util.Callback.call(Callback.java:260)
	at
org.apache.felix.ipojo.handlers.dependency.DependencyCallback.callOnInstance(DependencyCallback.java:309)
	at
org.apache.felix.ipojo.handlers.dependency.Dependency.invokeCallback(Dependency.java:315)
	at
org.apache.felix.ipojo.handlers.dependency.Dependency.onObjectCreation(Dependency.java:280)
	at
org.apache.felix.ipojo.handlers.dependency.DependencyHandler.__onCreation(DependencyHandler.java:643)
	at
org.apache.felix.ipojo.handlers.dependency.DependencyHandler.onCreation(DependencyHandler.java)
	at
org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:870)
	at
org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__stateChanged(LifecycleCallbackHandler.java:156)
	at
org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java)
	at
org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:472)
	at org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:354)
	at
org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:178)
	at
org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:301)
	at
org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:238)
	at
org.apache.felix.ipojo.InstanceCreator$ManagedInstance.create(InstanceCreator.java:343)
	at
org.apache.felix.ipojo.InstanceCreator.addInstance(InstanceCreator.java:89)
	at org.apache.felix.ipojo.Extender.parse(Extender.java:306)
	at org.apache.felix.ipojo.Extender.startManagementFor(Extender.java:237)
	at org.apache.felix.ipojo.Extender.access$600(Extender.java:52)
	at org.apache.felix.ipojo.Extender$CreatorThread.run(Extender.java:769)
	at java.lang.Thread.run(Thread.java:680)
[ERROR] org.test.iPOJO.archtest.ArchTestImpl : null
java.lang.NullPointerException
	at
org.apache.felix.ipojo.util.DependencyModel.getService(DependencyModel.java:911)
	at
org.apache.felix.ipojo.handlers.dependency.Dependency.invokeCallback(Dependency.java:315)
	at
org.apache.felix.ipojo.handlers.dependency.Dependency.onObjectCreation(Dependency.java:280)
	at
org.apache.felix.ipojo.handlers.dependency.DependencyHandler.__onCreation(DependencyHandler.java:643)
	at
org.apache.felix.ipojo.handlers.dependency.DependencyHandler.onCreation(DependencyHandler.java)
	at
org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:870)
	at
org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__stateChanged(LifecycleCallbackHandler.java:156)
	at
org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java)
	at
org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:472)
	at org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:354)
	at
org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:178)
	at
org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:301)
	at
org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:238)
	at
org.apache.felix.ipojo.InstanceCreator$ManagedInstance.create(InstanceCreator.java:343)
	at
org.apache.felix.ipojo.InstanceCreator.addInstance(InstanceCreator.java:89)
	at org.apache.felix.ipojo.Extender.parse(Extender.java:306)
	at org.apache.felix.ipojo.Extender.startManagementFor(Extender.java:237)
	at org.apache.felix.ipojo.Extender.access$600(Extender.java:52)
	at org.apache.felix.ipojo.Extender$CreatorThread.run(Extender.java:769)
	at java.lang.Thread.run(Thread.java:680)
[ERROR] org.test.iPOJO.archtest.ArchTestImpl : null
[ERROR] iPOJO Instance Creator : A matching factory was found for
{component=org.test.iPOJO.archtest.ArchTestImpl, instance.name=archtest},
but the instantiation failed : The configuration is not correct for the type
org.test.iPOJO.archtest.ArchTestImpl : null

I think iPOJO is trying to add a new Architecture reference to the
Architecture[] and call the bindArch() method of the component at the moment
it is being created. Am I right? Am I doing something wrong here? Is it
possible to do what I am trying to do?

Thanks in advance,
Fabio




--
View this message in context: http://apache-felix.18485.n6.nabble.com/Problem-when-creating-a-callback-bind-method-for-a-Architecture-field-injection-in-iPOJO-tp4998104.html
Sent from the Apache Felix - Users mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Problem when creating a callback bind method for a Architecture[] field injection in iPOJO

Posted by fabiolf <fa...@gmail.com>.
Hi Clement,

You got it! I was forgetting to initialize an ArrayList<String> member! I
fixed it and everything worked!

Thanks a lot!
Fabio

--
View this message in context: http://apache-felix.18485.n6.nabble.com/Problem-when-creating-a-callback-bind-method-for-a-Architecture-field-injection-in-iPOJO-tp4998104p4998112.html
Sent from the Apache Felix - Users mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Problem when creating a callback bind method for a Architecture[] field injection in iPOJO

Posted by Clement Escoffier <cl...@gmail.com>.
Hi,

It's a NPE occurring in your code (line 15). Could you show us your code ?

Regards,

Clement

On 15.06.2012, at 02:40, fabiolf wrote:

> Hello all,
> 
> I am trying to create a component that tells me when instances became valid.
> To do this I have created a component that has a field injection of type
> Architecture[] and configured it with the metadata below:
> 
> <iPOJO>
>       <component classname="org.test.iPOJO.archtest.ArchTestImpl"
> immediate="true">
>               <Provides />
>               <requires field="m_arch" aggregate="true">
> 		    <callback type="bind" method="bindArch" />
> 		    <callback type="unbind" method="unbindArch" />
> 		</requires>
>       </component>
> 
>       <instance component="org.test.iPOJO.archtest.ArchTestImpl"
> name="archtest"/>
> </iPOJO>
> 
> When I start it bundle I receive the error below:
> 
> -> start 12
> -> [ERROR]  : The method bindArch in the implementation class
> org.test.iPOJO.archtest.ArchTestImpl throws an exception : null
> java.lang.NullPointerException
> 	at org.test.iPOJO.archtest.ArchTestImpl.__bindArch(ArchTestImpl.java:15)
> 	at org.test.iPOJO.archtest.ArchTestImpl.bindArch(ArchTestImpl.java)
> 	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:597)
> 	at org.apache.felix.ipojo.util.Callback.call(Callback.java:260)
> 	at
> org.apache.felix.ipojo.handlers.dependency.DependencyCallback.callOnInstance(DependencyCallback.java:309)
> 	at
> org.apache.felix.ipojo.handlers.dependency.Dependency.invokeCallback(Dependency.java:315)
> 	at
> org.apache.felix.ipojo.handlers.dependency.Dependency.onObjectCreation(Dependency.java:280)
> 	at
> org.apache.felix.ipojo.handlers.dependency.DependencyHandler.__onCreation(DependencyHandler.java:643)
> 	at
> org.apache.felix.ipojo.handlers.dependency.DependencyHandler.onCreation(DependencyHandler.java)
> 	at
> org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:870)
> 	at
> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__stateChanged(LifecycleCallbackHandler.java:156)
> 	at
> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java)
> 	at
> org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:472)
> 	at org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:354)
> 	at
> org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:178)
> 	at
> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:301)
> 	at
> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:238)
> 	at
> org.apache.felix.ipojo.InstanceCreator$ManagedInstance.create(InstanceCreator.java:343)
> 	at
> org.apache.felix.ipojo.InstanceCreator.addInstance(InstanceCreator.java:89)
> 	at org.apache.felix.ipojo.Extender.parse(Extender.java:306)
> 	at org.apache.felix.ipojo.Extender.startManagementFor(Extender.java:237)
> 	at org.apache.felix.ipojo.Extender.access$600(Extender.java:52)
> 	at org.apache.felix.ipojo.Extender$CreatorThread.run(Extender.java:769)
> 	at java.lang.Thread.run(Thread.java:680)
> [ERROR] org.test.iPOJO.archtest.ArchTestImpl : null
> java.lang.NullPointerException
> 	at
> org.apache.felix.ipojo.util.DependencyModel.getService(DependencyModel.java:911)
> 	at
> org.apache.felix.ipojo.handlers.dependency.Dependency.invokeCallback(Dependency.java:315)
> 	at
> org.apache.felix.ipojo.handlers.dependency.Dependency.onObjectCreation(Dependency.java:280)
> 	at
> org.apache.felix.ipojo.handlers.dependency.DependencyHandler.__onCreation(DependencyHandler.java:643)
> 	at
> org.apache.felix.ipojo.handlers.dependency.DependencyHandler.onCreation(DependencyHandler.java)
> 	at
> org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:870)
> 	at
> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__stateChanged(LifecycleCallbackHandler.java:156)
> 	at
> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java)
> 	at
> org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:472)
> 	at org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:354)
> 	at
> org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:178)
> 	at
> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:301)
> 	at
> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:238)
> 	at
> org.apache.felix.ipojo.InstanceCreator$ManagedInstance.create(InstanceCreator.java:343)
> 	at
> org.apache.felix.ipojo.InstanceCreator.addInstance(InstanceCreator.java:89)
> 	at org.apache.felix.ipojo.Extender.parse(Extender.java:306)
> 	at org.apache.felix.ipojo.Extender.startManagementFor(Extender.java:237)
> 	at org.apache.felix.ipojo.Extender.access$600(Extender.java:52)
> 	at org.apache.felix.ipojo.Extender$CreatorThread.run(Extender.java:769)
> 	at java.lang.Thread.run(Thread.java:680)
> [ERROR] org.test.iPOJO.archtest.ArchTestImpl : null
> [ERROR] iPOJO Instance Creator : A matching factory was found for
> {component=org.test.iPOJO.archtest.ArchTestImpl, instance.name=archtest},
> but the instantiation failed : The configuration is not correct for the type
> org.test.iPOJO.archtest.ArchTestImpl : null
> 
> I think iPOJO is trying to add a new Architecture reference to the
> Architecture[] and call the bindArch() method of the component at the moment
> it is being created. Am I right? Am I doing something wrong here? Is it
> possible to do what I am trying to do?
> 
> Thanks in advance,
> Fabio
> 
> 
> 
> 
> --
> View this message in context: http://apache-felix.18485.n6.nabble.com/Problem-when-creating-a-callback-bind-method-for-a-Architecture-field-injection-in-iPOJO-tp4998104.html
> Sent from the Apache Felix - Users mailing list archive at Nabble.com.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org