You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by to...@apache.org on 2014/11/24 11:09:48 UTC

svn commit: r1641350 - /jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrNodeStateConfiguration.java

Author: tommaso
Date: Mon Nov 24 10:09:48 2014
New Revision: 1641350

URL: http://svn.apache.org/r1641350
Log:
OAK-2286 - adjusted also node state config to address type/property mappings correctly

Modified:
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrNodeStateConfiguration.java

Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrNodeStateConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrNodeStateConfiguration.java?rev=1641350&r1=1641349&r2=1641350&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrNodeStateConfiguration.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrNodeStateConfiguration.java Mon Nov 24 10:09:48 2014
@@ -16,9 +16,9 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.solr.configuration;
 
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedList;
 
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Type;
@@ -47,9 +47,17 @@ public abstract class OakSolrNodeStateCo
 
     @Override
     public String getFieldNameFor(Type<?> propertyType) {
-        if (Type.BINARIES.equals(propertyType) || Type.BINARY.equals(propertyType)) {
-            // TODO : use Tika / SolrCell here
-            return propertyType.toString() + "_bin";
+        Iterable<String> typeMappings = getStringValuesFor(Properties.TYPE_MAPPINGS);
+        if (typeMappings != null) {
+            for (String typeMapping : typeMappings) {
+                String[] mapping = typeMapping.split("=");
+                if (mapping.length == 2 && mapping[0] != null && mapping[1] != null) {
+                    Type<?> type = Type.fromString(mapping[0]);
+                    if (type != null && type.tag() == propertyType.tag()) {
+                        return mapping[1];
+                    }
+                }
+            }
         }
         return null;
     }
@@ -95,6 +103,17 @@ public abstract class OakSolrNodeStateCo
 
     @Override
     public String getFieldForPropertyRestriction(Filter.PropertyRestriction propertyRestriction) {
+        Iterable<String> propertyMappings = getStringValuesFor(Properties.PROPERTY_MAPPINGS);
+        if (propertyMappings != null) {
+            for (String propertyMapping : propertyMappings) {
+                String[] mapping = propertyMapping.split("=");
+                if (mapping.length == 2 && mapping[0] != null && mapping[1] != null) {
+                    if (propertyRestriction.propertyName.equals(mapping[0])) {
+                        return mapping[1];
+                    }
+                }
+            }
+        }
         return null;
     }
 
@@ -126,9 +145,12 @@ public abstract class OakSolrNodeStateCo
     @Override
     public Collection<String> getIgnoredProperties() {
         Collection<String> ignoredProperties;
-        String ignoredPropertiesString = getStringValueFor(Properties.IGNORED_PROPERTIES, SolrServerConfigurationDefaults.IGNORED_PROPERTIES);
-        if (ignoredPropertiesString != null) {
-            ignoredProperties = Arrays.asList(ignoredPropertiesString.split(","));
+        Iterable<String> ignoredPropertiesValues = getStringValuesFor(Properties.IGNORED_PROPERTIES);
+        if (ignoredPropertiesValues != null) {
+            ignoredProperties = new LinkedList<String>();
+            for (String ignoredProperty : ignoredPropertiesValues) {
+                ignoredProperties.add(ignoredProperty);
+            }
         } else {
             ignoredProperties = Collections.emptyList();
         }
@@ -171,6 +193,18 @@ public abstract class OakSolrNodeStateCo
         return value;
     }
 
+    private Iterable<String> getStringValuesFor(String propertyName) {
+        Iterable<String> values = null;
+        NodeState configurationNodeState = getConfigurationNodeState();
+        if (configurationNodeState.exists()) {
+            PropertyState property = configurationNodeState.getProperty(propertyName);
+            if (property != null && property.isArray()) {
+                values = property.getValue(Type.STRINGS);
+            }
+        }
+        return values;
+    }
+
     @Override
     public SolrServerConfiguration<EmbeddedSolrServerProvider> getSolrServerConfiguration() {
         String solrHomePath = getStringValueFor(Properties.SOLRHOME_PATH, SolrServerConfigurationDefaults.SOLR_HOME_PATH);
@@ -204,5 +238,7 @@ public abstract class OakSolrNodeStateCo
         public static final String PRIMARY_TYPES = "primaryTypes";
         public static final String PATH_RESTRICTIONS = "pathRestrictions";
         public static final String IGNORED_PROPERTIES = "ignoredProperties";
+        public static final String TYPE_MAPPINGS = "typeMappings";
+        public static final String PROPERTY_MAPPINGS = "propertyMappings";
     }
 }