Index: oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/AbstractS3DataStoreService.java =================================================================== --- oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/AbstractS3DataStoreService.java (revision 1845812) +++ oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/AbstractS3DataStoreService.java (working copy) @@ -19,16 +19,24 @@ package org.apache.jackrabbit.oak.blob.cloud.s3; +import java.util.Collections; import java.util.Dictionary; import java.util.Hashtable; import java.util.Map; import java.util.Properties; +import javax.jcr.RepositoryException; + import org.apache.felix.scr.annotations.Component; +import org.apache.jackrabbit.commons.SimpleValueFactory; import org.apache.jackrabbit.core.data.DataStore; import org.apache.jackrabbit.core.data.DataStoreException; +import org.apache.jackrabbit.oak.api.Descriptors; +import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard; import org.apache.jackrabbit.oak.plugins.blob.AbstractSharedCachingDataStore; import org.apache.jackrabbit.oak.plugins.blob.datastore.AbstractDataStoreService; +import org.apache.jackrabbit.oak.spi.descriptors.GenericDescriptors; +import org.apache.jackrabbit.oak.spi.whiteboard.Registration; import org.osgi.framework.Constants; import org.osgi.framework.ServiceRegistration; import org.osgi.service.component.ComponentContext; @@ -39,6 +47,8 @@ private ServiceRegistration delegateReg; + private Registration descRegistry; + @Override protected DataStore createDataStore(ComponentContext context, Map config) { Properties properties = new Properties(); @@ -59,11 +69,30 @@ return dataStore; } + + @Override + protected void activate(ComponentContext context, Map config) throws RepositoryException { + super.activate(context, config); + + registerDescriptor(context); + } + private void registerDescriptor(ComponentContext context) { + final GenericDescriptors desc = new GenericDescriptors(); + desc.put("store.data.binary.upload", new SimpleValueFactory().createValue(true), true, false); + + OsgiWhiteboard whiteboard = new OsgiWhiteboard(context.getBundleContext()); + descRegistry = whiteboard.register(Descriptors.class, desc, Collections.emptyMap()); + } + protected void deactivate() throws DataStoreException { if (delegateReg != null) { delegateReg.unregister(); } + if (descRegistry != null) { + descRegistry.unregister(); + descRegistry = null; + } super.deactivate(); }