You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@daffodil.apache.org by Martin Lichtin <li...@yahoo.com> on 2022/03/31 05:42:23 UTC

"org.apache.daffodil.api" split package conflict

Hi

Trying to run Daffodil inside Apache Karaf (OSGi container) I noticed 
that the Daffodil JARs are not built as bundles. That's not a problem, 
they can be bundle'ized on the fly.

However, what's an issue is that two JARs contain the same package. Both 
daffodil-runtime1_2.12 and daffodil-lib_2.12 expose 
"org.apache.daffodil.api" and therefore this package is split and causes 
a conflict.

Could perhaps this package moved into an "api" JAR, or one of the two 
JARs renames it such that there's no longer a split-package situation.

- Martin



Re: OGSi was: Re: "org.apache.daffodil.api" split package conflict

Posted by Martin Lichtin <li...@yahoo.com.INVALID>.
Yes such related classes can be split in separate jars (assuming 
base/interface class is not residing in the same package).

On 31/03/2022 20:05, Mike Beckerle wrote:
> A specific question: what about class to base-class relationships? Can 
> a base-class or java interface be in a separate jar/module?
>
> On Thu, Mar 31, 2022 at 12:57 PM Mike Beckerle <mb...@apache.org> 
> wrote:
>
>     Taking this thread over to our dev list.
>
>     Please sanity check this notion on how to readily fix the conflict
>     from packages that are split across jars.
>
>     Consider a module such as daffodil-lib. It contains code in
>     package org.apache.daffodil.api today.
>
>     Some of this code is written by hand, other code is generated by a
>     code generator.
>
>     We simply insert a package in the chain so that all this code is
>     now in package org.apache.daffodil.lib.api
>
>     Other modules similarly grow a module-named package tier. E.g.,
>     daffodil-runtime1 all packages get put under
>     org.apache.daffodil.runtime1.
>
>     Modules would then no longer be sharing packages. All the package
>     nests become 1 step deeper.
>
>     I know this will break quite a few things that are depending on
>     internal APIs right now, but hey, those are depending on internal
>     APIs.
>
>     Is the needed change as simple as this?
>
>
>
>
>
>     On Thu, Mar 31, 2022 at 11:01 AM Martin Lichtin
>     <li...@yahoo.com> wrote:
>
>         Thanks for adding me to the thread.
>
>         Regarding your last comment, let's ignore services, this is a
>         higher-level feature that we do not need to discuss in the
>         context of the Daffodil library. As you say, Daffodil is just
>         a library (a very useful one, btw) and that's ok, no need to
>         change anything in this regard. It's also fine to split the
>         code into several JARs, no problem there.
>
>         The only issue I'm trying to address is the split-package that
>         I'm seeing for package "org.apache.daffodil.api" (and perhaps
>         others as you mention). Classes of this package reside in more
>         than one JAR and that's a problem with regards to modularity
>         (see also Java 9 modules where this is not allowed either, for
>         example
>         https://docs.microsoft.com/en-us/java/openjdk/transition-from-java-8-to-java-11#noclassdeffounderror-caused-by-split-packages).
>
>         Think of a package as being _exported_ by one (and only one)
>         JAR and a class loader can therefore remember this upfront and
>         doesn't need to search the complete class path to find a class
>         at run-time.
>
>         I haven't yet looked at org.apache.daffodil.processors, but if
>         you using sub-packages for each converter, such as
>         org.apache.daffodil.processors.a,
>         org.apache.daffodil.processors.b,
>         org.apache.daffodil.processors.c,
>         org.apache.daffodil.processors.test then "a", "b", "c", "test"
>         can certainly reside in separate JARs, that again is not a
>         problem. It's only a problem if the split is on the same
>         package level, e.g. if class
>         org.apache.daffodil.processors.A.class and
>         org.apache.daffodil.processors.B.class would not be packaged
>         in the same JAR.
>
>         Sorry for the lengthy mail, it all may seem a bit strange, but
>         the concept is around for years and it really helps with
>         modular programming. Just as an exercise, check the
>         MANIFEST.MF of some of your favorite open-source JARs, most in
>         fact are built as bundles, and have Import- and Export-Package
>         declarations to support modular container runtimes.
>
>         - Martin
>
>
>         On 31/03/2022 16:17, Mike Beckerle wrote:
>>         (resend making sure M Lichtin is on this thread)
>>
>>         It seems that an OGSi module is supposed to provide a
>>         "service" which can be activated.
>>
>>         Our daffodil jars are nothing like organized as separate
>>         service providers. They're more ad-hoc libraries of code with
>>         shared concerns.
>>
>>         A sensible "service" from daffodil would involve running code
>>         from several of the jars.
>>
>>         Can you comment on this - when a sensible OGSI service
>>         requires code that is distributed across many jars?
>>
>>
>>             On Thu, Mar 31, 2022 at 10:03 AM Mike Beckerle
>>             <mb...@apache.org> wrote:
>>
>>                 Created
>>                 https://issues.apache.org/jira/browse/DAFFODIL-2683
>>                 to track this issue.
>>
>>
>>
>>                 On Thu, Mar 31, 2022 at 9:55 AM Mike Beckerle
>>                 <mb...@apache.org> wrote:
>>
>>                     So, it seems there is, in general, an assumption
>>                     in OGSi that a package does not get contributions
>>                     from multiple jar files?
>>
>>                     I expect that the org.apache.daffodil.api
>>                     conflict is only the first of many such conflicts
>>                     you would hit. Several of our packages are split
>>                     across the jars. Participation in a package is
>>                     kind of orthogonal to presence in a jar in
>>                     Daffodil right now.
>>
>>                     org.apache.daffodil.processors is split across 5
>>                     modules. 6 if you count the test code.
>>
>>                     This can of course be fixed but this is our first
>>                     experience with this requirement.
>>
>>                     I will create a JIRA ticket for this.
>>
>>                     In the mean time, I'm not sure what to suggest as
>>                     a workaround. Perhaps you have to unjar
>>                     everything, put all the files in a common
>>                     directory tree, and re-jar it all?
>>
>>
>>                     On Thu, Mar 31, 2022 at 1:42 AM Martin Lichtin
>>                     <li...@yahoo.com> wrote:
>>
>>                         Hi
>>
>>                         Trying to run Daffodil inside Apache Karaf
>>                         (OSGi container) I noticed
>>                         that the Daffodil JARs are not built as
>>                         bundles. That's not a problem,
>>                         they can be bundle'ized on the fly.
>>
>>                         However, what's an issue is that two JARs
>>                         contain the same package. Both
>>                         daffodil-runtime1_2.12 and daffodil-lib_2.12
>>                         expose
>>                         "org.apache.daffodil.api" and therefore this
>>                         package is split and causes
>>                         a conflict.
>>
>>                         Could perhaps this package moved into an
>>                         "api" JAR, or one of the two
>>                         JARs renames it such that there's no longer a
>>                         split-package situation.
>>
>>                         - Martin
>>
>>

Re: OGSi was: Re: "org.apache.daffodil.api" split package conflict

Posted by Mike Beckerle <mb...@apache.org>.
A specific question: what about class to base-class relationships? Can a
base-class or java interface be in a separate jar/module?

On Thu, Mar 31, 2022 at 12:57 PM Mike Beckerle <mb...@apache.org> wrote:

> Taking this thread over to our dev list.
>
> Please sanity check this notion on how to readily fix the conflict from
> packages that are split across jars.
>
> Consider a module such as daffodil-lib. It contains code in package
> org.apache.daffodil.api today.
>
> Some of this code is written by hand, other code is generated by a code
> generator.
>
> We simply insert a package in the chain so that all this code is now in
> package org.apache.daffodil.lib.api
>
> Other modules similarly grow a module-named package tier. E.g.,
> daffodil-runtime1 all packages get put under org.apache.daffodil.runtime1.
>
> Modules would then no longer be sharing packages. All the package nests
> become 1 step deeper.
>
> I know this will break quite a few things that are depending on internal
> APIs right now, but hey, those are depending on internal APIs.
>
> Is the needed change as simple as this?
>
>
>
>
>
> On Thu, Mar 31, 2022 at 11:01 AM Martin Lichtin <li...@yahoo.com> wrote:
>
>> Thanks for adding me to the thread.
>>
>> Regarding your last comment, let's ignore services, this is a
>> higher-level feature that we do not need to discuss in the context of the
>> Daffodil library. As you say, Daffodil is just a library (a very useful
>> one, btw) and that's ok, no need to change anything in this regard. It's
>> also fine to split the code into several JARs, no problem there.
>>
>> The only issue I'm trying to address is the split-package that I'm seeing
>> for package "org.apache.daffodil.api" (and perhaps others as you mention).
>> Classes of this package reside in more than one JAR and that's a problem
>> with regards to modularity (see also Java 9 modules where this is not
>> allowed either, for example
>> https://docs.microsoft.com/en-us/java/openjdk/transition-from-java-8-to-java-11#noclassdeffounderror-caused-by-split-packages
>> ).
>>
>> Think of a package as being _exported_ by one (and only one) JAR and a
>> class loader can therefore remember this upfront and doesn't need to search
>> the complete class path to find a class at run-time.
>>
>> I haven't yet looked at org.apache.daffodil.processors, but if you using
>> sub-packages for each converter, such as org.apache.daffodil.processors.a,
>> org.apache.daffodil.processors.b, org.apache.daffodil.processors.c,
>> org.apache.daffodil.processors.test then "a", "b", "c", "test" can
>> certainly reside in separate JARs, that again is not a problem. It's only a
>> problem if the split is on the same package level, e.g. if class
>> org.apache.daffodil.processors.A.class and
>> org.apache.daffodil.processors.B.class would not be packaged in the same
>> JAR.
>>
>> Sorry for the lengthy mail, it all may seem a bit strange, but the
>> concept is around for years and it really helps with modular programming.
>> Just as an exercise, check the MANIFEST.MF of some of your favorite
>> open-source JARs, most in fact are built as bundles, and have Import- and
>> Export-Package declarations to support modular container runtimes.
>>
>> - Martin
>>
>>
>> On 31/03/2022 16:17, Mike Beckerle wrote:
>>
>> (resend making sure M Lichtin is on this thread)
>>
>> It seems that an OGSi module is supposed to provide a "service" which can
>> be activated.
>>
>> Our daffodil jars are nothing like organized as separate service
>> providers. They're more ad-hoc libraries of code with shared concerns.
>>
>> A sensible "service" from daffodil would involve running code from
>> several of the jars.
>>
>> Can you comment on this - when a sensible OGSI service requires code that
>> is distributed across many jars?
>>
>>
>>> On Thu, Mar 31, 2022 at 10:03 AM Mike Beckerle <mb...@apache.org>
>>> wrote:
>>>
>>>> Created https://issues.apache.org/jira/browse/DAFFODIL-2683 to track
>>>> this issue.
>>>>
>>>>
>>>>
>>>> On Thu, Mar 31, 2022 at 9:55 AM Mike Beckerle <mb...@apache.org>
>>>> wrote:
>>>>
>>>>> So, it seems there is, in general, an assumption in OGSi that a
>>>>> package does not get contributions from multiple jar files?
>>>>>
>>>>> I expect that the org.apache.daffodil.api conflict is only the first
>>>>> of many such conflicts you would hit. Several of our packages are split
>>>>> across the jars. Participation in a package is kind of orthogonal to
>>>>> presence in a jar in Daffodil right now.
>>>>>
>>>>> org.apache.daffodil.processors is split across 5 modules. 6 if you
>>>>> count the test code.
>>>>>
>>>>> This can of course be fixed but this is our first experience with this
>>>>> requirement.
>>>>>
>>>>> I will create a JIRA ticket for this.
>>>>>
>>>>> In the mean time, I'm not sure what to suggest as a workaround.
>>>>> Perhaps you have to unjar everything, put all the files in a common
>>>>> directory tree, and re-jar it all?
>>>>>
>>>>>
>>>>> On Thu, Mar 31, 2022 at 1:42 AM Martin Lichtin <li...@yahoo.com>
>>>>> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> Trying to run Daffodil inside Apache Karaf (OSGi container) I noticed
>>>>>> that the Daffodil JARs are not built as bundles. That's not a
>>>>>> problem,
>>>>>> they can be bundle'ized on the fly.
>>>>>>
>>>>>> However, what's an issue is that two JARs contain the same package.
>>>>>> Both
>>>>>> daffodil-runtime1_2.12 and daffodil-lib_2.12 expose
>>>>>> "org.apache.daffodil.api" and therefore this package is split and
>>>>>> causes
>>>>>> a conflict.
>>>>>>
>>>>>> Could perhaps this package moved into an "api" JAR, or one of the two
>>>>>> JARs renames it such that there's no longer a split-package situation.
>>>>>>
>>>>>> - Martin
>>>>>>
>>>>>>
>>>>>>

Re: OGSi was: Re: "org.apache.daffodil.api" split package conflict

Posted by Mike Beckerle <mb...@apache.org>.
Taking this thread over to our dev list.

Please sanity check this notion on how to readily fix the conflict from
packages that are split across jars.

Consider a module such as daffodil-lib. It contains code in package
org.apache.daffodil.api today.

Some of this code is written by hand, other code is generated by a code
generator.

We simply insert a package in the chain so that all this code is now in
package org.apache.daffodil.lib.api

Other modules similarly grow a module-named package tier. E.g.,
daffodil-runtime1 all packages get put under org.apache.daffodil.runtime1.

Modules would then no longer be sharing packages. All the package nests
become 1 step deeper.

I know this will break quite a few things that are depending on internal
APIs right now, but hey, those are depending on internal APIs.

Is the needed change as simple as this?





On Thu, Mar 31, 2022 at 11:01 AM Martin Lichtin <li...@yahoo.com> wrote:

> Thanks for adding me to the thread.
>
> Regarding your last comment, let's ignore services, this is a higher-level
> feature that we do not need to discuss in the context of the Daffodil
> library. As you say, Daffodil is just a library (a very useful one, btw)
> and that's ok, no need to change anything in this regard. It's also fine to
> split the code into several JARs, no problem there.
>
> The only issue I'm trying to address is the split-package that I'm seeing
> for package "org.apache.daffodil.api" (and perhaps others as you mention).
> Classes of this package reside in more than one JAR and that's a problem
> with regards to modularity (see also Java 9 modules where this is not
> allowed either, for example
> https://docs.microsoft.com/en-us/java/openjdk/transition-from-java-8-to-java-11#noclassdeffounderror-caused-by-split-packages
> ).
>
> Think of a package as being _exported_ by one (and only one) JAR and a
> class loader can therefore remember this upfront and doesn't need to search
> the complete class path to find a class at run-time.
>
> I haven't yet looked at org.apache.daffodil.processors, but if you using
> sub-packages for each converter, such as org.apache.daffodil.processors.a,
> org.apache.daffodil.processors.b, org.apache.daffodil.processors.c,
> org.apache.daffodil.processors.test then "a", "b", "c", "test" can
> certainly reside in separate JARs, that again is not a problem. It's only a
> problem if the split is on the same package level, e.g. if class
> org.apache.daffodil.processors.A.class and
> org.apache.daffodil.processors.B.class would not be packaged in the same
> JAR.
>
> Sorry for the lengthy mail, it all may seem a bit strange, but the concept
> is around for years and it really helps with modular programming. Just as
> an exercise, check the MANIFEST.MF of some of your favorite open-source
> JARs, most in fact are built as bundles, and have Import- and
> Export-Package declarations to support modular container runtimes.
>
> - Martin
>
>
> On 31/03/2022 16:17, Mike Beckerle wrote:
>
> (resend making sure M Lichtin is on this thread)
>
> It seems that an OGSi module is supposed to provide a "service" which can
> be activated.
>
> Our daffodil jars are nothing like organized as separate service
> providers. They're more ad-hoc libraries of code with shared concerns.
>
> A sensible "service" from daffodil would involve running code from several
> of the jars.
>
> Can you comment on this - when a sensible OGSI service requires code that
> is distributed across many jars?
>
>
>> On Thu, Mar 31, 2022 at 10:03 AM Mike Beckerle <mb...@apache.org>
>> wrote:
>>
>>> Created https://issues.apache.org/jira/browse/DAFFODIL-2683 to track
>>> this issue.
>>>
>>>
>>>
>>> On Thu, Mar 31, 2022 at 9:55 AM Mike Beckerle <mb...@apache.org>
>>> wrote:
>>>
>>>> So, it seems there is, in general, an assumption in OGSi that a package
>>>> does not get contributions from multiple jar files?
>>>>
>>>> I expect that the org.apache.daffodil.api conflict is only the first of
>>>> many such conflicts you would hit. Several of our packages are split across
>>>> the jars. Participation in a package is kind of orthogonal to presence in a
>>>> jar in Daffodil right now.
>>>>
>>>> org.apache.daffodil.processors is split across 5 modules. 6 if you
>>>> count the test code.
>>>>
>>>> This can of course be fixed but this is our first experience with this
>>>> requirement.
>>>>
>>>> I will create a JIRA ticket for this.
>>>>
>>>> In the mean time, I'm not sure what to suggest as a workaround. Perhaps
>>>> you have to unjar everything, put all the files in a common directory tree,
>>>> and re-jar it all?
>>>>
>>>>
>>>> On Thu, Mar 31, 2022 at 1:42 AM Martin Lichtin <li...@yahoo.com>
>>>> wrote:
>>>>
>>>>> Hi
>>>>>
>>>>> Trying to run Daffodil inside Apache Karaf (OSGi container) I noticed
>>>>> that the Daffodil JARs are not built as bundles. That's not a problem,
>>>>> they can be bundle'ized on the fly.
>>>>>
>>>>> However, what's an issue is that two JARs contain the same package.
>>>>> Both
>>>>> daffodil-runtime1_2.12 and daffodil-lib_2.12 expose
>>>>> "org.apache.daffodil.api" and therefore this package is split and
>>>>> causes
>>>>> a conflict.
>>>>>
>>>>> Could perhaps this package moved into an "api" JAR, or one of the two
>>>>> JARs renames it such that there's no longer a split-package situation.
>>>>>
>>>>> - Martin
>>>>>
>>>>>
>>>>>

Re: OGSi was: Re: "org.apache.daffodil.api" split package conflict

Posted by Martin Lichtin <li...@yahoo.com>.
Thanks for adding me to the thread.

Regarding your last comment, let's ignore services, this is a 
higher-level feature that we do not need to discuss in the context of 
the Daffodil library. As you say, Daffodil is just a library (a very 
useful one, btw) and that's ok, no need to change anything in this 
regard. It's also fine to split the code into several JARs, no problem 
there.

The only issue I'm trying to address is the split-package that I'm 
seeing for package "org.apache.daffodil.api" (and perhaps others as you 
mention). Classes of this package reside in more than one JAR and that's 
a problem with regards to modularity (see also Java 9 modules where this 
is not allowed either, for example 
https://docs.microsoft.com/en-us/java/openjdk/transition-from-java-8-to-java-11#noclassdeffounderror-caused-by-split-packages).

Think of a package as being _exported_ by one (and only one) JAR and a 
class loader can therefore remember this upfront and doesn't need to 
search the complete class path to find a class at run-time.

I haven't yet looked at org.apache.daffodil.processors, but if you using 
sub-packages for each converter, such as 
org.apache.daffodil.processors.a, org.apache.daffodil.processors.b, 
org.apache.daffodil.processors.c, org.apache.daffodil.processors.test 
then "a", "b", "c", "test" can certainly reside in separate JARs, that 
again is not a problem. It's only a problem if the split is on the same 
package level, e.g. if class org.apache.daffodil.processors.A.class and 
org.apache.daffodil.processors.B.class would not be packaged in the same 
JAR.

Sorry for the lengthy mail, it all may seem a bit strange, but the 
concept is around for years and it really helps with modular 
programming. Just as an exercise, check the MANIFEST.MF of some of your 
favorite open-source JARs, most in fact are built as bundles, and have 
Import- and Export-Package declarations to support modular container 
runtimes.

- Martin


On 31/03/2022 16:17, Mike Beckerle wrote:
> (resend making sure M Lichtin is on this thread)
>
> It seems that an OGSi module is supposed to provide a "service" which 
> can be activated.
>
> Our daffodil jars are nothing like organized as separate service 
> providers. They're more ad-hoc libraries of code with shared concerns.
>
> A sensible "service" from daffodil would involve running code from 
> several of the jars.
>
> Can you comment on this - when a sensible OGSI service requires code 
> that is distributed across many jars?
>
>
>     On Thu, Mar 31, 2022 at 10:03 AM Mike Beckerle
>     <mb...@apache.org> wrote:
>
>         Created https://issues.apache.org/jira/browse/DAFFODIL-2683 to
>         track this issue.
>
>
>
>         On Thu, Mar 31, 2022 at 9:55 AM Mike Beckerle
>         <mb...@apache.org> wrote:
>
>             So, it seems there is, in general, an assumption in OGSi
>             that a package does not get contributions from multiple
>             jar files?
>
>             I expect that the org.apache.daffodil.api conflict is only
>             the first of many such conflicts you would hit. Several of
>             our packages are split across the jars. Participation in a
>             package is kind of orthogonal to presence in a jar in
>             Daffodil right now.
>
>             org.apache.daffodil.processors is split across 5 modules.
>             6 if you count the test code.
>
>             This can of course be fixed but this is our first
>             experience with this requirement.
>
>             I will create a JIRA ticket for this.
>
>             In the mean time, I'm not sure what to suggest as a
>             workaround. Perhaps you have to unjar everything, put all
>             the files in a common directory tree, and re-jar it all?
>
>
>             On Thu, Mar 31, 2022 at 1:42 AM Martin Lichtin
>             <li...@yahoo.com> wrote:
>
>                 Hi
>
>                 Trying to run Daffodil inside Apache Karaf (OSGi
>                 container) I noticed
>                 that the Daffodil JARs are not built as bundles.
>                 That's not a problem,
>                 they can be bundle'ized on the fly.
>
>                 However, what's an issue is that two JARs contain the
>                 same package. Both
>                 daffodil-runtime1_2.12 and daffodil-lib_2.12 expose
>                 "org.apache.daffodil.api" and therefore this package
>                 is split and causes
>                 a conflict.
>
>                 Could perhaps this package moved into an "api" JAR, or
>                 one of the two
>                 JARs renames it such that there's no longer a
>                 split-package situation.
>
>                 - Martin
>
>

Re: OGSi was: Re: "org.apache.daffodil.api" split package conflict

Posted by Mike Beckerle <mb...@apache.org>.
(resend making sure M Lichtin is on this thread)

It seems that an OGSi module is supposed to provide a "service" which can
be activated.

Our daffodil jars are nothing like organized as separate service providers.
They're more ad-hoc libraries of code with shared concerns.

A sensible "service" from daffodil would involve running code from several
of the jars.

Can you comment on this - when a sensible OGSI service requires code that
is distributed across many jars?


> On Thu, Mar 31, 2022 at 10:03 AM Mike Beckerle <mb...@apache.org>
> wrote:
>
>> Created https://issues.apache.org/jira/browse/DAFFODIL-2683 to track
>> this issue.
>>
>>
>>
>> On Thu, Mar 31, 2022 at 9:55 AM Mike Beckerle <mb...@apache.org>
>> wrote:
>>
>>> So, it seems there is, in general, an assumption in OGSi that a package
>>> does not get contributions from multiple jar files?
>>>
>>> I expect that the org.apache.daffodil.api conflict is only the first of
>>> many such conflicts you would hit. Several of our packages are split across
>>> the jars. Participation in a package is kind of orthogonal to presence in a
>>> jar in Daffodil right now.
>>>
>>> org.apache.daffodil.processors is split across 5 modules. 6 if you count
>>> the test code.
>>>
>>> This can of course be fixed but this is our first experience with this
>>> requirement.
>>>
>>> I will create a JIRA ticket for this.
>>>
>>> In the mean time, I'm not sure what to suggest as a workaround. Perhaps
>>> you have to unjar everything, put all the files in a common directory tree,
>>> and re-jar it all?
>>>
>>>
>>> On Thu, Mar 31, 2022 at 1:42 AM Martin Lichtin <li...@yahoo.com>
>>> wrote:
>>>
>>>> Hi
>>>>
>>>> Trying to run Daffodil inside Apache Karaf (OSGi container) I noticed
>>>> that the Daffodil JARs are not built as bundles. That's not a problem,
>>>> they can be bundle'ized on the fly.
>>>>
>>>> However, what's an issue is that two JARs contain the same package.
>>>> Both
>>>> daffodil-runtime1_2.12 and daffodil-lib_2.12 expose
>>>> "org.apache.daffodil.api" and therefore this package is split and
>>>> causes
>>>> a conflict.
>>>>
>>>> Could perhaps this package moved into an "api" JAR, or one of the two
>>>> JARs renames it such that there's no longer a split-package situation.
>>>>
>>>> - Martin
>>>>
>>>>
>>>>

OGSi was: Re: "org.apache.daffodil.api" split package conflict

Posted by Mike Beckerle <mb...@apache.org>.
It seems that an OGSi module is supposed to provide a "service" which can
be activated.

Our daffodil jars are nothing like organized as separate service providers.
They're more ad-hoc libraries of code with shared concerns.

A sensible "service" from daffodil would involve running code from several
of the jars.

Can you comment on this - when a sensible OGSI service requires code that
is distributed across many jars?

On Thu, Mar 31, 2022 at 10:03 AM Mike Beckerle <mb...@apache.org> wrote:

> Created https://issues.apache.org/jira/browse/DAFFODIL-2683 to track this
> issue.
>
>
>
> On Thu, Mar 31, 2022 at 9:55 AM Mike Beckerle <mb...@apache.org>
> wrote:
>
>> So, it seems there is, in general, an assumption in OGSi that a package
>> does not get contributions from multiple jar files?
>>
>> I expect that the org.apache.daffodil.api conflict is only the first of
>> many such conflicts you would hit. Several of our packages are split across
>> the jars. Participation in a package is kind of orthogonal to presence in a
>> jar in Daffodil right now.
>>
>> org.apache.daffodil.processors is split across 5 modules. 6 if you count
>> the test code.
>>
>> This can of course be fixed but this is our first experience with this
>> requirement.
>>
>> I will create a JIRA ticket for this.
>>
>> In the mean time, I'm not sure what to suggest as a workaround. Perhaps
>> you have to unjar everything, put all the files in a common directory tree,
>> and re-jar it all?
>>
>>
>> On Thu, Mar 31, 2022 at 1:42 AM Martin Lichtin <li...@yahoo.com> wrote:
>>
>>> Hi
>>>
>>> Trying to run Daffodil inside Apache Karaf (OSGi container) I noticed
>>> that the Daffodil JARs are not built as bundles. That's not a problem,
>>> they can be bundle'ized on the fly.
>>>
>>> However, what's an issue is that two JARs contain the same package. Both
>>> daffodil-runtime1_2.12 and daffodil-lib_2.12 expose
>>> "org.apache.daffodil.api" and therefore this package is split and causes
>>> a conflict.
>>>
>>> Could perhaps this package moved into an "api" JAR, or one of the two
>>> JARs renames it such that there's no longer a split-package situation.
>>>
>>> - Martin
>>>
>>>
>>>

Re: "org.apache.daffodil.api" split package conflict

Posted by Mike Beckerle <mb...@apache.org>.
Created https://issues.apache.org/jira/browse/DAFFODIL-2683 to track this
issue.



On Thu, Mar 31, 2022 at 9:55 AM Mike Beckerle <mb...@apache.org> wrote:

> So, it seems there is, in general, an assumption in OGSi that a package
> does not get contributions from multiple jar files?
>
> I expect that the org.apache.daffodil.api conflict is only the first of
> many such conflicts you would hit. Several of our packages are split across
> the jars. Participation in a package is kind of orthogonal to presence in a
> jar in Daffodil right now.
>
> org.apache.daffodil.processors is split across 5 modules. 6 if you count
> the test code.
>
> This can of course be fixed but this is our first experience with this
> requirement.
>
> I will create a JIRA ticket for this.
>
> In the mean time, I'm not sure what to suggest as a workaround. Perhaps
> you have to unjar everything, put all the files in a common directory tree,
> and re-jar it all?
>
>
> On Thu, Mar 31, 2022 at 1:42 AM Martin Lichtin <li...@yahoo.com> wrote:
>
>> Hi
>>
>> Trying to run Daffodil inside Apache Karaf (OSGi container) I noticed
>> that the Daffodil JARs are not built as bundles. That's not a problem,
>> they can be bundle'ized on the fly.
>>
>> However, what's an issue is that two JARs contain the same package. Both
>> daffodil-runtime1_2.12 and daffodil-lib_2.12 expose
>> "org.apache.daffodil.api" and therefore this package is split and causes
>> a conflict.
>>
>> Could perhaps this package moved into an "api" JAR, or one of the two
>> JARs renames it such that there's no longer a split-package situation.
>>
>> - Martin
>>
>>
>>

Re: "org.apache.daffodil.api" split package conflict

Posted by Mike Beckerle <mb...@apache.org>.
So, it seems there is, in general, an assumption in OGSi that a package
does not get contributions from multiple jar files?

I expect that the org.apache.daffodil.api conflict is only the first of
many such conflicts you would hit. Several of our packages are split across
the jars. Participation in a package is kind of orthogonal to presence in a
jar in Daffodil right now.

org.apache.daffodil.processors is split across 5 modules. 6 if you count
the test code.

This can of course be fixed but this is our first experience with this
requirement.

I will create a JIRA ticket for this.

In the mean time, I'm not sure what to suggest as a workaround. Perhaps you
have to unjar everything, put all the files in a common directory tree, and
re-jar it all?


On Thu, Mar 31, 2022 at 1:42 AM Martin Lichtin <li...@yahoo.com> wrote:

> Hi
>
> Trying to run Daffodil inside Apache Karaf (OSGi container) I noticed
> that the Daffodil JARs are not built as bundles. That's not a problem,
> they can be bundle'ized on the fly.
>
> However, what's an issue is that two JARs contain the same package. Both
> daffodil-runtime1_2.12 and daffodil-lib_2.12 expose
> "org.apache.daffodil.api" and therefore this package is split and causes
> a conflict.
>
> Could perhaps this package moved into an "api" JAR, or one of the two
> JARs renames it such that there's no longer a split-package situation.
>
> - Martin
>
>
>