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;

Reply via email to