You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by al...@apache.org on 2012/02/07 10:17:07 UTC

svn commit: r1241384 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java

Author: alexparvulescu
Date: Tue Feb  7 09:17:07 2012
New Revision: 1241384

URL: http://svn.apache.org/viewvc?rev=1241384&view=rev
Log:
JCR-3213 Speed up NodeIndexer.isIndexed() check

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java?rev=1241384&r1=1241383&r2=1241384&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java Tue Feb  7 09:17:07 2012
@@ -255,8 +255,9 @@ public class NodeIndexer {
                 }
 
                 InternalValue[] values = propState.getValues();
+                boolean isIndexed = isIndexed(propState.getName());
                 for (InternalValue value : values) {
-                    addValue(doc, value, propState.getName());
+                    addValue(doc, value, propState.getName(), isIndexed);
                 }
                 if (values.length > 1) {
                     // real multi-valued
@@ -312,8 +313,9 @@ public class NodeIndexer {
      * @param doc   the document.
      * @param value the internal jackrabbit value.
      * @param name  the name of the property.
+     * @param isIndexed  if the property should be added to the index
      */
-    protected void addValue(Document doc, InternalValue value, Name name) throws RepositoryException {
+    protected void addValue(Document doc, InternalValue value, Name name, boolean isIndexed) throws RepositoryException {
         String fieldName = name.getLocalName();
         try {
             fieldName = resolver.getJCRName(name);
@@ -322,52 +324,52 @@ public class NodeIndexer {
         }
         switch (value.getType()) {
             case PropertyType.BINARY:
-                if (isIndexed(name)) {
+                if (isIndexed) {
                     addBinaryValue(doc, fieldName, value);
                 }
                 break;
             case PropertyType.BOOLEAN:
-                if (isIndexed(name)) {
+                if (isIndexed) {
                     addBooleanValue(doc, fieldName, value.getBoolean());
                 }
                 break;
             case PropertyType.DATE:
-                if (isIndexed(name)) {
+                if (isIndexed) {
                     addCalendarValue(doc, fieldName, value.getDate());
                 }
                 break;
             case PropertyType.DOUBLE:
-                if (isIndexed(name)) {
+                if (isIndexed) {
                     addDoubleValue(doc, fieldName, value.getDouble());
                 }
                 break;
             case PropertyType.LONG:
-                if (isIndexed(name)) {
+                if (isIndexed) {
                     addLongValue(doc, fieldName, value.getLong());
                 }
                 break;
             case PropertyType.REFERENCE:
-                if (isIndexed(name)) {
+                if (isIndexed) {
                     addReferenceValue(doc, fieldName, value.getNodeId(), false);
                 }
                 break;
             case PropertyType.WEAKREFERENCE:
-                if (isIndexed(name)) {
+                if (isIndexed) {
                     addReferenceValue(doc, fieldName, value.getNodeId(), true);
                 }
                 break;
             case PropertyType.PATH:
-                if (isIndexed(name)) {
+                if (isIndexed) {
                     addPathValue(doc, fieldName, value.getPath());
                 }
                 break;
             case PropertyType.URI:
-                if (isIndexed(name)) {
+                if (isIndexed) {
                     addURIValue(doc, fieldName, value.getURI());
                 }
                 break;
             case PropertyType.STRING:
-                if (isIndexed(name)) {
+                if (isIndexed) {
                     // never fulltext index jcr:uuid String
                     if (name.equals(NameConstants.JCR_UUID)) {
                         addStringValue(doc, fieldName, value.getString(),
@@ -384,19 +386,19 @@ public class NodeIndexer {
                 // node type resolution in queries
                 if (name.equals(NameConstants.JCR_PRIMARYTYPE)
                         || name.equals(NameConstants.JCR_MIXINTYPES)
-                        || isIndexed(name)) {
+                        || isIndexed) {
                     addNameValue(doc, fieldName, value.getName());
                 }
                 break;
             case PropertyType.DECIMAL:
-                if (isIndexed(name)) {
+                if (isIndexed) {
                     addDecimalValue(doc, fieldName, value.getDecimal());
                 }
                 break;
             default:
                 throw new IllegalArgumentException("illegal internal value type: " + value.getType());
         }
-        addValueProperty(doc, value, name, fieldName);
+        addValueProperty(doc, value, name, fieldName, isIndexed);
     }
 
     /**
@@ -410,12 +412,14 @@ public class NodeIndexer {
      *            the internal jackrabbit value.
      * @param name
      *            the name of the property.
+     * @param isIndexed  
+     *            if the property should added to the index
      */
     protected void addValueProperty(Document doc, InternalValue value,
-            Name name, String fieldName) throws RepositoryException {
+            Name name, String fieldName, boolean isIndexed) throws RepositoryException {
 
         // skip this method if field is not indexed
-        if (!isIndexed(name)) {
+        if (!isIndexed) {
             return;
         }