This is an automated email from the ASF dual-hosted git repository. stbischof pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/felix-dev.git
commit 9db6a2288f7c03704529b8272457bfffe840222c Author: Vaclav Haisman <[email protected]> AuthorDate: Wed Dec 11 23:57:29 2024 +0100 felix.log: Use OSGi annotations to produce OSGi MANIFEST.MF entries. --- log/pom.xml | 49 ++++++++++++++++------ .../main/java/org/apache/felix/log/Activator.java | 8 ++++ .../org/apache/felix/log/LogReaderServiceImpl.java | 7 ++++ .../java/org/apache/felix/log/LogServiceImpl.java | 9 ++++ .../java/org/apache/felix/log/LoggerAdminImpl.java | 7 ++++ 5 files changed, 67 insertions(+), 13 deletions(-) diff --git a/log/pom.xml b/log/pom.xml index 70b132a877..9ee6fe0a4c 100644 --- a/log/pom.xml +++ b/log/pom.xml @@ -20,7 +20,7 @@ <parent> <groupId>org.apache.felix</groupId> <artifactId>felix-parent</artifactId> - <version>6</version> + <version>9</version> <relativePath>../pom/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> @@ -49,36 +49,59 @@ <groupId>org.osgi</groupId> <artifactId>osgi.core</artifactId> <version>6.0.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.service.cm</artifactId> + <version>1.6.0</version> + <scope>provided</scope> </dependency> <dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.service.log</artifactId> <version>1.5.0</version> </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.annotation.bundle</artifactId> + <version>1.0.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.annotation.versioning</artifactId> + <version>1.0.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.namespace.service</artifactId> + <version>1.0.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.service.component.annotations</artifactId> + <version>1.5.1</version> + <scope>provided</scope> + </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> - <version>3.5.0</version> + <version>5.1.9</version> <extensions>true</extensions> <configuration> <instructions> <Export-Package>org.osgi.service.log,org.osgi.service.log.admin</Export-Package> - <Private-Package>org.apache.felix.log</Private-Package> - <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> - <Bundle-Activator>${pom.artifactId}.Activator</Bundle-Activator> + <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor> <Include-Resource>META-INF/LICENSE=LICENSE,META-INF/NOTICE=NOTICE,META-INF/DEPENDENCIES=DEPENDENCIES</Include-Resource> - <Require-Capability><![CDATA[ - osgi.service;filter:="(objectClass=org.osgi.service.cm.ConfigurationAdmin)";effective:=active - ]]></Require-Capability> - <Provide-Capability><![CDATA[ - osgi.service;objectClass:List<String>="org.osgi.service.log.LogReaderService";uses:="org.osgi.service.log,org.osgi.service.log.admin", - osgi.service;objectClass:List<String>="org.osgi.service.log.LogService,org.osgi.service.log.LoggerFactory";uses:="org.osgi.service.log,org.osgi.service.log.admin", - osgi.service;objectClass:List<String>="org.osgi.service.log.admin.LoggerAdmin";uses:="org.osgi.service.log,org.osgi.service.log.admin" - ]]></Provide-Capability> + <_reproducible>true</_reproducible> + <niceManifest>true</niceManifest> </instructions> </configuration> </plugin> diff --git a/log/src/main/java/org/apache/felix/log/Activator.java b/log/src/main/java/org/apache/felix/log/Activator.java index b1c0a50033..e88d600f1b 100644 --- a/log/src/main/java/org/apache/felix/log/Activator.java +++ b/log/src/main/java/org/apache/felix/log/Activator.java @@ -21,10 +21,14 @@ package org.apache.felix.log; import java.util.Dictionary; import java.util.Hashtable; +import org.osgi.annotation.bundle.Header; +import org.osgi.annotation.bundle.Requirement; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; import org.osgi.framework.ServiceRegistration; +import org.osgi.namespace.service.ServiceNamespace; +import org.osgi.resource.Namespace; import org.osgi.service.log.LogLevel; import org.osgi.service.log.LogReaderService; import org.osgi.service.log.LogService; @@ -54,6 +58,10 @@ import org.osgi.service.log.admin.LoggerContext; * the historic log information. The default value is false.</dd> * </dl> */ +@Header(name = Constants.BUNDLE_ACTIVATOR, value = "${@class}") +@Requirement(namespace = ServiceNamespace.SERVICE_NAMESPACE, + filter = "(objectClass=org.osgi.service.cm.ConfigurationAdmin)", + effective = Namespace.EFFECTIVE_ACTIVE) public final class Activator implements BundleActivator { /** The name of the property that defines the maximum size of the log. */ diff --git a/log/src/main/java/org/apache/felix/log/LogReaderServiceImpl.java b/log/src/main/java/org/apache/felix/log/LogReaderServiceImpl.java index d5ce5f4823..46547df7a4 100644 --- a/log/src/main/java/org/apache/felix/log/LogReaderServiceImpl.java +++ b/log/src/main/java/org/apache/felix/log/LogReaderServiceImpl.java @@ -23,6 +23,8 @@ import java.util.Iterator; import java.util.List; import java.util.Vector; +import org.osgi.annotation.bundle.Capability; +import org.osgi.namespace.service.ServiceNamespace; import org.osgi.service.log.LogEntry; import org.osgi.service.log.LogListener; import org.osgi.service.log.LogReaderService; @@ -37,6 +39,11 @@ import org.osgi.service.log.LogReaderService; * notifications about {@link org.osgi.service.log.LogEntry} objects when they are created * through the {@link org.osgi.service.log.LogService}. */ +@Capability( + namespace = ServiceNamespace.SERVICE_NAMESPACE, + attribute = { "objectClass:List<String>=\"org.osgi.service.log.LogReaderService\"" }, + uses = { LogReaderServiceImpl.class, LogReaderService.class } +) final class LogReaderServiceImpl implements LogReaderService { /** The log implementation. */ diff --git a/log/src/main/java/org/apache/felix/log/LogServiceImpl.java b/log/src/main/java/org/apache/felix/log/LogServiceImpl.java index 7a9acf3282..3a838806e7 100644 --- a/log/src/main/java/org/apache/felix/log/LogServiceImpl.java +++ b/log/src/main/java/org/apache/felix/log/LogServiceImpl.java @@ -18,14 +18,23 @@ */ package org.apache.felix.log; +import org.osgi.annotation.bundle.Capability; import org.osgi.framework.Bundle; import org.osgi.framework.ServiceReference; +import org.osgi.namespace.service.ServiceNamespace; import org.osgi.service.log.LogService; import org.osgi.service.log.Logger; +import org.osgi.service.log.LoggerFactory; +import org.osgi.service.log.admin.LoggerAdmin; /** * Implementation of the OSGi {@link LogService}. */ +@Capability( + namespace = ServiceNamespace.SERVICE_NAMESPACE, + attribute = { "objectClass:List<String>=\"org.osgi.service.log.LogService,org.osgi.service.log.LoggerFactory\"" }, + uses = { LogServiceImpl.class, LogService.class, LoggerFactory.class, LoggerAdmin.class } +) final class LogServiceImpl implements LogService { /** The bundle associated with this implementation. */ diff --git a/log/src/main/java/org/apache/felix/log/LoggerAdminImpl.java b/log/src/main/java/org/apache/felix/log/LoggerAdminImpl.java index aa53e37f8d..400e91508c 100644 --- a/log/src/main/java/org/apache/felix/log/LoggerAdminImpl.java +++ b/log/src/main/java/org/apache/felix/log/LoggerAdminImpl.java @@ -24,12 +24,19 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import org.osgi.annotation.bundle.Capability; import org.osgi.framework.Bundle; +import org.osgi.namespace.service.ServiceNamespace; import org.osgi.service.log.FormatterLogger; import org.osgi.service.log.Logger; import org.osgi.service.log.admin.LoggerAdmin; import org.osgi.service.log.admin.LoggerContext; +@Capability( + namespace = ServiceNamespace.SERVICE_NAMESPACE, + attribute = { "objectClass:List<String>=\"org.osgi.service.log.admin.LoggerAdmin\"" }, + uses = { LoggerAdminImpl.class, LoggerAdmin.class } +) public class LoggerAdminImpl implements LoggerAdmin { private final Log m_log;
