Author: jsedding
Date: Thu Sep 28 14:09:26 2017
New Revision: 1810002

URL: http://svn.apache.org/viewvc?rev=1810002&view=rev
Log:
OAK-6741 - Switch to official OSGi component and metatype annotations

- switch oak-core and oak-store-document to official OSGi annotations

Modified:
    jackrabbit/oak/trunk/oak-core/pom.xml
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/impl/ConsolidatedCacheStats.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictValidatorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/cow/COWNodeStoreService.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexInfoServiceImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexerService.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexInfoServiceImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexPathServiceImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexerMBeanImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/counter/NodeCounterEditorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextProviderService.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinter.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexPrinter.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexEditorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexEditorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexInfoProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/jmx/PropertyIndexStats.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceIndexProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/itemsave/ItemSaveValidatorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactory.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionHook.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineSettingsService.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationConfigurationImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/RestrictionProviderImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalConfigurationImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/RandomAuthorizableNodeName.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserAuthenticationFactoryImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/DefaultAuthorizableActionProvider.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/package-info.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistrationTest.java
    jackrabbit/oak/trunk/oak-parent/pom.xml
    jackrabbit/oak/trunk/oak-store-document/pom.xml
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteService.java
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreCacheService.java
    jackrabbit/oak/trunk/oak-store-spi/pom.xml

Modified: jackrabbit/oak/trunk/oak-core/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/pom.xml?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-core/pom.xml Thu Sep 28 14:09:26 2017
@@ -143,13 +143,11 @@
     <dependency>
       <groupId>org.osgi</groupId>
       <artifactId>org.osgi.service.component.annotations</artifactId>
-      <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.scr.annotations</artifactId>
-      <scope>provided</scope>
-    </dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.service.metatype.annotations</artifactId>
+   </dependency>
 
     <!-- Dependencies to other Oak components -->
     <dependency>

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/impl/ConsolidatedCacheStats.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/impl/ConsolidatedCacheStats.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/impl/ConsolidatedCacheStats.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/impl/ConsolidatedCacheStats.java
 Thu Sep 28 14:09:26 2017
@@ -32,9 +32,6 @@ import javax.management.openmbean.Tabula
 import javax.management.openmbean.TabularDataSupport;
 import javax.management.openmbean.TabularType;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.jackrabbit.oak.api.jmx.CacheStatsMBean;
 import org.apache.jackrabbit.oak.api.jmx.ConsolidatedCacheStatsMBean;
 import org.apache.jackrabbit.oak.api.jmx.PersistentCacheStatsMBean;
@@ -43,12 +40,15 @@ import org.apache.jackrabbit.oak.spi.whi
 import org.apache.jackrabbit.oak.spi.whiteboard.Tracker;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
 import org.osgi.framework.BundleContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 
 import static org.apache.jackrabbit.oak.cache.CacheStats.timeInWords;
 import static org.apache.jackrabbit.oak.commons.IOUtils.humanReadableByteCount;
 import static 
org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.registerMBean;
 
-@Component
+@Component(service = {})
 public class ConsolidatedCacheStats implements ConsolidatedCacheStatsMBean {
 
     private Tracker<CacheStatsMBean> cacheStats;

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java
 Thu Sep 28 14:09:26 2017
@@ -16,9 +16,6 @@
  */
 package org.apache.jackrabbit.oak.plugins.atomic;
 
-import static 
org.apache.felix.scr.annotations.ReferenceCardinality.OPTIONAL_UNARY;
-import static org.apache.felix.scr.annotations.ReferencePolicy.DYNAMIC;
-
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ThreadFactory;
@@ -26,14 +23,6 @@ import java.util.concurrent.atomic.Atomi
 
 import javax.annotation.Nullable;
 
-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.Property;
-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.Service;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser;
 import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
@@ -47,26 +36,31 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
 import org.osgi.framework.BundleContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Supplier;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
+import static 
org.osgi.service.component.annotations.ReferenceCardinality.OPTIONAL;
+import static org.osgi.service.component.annotations.ReferencePolicy.DYNAMIC;
+
 /**
  * Provide an instance of {@link AtomicCounterEditor}. See {@link 
AtomicCounterEditor} for
  * behavioural details.
  */
-@Component
-@Property(name = "type", value = "atomicCounter", propertyPrivate = true)
-@Service(EditorProvider.class)
+@Component(
+        property = "type=atomicCounter",
+        service = EditorProvider.class)
 public class AtomicCounterEditorProvider implements EditorProvider {
     private static final Logger LOG = 
LoggerFactory.getLogger(AtomicCounterEditorProvider.class);
 
-    @Reference(policy = ReferencePolicy.DYNAMIC, cardinality = 
ReferenceCardinality.OPTIONAL_UNARY, referenceInterface = Clusterable.class)
     private AtomicReference<Clusterable> cluster = new 
AtomicReference<Clusterable>();
 
-    @Reference(policy = DYNAMIC, cardinality = OPTIONAL_UNARY, 
referenceInterface = NodeStore.class)
     private volatile AtomicReference<NodeStore> store = new 
AtomicReference<NodeStore>();    
 
     private volatile AtomicReference<ScheduledExecutorService> scheduler = new 
AtomicReference<ScheduledExecutorService>();
@@ -193,6 +187,7 @@ public class AtomicCounterEditorProvider
         }
     }
 
+    @Reference(name = "cluster", policy = DYNAMIC, cardinality = OPTIONAL)
     protected void bindCluster(Clusterable store) {
         this.cluster.set(store);
     }
@@ -201,6 +196,7 @@ public class AtomicCounterEditorProvider
         this.cluster.compareAndSet(store, null);
     }
 
