Thanks Clement,

Guess I should be upgrading to 1.6.0 then.

/Bengt

2010/10/6 Clement Escoffier <[email protected]>

> Hi,
>
> On 06.10.2010, at 09:31, Bengt Rodehav wrote:
>
> > Clement,
> >
> > Have you had a chance to look at this? I'm thinking about upgrading to
> iPOJO
> > 1.6.0 but I need to know whether this type of behavior is supported by
> iPOJO
> > or if it just happens to work. If it's not supported I would strongly
> wish
> > that it will be in the next iPOJO version (is that 1.8.0?).
>
> My first impression is, it's supported (I've found one modification fixing
> the issue between 1.4.0 and 1.6.0). However, I still didn't write a test
> case to avoid future regressions. In case of a bug it would 1.6.6 not 1.8.0
> (minor bug fixes).
>
> Clement
>
> >
> > /Bengt
> >
> > 2010/10/4 Bengt Rodehav <[email protected]>
> >
> >> JIRA created:
> >>
> >> https://issues.apache.org/jira/browse/FELIX-2636
> >>
> >> <https://issues.apache.org/jira/browse/FELIX-2636>/Bengt
> >>
> >> 2010/10/4 Clement Escoffier <[email protected]>
> >>
> >>>
> >>> On 04.10.2010, at 21:04, Bengt Rodehav wrote:
> >>>
> >>>> Clement,
> >>>>
> >>>> I added:
> >>>>
> >>>> @Updated
> >>>>>
> >>>>> public void updated(Dictionary theDict) {
> >>>>>
> >>>>>   System.out.println("updated: " + theDict);
> >>>>>
> >>>>>   mValid = true;
> >>>>>
> >>>>> }
> >>>>>
> >>>>>
> >>>> I do get the output to System.out but the instance is still invalid.
> >>>>
> >>>>
> >>>> updated: {include=(?i).*(?<!\.TMP), redelivery.maxAttempts=10,
> >>>>> delimiter=<DELIM>
> >>>>
> >>>> , connect.enabled=false, deleteProcessedFiles=false,
> >>> skipEmptyFiles=false,
> >>>>> servi
> >>>>
> >>>> ce.factoryPid=connect.skandia.filetransfer, delay=60000,
> >>>>> fromUri=file:data/conne
> >>>>
> >>>> ct/test/sample/file2file, connect.name=Sample file transfer from file
> >>> to
> >>>>> file, f
> >>>>
> >>>>
> >>>
> elix.fileinstall.filename=connect.skandia.filetransfer-sample-file2file.cfg,
> >>>>> alw
> >>>>
> >>>> aysDisconnect=true,
> >>>>> service.pid=connect.skandia.filetransfer.694a9c3c-9319-46b0-
> >>>>
> >>>> 997f-70af37f40da2,
> >>>>> redelivery.delaypattern=0:2000;5:10000;10:60000;20:600000;25:
> >>>>
> >>>> 1800000, temporaryFileName=${file:name.noext}.tmp,
> >>>>> toUris=file:data/connect/test
> >>>>
> >>>> /sample/file2file/test-out}
> >>>>
> >>>>
> >>>> I don't seem to get the same problem with iPOJO 1.6.0. Maybe the
> problem
> >>> has
> >>>> been "fixed". Nevertheless, it's important for me to know that I don't
> >>>> speculate in a particular implementation detail but that I take
> >>> advantage of
> >>>> supported behaviour (preferably supported by some junit test case in
> >>> iPOJO).
> >>>>
> >>>> Should I still create a JIRA ticket?
> >>>
> >>> Yes please. Because I didn't fix anything in this area. I need to look
> >>> into this and create a test case (to avoid regressions).
> >>>
> >>> Regards,
> >>>
> >>> Clement
> >>>
> >>>
> >>>>
> >>>> /Bengt
> >>>>
> >>>> 2010/10/4 Clement Escoffier <[email protected]>
> >>>>
> >>>>> Hi,
> >>>>>
> >>>>> On 04.10.2010, at 18:00, Bengt Rodehav wrote:
> >>>>>
> >>>>>> Clement,
> >>>>>>
> >>>>>> Like I wrote before, I did manage to get iPOJO 1.6.0 to work for me.
> >>>>>> However, once I got it to work I realised that the
> @ServiceController
> >>> is
> >>>>> not
> >>>>>> really what I need. It's the @Controller. I haven't quite filled you
> >>> in
> >>>>> with
> >>>>>> all the details. This is what I do:
> >>>>>>
> >>>>>> I use OSGi service factories to instantiate "integration services"
> in
> >>> my
> >>>>>> Karaf/Camel based integration platform. Most of the integration
> >>> services
> >>>>> are
> >>>>>> implemented as Camel routes (but not all of them).
> >>>>>>
> >>>>>> When an instance becomes valid I start the camel route and when the
> >>>>> instance
> >>>>>> becomes invalid I stop it:
> >>>>>>
> >>>>>> @Validate
> >>>>>>
> >>>>>> public void start() {
> >>>>>>
> >>>>>>  startContext();
> >>>>>>
> >>>>>> }
> >>>>>>
> >>>>>>
> >>>>>>> @Invalidate
> >>>>>>
> >>>>>> public void stop() {
> >>>>>>
> >>>>>>  stopContext();
> >>>>>>
> >>>>>> }
> >>>>>>
> >>>>>>
> >>>>>> I use a configuration property (the connect.enabled) to control
> >>> whether a
> >>>>>> particular integration service should be up-and-running or not,
> using
> >>> the
> >>>>>> following code:
> >>>>>>
> >>>>>> @Controller
> >>>>>>
> >>>>>> @Property(name = "connect.enabled", mandatory = true)
> >>>>>>
> >>>>>> private boolean mValid = false;
> >>>>>>
> >>>>>>
> >>>>>> Note that the way I do it above makes sure that a disabled service
> >>> cannot
> >>>>>> start (this was my original problem). However, now I get problems on
> >>>>> startup
> >>>>>> (Karaf startup). Although the property "connect.enabled" is true,
> the
> >>>>>> instance is still invalid. Looking under the iPOJO tab in the
> >>> Webconsole
> >>>>> I
> >>>>>> can see that iPOJO regards this property as false and thus regards
> the
> >>>>> iPOJO
> >>>>>> instance as invalid. Looking under the Configuration tab I can see
> >>> that
> >>>>>> Configuration Manager regards it as true.
> >>>>>>
> >>>>>> There must be some kind of timing problem here. iPOJO regards the
> >>>>> instance
> >>>>>> as invalid (connect.enabled=false the way I initialise it) and then
> >>>>> doesn't
> >>>>>> pick up the change from configuration manager. My original problem
> was
> >>>>> the
> >>>>>> opposite since I initialised it to true instead. Then iPOJO regarded
> >>> the
> >>>>>> instance as valid and failed to pick up information from
> configuration
> >>>>>> manager that said it was disabled.
> >>>>>>
> >>>>>> How can I get this to work? (Note that I now use iPOJO 1.4.0 but I
> can
> >>>>>> upgrade if that would help)
> >>>>>>
> >>>>>> What I want to achieve is, I believe, rather trivial and it's hard
> to
> >>>>>> believe that no one else has thought of this use case:
> >>>>>>
> >>>>>> "Control the validity of an iPOJO instance using a configuration
> >>>>> property".
> >>>>>
> >>>>> There is two points here:
> >>>>> - I think there is a bug. In fact the @Controller and @Property are
> >>>>> completely disconnected (handler are complete separated). But, both
> >>> should
> >>>>> check the current value of the field during initialization, listen
> >>> onSet on
> >>>>> the field and call onSet when they receive a new value. It sounds
> like
> >>> one
> >>>>> of those handlers does not respect these instructions. I bet on the
> >>>>> Controller :-)
> >>>>> - could you try to add a @Updated method or use a setter for the
> >>> property.
> >>>>> In these method really assign the controller field to the desired
> value
> >>>>> (false|true) like m_controller = true|false. If it's works, it's
> >>> definitely
> >>>>> a bug, so please fill a bug.
> >>>>>
> >>>>>
> >>>>> Regards,
> >>>>>
> >>>>> Clement
> >>>>>
> >>>>>
> >>>>>>
> >>>>>> Any clues?
> >>>>>>
> >>>>>> BTW I also publish a service to enable my GUI to show me, and
> interact
> >>>>> with,
> >>>>>> all running "integration services". It makes it easy to find all of
> >>> "my
> >>>>>> services".
> >>>>>>
> >>>>>> /Bengt
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> 2010/10/4 Clement Escoffier <[email protected]>
> >>>>>>
> >>>>>>> Hi,
> >>>>>>>
> >>>>>>> On 03.10.2010, at 21:08, Bengt Rodehav wrote:
> >>>>>>>
> >>>>>>>> Clement,
> >>>>>>>>
> >>>>>>>> Now that used your tip (from the FAQ), it works fine with
> >>>>>>> maven-ipojo-plugin
> >>>>>>>> version 1.6.0. The real error was of course that I used the wrong
> >>>>> version
> >>>>>>> of
> >>>>>>>> the manipulator. I dont't know why the latest version from trunk
> >>>>>>>> (1.7.0-SNAPSHOT) seemed the hide that error but it's gone now that
> I
> >>>>> use
> >>>>>>> the
> >>>>>>>> correct manipulator version.
> >>>>>>>
> >>>>>>> I've to check that... I will look into that.
> >>>>>>>
> >>>>>>> Regards,
> >>>>>>>
> >>>>>>> Clement
> >>>>>>>
> >>>>>>>>
> >>>>>>>> /Bengt
> >>>>>>>>
> >>>>>>>> 2010/10/3 Bengt Rodehav <[email protected]>
> >>>>>>>>
> >>>>>>>>> Thanks Clement - that worked perfectly!
> >>>>>>>>>
> >>>>>>>>> I don't know how I've missed that FAQ but now I learned something
> >>> new.
> >>>>>>>>>
> >>>>>>>>> Yes, I used the latest maven-ipojo-plugin from trunk.
> >>>>>>>>>
> >>>>>>>>> /Bengt
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> 2010/10/3 clement escoffier <[email protected]>
> >>>>>>>>>
> >>>>>>>>> Hi,
> >>>>>>>>>>
> >>>>>>>>>> 2010/10/3 Bengt Rodehav <[email protected]>
> >>>>>>>>>>
> >>>>>>>>>>> Clement,
> >>>>>>>>>>>
> >>>>>>>>>>> I've upgrade to iPOJO 1.6.0 but I still have problems exposing
> >>>>>>> services
> >>>>>>>>>>> using the @ServiceController.
> >>>>>>>>>>>
> >>>>>>>>>>> I get:
> >>>>>>>>>>>
> >>>>>>>>>>> factory name="connect.skandia.filetransfer" state="invalid"
> >>>>>>> bundle="86"
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> implementation-class="se.digia.connect.services.skandia.filetransfer.FileTransferService"
> >>>>>>>>>>> missinghandlers
> >>>>>>>>>>> list="[org.apache.felix.ipojo.annotations:servicecontroller]"
> >>>>>>>>>>> requiredhandlers list="[org.apache.felix.ipojo:requires,
> >>>>>>>>>>> org.apache.felix.ipojo:properties,
> >>> org.apache.felix.ipojo:callback,
> >>>>>>>>>>> org.apache.felix.ipojo:provides,
> >>>>>>>>>>> org.apache.felix.ipojo.annotations:servicecontroller,
> >>>>>>>>>>> org.apache.felix.ipojo:architecture]"
> >>>>>>>>>>>
> >>>>>>>>>>> in the Webconsole under iPOJO/factories. It seems iPOJO cannot
> >>> find
> >>>>> a
> >>>>>>>>>>> handler for
> >>>>>>>>>>>
> >>>>>>>>>>> org.apache.felix.ipojo.annotations:servicecontroller
> >>>>>>>>>>>
> >>>>>>>>>>> What bundle am I missing?
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> No, but you must use the manipulator 1.6.4 as explained in:
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> http://felix.apache.org/site/ipojo-faq.html#iPOJOFAQ-Usingadifferentversionofthemanipulatorduringthemanipulation
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> BTW I also move away from using the ipojo url handler (online
> >>>>>>>>>> manipulator)
> >>>>>>>>>>> and started using the maven-ipojo-plugin instead. It turns out
> I
> >>>>>>> cannot
> >>>>>>>>>> use
> >>>>>>>>>>> the latest released version of the plugin (1.6.0) but I have to
> >>> use
> >>>>>>>>>>> 1.7.0-SNAPSHOT.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> Here is the configuration you should use.
> >>>>>>>>>>
> >>>>>>>>>> <plugin>
> >>>>>>>>>>    <groupId>org.apache.felix</groupId>
> >>>>>>>>>>    <artifactId>maven-ipojo-plugin</artifactId>
> >>>>>>>>>>    <executions>
> >>>>>>>>>>      <execution>
> >>>>>>>>>>        <goals>
> >>>>>>>>>>          <goal>ipojo-bundle</goal>
> >>>>>>>>>>        </goals>
> >>>>>>>>>>      </execution>
> >>>>>>>>>>    </executions>
> >>>>>>>>>>    <dependencies>
> >>>>>>>>>>            <dependency>
> >>>>>>>>>>                    <groupId>org.apache.felix</groupId>
> >>>>>>>>>>
> >>>>>>>>>> <artifactId>org.apache.felix.ipojo.manipulator</artifactId>
> >>>>>>>>>>                    <version>1.6.4</version>
> >>>>>>>>>>            </dependency>
> >>>>>>>>>>    </dependencies>
> >>>>>>>>>>  </plugin>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> Otherwise I get the following exception:
> >>>>>>>>>>>
> >>>>>>>>>>> java.lang.NullPointerException
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> I will look into that. Did you use the latest from trunk ?
> >>>>>>>>>>
> >>>>>>>>>> Regards,
> >>>>>>>>>>
> >>>>>>>>>> Clement
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.felix.ipojo.manipulation.annotations.MetadataCollector.visitEnd(MetadataCollector.java:215)
> >>>>>>>>>>>
> >>>>>>>>>>>    at org.objectweb.asm.ClassReader.accept(Unknown Source)
> >>>>>>>>>>>
> >>>>>>>>>>>    at org.objectweb.asm.ClassReader.accept(Unknown Source)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.felix.ipojo.manipulator.Pojoization.computeAnnotations(Pojoization.java:294)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.felix.ipojo.manipulator.Pojoization.manipulateComponents(Pojoization.java:484)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.felix.ipojo.manipulator.Pojoization.manipulateJarFile(Pojoization.java:335)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.felix.ipojo.manipulator.Pojoization.pojoization(Pojoization.java:194)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.felix.ipojo.plugin.ManipulatorMojo.execute(ManipulatorMojo.java:199)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>> org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>> org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
> >>>>>>>>>>>
> >>>>>>>>>>>    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>>>>>>>
> >>>>>
> org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
> >>>>>>>>>>>
> >>>>>>>>>>>    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.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>> org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
> >>>>>>>>>>>
> >>>>>>>>>>>    at
> >>>>>>>>>>>>
> >>>>> org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
> >>>>>>>>>>>
> >>>>>>>>>>>    at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> /Bengt
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> /Bengt
> >>>>>>>>>>>
> >>>>>>>>>>> 2010/10/1 Clement Escoffier <[email protected]>
> >>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> On 01.10.2010, at 18:30, Bengt Rodehav wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Clement,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Just a clarification:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> When you restart your instance, be sure that the filed is
> >>> really
> >>>>>>>>>>>> re-assigned
> >>>>>>>>>>>>>> to false. To be sure, make your instance immediate and set
> the
> >>>>>>>>>> field
> >>>>>>>>>>> in
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>> constructor.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I suspect you misspelled "filed". I'm not sure what you mean
> >>> here.
> >>>>>>>>>> My
> >>>>>>>>>>>>> "mValid" field will be set from a configuration that file
> >>> install
> >>>>>>>>>> picks
> >>>>>>>>>>>> up.
> >>>>>>>>>>>>> If the configuration value "connect.enabled" is set to true
> >>> (which
> >>>>>>>>>> is
> >>>>>>>>>>> the
> >>>>>>>>>>>>> normal case) then I want the service to be started. If it is
> >>> set
> >>>>> to
> >>>>>>>>>>>> false,
> >>>>>>>>>>>>> then I do not want to start nor publish a service yet.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I want to make sure that I never have a mismatch, that is if
> >>>>>>>>>>>>> the "connect.enabled" property is false, then the service can
> >>>>> never
> >>>>>>>>>> be
> >>>>>>>>>>>>> started and vice versa. It is important that services that I
> >>> have
> >>>>>>>>>>>> "disabled"
> >>>>>>>>>>>>> this way is never started (which has unfortunately
> >>> happened...).
> >>>>>>>>>>>>
> >>>>>>>>>>>> I never tested having the @ServiceController on the same field
> >>> as a
> >>>>>>>>>>>> @Property. This may have some side effects, like not-yet
> >>> injected
> >>>>>>>>>> values.
> >>>>>>>>>>>> Try to set your component as immediate. This will force the
> >>>>>>> injection.
> >>>>>>>>>> In
> >>>>>>>>>>>> fact, if the property has the value false, but there is no
> >>> object
> >>>>>>>>>>> created,
> >>>>>>>>>>>> the
> >>>>>>>>>>>> @ServiceController has no way to know the current value. If
> the
> >>>>>>>>>> instance
> >>>>>>>>>>> is
> >>>>>>>>>>>> immediate, an object is created and the field is assigned to
> the
> >>>>>>>>>> property
> >>>>>>>>>>>> value.
> >>>>>>>>>>>> This will allow the service controller to get the value.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Clement
> >>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> /Bengt
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> 2010/10/1 Clement Escoffier <[email protected]>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> On 01.10.2010, at 17:03, Bengt Rodehav wrote:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> OK - obviously @ServiceController is what I need...
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> As said by Richard, The @ServiceController impacts the
> service
> >>>>>>>>>>> lifecycle
> >>>>>>>>>>>>>> The @Controller impacts the instance lifecycle. The
> >>> @Controller
> >>>>> is
> >>>>>>>>>>>> generally
> >>>>>>>>>>>>>> used to detect wrong configuration or really bad state where
> >>> the
> >>>>>>>>>>>> instance
> >>>>>>>>>>>>>> decide to become invalid.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> The @ServiceController is not tied to the instance
> lifecycle,
> >>>>> which
> >>>>>>>>>>>> means
> >>>>>>>>>>>>>> that despite the instance is valid, the service can be
> >>>>> unpublished
> >>>>>>>>>>> using
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>> @ServiceController.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> When you restart your instance, be sure that the filed is
> >>> really
> >>>>>>>>>>>>>> re-assigned to false. To be sure, make your instance
> immediate
> >>>>> and
> >>>>>>>>>> set
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>> field in the constructor.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Regards,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Clement
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> /Bengt
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 2010/10/1 Richard S. Hall <[email protected]>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> On 10/1/10 10:41, Bengt Rodehav wrote:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> OK - thanks,
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> BTW, what then is @Controller used for?
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> It is for disabling the component itself and is generally
> >>> more
> >>>>> to
> >>>>>>>>>>>> signal
> >>>>>>>>>>>>>>>> error conditions from which the component cannot recover,
> >>> such
> >>>>> as
> >>>>>>>>>>>> faulty
> >>>>>>>>>>>>>> or
> >>>>>>>>>>>>>>>> missing configuration. On the other hand,
> @ServiceController
> >>>>>>>>>> allows
> >>>>>>>>>>>> you
> >>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>> control when your services are provided.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> -> richard
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> /Bengt
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> 2010/10/1 Karl Pauls<[email protected]>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> iirc, you want the @ServiceController and not the
> >>> @Controller
> >>>>>>>>>> and
> >>>>>>>>>>>>>>>>>> again iirc, you need to update to ipojo 1.6.x for that
> >>> one.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> regards,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Karl
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> On Fri, Oct 1, 2010 at 4:06 PM, Bengt Rodehav<
> >>>>>>>>>> [email protected]>
> >>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> I'm using iPOJO 1.4.0. My installed iPOJO related
> >>> artifacts
> >>>>>>>>>> (in
> >>>>>>>>>>>> Karaf
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> 1.6.0)
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> are:
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> org.apache.felix.ipojo-1.4.0.jar
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> org.apache.felix.ipojo.handler.extender-1.4.0.jar
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> org.apache.felix.ipojo.online.manipulator-1.4.2.jar
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> org.apache.felix.ipojo.webconsole-1.4.0.jar
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> I also use
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> org.apache.felix.fileinstall-3.0.2.jar
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> ... and a whole lot of other bundles.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> I publish services using factories. An example of a
> >>>>>>>>>> configuration
> >>>>>>>>>>>>>> file
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> for
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> my factories is:
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> connect.enabled=true
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> connect.name=Sample file transfer from file to file
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> The "connect.enabled" property is bound to the field in
> >>> my
> >>>>>>>>>>> service
> >>>>>>>>>>>>>> class
> >>>>>>>>>>>>>>>>>>> that is a "controller":
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> @Controller
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> @Property(name = "connect.enabled", mandatory = false,
> >>> value
> >>>>> =
> >>>>>>>>>>>>>> "true")
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> private boolean mValid;
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> The intention is that I can then disable my service by
> >>>>> setting
> >>>>>>>>>>> this
> >>>>>>>>>>>>>>>>>>> configuration property to false. However, I've
> encounted
> >>> a
> >>>>>>>>>>> problem
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> regarding
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> this. While the service is active, I set
> >>> "connect.enabled"
> >>>>> to
> >>>>>>>>>>>> false.
> >>>>>>>>>>>>>>>>>>> File
> >>>>>>>>>>>>>>>>>>> install picks up the changes and the service is
> >>>>> de-registered
> >>>>>>>>>> -
> >>>>>>>>>>>> works
> >>>>>>>>>>>>>>>>>>> perfectly. But if I now shutdown Karaf and restart it
> >>> again,
> >>>>>>>>>> the
> >>>>>>>>>>>>>> service
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> started (registered) despite the fact that
> >>>>> "connect.disabled"
> >>>>>>>>>> is
> >>>>>>>>>>>>>> still
> >>>>>>>>>>>>>>>>>>> false. Is this a bug in iPOJO or have I misunderstood
> >>>>>>>>>> something?
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> When googling about this problem I noticed that there
> is
> >>>>> also
> >>>>>>>>>> an
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> annotation
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> called @ServiceController. What is the difference
> between
> >>>>>>>>>>>> @Controller
> >>>>>>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>>> @ServiceController?
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> I tried to switch to @ServiceController instead but get
> >>> the
> >>>>>>>>>>>> following
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> error:
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> 2010-10-01 15:48:03,341 | ERROR | guration Updater |
> >>>>>>>>>> configadmin
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>    | ?                                   ? |
> >>>>>>>>>>>>>>>>>>>> [org.apache.felix.ipojo.Factory,
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> org.osgi.service.cm.ManagedServiceFactory,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> id=174, bundle=84]: Updating configuration property
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> {service.pid=connect.skandia.filetransfer.269d25ad-c4d6-4277-9d78-6d4b15acb795,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> fromuri=file:data/connect/test/sample/file2file,
> >>>>>>>>>>>>>>>>>>>>
> touris=file:data/connect/test/sample/file2file/test-out,
> >>>>>>>>>>>>>>>>>>>> service.factorypid=connect.skandia.filetransfer,
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> felix.fileinstall.filename=connect.skandia.filetransfer-sample-file2file.cfg,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> connect.enabled=true, instance.name
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>
> >>> =connect.skandia.filetransfer.269d25ad-c4d6-4277-9d78-6d4b15acb795,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> connect.name=Sample file transfer from file to file}
> >>> caused
> >>>>> a
> >>>>>>>>>>>>>> problem:
> >>>>>>>>>>>>>>>>>>>> Missing handlers :
> >>>>>>>>>>>>>> org.apache.felix.ipojo.annotations:servicecontroller
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> org.osgi.service.cm.ConfigurationException:
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> {service.pid=connect.skandia.filetransfer.269d25ad-c4d6-4277-9d78-6d4b15acb795,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> fromuri=file:data/connect/test/sample/file2file,
> >>>>>>>>>>>>>>>>>>>>
> touris=file:data/connect/test/sample/file2file/test-out,
> >>>>>>>>>>>>>>>>>>>> service.factorypid=connect.skandia.filetransfer,
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> felix.fileinstall.filename=connect.skandia.filetransfer-sample-file2file.cfg,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> connect.enabled=true, instance.name
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>
> >>> =connect.skandia.filetransfer.269d25ad-c4d6-4277-9d78-6d4b15acb795,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> connect.name=Sample file transfer from file to file} :
> >>>>>>>>>> Missing
> >>>>>>>>>>>>>> handlers
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> :
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> org.apache.felix.ipojo.annotations:servicecontroller
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> at
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.felix.ipojo.IPojoFactory.updated(IPojoFactory.java:609)[38:org.apache.felix.ipojo:1.4.0]
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> at
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceFactoryUpdate.run(ConfigurationManager.java:1279)[6:org.apache.felix.configadmin:1.2.4]
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> at
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>
> org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:88)[6:org.apache.felix.configadmin:1.2.4]
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> I'm not sure in which jar the
> >>>>>>>>>>>>>>>>>>> " org.apache.felix.ipojo.annotations:servicecontroller"
> >>>>>>>>>> resides.
> >>>>>>>>>>> I
> >>>>>>>>>>>>>> tried
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> deploy
> >>> "org.apache.felix.ipojo.handler.whiteboard-1.4.0.jar"
> >>>>>>>>>> but
> >>>>>>>>>>> it
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> didn't
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> seem to help.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Can anyone help me sort this out?
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> /Bengt
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>>>>> Karl Pauls
> >>>>>>>>>>>>>>>>>> [email protected]
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>>>>>>>>>>>>>>> To unsubscribe, e-mail:
> >>> [email protected]
> >>>>>>>>>>>>>>>>>> For additional commands, e-mail:
> >>> [email protected]
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>>>>>>>>>>>>> To unsubscribe, e-mail:
> [email protected]
> >>>>>>>>>>>>>>>> For additional commands, e-mail:
> >>> [email protected]
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>
> >>> ---------------------------------------------------------------------
> >>>>>>>>>>>>>> To unsubscribe, e-mail: [email protected]
> >>>>>>>>>>>>>> For additional commands, e-mail:
> [email protected]
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>>>>>>>>> To unsubscribe, e-mail: [email protected]
> >>>>>>>>>>>> For additional commands, e-mail: [email protected]
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> ---------------------------------------------------------------------
> >>>>>>> To unsubscribe, e-mail: [email protected]
> >>>>>>> For additional commands, e-mail: [email protected]
> >>>>>>>
> >>>>>>>
> >>>>>
> >>>>>
> >>>>> ---------------------------------------------------------------------
> >>>>> To unsubscribe, e-mail: [email protected]
> >>>>> For additional commands, e-mail: [email protected]
> >>>>>
> >>>>>
> >>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: [email protected]
> >>> For additional commands, e-mail: [email protected]
> >>>
> >>>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to