This is an automated email from the ASF dual-hosted git repository.

reschke pushed a commit to branch OAK-10443b
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit fe4922005dccdcb194b63753f66a612570e3c430
Author: Julian Reschke <resc...@apache.org>
AuthorDate: Tue Sep 12 13:57:41 2023 +0100

    OAK-10443: refactor AbstractDataStoreService so that it doesn't need the 
statisticsProvider OSGi reference
---
 .../blobstorage/AbstractAzureDataStoreService.java  | 15 +++++++++++++++
 .../blob/cloud/s3/AbstractS3DataStoreService.java   | 14 ++++++++++++++
 .../blob/datastore/AbstractDataStoreService.java    | 21 +++++++--------------
 .../plugins/blob/datastore/DbDataStoreService.java  | 12 ++++++++++++
 .../blob/datastore/FileDataStoreService.java        | 13 +++++++++++++
 5 files changed, 61 insertions(+), 14 deletions(-)

diff --git 
a/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AbstractAzureDataStoreService.java
 
b/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AbstractAzureDataStoreService.java
index 6e4a325e04..e664cc6487 100644
--- 
a/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AbstractAzureDataStoreService.java
+++ 
b/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AbstractAzureDataStoreService.java
@@ -19,10 +19,13 @@
 
 package org.apache.jackrabbit.oak.blob.cloud.azure.blobstorage;
 
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
 import org.apache.jackrabbit.core.data.DataStore;
 import org.apache.jackrabbit.core.data.DataStoreException;
 import org.apache.jackrabbit.oak.plugins.blob.AbstractSharedCachingDataStore;
 import 
org.apache.jackrabbit.oak.plugins.blob.datastore.AbstractDataStoreService;
+import org.apache.jackrabbit.oak.stats.StatisticsProvider;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.component.ComponentContext;
@@ -32,11 +35,15 @@ import java.util.Hashtable;
 import java.util.Map;
 import java.util.Properties;
 
+@Component(componentAbstract = true)
 public abstract class AbstractAzureDataStoreService extends 