+    @Reference(name = "store", policy = DYNAMIC, cardinality = OPTIONAL)
     protected void bindStore(NodeStore store) {
         this.store.set(store);
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictValidatorProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictValidatorProvider.java
 Thu Sep 28 14:09:26 2017
@@ -16,19 +16,17 @@
  */
 package org.apache.jackrabbit.oak.plugins.commit;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.EditorProvider;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.service.component.annotations.Component;
 
 /**
  * TODO document
  */
-@Component
-@Service(EditorProvider.class)
+@Component(service = EditorProvider.class)
 public class ConflictValidatorProvider extends ValidatorProvider {
 
     @Override

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/cow/COWNodeStoreService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/cow/COWNodeStoreService.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/cow/COWNodeStoreService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/cow/COWNodeStoreService.java
 Thu Sep 28 14:09:26 2017
@@ -16,14 +16,6 @@
  */
 package org.apache.jackrabbit.oak.plugins.cow;
 
-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.ReferenceCardinality;
-import org.apache.felix.scr.annotations.ReferencePolicy;
 import org.apache.jackrabbit.oak.api.jmx.CopyOnWriteStoreMBean;
 import org.apache.jackrabbit.oak.commons.PropertiesUtil;
 import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
@@ -36,6 +28,13 @@ import org.apache.jackrabbit.oak.spi.whi
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.ConfigurationPolicy;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -45,18 +44,21 @@ import java.util.Map;
 
 import static 
org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.registerMBean;
 
-@Component(policy = ConfigurationPolicy.REQUIRE)
+@Component(
+        configurationPolicy = ConfigurationPolicy.REQUIRE,
+        service = {})
 public class COWNodeStoreService {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(COWNodeStoreService.class);
 
-    @Property(
-            label = "NodeStoreProvider role",
-            description = "Property indicating that this component will not 
register as a NodeStore but as a NodeStoreProvider with given role"
-    )
+    /**
+     * NodeStoreProvider role
+     * <br>
+     * Property indicating that this component will not register as a
+     * NodeStore but as a NodeStoreProvider with given role
+     */
     public static final String PROP_ROLE = "role";
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY, policy = 
ReferencePolicy.DYNAMIC, target = "(role=copy-on-write)", bind = 
"bindNodeStoreProvider", unbind = "unbindNodeStoreProvider")
     private NodeStoreProvider nodeStoreProvider;
 
     private String nodeStoreDescription;
@@ -162,6 +164,11 @@ public class COWNodeStoreService {
         }
     }
 
+    @Reference(
+            name = "nodeStoreProvider",
+            cardinality = ReferenceCardinality.MANDATORY,
+            policy = ReferencePolicy.DYNAMIC,
+            target = "(role=copy-on-write)")
     protected void bindNodeStoreProvider(NodeStoreProvider ns, Map<String, ?> 
config) {
         this.nodeStoreProvider = ns;
         this.nodeStoreDescription = 
PropertiesUtil.toString(config.get("oak.nodestore.description"), 
ns.getClass().getName());

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexInfoServiceImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexInfoServiceImpl.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexInfoServiceImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexInfoServiceImpl.java
 Thu Sep 28 14:09:26 2017
@@ -25,28 +25,21 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.apache.felix.scr.annotations.Component;
-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.ReferencePolicyOption;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.api.jmx.IndexStatsMBean;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.util.ISO8601;
+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.osgi.service.component.annotations.ReferencePolicyOption;
 
 @Component
-@Service
 public class AsyncIndexInfoServiceImpl implements AsyncIndexInfoService {
 
-    @Reference(policy = ReferencePolicy.DYNAMIC,
-            cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE,
-            policyOption = ReferencePolicyOption.GREEDY,
-            referenceInterface = IndexStatsMBean.class
-    )
     private final Map<String, IndexStatsMBean> statsMBeans = new 
ConcurrentHashMap<>();
 
     @Reference
@@ -104,6 +97,12 @@ public class AsyncIndexInfoServiceImpl i
         return root.getChildNode(AsyncIndexUpdate.ASYNC);
     }
 
+    @Reference(name = "statsMBeans",
+            policy = ReferencePolicy.DYNAMIC,
+            cardinality = ReferenceCardinality.MULTIPLE,
+            policyOption = ReferencePolicyOption.GREEDY,
+            service = IndexStatsMBean.class
+    )
     protected void bindStatsMBeans(IndexStatsMBean mBean) {
         statsMBeans.put(mBean.getName(), mBean);
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexerService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexerService.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexerService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexerService.java
 Thu Sep 28 14:09:26 2017
@@ -24,19 +24,11 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import com.google.common.collect.Lists;
 import com.google.common.io.Closer;
-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.jackrabbit.oak.api.jmx.IndexStatsMBean;
-import org.apache.jackrabbit.oak.commons.PropertiesUtil;
 import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
 import 
org.apache.jackrabbit.oak.plugins.index.property.jmx.PropertyIndexAsyncReindex;
 import 
org.apache.jackrabbit.oak.plugins.index.property.jmx.PropertyIndexAsyncReindexMBean;
@@ -50,6 +42,14 @@ import org.apache.jackrabbit.oak.spi.whi
 import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardExecutor;
 import org.apache.jackrabbit.oak.stats.StatisticsProvider;
 import org.osgi.framework.BundleContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.ConfigurationPolicy;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.Designate;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -57,48 +57,45 @@ import static com.google.common.base.Pre
 import static 
org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.registerMBean;
 
 @Component(
-        policy = ConfigurationPolicy.REQUIRE,
-        metatype = true,
-        label = "Apache Jackrabbit Oak Async Indexer Service",
-        description = "Configures the async indexer services which performs 
periodic indexing of repository content"
-)
+        configurationPolicy = ConfigurationPolicy.REQUIRE,
+        service = {})
+@Designate(ocd = AsyncIndexerService.Configuration.class)
 public class AsyncIndexerService {
-    @Property(
-            value = {
-                    "async:5"
-            },
-            cardinality = 1024,
-            label = "Async Indexer Configs",
-            description = "Async indexer configs in the form of 
<name>:<interval in secs> e.g. \"async:5\""
-    )
-    private static final String PROP_ASYNC_CONFIG = "asyncConfigs";
-
-    private static final int PROP_LEASE_TIMEOUT_DEFAULT = 15;
-    @Property(
-            intValue = PROP_LEASE_TIMEOUT_DEFAULT,
-            label = "Lease time out",
-            description = "Lease timeout in minutes. AsyncIndexer would wait 
for this timeout period before breaking " +
-                    "async indexer lease"
-    )
-    private static final String PROP_LEASE_TIME_OUT = "leaseTimeOutMinutes";
 
-    private static final long PROP_FAILING_INDEX_TIMEOUT_DEFAULT = 30 * 60;
-    @Property(
-            longValue = PROP_FAILING_INDEX_TIMEOUT_DEFAULT,
-            label = "Failing Index Timeout (s)",
-            description = "Time interval in seconds after which a failing 
index is considered as corrupted and " +
-                    "ignored from further indexing untill reindex. To disable 
this set it to 0"
+    @ObjectClassDefinition(
+            name = "Apache Jackrabbit Oak Async Indexer Service",
+            description = "Configures the async indexer services which 
performs periodic indexing of repository content"
     )
-    private static final String PROP_FAILING_INDEX_TIMEOUT = 
"failingIndexTimeoutSeconds";
+    @interface Configuration {
 
-    private static final long PROP_ERROR_WARN_INTERVAL_DEFAULT = 15 * 60;
-    @Property(
-            longValue = PROP_ERROR_WARN_INTERVAL_DEFAULT,
-            label = "Error warn interval (s)",
-            description = "Time interval in seconds after which a warning log 
would be logged for skipped indexes. " +
-                    "This is done to avoid flooding the log in case of 
corrupted index."
-    )
-    private static final String PROP_ERROR_WARN_INTERVAL = 
"errorWarnIntervalSeconds";
+        @AttributeDefinition(
+                cardinality = 1024,
+                name = "Async Indexer Configs",
+                description = "Async indexer configs in the form of 
<name>:<interval in secs> e.g. \"async:5\""
+        )
+        String[] asyncConfigs() default {"async:5"};
+        
+        @AttributeDefinition(
+                name = "Lease time out",
+                description = "Lease timeout in minutes. AsyncIndexer would 
wait for this timeout period before breaking " +
+                        "async indexer lease"
+        )
+        int leaseTimeOutMinutes() default 15;
+
+        @AttributeDefinition(
+                name = "Failing Index Timeout (s)",
+                description = "Time interval in seconds after which a failing 
index is considered as corrupted and " +
+                        "ignored from further indexing untill reindex. To 
disable this set it to 0"
+        )
+        long failingIndexTimeoutSeconds() default 30 * 60;
+
+        @AttributeDefinition(
+                name = "Error warn interval (s)",
+                description = "Time interval in seconds after which a warning 
log would be logged for skipped indexes. " +
+                        "This is done to avoid flooding the log in case of 
corrupted index."
+        )
+        long errorWarnIntervalSeconds() default 15 * 60;
+    }
 
     private static final char CONFIG_SEP = ':';
     private final Logger log = LoggerFactory.getLogger(getClass());
@@ -120,16 +117,15 @@ public class AsyncIndexerService {
     private WhiteboardExecutor executor;
 
     @Activate
-    public void activate(BundleContext bundleContext, Map<String, Object> 
config) {
-        List<AsyncConfig> asyncIndexerConfig = 
getAsyncConfig(PropertiesUtil.toStringArray(config.get
-                (PROP_ASYNC_CONFIG), new String[0]));
+    public void activate(BundleContext bundleContext, Configuration config) {
+        List<AsyncConfig> asyncIndexerConfig = 
getAsyncConfig(config.asyncConfigs());
         Whiteboard whiteboard = new OsgiWhiteboard(bundleContext);
         indexRegistration = new IndexMBeanRegistration(whiteboard);
         indexEditorProvider.start(whiteboard);
         executor = new WhiteboardExecutor();
         executor.start(whiteboard);
 
-        long leaseTimeOutMin = 
PropertiesUtil.toInteger(config.get(PROP_LEASE_TIME_OUT), 
PROP_LEASE_TIMEOUT_DEFAULT);
+        long leaseTimeOutMin = config.leaseTimeOutMinutes();
 
         if (!(nodeStore instanceof Clusterable)){
             leaseTimeOutMin = 0;
@@ -187,20 +183,17 @@ public class AsyncIndexerService {
 
     //~-------------------------------------------< internal >
 
-    private TrackingCorruptIndexHandler createCorruptIndexHandler(Map<String, 
Object> config) {
-        long failingIndexTimeoutSeconds = 
PropertiesUtil.toLong(config.get(PROP_FAILING_INDEX_TIMEOUT),
-                PROP_FAILING_INDEX_TIMEOUT_DEFAULT);
-        long errorWarnIntervalSeconds = 
PropertiesUtil.toLong(config.get(PROP_ERROR_WARN_INTERVAL),
-                PROP_ERROR_WARN_INTERVAL_DEFAULT);
+    private TrackingCorruptIndexHandler 
createCorruptIndexHandler(Configuration config) {
+        long failingIndexTimeoutSeconds = config.failingIndexTimeoutSeconds();
+        long errorWarnIntervalSeconds = config.errorWarnIntervalSeconds();
 
         TrackingCorruptIndexHandler corruptIndexHandler = new 
TrackingCorruptIndexHandler();
         corruptIndexHandler.setCorruptInterval(failingIndexTimeoutSeconds, 
TimeUnit.SECONDS);
         corruptIndexHandler.setErrorWarnInterval(errorWarnIntervalSeconds, 
TimeUnit.SECONDS);
 
         if (failingIndexTimeoutSeconds <= 0){
-            log.info("[{}] is set to {}. Auto corrupt index isolation handling 
is disabled, warning log would be " +
-                            "logged every {} s",
-                    PROP_FAILING_INDEX_TIMEOUT, failingIndexTimeoutSeconds, 
errorWarnIntervalSeconds);
+            log.info("[failingIndexTimeoutSeconds] is set to {}. Auto corrupt 
index isolation handling is disabled, warning log would be " +
+                            "logged every {} s", failingIndexTimeoutSeconds, 
errorWarnIntervalSeconds);
         } else {
             log.info("Auto corrupt index isolation handling is enabled. Any 
async index which fails for {}s would " +
                     "be marked as corrupted and would be skipped from further 
indexing. A warning log would be " +

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexInfoServiceImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexInfoServiceImpl.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexInfoServiceImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexInfoServiceImpl.java
 Thu Sep 28 14:09:26 2017
@@ -25,15 +25,14 @@ import java.util.concurrent.ConcurrentHa
 
 import com.google.common.base.Function;
 import com.google.common.collect.Iterables;
-import org.apache.felix.scr.annotations.Component;
-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.ReferencePolicyOption;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
+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.osgi.service.component.annotations.ReferencePolicyOption;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -41,18 +40,12 @@ import static com.google.common.base.Pre
 import static com.google.common.base.Predicates.notNull;
 
 @Component
-@Service
 public class IndexInfoServiceImpl implements IndexInfoService{
     private final Logger log = LoggerFactory.getLogger(getClass());
 
     @Reference
     private IndexPathService indexPathService;
 
-    @Reference(policy = ReferencePolicy.DYNAMIC,
-            cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE,
-            policyOption = ReferencePolicyOption.GREEDY,
-            referenceInterface = IndexInfoProvider.class
-    )
     private final Map<String, IndexInfoProvider> infoProviders = new 
ConcurrentHashMap<>();
 
     @Reference
@@ -110,6 +103,12 @@ public class IndexInfoServiceImpl implem
         return infoProvider.isValid(indexPath);
     }
 
+    @Reference(name = "infoProviders",
+            policy = ReferencePolicy.DYNAMIC,
+            cardinality = ReferenceCardinality.MULTIPLE,
+            policyOption = ReferencePolicyOption.GREEDY,
+            service = IndexInfoProvider.class
+    )
     public void bindInfoProviders(IndexInfoProvider infoProvider){
         infoProviders.put(checkNotNull(infoProvider.getType()), infoProvider);
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexPathServiceImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexPathServiceImpl.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexPathServiceImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexPathServiceImpl.java
 Thu Sep 28 14:09:26 2017
@@ -22,9 +22,7 @@ package org.apache.jackrabbit.oak.plugin
 import java.util.Iterator;
 
 import com.google.common.collect.Iterables;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
+import com.google.common.collect.Iterators;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.plugins.index.nodetype.NodeTypeIndexProvider;
 import org.apache.jackrabbit.oak.query.NodeStateNodeTypeInfoProvider;
@@ -41,6 +39,8 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -53,7 +53,6 @@ import static org.apache.jackrabbit.oak.
 import static 
org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NODE_TYPE;
 
 @Component
-@Service
 public class IndexPathServiceImpl implements IndexPathService {
     private final Logger log = LoggerFactory.getLogger(getClass());
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexerMBeanImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexerMBeanImpl.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexerMBeanImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexerMBeanImpl.java
 Thu Sep 28 14:09:26 2017
@@ -22,10 +22,6 @@ package org.apache.jackrabbit.oak.plugin
 import java.io.File;
 import java.io.IOException;
 
-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.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.jmx.IndexerMBean;
 import org.apache.jackrabbit.oak.commons.jmx.AnnotatedStandardMBean;
@@ -41,12 +37,16 @@ import org.apache.jackrabbit.oak.spi.whi
 import org.apache.jackrabbit.oak.spi.whiteboard.Tracker;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
 import org.osgi.framework.BundleContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static 
org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.registerMBean;
 
-@Component
+@Component(service = {})
 public class IndexerMBeanImpl extends AnnotatedStandardMBean implements 
IndexerMBean {
     private final Logger log = LoggerFactory.getLogger(getClass());
     @Reference

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/counter/NodeCounterEditorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/counter/NodeCounterEditorProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/counter/NodeCounterEditorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/counter/NodeCounterEditorProvider.java
 Thu Sep 28 14:09:26 2017
@@ -23,8 +23,6 @@ import java.util.UUID;
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Type;
@@ -35,9 +33,9 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.spi.commit.Editor;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.service.component.annotations.Component;
 
-@Component
-@Service(IndexEditorProvider.class)
+@Component(service = IndexEditorProvider.class)
 public class NodeCounterEditorProvider implements IndexEditorProvider {
 
     public static final String TYPE = "counter";

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextProviderService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextProviderService.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextProviderService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextProviderService.java
 Thu Sep 28 14:09:26 2017
@@ -21,44 +21,49 @@ package org.apache.jackrabbit.oak.plugin
 
 import java.io.File;
 import java.io.IOException;
-import java.util.Map;
 
-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.jackrabbit.oak.commons.PropertiesUtil;
 import 
org.apache.jackrabbit.oak.plugins.index.fulltext.PreExtractedTextProvider;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.ConfigurationPolicy;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.Designate;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 @Component(
-        policy = ConfigurationPolicy.REQUIRE,
-        name = 
"org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreTextProviderService",
-        metatype = true,
-        label = "Apache Jackrabbit Oak DataStore PreExtractedTextProvider",
-        description = "Configures a PreExtractedTextProvider based on 
extracted text stored on FileSystem"
-)
+        configurationPolicy = ConfigurationPolicy.REQUIRE,
+        service = {},
+        configurationPid = 
"org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreTextProviderService")
+@Designate(ocd = DataStoreTextProviderService.Configuration.class)
 public class DataStoreTextProviderService {
-    @Property(
-            label = "Path",
-            description = "Local file system path where extracted text is 
stored in files."
+
+    @ObjectClassDefinition(
+            name = "Apache Jackrabbit Oak DataStore PreExtractedTextProvider",
+            description = "Configures a PreExtractedTextProvider based on 
extracted text stored on FileSystem"
     )
-    private static final String PROP_DIR = "dir";
+    @interface Configuration {
+
+        @AttributeDefinition(
+                name = "Path",
+                description = "Local file system path where extracted text is 
stored in files."
+        )
+        String dir();
+    }
 
     private DataStoreTextWriter textWriter;
 
     private ServiceRegistration reg;
 
     @Activate
-    private void activate(BundleContext context, Map<String,? > config) throws 
IOException {
-        String dirPath = PropertiesUtil.toString(config.get(PROP_DIR), null);
-
-        checkNotNull(dirPath, "Directory path not configured via '%s", 
PROP_DIR);
+    private void activate(BundleContext context, Configuration config) throws 
IOException {
+        String dirPath = config.dir();
+        checkNotNull(dirPath, "Directory path not configured via 'dir'");
         File dir = new File(dirPath);
         checkArgument(dir.exists(), "Directory %s does not exist", 
dir.getAbsolutePath());
         textWriter = new DataStoreTextWriter(dir, true);

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinter.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinter.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinter.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexDefinitionPrinter.java
 Thu Sep 28 14:09:26 2017
@@ -23,27 +23,23 @@ import java.io.PrintWriter;
 
 import org.apache.felix.inventory.Format;
 import org.apache.felix.inventory.InventoryPrinter;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
 import org.apache.jackrabbit.oak.json.Base64BlobSerializer;
-import org.apache.jackrabbit.oak.json.BlobSerializer;
 import org.apache.jackrabbit.oak.json.JsonSerializer;
 import org.apache.jackrabbit.oak.plugins.index.IndexPathService;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
-@Component
-@Service
-@Properties({
-        @Property(name = "felix.inventory.printer.name", value = 
"oak-index-defn"),
-        @Property(name = "felix.inventory.printer.title", value = "Oak Index 
Definitions"),
-        @Property(name = "felix.inventory.printer.format", value = {"JSON"})
-})
+@Component(
+        service = InventoryPrinter.class,
+        property = {
+                "felix.inventory.printer.name=oak-index-defn",
+                "felix.inventory.printer.title=Oak Index Definitions",
+                "felix.inventory.printer.format=JSON"
+        })
 public class IndexDefinitionPrinter implements InventoryPrinter {
 
     @Reference
@@ -51,6 +47,7 @@ public class IndexDefinitionPrinter impl
 
     @Reference
     private NodeStore nodeStore;
+    
     private String filter = "{\"properties\":[\"*\", 
\"-:childOrder\"],\"nodes\":[\"*\", \"-:*\"]}";;
 
     public IndexDefinitionPrinter() {

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexPrinter.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexPrinter.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexPrinter.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/inventory/IndexPrinter.java
 Thu Sep 28 14:09:26 2017
@@ -29,11 +29,6 @@ import com.google.common.collect.Immutab
 import com.google.common.collect.ListMultimap;
 import org.apache.felix.inventory.Format;
 import org.apache.felix.inventory.InventoryPrinter;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.jmx.IndexStatsMBean;
 import org.apache.jackrabbit.oak.commons.IOUtils;
 import org.apache.jackrabbit.oak.plugins.index.AsyncIndexInfo;
@@ -41,16 +36,18 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.index.IndexInfo;
 import org.apache.jackrabbit.oak.plugins.index.IndexInfoService;
 import org.apache.jackrabbit.util.ISO8601;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-@Component
-@Service
-@Properties({
-        @Property(name = "felix.inventory.printer.name", value = 
"oak-index-stats"),
-        @Property(name = "felix.inventory.printer.title", value = "Oak Index 
Stats"),
-        @Property(name = "felix.inventory.printer.format", value = { "TEXT"})
-})
+@Component(
+        service = InventoryPrinter.class,
+        property = {
+            "felix.inventory.printer.name=oak-index-stats",
+            "felix.inventory.printer.title=Oak Index Stats",
+            "felix.inventory.printer.format=TEXT"
+        })
 public class IndexPrinter implements InventoryPrinter {
 
     @Reference

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexProvider.java
 Thu Sep 28 14:09:26 2017
@@ -22,9 +22,6 @@ import java.util.List;
 
 import javax.annotation.Nonnull;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
@@ -32,13 +29,14 @@ import org.apache.jackrabbit.oak.spi.que
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
 import com.google.common.collect.ImmutableList;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 /**
  * <code>NodeTypeIndexProvider</code> is a {@link QueryIndexProvider} for
  * {@link NodeTypeIndex} instances.
  */
-@Component
-@Service(QueryIndexProvider.class)
+@Component(service = QueryIndexProvider.class)
 public class NodeTypeIndexProvider implements QueryIndexProvider {
 
     @Reference

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexEditorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexEditorProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexEditorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexEditorProvider.java
 Thu Sep 28 14:09:26 2017
@@ -20,8 +20,6 @@ package org.apache.jackrabbit.oak.plugin
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.plugins.index.ContextAwareCallback;
 import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
@@ -29,11 +27,11 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.spi.commit.Editor;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.service.component.annotations.Component;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Component
-@Service(IndexEditorProvider.class)
+@Component(service = IndexEditorProvider.class)
 public class OrderedPropertyIndexEditorProvider implements 
IndexEditorProvider, OrderedIndex {
    private static final Logger LOG = 
LoggerFactory.getLogger(OrderedPropertyIndexEditorProvider.class);
    private int hits;

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexProvider.java
 Thu Sep 28 14:09:26 2017
@@ -21,17 +21,17 @@ import static com.google.common.collect.
 
 import java.util.List;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.ConfigurationPolicy;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.ConfigurationPolicy;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Component(policy = ConfigurationPolicy.REQUIRE)
-@Service(QueryIndexProvider.class)
+@Component(
+        configurationPolicy = ConfigurationPolicy.REQUIRE,
+        service = QueryIndexProvider.class)
 public class OrderedPropertyIndexProvider implements QueryIndexProvider {
     private static final Logger LOG = 
LoggerFactory.getLogger(OrderedPropertyIndexProvider.class);
     private static int hits;

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexEditorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexEditorProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexEditorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexEditorProvider.java
 Thu Sep 28 14:09:26 2017
@@ -18,10 +18,6 @@ package org.apache.jackrabbit.oak.plugin
 
 import javax.annotation.Nonnull;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
 import org.apache.jackrabbit.oak.spi.commit.Editor;
@@ -30,6 +26,8 @@ import org.apache.jackrabbit.oak.spi.mou
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 /**
  * Service that provides PropertyIndex based editors.
@@ -38,9 +36,9 @@ import org.apache.jackrabbit.oak.spi.sta
  * @see IndexEditorProvider
  * 
  */
-@Component
-@Property(name = IndexConstants.TYPE_PROPERTY_NAME , value = "property", 
propertyPrivate = true)
-@Service(IndexEditorProvider.class)
+@Component(
+        service = IndexEditorProvider.class,
+        property = IndexConstants.TYPE_PROPERTY_NAME + "=property")
 public class PropertyIndexEditorProvider implements IndexEditorProvider {
 
     public static final String TYPE = "property";

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexInfoProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexInfoProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexInfoProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexInfoProvider.java
 Thu Sep 28 14:09:26 2017
@@ -21,9 +21,6 @@ package org.apache.jackrabbit.oak.plugin
 
 import java.io.IOException;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.plugins.index.IndexInfo;
 import org.apache.jackrabbit.oak.plugins.index.IndexInfoProvider;
@@ -32,11 +29,12 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
 @Component
-@Service
 public class PropertyIndexInfoProvider implements IndexInfoProvider {
 
     @Reference

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexProvider.java
 Thu Sep 28 14:09:26 2017
@@ -20,9 +20,6 @@ import java.util.List;
 
 import javax.annotation.Nonnull;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
@@ -30,6 +27,8 @@ import org.apache.jackrabbit.oak.spi.que
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
 import com.google.common.collect.ImmutableList;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 /**
  * A provider for property indexes.
@@ -39,8 +38,7 @@ import com.google.common.collect.Immutab
  * 
  * @see PropertyIndex
  */
-@Component
-@Service(QueryIndexProvider.class)
+@Component(service = QueryIndexProvider.class)
 public class PropertyIndexProvider implements QueryIndexProvider {
 
     @Reference

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/jmx/PropertyIndexStats.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/jmx/PropertyIndexStats.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/jmx/PropertyIndexStats.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/jmx/PropertyIndexStats.java
 Thu Sep 28 14:09:26 2017
@@ -39,10 +39,6 @@ import javax.management.openmbean.Tabula
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Sets;
 import com.google.common.collect.TreeTraverser;
-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.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
@@ -56,13 +52,17 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
 import org.osgi.framework.BundleContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
 
 import static org.apache.jackrabbit.oak.commons.PathUtils.concat;
 import static 
org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_CONTENT_NODE_NAME;
 import static 
org.apache.jackrabbit.oak.plugins.index.IndexConstants.UNIQUE_PROPERTY_NAME;
 import static 
org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils.registerMBean;
 
-@Component
+@Component(service = {})
 public class PropertyIndexStats extends AnnotatedStandardMBean implements 
PropertyIndexStatsMBean {
 
     @Reference

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditorProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceEditorProvider.java
 Thu Sep 28 14:09:26 2017
@@ -20,10 +20,6 @@ import static org.apache.jackrabbit.oak.
 
 import javax.annotation.Nonnull;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
 import org.apache.jackrabbit.oak.plugins.index.IndexUpdateCallback;
@@ -32,10 +28,12 @@ import org.apache.jackrabbit.oak.spi.mou
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
-@Component
-@Service(IndexEditorProvider.class)
-@Property(name = IndexConstants.TYPE_PROPERTY_NAME , value = 
NodeReferenceConstants.TYPE, propertyPrivate = true)
+@Component(
+        service = IndexEditorProvider.class,
+        property = IndexConstants.TYPE_PROPERTY_NAME + "=" + 
NodeReferenceConstants.TYPE)
 public class ReferenceEditorProvider implements IndexEditorProvider {
 
     @Reference

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceIndexProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceIndexProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceIndexProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceIndexProvider.java
 Thu Sep 28 14:09:26 2017
@@ -20,9 +20,6 @@ import java.util.List;
 
 import javax.annotation.Nonnull;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
@@ -30,12 +27,13 @@ import org.apache.jackrabbit.oak.spi.que
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
 import com.google.common.collect.ImmutableList;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 
 /**
  * A provider for node references indices.
  */
-@Component
-@Service(QueryIndexProvider.class)
+@Component(service = QueryIndexProvider.class)
 public class ReferenceIndexProvider implements QueryIndexProvider {
 
     @Reference

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/itemsave/ItemSaveValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/itemsave/ItemSaveValidatorProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/itemsave/ItemSaveValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/itemsave/ItemSaveValidatorProvider.java
 Thu Sep 28 14:09:26 2017
@@ -20,21 +20,19 @@ package org.apache.jackrabbit.oak.plugin
 
 import javax.annotation.CheckForNull;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.EditorProvider;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.service.component.annotations.Component;
 
 /**
  * This validator checks that all changes are contained within the subtree
  * rooted at a given path.
  */
-@Component
-@Service(EditorProvider.class)
+@Component(service = EditorProvider.class)
 public class ItemSaveValidatorProvider extends ValidatorProvider {
 
     @Override  @CheckForNull

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactory.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactory.java
 Thu Sep 28 14:09:26 2017
@@ -24,26 +24,26 @@ import java.io.IOException;
 import java.util.Dictionary;
 import java.util.Hashtable;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 
 import javax.management.MBeanServer;
 
 import com.google.common.collect.Lists;
-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.Property;
-import org.apache.felix.scr.annotations.PropertyOption;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.jackrabbit.oak.commons.PropertiesUtil;
 import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser;
 import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider;
 import org.apache.jackrabbit.oak.stats.StatisticsProvider;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.Designate;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
+import org.osgi.service.metatype.annotations.Option;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -52,12 +52,27 @@ import org.slf4j.LoggerFactory;
  * <a href="http://metrics.dropwizard.io";>Metrics</a> library is present or 
not. If present
  * then it configures a MetricsStatisticsProvider otherwise fallbacks to 
DefaultStatisticsProvider
  */
-@Component(metatype = true,
-        label = "Apache Jackrabbit Oak StatisticsProviderFactory",
-        description = "Creates a statistics providers used by Oak. By default 
if checks if Metrics (" +
-                "See http://metrics.dropwizard.io) library is present then 
that is used. Otherwise it fallbacks " +
-                "to default")
+@Component
+@Designate(ocd = StatisticsProviderFactory.Configuration.class)
 public class StatisticsProviderFactory {
+
+    @ObjectClassDefinition(
+            name = "Apache Jackrabbit Oak StatisticsProviderFactory",
+            description = "Creates a statistics providers used by Oak. By 
default if checks if Metrics (" +
+                    "See http://metrics.dropwizard.io) library is present then 
that is used. Otherwise it fallbacks " +
+                    "to default"
+    )
+    @interface Configuration {
+
+        @AttributeDefinition(options = {
+                    @Option(label = TYPE_DEFAULT, value = TYPE_DEFAULT),
+                    @Option(label = TYPE_METRIC, value = TYPE_METRIC),
+                    @Option(label = TYPE_NONE, value = TYPE_NONE)
+                })
+        String providerType() default TYPE_AUTO;
+
+    }
+
     private static final String TYPE_DEFAULT = "DEFAULT";
     private static final String TYPE_METRIC = "METRIC";
     private static final String TYPE_NONE = "NONE";
@@ -65,11 +80,6 @@ public class StatisticsProviderFactory {
     private static final String METRIC_PROVIDER_CLASS =
             "com.codahale.metrics.MetricRegistry";
 
-    @Property(value = TYPE_AUTO, options = {
-            @PropertyOption(name = TYPE_DEFAULT, value = TYPE_DEFAULT),
-            @PropertyOption(name = TYPE_METRIC, value = TYPE_METRIC),
-            @PropertyOption(name = TYPE_NONE, value = TYPE_NONE)})
-    static final String PROVIDER_TYPE = "providerType";
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
@@ -78,18 +88,18 @@ public class StatisticsProviderFactory {
      * Further Metrics would bound to default platform MBeanServer is no 
explicit
      * server is provided.
      */
-    @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY)
+    @Reference(cardinality = ReferenceCardinality.OPTIONAL)
     private MBeanServer server;
+    
     private StatisticsProvider statisticsProvider;
     private List<ServiceRegistration> regs = Lists.newArrayList();
     private ScheduledExecutorService executor;
     private BundleContext bundleContext;
 
     @Activate
-    private void activate(BundleContext context, Map<String, Object> config) {
+    private void activate(BundleContext context, Configuration config) {
         this.bundleContext = context;
-        String providerType = 
PropertiesUtil.toString(config.get(PROVIDER_TYPE), TYPE_AUTO);
-        statisticsProvider = createProvider(providerType);
+        statisticsProvider = createProvider(config.providerType());
 
         if (statisticsProvider != null) {
             
regs.add(context.registerService(StatisticsProvider.class.getName(),

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java
 Thu Sep 28 14:09:26 2017
@@ -16,13 +16,12 @@
  */
 package org.apache.jackrabbit.oak.plugins.name;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.EditorProvider;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.service.component.annotations.Component;
 
 import static com.google.common.collect.Sets.newHashSet;
 import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
@@ -35,8 +34,7 @@ import static org.apache.jackrabbit.oak.
  * as any name values are syntactically valid and that any namespace prefixes
  * are properly registered.
  */
-@Component
-@Service(EditorProvider.class)
+@Component(service = EditorProvider.class)
 public class NameValidatorProvider extends ValidatorProvider {
 
     @Override

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditorProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditorProvider.java
 Thu Sep 28 14:09:26 2017
@@ -19,8 +19,6 @@ package org.apache.jackrabbit.oak.plugin
 import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
 import static 
org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants.REP_NAMESPACES;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.Editor;
@@ -28,14 +26,14 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.SubtreeEditor;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.service.component.annotations.Component;
 
 /**
  * Validator service that checks that all node and property names as well
  * as any name values are syntactically valid and that any namespace prefixes
  * are properly registered.
  */
-@Component
-@Service(EditorProvider.class)
+@Component(service = EditorProvider.class)
 public class NamespaceEditorProvider implements EditorProvider {
 
     @Override

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorProvider.java
 Thu Sep 28 14:09:26 2017
@@ -28,8 +28,6 @@ import javax.jcr.RepositoryException;
 import javax.jcr.nodetype.NoSuchNodeTypeException;
 import javax.jcr.nodetype.NodeType;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
@@ -40,11 +38,11 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.VisibleEditor;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.service.component.annotations.Component;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@Component
-@Service(EditorProvider.class)
+@Component(service = EditorProvider.class)
 public class TypeEditorProvider implements EditorProvider {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(TypeEditorProvider.class);

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProvider.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProvider.java
 Thu Sep 28 14:09:26 2017
@@ -19,19 +19,10 @@
 package org.apache.jackrabbit.oak.plugins.observation;
 
 import static org.apache.jackrabbit.oak.commons.PathUtils.concat;
-import static org.apache.jackrabbit.oak.commons.PropertiesUtil.toInteger;
-import static org.apache.jackrabbit.oak.commons.PropertiesUtil.toBoolean;
-
-import java.util.Map;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Modified;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.PropertyState;
@@ -43,7 +34,12 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.observation.ChangeSet;
 import org.apache.jackrabbit.oak.spi.observation.ChangeSetBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.Designate;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -58,38 +54,54 @@ import org.slf4j.LoggerFactory;
  */
 @Component(
         immediate = true,
-        metatype = true,
-        label = "Apache Jackrabbit Oak Change Collector Service",
-        description = "It hooks into the commit and collects a ChangeSet of 
changed items of a commit which " +
-                "is then used to speed up observation processing"
-)
-@Property(name = "type", value = ChangeCollectorProvider.TYPE, propertyPrivate 
= true)
-@Service({ValidatorProvider.class, EditorProvider.class})
+        service = {ValidatorProvider.class, EditorProvider.class},
+        property = "type=" + ChangeCollectorProvider.TYPE)
+@Designate(ocd = ChangeCollectorProvider.Configuration.class)
 public class ChangeCollectorProvider extends ValidatorProvider {
-    public static final String TYPE = "changeCollectorProvider";
-
-    private static final Logger LOG = 
LoggerFactory.getLogger(ChangeCollectorProvider.class);
 
     private static final int DEFAULT_MAX_ITEMS = 50;
-    @Property(longValue = DEFAULT_MAX_ITEMS, label = "Maximum Number of 
Collected Items (per type)", description = "Integer value indicating maximum 
number of individual items of changes - "
-            + "such as property, nodeType, node name, path - to be collected. 
If there are "
-            + "more changes, the collection is considered failed and marked as 
such. " + "Default is "
-            + DEFAULT_MAX_ITEMS)
-    private static final String PROP_MAX_ITEMS = "maxItems";
 
     private static final int DEFAULT_MAX_PATH_DEPTH = 9;
-    @Property(longValue = DEFAULT_MAX_PATH_DEPTH, label = "Maximum depth of 
paths to collect", description = "Integer value indicating maximum depth of 
paths to collect. "
-            + "Paths deeper than this will not be individually reported, and 
instead "
-            + "a path at this max depth will be added. Note that this doesn't 
affect "
-            + "any other collected item such as property, nodeType - ie those 
will "
-            + "all be collected irrespective of this config param." + "Default 
is " + DEFAULT_MAX_PATH_DEPTH)
-    private static final String PROP_MAX_PATH_DEPTH = "maxPathDepth";
 
     private static final boolean DEFAULT_ENABLED = true;
-    @Property(boolValue = DEFAULT_ENABLED, label = "enable/disable this 
validator", 
-            description = "Whether this validator is enabled. If disabled no 
ChangeSet will be generated. Default is "
-            + DEFAULT_ENABLED)
-    private static final String PROP_ENABLED = "enabled";
+
+    @ObjectClassDefinition(
+            name = "Apache Jackrabbit Oak Change Collector Service",
+            description = "It hooks into the commit and collects a ChangeSet 
of changed items of a commit which " +
+                    "is then used to speed up observation processing"
+    )
+    @interface Configuration {
+        @AttributeDefinition(
+                name = "Maximum Number of Collected Items (per type)",
+                description = "Integer value indicating maximum number of 
individual items of changes - "
+                + "such as property, nodeType, node name, path - to be 
collected. If there are "
+                + "more changes, the collection is considered failed and 
marked as such. "
+                + "Default is " + DEFAULT_MAX_ITEMS)
+        int maxItems() default DEFAULT_MAX_ITEMS;
+
+        @AttributeDefinition(
+                name = "Maximum depth of paths to collect",
+                description = "Integer value indicating maximum depth of paths 
to collect. "
+                + "Paths deeper than this will not be individually reported, 
and instead "
+                + "a path at this max depth will be added. Note that this 
doesn't affect "
+                + "any other collected item such as property, nodeType - ie 
those will "
+                + "all be collected irrespective of this config param." + 
"Default is " + DEFAULT_MAX_PATH_DEPTH)
+        int maxPathDepth() default DEFAULT_MAX_PATH_DEPTH;
+
+        @AttributeDefinition(
+                name = "enable/disable this validator",
+                description = "Whether this validator is enabled. If disabled 
no ChangeSet will be generated. Default is "
+                        + DEFAULT_ENABLED)
+        boolean enabled() default DEFAULT_ENABLED;
+
+
+    }
+
+    public static final String TYPE = "changeCollectorProvider";
+
+    private static final Logger LOG = 
LoggerFactory.getLogger(ChangeCollectorProvider.class);
+
+    public static final String COMMIT_CONTEXT_OBSERVATION_CHANGESET = 
"oak.observation.changeSet";
 
     /**
      * There is one CollectorSupport per validation process - it is shared
@@ -277,21 +289,21 @@ public class ChangeCollectorProvider ext
     private boolean enabled = DEFAULT_ENABLED;
 
     @Activate
-    protected void activate(ComponentContext context, Map<String, ?> config) {
+    protected void activate(final Configuration config) {
         reconfig(config);
         LOG.info("activate: maxItems=" + maxItems + ", maxPathDepth=" + 
maxPathDepth + ", enabled=" + enabled);
     }
 
     @Modified
-    protected void modified(final Map<String, Object> config) {
+    protected void modified(final Configuration config) {
         reconfig(config);
         LOG.info("modified: maxItems=" + maxItems + ", maxPathDepth=" + 
maxPathDepth + ", enabled=" + enabled);
     }
 
-    private void reconfig(Map<String, ?> config) {
-        maxItems = toInteger(config.get(PROP_MAX_ITEMS), DEFAULT_MAX_ITEMS);
-        maxPathDepth = toInteger(config.get(PROP_MAX_PATH_DEPTH), 
DEFAULT_MAX_PATH_DEPTH);
-        enabled = toBoolean(config.get(PROP_ENABLED), DEFAULT_ENABLED);
+    private void reconfig(final Configuration config) {
+        maxItems = config.maxItems();
+        maxPathDepth = config.maxPathDepth();
+        enabled = config.enabled();
     }
 
     /** FOR TESTING-ONLY **/

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionHook.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionHook.java?rev=1810002&r1=1810001&r2=1810002&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionHook.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionHook.java
 Thu Sep 28 14:09:26 2017
@@ -19,14 +19,13 @@
 package org.apache.jackrabbit.oak.plugins.version;
 
 import com.google.common.base.Function;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.EditorHook;
 import org.apache.jackrabbit.oak.spi.commit.EditorProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.service.component.annotations.Component;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -66,8 +65,7 @@ import static org.apache.jackrabbit.oak.
  * </ol>
  *
  */
-@Component
-@Service(CommitHook.class)
+@Component(service = CommitHook.class)
 public class VersionHook implements CommitHook {
 
     @Nonnull


Reply via email to