John E. Conlon wrote:
BTW - when will iPOJO show up in the felix svn trunk?

Hopefully, within the next day or so.

-> richard

cheers,
John



On Wed, 2006-06-07 at 11:18 +0200, Clement Escoffier wrote:
Hello,

The problem comes from the fact that iPOJO and your configuration admin does not use the same org.osgi.service.cm.* classes. IPOJO has its own og.osgi.service.cm package (packaged inside the iPOJO bundle) and your config admin has an other package. I solve the problem by adding an import and an export clause on iPOJO on org.osgi.service.cm. The config admin and iPOJO need to use the same classes to work.

I deploy on my maven repository (http://www-adele.imag.fr/~escoffie/repository/) the new version of iPOJO (2.6) solving these problems. Try to use it this new version (install the new iPOJO bundle with the command : install http://www-adele.imag.fr/~escoffie/repository/org/apache/felix/ipojo/org.apache.felix.ipojo/2.6.0/org.apache.felix.ipojo-2.6.0.jar

You can install the arch command too, to check the state of your components : install http://www-adele.imag.fr/~escoffie/repository/org/apache/felix/ipojo/org.apache.felix.arch/2.6.0/org.apache.felix.arch-2.6.0.jar

I hope this new version will solve your problem.

Regards,

Clement



John E. Conlon a écrit :
Interesting to note the headers and the services of my experimental
iPOJO EventHandler bundle. Look at the generated Import-Package it is
missing the org.osgi.service.cm package yet:
 1. services: shows that it offers org.osgi.service.cm.ManagedService
 2. felix does not throw an error about missing a ManagedService
 3. ApacheDS's ConfigurationAdmin implementations underlying
ServiceBinder never sees the iPOJO's ManageService register with the
framework???

-> headers 23

Fiona Experiment (23)
---------------------
Archiver-Version = Plexus Archiver
Build-Jdk = 1.5.0_06
Built-By = jconlon
Bundle-Activator = org.apache.felix.ipojo.Activator
Bundle-Classpath = .,.
Bundle-Description = Experiment to test ipojo and configuration admin.
Bundle-Name = Fiona Experiment
Bundle-Version = 1.0.SNAPSHOT
Created-By = Apache Maven
Extension-Name = ipojo.configuration
Implementation-Title = ipojo.configuration
Implementation-Version = 1.0-SNAPSHOT
Import-Package = org.apache.felix.ipojo, org.osgi.service.event,
org.slf4j
iPOJO-Components = component { $architecture=true
$name=com.verticon.experiment.ipojo.configuration
$classname=com.verticon.experiment.ipojo.configuration.ConfiguribleEventHandler 
provides { $interface=org.osgi.service.event.EventHandler dynamicproperty { 
$name=event.topics $value=com/verticon/rfid/MOVEMENT $field=topics 
}}configurableproperty { $name=event.topics $field=topics }callback { 
$initial=INVALID $final=VALID $method=starting }callback { $initial=VALID 
$final=INVALID $method=stopping }manipulation { interface { 
$name=org.osgi.service.event.EventHandler }field { $name=topics 
$type=java.lang.String }}}
iPOJO-Metadata = metadata.xml
Manifest-Version = 1.0
-> services 23

Fiona Experiment (23) provides:
-------------------------------
Component Implementation Class =
com.verticon.experiment.ipojo.configuration.ConfiguribleEventHandler
objectClass = org.apache.felix.ipojo.architecture.Architecture
service.id = 33
----
event.topics = com/verticon/rfid/MOVEMENT
objectClass = org.osgi.service.event.EventHandler
service.id = 34
----
objectClass = org.osgi.service.cm.ManagedService
service.id = 35
service.pid = com.verticon.experiment.ipojo.configuration





And if I generate the importPackage myself like:
<importPackage>org.osgi.framework,org.apache.felix.ipojo,org.osgi.service.event,org.slf4j,org.osgi.service.cm</importPackage>
in the configuraiton of the org.apache.felix.ipojo.plugin. I then get
the following exception thrown by the ConfigurationAdmin's
ServiceBinder:

### DependencyManager : exception while invoking
setManagedService :java.lang.IllegalArgumentException: argument type
mismatch
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.servicebinder.InstanceManager
$DependencyManager.callBindMethod(InstanceManager.java:1116)
        at org.apache.felix.servicebinder.InstanceManager
$DependencyManager.serviceChanged(InstanceManager.java:980)
        at
org.apache.felix.framework.util.ServiceListenerWrapper.serviceChanged
(ServiceListenerWrapper.java:108)
        at org.apache.felix.framework.Felix$8.dispatch(Felix.java:3326)
        at org.apache.felix.framework.util.FelixDispatchQueue.dispatch
(FelixDispatchQueue.java:76)
        at org.apache.felix.framework.Felix.fireServiceEvent
(Felix.java:3338)
        at org.apache.felix.framework.Felix.access$100(Felix.java:33)
        at org.apache.felix.framework.Felix$1.serviceChanged
(Felix.java:240)
        at org.apache.felix.framework.ServiceRegistry.fireServiceChanged
(ServiceRegistry.java:408)
        at org.apache.felix.framework.ServiceRegistry.registerService
(ServiceRegistry.java:69)
        at org.apache.felix.framework.Felix.registerService
(Felix.java:2241)
        at org.apache.felix.framework.BundleContextImpl.registerService
(BundleContextImpl.java:173)
        at org.apache.felix.framework.BundleContextImpl.registerService
(BundleContextImpl.java:165)
        at
org.apache.felix.ipojo.handlers.configuration.ConfigurationHandler.start
(ConfigurationHandler.java:187)
        at org.apache.felix.ipojo.ComponentManager.start
(ComponentManager.java:180)
        at org.apache.felix.ipojo.ComponentManagerFactory.start
(ComponentManagerFactory.java:111)
        at org.apache.felix.ipojo.Activator.start(Activator.java:241)
        at org.apache.felix.ipojo.Activator.start(Activator.java:187)
        at org.apache.felix.framework.Felix._startBundle
(Felix.java:1362)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1296)
        at org.apache.felix.framework.Felix.setFrameworkStartLevel
