It makes me wonder if since this is still in RC if the @OSGiServiceProvider
and @OSGiService shouldn't just be removed.  Or, at the very least, market
as deprecated.

On Tue, Sep 6, 2016 at 10:53 AM, Brad Johnson <brad.john...@mediadriver.com>
wrote:

> A very cool.  Thank you.  I'll give that a shot.  And I agree with 100%
> that having to specify a start order is a recipe for spaghetti and circular
> dependencies that could make you pull your hair out.
>
> On Mon, Sep 5, 2016 at 2:47 PM, Guillaume Nodet <gno...@gmail.com> wrote:
>
>> Yeah, that looks one of the big limitation of pax-cdi 1.0.0.RC1.
>> The problem is that the bean validation will fail if the service is not
>> available in the OSGi registry.
>> This implies that the bundle have to be started in the correct order,
>> which imho is a REALLY bad idea.
>>
>> In order to fix this problem along with some other problems, I've defined
>> a new set of annotations which is available in 1.0.0-SNAPSHOT (not released
>> yet).  Those are modeled closely to the OSGi DS semantics.
>>
>> So try with
>>     @Inject @Service  private DataStore datastore;
>> on on the service implementation:
>>     @Service @Component
>>   public class DevelopmentDataStoreImpl implements DataStore {
>>
>> If you have any problem, let me know and I'll fix it.
>>
>>
>> On Sat, Sep 3, 2016 at 5:50 PM, Brad Johnson <
>> brad.john...@mediadriver.com> wrote:
>>
>>> I've been using the 2.17 update of Camel that more closely integrates
>>> CDI 1.2 and specifically Pax CDI.  I'm quite impressed with and look
>>> forward to using it in the years ahead.  I've used blueprint for quite
>>> awhile and while it works well enough the CDI simply makes development much
>>> easier and testing is a snap.
>>>
>>> One problem I've run into is with the CDI testing framework.  Within
>>> bundle tests or even bundles listed as dependencies work just fine.  But
>>> when I try to use the @OsgiServiceProvider and @OsgiService I run into some
>>> problems.  It may simply be that the regular CDI runner with Weld isn't
>>> appropriate for testing service export and import.
>>>
>>> From what I can tell I'm either missing a library dependency or the CDI
>>> test even within bundle will not respect the pick up or use the annotations.
>>>
>>> The @Inject in this unit test shows a squiggly yellow underline
>>> indicating it can't find anything to inject.
>>>
>>> @RunWith(CamelCdiRunner.class)
>>> public class DevelopmentDataStoreTest {
>>>
>>> @Inject
>>> @OsgiService
>>> private DataStore datastore;
>>>
>>> In the same bundle I have am Impl of the DataStore interface that looks
>>> like this:
>>>
>>> @Singleton
>>> @OsgiServiceProvider
>>> public class DevelopmentDataStoreImpl implements DataStore {
>>>
>>> I've tried a number of different permutations such as adding a
>>> dynamic=true to the OsgiService annotation.
>>>
>>> The stack trace on the test seems to indicate that it understand what it
>>> is I want to do but I don't have something right about it (italics are
>>> mine).
>>>
>>> ELD-001408: Unsatisfied dependencies for type DataStore with qualifiers
>>> @OsgiService
>>>   at injection point [BackedAnnotatedField] @Inject @OsgiService private
>>> org.enjekt.panda.developmentdatstore.DevelopmentDataStoreTest.datastore
>>>   at org.enjekt.panda.developmentdatstore.DevelopmentDataStoreTes
>>> t.datastore(DevelopmentDataStoreTest.java:0)
>>> WELD-001475: *The following beans match by type, but none have matching
>>> qualifiers:*
>>> *  - Managed Bean [class
>>> org.enjekt.panda.developmentdatastore.DevelopmentDataStoreImpl] with
>>> qualifiers [@OsgiServiceProvider @Any]*
>>>
>>> Italics are mine. So something is off about my annotations. Should the
>>> OsgiServiceProvider be scoped differently?  For in bundle testing like this
>>> I could use @Named("dataStore") and inject it that way.
>>>
>>>
>>> My imports look like the following:
>>> <dependency>
>>> <groupId>javax.enterprise</groupId>
>>> <artifactId>cdi-api</artifactId>
>>> <version>${cdi.version}</version>
>>> </dependency>
>>> <dependency>
>>> <groupId>org.ops4j.pax.cdi</groupId>
>>> <artifactId>pax-cdi-api</artifactId>
>>> <version>1.0.0.RC1</version>
>>> </dependency>
>>> <dependency>
>>> <groupId>org.apache.camel</groupId>
>>> <artifactId>camel-cdi</artifactId>
>>> <version>${camel.version}</version>
>>> 2.17.3
>>> </dependency>
>>>
>>> <!-- testing -->
>>> <dependency>
>>> <groupId>org.apache.camel</groupId>
>>> <artifactId>camel-test-cdi</artifactId>
>>> <version>${camel.version}</version>
>>> <scope>test</scope>
>>> </dependency>
>>>
>>> Any help is appreciated.
>>>
>>> --
>>> --
>>> ------------------
>>> OPS4J - http://www.ops4j.org - ops4j@googlegroups.com
>>>
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "OPS4J" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to ops4j+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
>> --
>> ------------------
>> OPS4J - http://www.ops4j.org - ops4j@googlegroups.com
>>
>> ---
>> You received this message because you are subscribed to a topic in the
>> Google Groups "OPS4J" group.
>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>> pic/ops4j/YB43ObFXnPo/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> ops4j+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
-- 
------------------
OPS4J - http://www.ops4j.org - ops4j@googlegroups.com

--- 
You received this message because you are subscribed to the Google Groups 
"OPS4J" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ops4j+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to