On Sun, Mar 8, 2015 at 11:53 AM, Raymond Auge <raymond.a...@liferay.com>
wrote:

> The issue I see is a bundle interacting indirectly
>

I meant "directly" not "indirectly"


> with parts that were created by an extender on the bundle's behalf. In
> these cases you really don't want to require configuration, you also don't
> know the info ahead of time. AND if at all possible you want to avoid as
> much boiler plate code as possible.
>
> Right now I have to write the exact same code in every bundle that's being
> extended OR I have to write some ugly class to share the logic... which to
> me a far worse coupling.
>
> - Ray
>
> On Sun, Mar 8, 2015 at 11:47 AM, Raymond Auge <raymond.a...@liferay.com>
> wrote:
>
>> Another contrived but legit scenario:
>>
>> I have a WAB and the WAB includes DS components.
>>
>> The WAB spec says to publish a service for the ServletContext.
>>
>> How do I get "my" ServletContext in my DS component?
>>
>> The only way again is to implement a ServiceTracker filtering on things I
>> can't know ahead of time.
>>
>> - Ray
>>
>> On Sun, Mar 8, 2015 at 11:38 AM, Raymond Auge <raymond.a...@liferay.com>
>> wrote:
>>
>>>
>>>
>>> On Sun, Mar 8, 2015 at 11:18 AM, Tim Ward <tim.w...@paremus.com> wrote:
>>>
>>>> Hi Ray,
>>>>
>>>> Using the bundle id feels more like a workaround for a missing feature
>>>> of the extender.
>>>>
>>>> Wouldn't it make more sense for the metadata processed by the extender
>>>> publish a property to filter on, and/or to have the service published by
>>>> the extender respond to config admin in the same way that DS components do?
>>>>
>>>> If, for example, the extendee asked for the property
>>>> "mySuperCoolProperty=awesome" to be applied to the extender registered
>>>> service then that could be used in the filter.
>>>>
>>>
>>> that won't work because neither do you know the value of the property at
>>> build time, nor in this case do you want to change the value during
>>> configuration. I want the thing that was built for me specifically... the
>>> only unique value that I know about is bundleId.
>>>
>>>
>>>> Ideally the target filter would be set using config admin to maximise
>>>> the reusability of the bundle (for example in an environment without the
>>>> extender where another service should be used).
>>>>
>>>
>>> Config admin implies human responsibility and in this case I don't want
>>> humans involved.
>>>
>>> I can create a contrived example of this using current OSGi pieces.
>>>
>>> I have a bundle, it uses both gemini blueprint and DS.
>>>
>>> How can I tell the DS component to get my instance of
>>> org.springframework.context.ConfigurableApplicationContext? I can't without
>>> manually implementing a ServiceTracker because the only bits I can filter
>>> on are things you can't know at XML creation time or that you'd never want
>>> to duplicate from the manifest.
>>>
>>>
>>>
>>>>
>>>> One of the best things about the service registry is decoupling the
>>>> provider from the consumer. I'd try very hard to avoid breaking that.
>>>>
>>>
>>> I never talked about coupling providers to consumers.
>>>
>>>
>>>>
>>>> Regards,
>>>>
>>>> Tim
>>>>
>>>>
>>>>
>>>> Sent from my iPhone
>>>>
>>>> On 8 Mar 2015, at 14:49, Raymond Auge <raymond.a...@liferay.com> wrote:
>>>>
>>>> Hey all,
>>>>
>>>> I have a need for a component to get a service created on behalf of the
>>>> bundle by an extender. There are many such services in the system so what I
>>>> really need is to get a bundle with a filter like so:
>>>>
>>>>         Filter filter = bundleContext.createFilter(
>>>>             "(&(objectClass=" + ExtenderCreatedService.class.getName() +
>>>>                 ")(service.bundleid=" + bundle.getBundleId() + "))");
>>>>
>>>> i.e. get the one created which has my bundleId.
>>>>
>>>> Is there any trick to doing this besides a ServiceTracker which the
>>>> component must manually create and start?
>>>>
>>>> Note the component can't know it's own bundleId at the time of
>>>> generating the XML.
>>>>
>>>> Is there any property parsing happening in the component XML files or
>>>> anything?
>>>>
>>>> --
>>>> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>>>>  (@rotty3000)
>>>> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
>>>>  (@Liferay)
>>>> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
>>>> (@OSGiAlliance)
>>>>
>>>> _______________________________________________
>>>> OSGi Developer Mail List
>>>> osgi-dev@mail.osgi.org
>>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>>>
>>>>
>>>> _______________________________________________
>>>> OSGi Developer Mail List
>>>> osgi-dev@mail.osgi.org
>>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>>>
>>>
>>>
>>>
>>> --
>>> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>>>  (@rotty3000)
>>> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
>>>  (@Liferay)
>>> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
>>> (@OSGiAlliance)
>>>
>>
>>
>>
>> --
>> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>>  (@rotty3000)
>> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
>>  (@Liferay)
>> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
>> (@OSGiAlliance)
>>
>
>
>
> --
> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>  (@rotty3000)
> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
>  (@Liferay)
> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
> (@OSGiAlliance)
>



-- 
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
 (@rotty3000)
Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
 (@Liferay)
Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> (@OSGiAlliance)
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to