kwin commented on code in PR #1365:
URL: https://github.com/apache/jackrabbit-oak/pull/1365#discussion_r1832498342


##########
oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/OakSolrConfigurationProviderService.java:
##########
@@ -135,25 +176,25 @@ public class OakSolrConfigurationProviderService 
implements OakSolrConfiguration
     private OakSolrConfiguration oakSolrConfiguration;
 
     @Activate
-    protected void activate(ComponentContext componentContext) throws 
Exception {
-        pathChildrenFieldName = 
String.valueOf(componentContext.getProperties().get(PATH_CHILDREN_FIELD));
-        pathParentFieldName = 
String.valueOf(componentContext.getProperties().get(PATH_PARENT_FIELD));
-        pathExactFieldName = 
String.valueOf(componentContext.getProperties().get(PATH_EXACT_FIELD));
-        collapsedPathField= 
String.valueOf(componentContext.getProperties().get(COLLAPSED_PATH_FIELD));
-        pathDescendantsFieldName = 
String.valueOf(componentContext.getProperties().get(PATH_DESCENDANTS_FIELD));
-        catchAllField = 
String.valueOf(componentContext.getProperties().get(CATCH_ALL_FIELD));
-        depthField = 
String.valueOf(componentContext.getProperties().get(PATH_DEPTH_FIELD));
-        rows = 
Integer.parseInt(String.valueOf(componentContext.getProperties().get(ROWS)));
-        commitPolicy = 
OakSolrConfiguration.CommitPolicy.valueOf(String.valueOf(componentContext.getProperties().get(COMMIT_POLICY)));
-        useForPathRestrictions = 
Boolean.valueOf(String.valueOf(componentContext.getProperties().get(PATH_RESTRICTIONS)));
-        useForPropertyRestrictions = 
Boolean.valueOf(String.valueOf(componentContext.getProperties().get(PROPERTY_RESTRICTIONS)));
-        useForPrimaryTypes = 
Boolean.valueOf(String.valueOf(componentContext.getProperties().get(PRIMARY_TYPES_RESTRICTIONS)));
-        typeMappings = 
PropertiesUtil.toStringArray(componentContext.getProperties().get(TYPE_MAPPINGS));
-        ignoredProperties = 
PropertiesUtil.toStringArray(componentContext.getProperties().get(IGNORED_PROPERTIES));
-        usedProperties = 
PropertiesUtil.toStringArray(componentContext.getProperties().get(USED_PROPERTIES));
-        propertyMappings = 
PropertiesUtil.toStringArray(componentContext.getProperties().get(PROPERTY_MAPPINGS));
-        collapseJcrContentNodes = 
Boolean.valueOf(String.valueOf(componentContext.getProperties().get(COLLAPSE_JCR_CONTENT_NODES)));
-        collapseJcrContentParents = 
Boolean.valueOf(String.valueOf(componentContext.getProperties().get(COLLAPSE_JCR_CONTENT_PARENTS)));
+    protected void activate(Configuration configuration) {
+        pathChildrenFieldName = configuration.path_child_field();

Review Comment:
   I would remove this indirection, just store the object



##########
oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/RemoteSolrServerConfigurationProvider.java:
##########
@@ -16,50 +16,80 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.solr.osgi;
 
-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.Service;
+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.metatype.annotations.Designate;
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
+
 import 
org.apache.jackrabbit.oak.plugins.index.solr.configuration.RemoteSolrServerConfiguration;
 import 
org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfiguration;
 import 
org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfigurationDefaults;
 import 
org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfigurationProvider;
 import 
org.apache.jackrabbit.oak.plugins.index.solr.server.RemoteSolrServerProvider;
+
 import org.jetbrains.annotations.NotNull;
-import org.osgi.service.component.ComponentContext;
 
 /**
  * {@link 
org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider} for 
remote Solr installations.
  */
-@Component(metatype = true, immediate = true, label = "Apache Jackrabbit Oak 
Solr remote server configuration")
-@Service(SolrServerConfigurationProvider.class)
-@Property(name = "name", value = "remote", propertyPrivate = true)
+@Component(
+        immediate = true,
+        service = { SolrServerConfigurationProvider.class }
+)
+@Designate(
+        ocd = RemoteSolrServerConfigurationProvider.Configuration.class
+)
 public class RemoteSolrServerConfigurationProvider implements 
SolrServerConfigurationProvider<RemoteSolrServerProvider> {
 
-    @Property(value = SolrServerConfigurationDefaults.HTTP_URL, label = "Solr 
HTTP URL")
-    private static final String SOLR_HTTP_URL = "solr.http.url";
+    @ObjectClassDefinition(
+            id = 
"org.apache.jackrabbit.oak.plugins.index.solr.osgi.RemoteSolrServerConfigurationProvider",
+            name = "Apache Jackrabbit Oak Solr remote server configuration"
+    )
+    @interface Configuration {
+        @AttributeDefinition(
+                name = "Solr HTTP URL"
+        )
+        String solr_http_url() default 
SolrServerConfigurationDefaults.HTTP_URL;
 
-    @Property(value = SolrServerConfigurationDefaults.ZK_HOST, label = 
"ZooKeeper host")
-    private static final String SOLR_ZK_HOST = "solr.zk.host";
+        @AttributeDefinition(
+                name = "ZooKeeper host"
+        )
+        String solr_zk_host() default SolrServerConfigurationDefaults.ZK_HOST;
 
-    @Property(value = SolrServerConfigurationDefaults.COLLECTION, label = 
"Solr collection")
-    private static final String SOLR_COLLECTION = "solr.collection";
+        @AttributeDefinition(
+                name = "Solr collection"
+        )
+        String solr_collection() default 
SolrServerConfigurationDefaults.COLLECTION;
 
-    @Property(intValue = SolrServerConfigurationDefaults.SOCKET_TIMEOUT, label 
= "Socket timeout (ms)")
-    private static final String SOCKET_TIMEOUT = "solr.socket.timeout";
+        @AttributeDefinition(
+                name = "Socket timeout (ms)"
+        )
+        int solr_socket_timeout() default 
SolrServerConfigurationDefaults.SOCKET_TIMEOUT;
 
-    @Property(intValue = SolrServerConfigurationDefaults.CONNECTION_TIMEOUT, 
label = "Connection timeout (ms)")
-    private static final String CONNECTION_TIMEOUT = "solr.connection.timeout";
+        @AttributeDefinition(
+                name = "Connection timeout (ms)"
+        )
+        int solr_connection_timeout() default 
SolrServerConfigurationDefaults.CONNECTION_TIMEOUT;
 
-    @Property(intValue = SolrServerConfigurationDefaults.SHARDS_NO, label = 
"No. of collection shards")
-    private static final String SOLR_SHARDS_NO = "solr.shards.no";
+        @AttributeDefinition(
+                name = "No. of collection shards"
+        )
+        int solr_shards_no() default SolrServerConfigurationDefaults.SHARDS_NO;
 
-    @Property(intValue = SolrServerConfigurationDefaults.REPLICATION_FACTOR, 
label = "Replication factor")
-    private static final String SOLR_REPLICATION_FACTOR = 
"solr.replication.factor";
+        @AttributeDefinition(
+                name = "Replication factor"
+        )
+        int solr_replication_factor() default 
SolrServerConfigurationDefaults.REPLICATION_FACTOR;
 
-    @Property(value = SolrServerConfigurationDefaults.CONFIGURATION_DIRECTORY, 
label = "Solr configuration directory")
-    private static final String SOLR_CONF_DIR = "solr.conf.dir";
+        @AttributeDefinition(
+                name = "Solr configuration directory"
+        )
+        String solr_conf_dir() default 
SolrServerConfigurationDefaults.CONFIGURATION_DIRECTORY;
+
+        String name() default "remote";
+    }
 
     private String solrHttpUrl;

Review Comment:
   I would remove all fields except for `remoteSolrServerConfiguration`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to