JB,
I was expecting this.

The use of an Activator in bundle that uses karaf-services-maven-plugin is not 
discussed in the documenting or JavaDoc.  I recommend adding a warning along 
the lines of "The use of an Activator is not recommend when 
karaf-services-maven-plugin is used." where ever karaf-services-maven-plugin, 
org.apache.karaf.shell.api.action.Action, or the BaseActivator is documented.

Paul Spencer


> On Jul 13, 2020, at 12:27 PM, Jean-Baptiste Onofre <[email protected]> wrote:
> 
> I understand now, you are mixing BaseActivator and 
> karaf-services-maven-plugin.
> 
> If you use Karaf-services-maven-plugin, you should not use the Activator for 
> command (only for services, tracker, etc).
> 
> Regards
> JB
> 
>> Le 13 juil. 2020 à 14:56, Paul Spencer <[email protected]> a écrit :
>> 
>> JB,
>> 
>> 
>>> On Jul 13, 2020, at 12:40 AM, Jean-Baptiste Onofre <[email protected]> 
>>> wrote:
>>> 
>>> Hi Paul,
>>> 
>>> Not sure I fully understand what you mean, but ignoring Activator from a 
>>> command perspective is by design.
>> 
>> You say Activators are ignored by design, so why are services treated 
>> differently?
>> 
>>> 
>>> The plugin scans for any packages part of the bundle (export or private, 
>>> but not import). In your case, if foo is imported, it’s not scanned as it 
>>> will register its own commands by its own (it’s to avoid to have some 
>>> commands register by several bundles).
>> 
>> How do I mark foo as imported?
>> 
>>> If foo is private to "bar", then, commands will be scanned and added.
>>> 
>>> Regards
>>> JB
>>> 
>> 
>> Paul Spencer
>> 
>>>> Le 13 juil. 2020 à 00:42, Paul Spencer <[email protected]> a 
>>>> écrit :
>>>> 
>>>> Karaf 4.2.9
>>>> 
>>>> I have a bundle "bar" with commands declared with @Service.  The bundle 
>>>> has dependency on "foo" which also containing commands declared using 
>>>> @Service. Commands from "bar" and "foo" are included in the 
>>>> "Karaf-Commands" of MANIFEST.MF
>>>> 
>>>> Looking at the karaf-services-maven-plugin, specifically 
>>>> GenerateServieMetaData.java, I see where Activators not in the output 
>>>> class path are ignored.  There is not such check for services.
>>>> 
>>>> Identification of Bundle Activators defined in dependency are ignored, but 
>>>> Services are not.  Is this a bug in the karaf-services-maven-plugin?
>>>> 
>>>> ***
>>>> * MANIFEST.MF
>>>> ***
>>>> From Karaf-Commands = com.foo.internal,com.bar.internal.commands
>>>> 
>>>> ***
>>>> * From the Maven Build
>>>> ***
>>>> [INFO] --- karaf-services-maven-plugin:4.2.9:service-metadata-generate 
>>>> (service-metadata-generate) @ ewm-tpm-server ---
>>>> [INFO] Ignoring 
>>>> jar:file:/Users/paul/.m2/repository/com/foo/2.0.0-SNAPSHOT/foo-2.0.0-SNAPSHOT.jar!/com/foo/internal/Activator.class
>>>> [INFO] Service com.foo.internal.JobsListCommand
>>>> [INFO] Service com.foo.internal.JobResumeCommand
>>>> [INFO] Service com.foo.internal.JobPauseCommand
>>>> [INFO] Service com.bar.internal.commands.AddCommand
>>>> [INFO] Service com.bar.internal.commands.StatusCommand
>>>> [INFO] Service com.bar.internal.commands.UpdateCommand
>>>> [INFO] Service com.bar.internal.commands.ListCommand
>>>> 
>>>> 
>>>> ***
>>>> * org.apache.karaf.tooling.tracker.GenerateServieMetaData
>>>> *  
>>>> https://github.com/apache/karaf/blob/master/tooling/karaf-services-maven-plugin/src/main/java/org/apache/karaf/tooling/tracker/GenerateServiceMetadata.java
>>>> ***
>>>>             URL classUrl = 
>>>> clazz.getClassLoader().getResource(clazz.getName().replace('.', '/') + 
>>>> ".class");
>>>>             URL outputDirectoryUrl = new 
>>>> File(project.getBuild().getOutputDirectory()).toURI().toURL();
>>>>             if (classUrl == null || 
>>>> !classUrl.getPath().startsWith(outputDirectoryUrl.getPath())) {
>>>>                 getLog().info("Ignoring " + classUrl);
>>>>                 continue;
>>>>             }
>>>> ...
>>>> 
>>>>         for (Class<?> clazz : services) {
>>>>             getLog().info("Service " + clazz.getCanonicalName());
>>>>             packages.add(clazz.getPackage().getName());
>>>>         }
>>>> 
>>>> 
>>>> Paul Spencer
>>>> 
>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to