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]