On Thu, Feb 24, 2011 at 8:31 PM, Alex Karasulu <[email protected]> wrote:
> On Thu, Feb 24, 2011 at 7:26 PM, Richard S. Hall <[email protected]> wrote:
>>
>>
>> On 2/24/11 10:28, Alex Karasulu wrote:
>>>
>>> Hi Richard,
>>>
>>> On Thu, Feb 24, 2011 at 4:30 PM, Richard S. Hall<[email protected]>
>>>  wrote:
>>>>
>>>> I am not sure how the instance of the framework is being created, but if
>>>> you
>>>> are creating it directly then it won't see configuration properties that
>>>> are
>>>> set as system properties. However, if the launcher is used to start the
>>>> framework, then the launcher automatically copies any configuration
>>>> properties from the system properties.
>>>
>>> I am manually passing in the configuration property for the extra
>>> system packages before initializing Felix. Right now I just statically
>>> pass in the comma delimited set of fixed packages and it works like a
>>> champ.
>>>
>>> The problem is when the host application uses exported interfaces in
>>> the plugin bundles. In dynamic environments where users drop in plugin
>>> bundles that I do not know of in advance I have to dynamically build
>>> the set of system packages.
>>>
>>> I was thinking of this possible solution:
>>>
>>> (1) scan manifests of jars on the classpath
>>> (2) if the jar is a bundle, add that bundle's Import-Package elements
>>> to the system package extras configuration setting value
>
> Yup sorry meant the exported packages here. You understood that below.
>
>>> This works for at initialization time which is sufficient for my
>>> needs. Wondering if there's an easier way to do this without writing
>>> rot code like this.
>>
>> I guess I don't totally understand. For starters, I don't understand how the
>> host application can use exported packages from the plugins, since this
>> isn't something so easy to accomplish. Then I don't really understand how
>> you cannot know which plugins are involved, since this is a testing scenario
>> it sounds.
>
> In the testing scenario we know the plugins used to test. However it
> occurred to me that we might want this in production.
>
>> Perhaps we are using different terminology or I am just not
>> seeing the overall architecture of the situation.
>
> No worries I probably did a terrible job explaining it. OK let me
> quickly explain at a high level.
>
> We're writing an LDAP API over at directory. The LDAP protocol has
> some natural points of extension: Controls and Extended operations. We
> wanted to make these Controls and Extended ops pluggable so Felix came
> to mind.
>
> We embed a Felix instance into (for all practical purposes lets say)
> the API jar to load plugins so the API can handle new Controls and new
> Extended operations. There are two parts to a plugin:
>
>  (1) Exported interfaces and simple POJOs for new Control and
> ExtendedRequest and ExtendedResponses
>  (2) Hidden bundle private codec classes that handle protocol
> encoding and decoding for these types. And these elements snap into
> the CODEC machinery. The bundle activator of the plugin does this.
>
> It is foreseeable that users will drop a new Control extension bundle
> into our plugin directory. Say this new Control is called FooControl.
> The user might want to create a new FooControl object instance with
> the API. The problem is this is causing a CCE because the host loaded
> FooControl class is not the same as the bundle's FooControl. This is
> why I want FooControl's path on the host's system extras packages
> given to Felix.

Doh, sorry FooControl bundle's exported packages on the host's system
extras packages.

> Does that make sense?
>
> Thanks,
> Alex
>
>> Sorry.
>>
>> -> richard
>>
>>> Best,
>>> Alex
>>>
>>>> On 02/24/2011 01:14 AM, Alex Karasulu wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> I have a situation where I would like to set the
>>>>> FelixConstants.FRAMEWORK_SYSTEMPACKAGES_EXTRA property in my pom for
>>>>> use with surefire. I would like to supply all the packages that would
>>>>> be on the Import-Packages attribute if the manifest is generated for
>>>>> everything on the "test" classpath.
>>>>>
>>>>> I have a class that embeds Felix for plugins in one module. Then
>>>>> another integration test module tests that Felix embedding class. The
>>>>> problem is I get CCE exceptions if I access plugin interfaces to test
>>>>> the plugin so I would like to have the build construct the list of
>>>>> extra system packages so I don't have to manually update these values
>>>>> in the code.
>>>>>
>>>>> Is there a hack anyone uses for this?
>>>>>
>>>>> Thanks in advance,
>>>>> Alex
>>
>

Reply via email to