AbstractDataStoreService {
     private static final String DESCRIPTION = "oak.datastore.description";
 
     private ServiceRegistration delegateReg;
 
+    @Reference
+    private StatisticsProvider statisticsProvider;
+
     @Override
     protected DataStore createDataStore(ComponentContext context, Map<String, 
Object> config) {
         Properties properties = new Properties();
@@ -65,6 +72,14 @@ public abstract class AbstractAzureDataStoreService extends 
AbstractDataStoreSer
         super.deactivate();
     }
 
+    protected StatisticsProvider getStatisticsProvider(){
+        return statisticsProvider;
+    }
+
+    protected void setStatisticsProvider(StatisticsProvider 
statisticsProvider) {
+        this.statisticsProvider = statisticsProvider;
+    }
+
     @Override
     protected String[] getDescription() {
         return new String[] {"type=AzureBlob"};
diff --git 
a/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/AbstractS3DataStoreService.java
 
b/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/AbstractS3DataStoreService.java
index 47fa51ddfa..f2c823a436 100644
--- 
a/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/AbstractS3DataStoreService.java
+++ 
b/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/AbstractS3DataStoreService.java
@@ -25,10 +25,12 @@ import java.util.Map;
 import java.util.Properties;
 
 import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
 import org.apache.jackrabbit.core.data.DataStore;
 import org.apache.jackrabbit.core.data.DataStoreException;
 import org.apache.jackrabbit.oak.plugins.blob.AbstractSharedCachingDataStore;
 import 
org.apache.jackrabbit.oak.plugins.blob.datastore.AbstractDataStoreService;
+import org.apache.jackrabbit.oak.stats.StatisticsProvider;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.component.ComponentContext;
@@ -39,6 +41,9 @@ public abstract class AbstractS3DataStoreService extends 
AbstractDataStoreServic
 
     private ServiceRegistration delegateReg;
 
+    @Reference
+    private StatisticsProvider statisticsProvider;
+
     @Override
     protected DataStore createDataStore(ComponentContext context, Map<String, 
Object> config) {
         Properties properties = new Properties();
@@ -67,6 +72,15 @@ public abstract class AbstractS3DataStoreService extends 
AbstractDataStoreServic
         super.deactivate();
     }
 
+    @Override
+    protected StatisticsProvider getStatisticsProvider(){
+        return statisticsProvider;
+    }
+
+    protected void setStatisticsProvider(StatisticsProvider 
statisticsProvider) {
+        this.statisticsProvider = statisticsProvider;
+    }
+
     @Override
     protected String[] getDescription() {
         return new String[] {"type=S3"};
diff --git 
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java
 
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java
index ab9ebc1ad3..fb17e4d023 100644
--- 
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java
+++ 
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java
@@ -25,13 +25,12 @@ import static 
org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.registerM
 import java.util.Dictionary;
 import java.util.Hashtable;
 import java.util.Map;
+import java.util.Objects;
 
 import javax.jcr.RepositoryException;
 
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.collect.Maps;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
 import org.apache.jackrabbit.core.data.DataStore;
 import org.apache.jackrabbit.core.data.DataStoreException;
 import org.apache.jackrabbit.oak.api.blob.BlobAccessProvider;
@@ -46,6 +45,7 @@ import 
org.apache.jackrabbit.oak.spi.whiteboard.CompositeRegistration;
 import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
 import org.apache.jackrabbit.oak.stats.StatisticsProvider;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceRegistration;
@@ -53,7 +53,6 @@ import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Component(componentAbstract = true)
 public abstract class AbstractDataStoreService {
     private static final String PROP_HOME = "repository.home";
     private static final String PATH = "path";
@@ -67,9 +66,6 @@ public abstract class AbstractDataStoreService {
 
     private Logger log = LoggerFactory.getLogger(getClass());
 
-    @Reference
-    private StatisticsProvider statisticsProvider;
-
     private DataStoreBlobStore dataStore;
 
     protected void activate(ComponentContext context, Map<String, Object> 
config) throws RepositoryException {
@@ -89,7 +85,8 @@ public abstract class AbstractDataStoreService {
         PropertiesUtil.populate(ds, config, false);
         ds.init(homeDir);
 
-        BlobStoreStats stats = new BlobStoreStats(getStatisticsProvider());
+        BlobStoreStats stats = new BlobStoreStats(
+                Objects.requireNonNull(getStatisticsProvider(), 
"statisticsProvider must be non-null"));
         this.dataStore = new DataStoreBlobStore(ds, encodeLengthInId, 
cacheSizeInMB);
         this.dataStore.setBlobStatsCollector(stats);
         PropertiesUtil.populate(dataStore, config, false);
@@ -124,18 +121,14 @@ public abstract class AbstractDataStoreService {
 
     protected abstract DataStore createDataStore(ComponentContext context, 
Map<String, Object> config);
 
-    protected StatisticsProvider getStatisticsProvider(){
-        return statisticsProvider;
-    }
+    @NotNull protected abstract StatisticsProvider getStatisticsProvider();
+
+    protected abstract void setStatisticsProvider(StatisticsProvider 
statisticsProvider);
 
     protected String[] getDescription(){
         return new String[] {"type=unknown"};
     }
 
-    void setStatisticsProvider(StatisticsProvider statisticsProvider) {
-        this.statisticsProvider = statisticsProvider;
-    }
-
     protected static String lookup(ComponentContext context, String property) {
         //Prefer property from BundleContext first
         if (context.getBundleContext().getProperty(property) != null) {
diff --git 
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DbDataStoreService.java
 
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DbDataStoreService.java
index 5143ef260c..fc7f69baa4 100644
--- 
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DbDataStoreService.java
+++ 
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DbDataStoreService.java
@@ -27,6 +27,7 @@ import org.apache.felix.scr.annotations.Reference;
 import org.apache.jackrabbit.core.data.DataStore;
 import org.apache.jackrabbit.core.data.db.DbDataStore;
 import org.apache.jackrabbit.core.util.db.ConnectionFactory;
+import org.apache.jackrabbit.oak.stats.StatisticsProvider;
 import org.osgi.service.component.ComponentContext;
 
 @Component(policy = ConfigurationPolicy.REQUIRE, name = 
DbDataStoreService.NAME)
@@ -36,6 +37,17 @@ public class DbDataStoreService extends 
AbstractDataStoreService{
     @Reference
     private ConnectionFactory connectionFactory;
 
+    @Reference
+    private StatisticsProvider statisticsProvider;
+
+    protected StatisticsProvider getStatisticsProvider(){
+        return statisticsProvider;
+    }
+
+    protected void setStatisticsProvider(StatisticsProvider 
statisticsProvider) {
+        this.statisticsProvider = statisticsProvider;
+    }
+
     @Override
     protected DataStore createDataStore(ComponentContext context, Map<String, 
Object> config) {
         DbDataStore dataStore = new DbDataStore();
diff --git 
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FileDataStoreService.java
 
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FileDataStoreService.java
index 97304fc37f..901e9308eb 100644
--- 
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FileDataStoreService.java
+++ 
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FileDataStoreService.java
@@ -22,9 +22,11 @@ package org.apache.jackrabbit.oak.plugins.blob.datastore;
 import org.apache.jackrabbit.guava.common.base.Preconditions;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.ConfigurationPolicy;
+import org.apache.felix.scr.annotations.Reference;
 import org.apache.jackrabbit.core.data.DataStore;
 import org.apache.jackrabbit.oak.commons.PropertiesUtil;
 import org.apache.jackrabbit.oak.plugins.blob.AbstractSharedCachingDataStore;
+import org.apache.jackrabbit.oak.stats.StatisticsProvider;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.component.ComponentContext;
@@ -49,6 +51,9 @@ public class FileDataStoreService extends 
AbstractDataStoreService {
 
     private ServiceRegistration delegateReg;
 
+    @Reference
+    private StatisticsProvider statisticsProvider;
+
     private Logger log = LoggerFactory.getLogger(getClass());
 
     @Override
@@ -97,6 +102,14 @@ public class FileDataStoreService extends 
AbstractDataStoreService {
         return dataStore;
     }
 
+    protected StatisticsProvider getStatisticsProvider(){
+        return statisticsProvider;
+    }
+
+    protected void setStatisticsProvider(StatisticsProvider 
statisticsProvider) {
+        this.statisticsProvider = statisticsProvider;
+    }
+
     @Override
     protected String[] getDescription() {
         return new String[]{"type=filesystem"};

Reply via email to