This is an automated email from the ASF dual-hosted git repository. reschke 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 64f49fc0e0 OAK-10443: refactor AbstractDataStoreService so that it doesn't need the statisticsProvider OSGi reference (#1115) 64f49fc0e0 is described below commit 64f49fc0e0d83ddd9a8063603488b106d89e77e1 Author: Julian Reschke <resc...@apache.org> AuthorDate: Tue Sep 12 16:47:41 2023 +0200 OAK-10443: refactor AbstractDataStoreService so that it doesn't need the statisticsProvider OSGi reference (#1115) --- .../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"};