(Felix.java:737)
        at org.apache.felix.framework.StartLevelImpl.run
(StartLevelImpl.java:179)
        at java.lang.Thread.run(Thread.java:595)
DEBUG [FelixStartLevel]
com.verticon.experiment.ipojo.configuration.ConfiguribleEventHandler.<init>(ConfiguribleEventHandler.java:17)
 - Constructed
DEBUG [FelixStartLevel]
com.verticon.experiment.ipojo.configuration.ConfiguribleEventHandler.starting(ConfiguribleEventHandler.java:21)
 - Starting
### DependencyManager : exception while invoking
setManagedService :java.lang.IllegalArgumentException: argument type
mismatch
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.servicebinder.InstanceManager
$DependencyManager.callBindMethod(InstanceManager.java:1116)
        at org.apache.felix.servicebinder.InstanceManager
$DependencyManager.serviceChanged(InstanceManager.java:980)
        at
org.apache.felix.framework.util.ServiceListenerWrapper.serviceChanged
(ServiceListenerWrapper.java:108)
        at org.apache.felix.framework.Felix$8.dispatch(Felix.java:3326)
        at org.apache.felix.framework.util.FelixDispatchQueue.dispatch
(FelixDispatchQueue.java:76)
        at org.apache.felix.framework.Felix.fireServiceEvent
(Felix.java:3338)
        at org.apache.felix.framework.Felix.access$100(Felix.java:33)
        at org.apache.felix.framework.Felix$1.serviceChanged
(Felix.java:240)
        at org.apache.felix.framework.ServiceRegistry.fireServiceChanged
(ServiceRegistry.java:408)
        at org.apache.felix.framework.ServiceRegistry.registerService
(ServiceRegistry.java:69)
        at org.apache.felix.framework.Felix.registerService
(Felix.java:2241)
        at org.apache.felix.framework.BundleContextImpl.registerService
(BundleContextImpl.java:173)
        at org.apache.felix.framework.BundleContextImpl.registerService
(BundleContextImpl.java:165)
        at
org.apache.felix.ipojo.handlers.configuration.ConfigurationHandler.start
(ConfigurationHandler.java:187)
        at
org.apache.felix.ipojo.handlers.configuration.ConfigurationHandler.stateChanged(ConfigurationHandler.java:221)
        at org.apache.felix.ipojo.ComponentManager.setState
(ComponentManager.java:214)
        at org.apache.felix.ipojo.ComponentManager.check
(ComponentManager.java:439)
        at org.apache.felix.ipojo.ComponentManager.start
(ComponentManager.java:184)
        at org.apache.felix.ipojo.ComponentManagerFactory.start
(ComponentManagerFactory.java:111)
        at org.apache.felix.ipojo.Activator.start(Activator.java:241)
        at org.apache.felix.ipojo.Activator.start(Activator.java:187)
        at org.apache.felix.framework.Felix._startBundle
(Felix.java:1362)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1296)
        at org.apache.felix.framework.Felix.setFrameworkStartLevel
(Felix.java:737)
        at org.apache.felix.framework.StartLevelImpl.run
(StartLevelImpl.java:179)
        at java.lang.Thread.run(Thread.java:595)


Clement or Richard any clues?

John


On Tue, 2006-06-06 at 14:57 -0500, John E. Conlon wrote:
On Tue, 2006-06-06 at 09:03 -0400, Richard S. Hall wrote:
Also, if you are willing to play with more experimental stuff,
iPOJO has some support for Config Admin:

http://www-adele.imag.fr/~escoffie/dev/ipojo/using_iPOJO_component_model.html

Search for "Configuration" and you should find some info under the "Other iPOJO features" section...
Not easy to refuse a chance to experiment with volatile substances, so I
downloaded the iPOJO plugin, bundle and tried building a iPOJO that
implements org.osgi.service.event.EventHandler and where the
event.topics property can be updated Configuration Admin. IPOJO seems like an easy way to do things.
So with high hopes using the apacheDS's configurationAdmin implemenation
I configured the target bundle's event.topics to receive events from
another topic. Probably a set up snafu on my side but I couldnot pass
the new configuration to iPOJO component and get the eventHandler to
listen to a new topic.


Here is my metadata.xml

<iPOJO>   
  <component
className="com.verticon.experiment.ipojo.configuration.ConfiguribleEventHandler"
name="com.verticon.experiment.ipojo.configuration" architecture="true">

     <Provides>
        <DynamicProperty name="event.topics"
                         field="topics"
                         value="com/verticon/rfid/MOVEMENT"/>
     </Provides>

     <ConfigurableProperty field="topics" name="event.topics" />

     <callback final="VALID" initial="INVALID" method="starting"/>
     <callback final="INVALID" initial="VALID" method="stopping"/>
 </component>
</iPOJO>

Am I setting up the metadata correctly?

cheers,
John



Reply via email to