OAK-6762: Convert oak-blob to OSGi R7 annotations
done
diff --git a/oak-blob/pom.xml b/oak-blob/pom.xml
index 9932e76..4976226 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 305c11f..b7140c5 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.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 f1f82d0..62e5326 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 @@
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 @@
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;