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(),

Reply via email to