This is an automated email from the ASF dual-hosted git repository. baedke pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/trunk by this push: new 8ceb87d467 OAK-6762: Convert oak-blob to OSGi R7 annotations (#1413) 8ceb87d467 is described below commit 8ceb87d4670ed94f48f8bfe9f6530b041eb31976 Author: mbaedke <manfred.bae...@gmail.com> AuthorDate: Mon Jul 22 12:53:24 2024 +0200 OAK-6762: Convert oak-blob to OSGi R7 annotations (#1413) done --- oak-blob/pom.xml | 9 +++- .../oak/spi/blob/osgi/FileBlobStoreService.java | 14 +++--- .../oak/spi/blob/osgi/SplitBlobStoreService.java | 56 ++++++++++++---------- 3 files changed, 45 insertions(+), 34 deletions(-) diff --git a/oak-blob/pom.xml b/oak-blob/pom.xml index fdccfc636e..6becc73592 100644 --- a/oak-blob/pom.xml +++ b/oak-blob/pom.xml @@ -66,8 +66,13 @@ <scope>provided</scope> </dependency> <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.scr.annotations</artifactId> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.service.component.annotations</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.service.metatype.annotations</artifactId> <scope>provided</scope> </dependency> diff --git a/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/osgi/FileBlobStoreService.java b/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/osgi/FileBlobStoreService.java index 305c11ff58..b7140c572a 100644 --- a/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/osgi/FileBlobStoreService.java +++ b/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/osgi/FileBlobStoreService.java @@ -25,21 +25,21 @@ import java.util.Dictionary; import java.util.Hashtable; import java.util.Map; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.ConfigurationPolicy; +import org.osgi.service.component.ComponentContext; +import org.osgi.framework.ServiceRegistration; import org.apache.commons.io.FilenameUtils; -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.ConfigurationPolicy; -import org.apache.felix.scr.annotations.Deactivate; import org.apache.jackrabbit.oak.commons.PropertiesUtil; import org.apache.jackrabbit.oak.spi.blob.BlobStore; import org.apache.jackrabbit.oak.spi.blob.FileBlobStore; import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore; -import org.osgi.framework.ServiceRegistration; -import org.osgi.service.component.ComponentContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -@Component(policy = ConfigurationPolicy.REQUIRE, name = FileBlobStoreService.NAME) +@Component(configurationPolicy = ConfigurationPolicy.REQUIRE, name = FileBlobStoreService.NAME) public class FileBlobStoreService { public static final String NAME = "org.apache.jackrabbit.oak.spi.blob.FileBlobStore"; diff --git a/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/osgi/SplitBlobStoreService.java b/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/osgi/SplitBlobStoreService.java index f1f82d09ce..62e5326293 100644 --- a/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/osgi/SplitBlobStoreService.java +++ b/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/osgi/SplitBlobStoreService.java @@ -21,50 +21,56 @@ package org.apache.jackrabbit.oak.spi.blob.osgi; import java.util.Dictionary; import java.util.Hashtable; -import java.util.Map; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.ConfigurationPolicy; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Property; -import org.apache.felix.scr.annotations.PropertyOption; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.apache.felix.scr.annotations.ReferencePolicy; -import org.apache.jackrabbit.oak.spi.blob.BlobStore; -import org.apache.jackrabbit.oak.spi.blob.split.DefaultSplitBlobStore; -import org.apache.jackrabbit.oak.spi.blob.split.WrappingSplitBlobStore; + +import org.osgi.service.component.ComponentContext; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.ComponentPropertyType; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.ConfigurationPolicy; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.component.annotations.ReferenceCardinality; +import org.osgi.service.component.annotations.ReferencePolicy; +import org.osgi.service.metatype.annotations.AttributeDefinition; +import org.osgi.service.metatype.annotations.Option; import org.osgi.framework.BundleContext; import org.osgi.framework.InvalidSyntaxException; import org.osgi.framework.ServiceRegistration; -import org.osgi.service.component.ComponentContext; +import org.apache.jackrabbit.oak.spi.blob.BlobStore; +import org.apache.jackrabbit.oak.spi.blob.split.DefaultSplitBlobStore; +import org.apache.jackrabbit.oak.spi.blob.split.WrappingSplitBlobStore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static org.apache.jackrabbit.oak.spi.blob.osgi.SplitBlobStoreService.BlobStoreType.*; -@Component(policy = ConfigurationPolicy.REQUIRE) +@Component(configurationPolicy = ConfigurationPolicy.REQUIRE) public class SplitBlobStoreService { private static final Logger log = LoggerFactory.getLogger(SplitBlobStoreService.class); - @Property private static final String PROP_HOME = "repository.home"; - @Property(options = { @PropertyOption(name = "External", value = "EXTERNAL"), - @PropertyOption(name = "Internal - Segment", value = "SEGMENT"), - @PropertyOption(name = "Internal - Document", value = "DOCUMENT") }) private static final String PROP_OLD_BLOB_STORE_TYPE = "split.old.blobstore.type"; public static final String PROP_SPLIT_BLOBSTORE = "split.blobstore"; + @ComponentPropertyType + @interface Config { + @AttributeDefinition + String repository_home(); + @AttributeDefinition(options = { @Option(label = "External", value = "EXTERNAL"), + @Option(label = "Internal - Segment", value = "SEGMENT"), + @Option(label = "Internal - Document", value = "DOCUMENT") }) + String split_old_blobstore_type(); + } + public static final String ONLY_STANDALONE_TARGET = "(&(!(split.blobstore=old))(!(split.blobstore=new)))"; - @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY, policy = ReferencePolicy.DYNAMIC, target = "(split.blobstore=old)") - private BlobStore oldBlobStore; + @Reference(cardinality = ReferenceCardinality.OPTIONAL, policy = ReferencePolicy.DYNAMIC, target = "(split.blobstore=old)") + private volatile BlobStore oldBlobStore; - @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY, policy = ReferencePolicy.DYNAMIC, target = "(split.blobstore=new)") - private BlobStore newBlobStore; + @Reference(cardinality = ReferenceCardinality.OPTIONAL, policy = ReferencePolicy.DYNAMIC, target = "(split.blobstore=new)") + private volatile BlobStore newBlobStore; private BundleContext ctx; @@ -75,7 +81,7 @@ public class SplitBlobStoreService { private BlobStoreType oldBlobStoreType; @Activate - protected void activate(ComponentContext context, Map<String, Object> config) throws InvalidSyntaxException { + protected void activate(ComponentContext context, Config config) throws InvalidSyntaxException { String oldTypeName = lookup(context, PROP_OLD_BLOB_STORE_TYPE); if (oldTypeName == null) { oldBlobStoreType = BlobStoreType.EXTERNAL;