This is an automated email from the ASF dual-hosted git repository.
baedke pushed a commit to branch issue/oak-6765
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/issue/oak-6765 by this push:
new c535acbd2c OAK-6765: Convert oak-jcr to OSGi R7 annotations
c535acbd2c is described below
commit c535acbd2c7d85f6407d16f8dbe57e590278c421
Author: Manfred Baedke <[email protected]>
AuthorDate: Wed Nov 15 14:05:27 2023 +0100
OAK-6765: Convert oak-jcr to OSGi R7 annotations
org.apache.felix.scr.annotations -> org.osgi.service.component.annotations
---
oak-jcr/pom.xml | 11 +++--
.../observation/ConsolidatedListenerMBeanImpl.java | 51 +++++++++++-----------
.../jackrabbit/oak/jcr/osgi/RepositoryManager.java | 47 +++++++++-----------
.../oak/jcr/osgi/RepositoryManagerTest.java | 2 +
4 files changed, 53 insertions(+), 58 deletions(-)
diff --git a/oak-jcr/pom.xml b/oak-jcr/pom.xml
index 56f578ce82..2b9b4eb4a6 100644
--- a/oak-jcr/pom.xml
+++ b/oak-jcr/pom.xml
@@ -201,12 +201,11 @@
<artifactId>osgi.core</artifactId>
<scope>provided</scope>
</dependency>
- <dependency>
- <!-- somehow the 1.6.0_65 compiler crashes on osx without this. -->
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.scr.annotations</artifactId>
- <scope>provided</scope>
- </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.service.component.annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>javax.jcr</groupId>
diff --git
a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ConsolidatedListenerMBeanImpl.java
b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ConsolidatedListenerMBeanImpl.java
index 3d11323e16..2de031b591 100644
---
a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ConsolidatedListenerMBeanImpl.java
+++
b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ConsolidatedListenerMBeanImpl.java
@@ -44,13 +44,12 @@ import org.apache.jackrabbit.guava.common.collect.Lists;
import org.apache.jackrabbit.guava.common.collect.Maps;
import org.apache.jackrabbit.guava.common.primitives.Longs;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.ReferencePolicy;
-import org.apache.felix.scr.annotations.References;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
import org.apache.jackrabbit.api.jmx.EventListenerMBean;
import org.apache.jackrabbit.oak.jcr.observation.jmx.ConsolidatedListenerMBean;
import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
@@ -65,40 +64,42 @@ import org.osgi.framework.BundleContext;
import static
org.apache.jackrabbit.guava.common.base.Preconditions.checkNotNull;
import static
org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.registerMBean;
-@Component
-@References({
- @Reference(name = "observer",
+@Component(reference = {
+ @Reference(
+ name = "observer",
bind = "bindObserver",
unbind = "unbindObserver",
- referenceInterface = Observer.class,
+ service = Observer.class,
policy = ReferencePolicy.DYNAMIC,
- cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE),
+ cardinality = ReferenceCardinality.MULTIPLE),
@Reference(name = "listenerMBean",
bind = "bindListenerMBean",
unbind = "unbindListenerMBean",
- referenceInterface = EventListenerMBean.class,
+ service = EventListenerMBean.class,
policy = ReferencePolicy.DYNAMIC,
- cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE),
- @Reference(name = "backgroundObserverMBean",
+ cardinality = ReferenceCardinality.MULTIPLE),
+ @Reference(
+ name = "backgroundObserverMBean",
bind = "bindBackgroundObserverMBean",
unbind = "unbindBackgroundObserverMBean",
- referenceInterface = BackgroundObserverMBean.class,
+ service = BackgroundObserverMBean.class,
policy = ReferencePolicy.DYNAMIC,
- cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE),
- @Reference(name = "changeProcessorMBean",
+ cardinality = ReferenceCardinality.MULTIPLE),
+ @Reference(
+ name = "changeProcessorMBean",
bind = "bindChangeProcessorMBean",
unbind = "unbindChangeProcessorMBean",
- referenceInterface = ChangeProcessorMBean.class,
+ service = ChangeProcessorMBean.class,
policy = ReferencePolicy.DYNAMIC,
- cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE),
- @Reference(name = "filterConfigMBean",
+ cardinality = ReferenceCardinality.MULTIPLE),
+ @Reference(
+ name = "filterConfigMBean",
bind = "bindFilterConfigMBean",
unbind = "unbindFilterConfigMBean",
- referenceInterface = FilterConfigMBean.class,
+ service = FilterConfigMBean.class,
policy = ReferencePolicy.DYNAMIC,
- cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE)
-
-})
+ cardinality = ReferenceCardinality.MULTIPLE)
+}, service = {})
public class ConsolidatedListenerMBeanImpl implements
ConsolidatedListenerMBean {
private final AtomicInteger observerCount = new AtomicInteger();
private final Map<ObjectName, EventListenerMBean> eventListeners =
Maps.newConcurrentMap();
diff --git
a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java
b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java
index e7f3101153..36d58b1206 100644
---
a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java
+++
b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManager.java
@@ -23,14 +23,12 @@ import java.util.Map;
import javax.jcr.Repository;
-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.Reference;
-import org.apache.felix.scr.annotations.ReferenceStrategy;
-import org.apache.felix.scr.annotations.References;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ConfigurationPolicy;
+
import org.apache.jackrabbit.oak.InitialContent;
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.commons.PropertiesUtil;
@@ -51,6 +49,8 @@ import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
import org.apache.jackrabbit.oak.stats.StatisticsProvider;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.metatype.annotations.AttributeDefinition;
/**
* RepositoryManager constructs the Repository instance and registers it with
OSGi Service Registry.
@@ -58,13 +58,16 @@ import org.osgi.framework.ServiceRegistration;
* create repository. This is done to prevent repository creation in scenarios
where repository needs
* to be configured in a custom way
*/
-@Component(policy = ConfigurationPolicy.REQUIRE)
-@References({
- @Reference(referenceInterface = StatisticsProvider.class,
- strategy = ReferenceStrategy.LOOKUP
- )
-})
+@Component(
+ configurationPolicy = ConfigurationPolicy.REQUIRE,
+ property = {
+ "oak.observation.queue-length:Integer=10000",
+ "oak.observation.limit-commit-rate:Boolean=false",
+ "oak.query.fastResultSize:Boolean=false"
+ }
+)
public class RepositoryManager {
+
private static final int DEFAULT_OBSERVATION_QUEUE_LENGTH =
BackgroundObserver.DEFAULT_QUEUE_SIZE;
private static final boolean DEFAULT_COMMIT_RATE_LIMIT = false;
private static final boolean DEFAULT_FAST_QUERY_RESULT_SIZE = false;
@@ -102,23 +105,13 @@ public class RepositoryManager {
@Reference(target = "(type=reference)")
private IndexEditorProvider referenceIndex;
- @Property(
- intValue = DEFAULT_OBSERVATION_QUEUE_LENGTH,
- name = "Observation queue length",
- description = "Maximum number of pending revisions in a observation
listener queue")
+ @Reference(name = "org.apache.jackrabbit.oak.stats.StatisticsProvider")
+ private StatisticsProvider statisticsProvider;
+
private static final String OBSERVATION_QUEUE_LENGTH =
"oak.observation.queue-length";
- @Property(
- boolValue = DEFAULT_COMMIT_RATE_LIMIT,
- name = "Commit rate limiter",
- description = "Limit the commit rate once the number of pending
revisions in the observation " +
- "queue exceed 90% of its capacity.")
private static final String COMMIT_RATE_LIMIT =
"oak.observation.limit-commit-rate";
- @Property(
- boolValue = DEFAULT_FAST_QUERY_RESULT_SIZE,
- name = "Fast query result size",
- description = "Whether the query result size should return an
estimation (or -1 if disabled) for large queries")
private static final String FAST_QUERY_RESULT_SIZE =
"oak.query.fastResultSize";
private OsgiRepository repository;
diff --git
a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManagerTest.java
b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManagerTest.java
index d7c238c25a..f09b247305 100644
---
a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManagerTest.java
+++
b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/osgi/RepositoryManagerTest.java
@@ -33,6 +33,7 @@ import
org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.apache.jackrabbit.oak.stats.StatisticsProvider;
import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
import org.junit.Ignore;
import org.junit.Rule;
@@ -85,6 +86,7 @@ public class RepositoryManagerTest {
private void registerRequiredServices() {
+ context.registerService(StatisticsProvider.class,
StatisticsProvider.NOOP);
context.registerService(SecurityProvider.class, new
OpenSecurityProvider());
context.registerService(NodeStore.class, new MemoryNodeStore());
context.registerService(IndexEditorProvider.class, new
PropertyIndexEditorProvider(),