You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by un...@apache.org on 2005/07/04 15:51:18 UTC

svn commit: r209077 - in /jakarta/slide/trunk/src: share/org/apache/slide/search/ share/org/apache/slide/search/basic/ stores/org/apache/slide/index/lucene/ stores/org/apache/slide/index/lucene/expressions/ webdav/server/org/apache/slide/webdav/util/

Author: unico
Date: Mon Jul  4 06:51:17 2005
New Revision: 209077

URL: http://svn.apache.org/viewcvs?rev=209077&view=rev
Log:
Add version awareness to Lucene DASL implementation, see bugzilla issue 35539
Thanks to Tomasz Majchrzak <to...@poczta.fm>

Modified:
    jakarta/slide/trunk/src/share/org/apache/slide/search/RequestedResource.java
    jakarta/slide/trunk/src/share/org/apache/slide/search/basic/ComparableResourceImpl.java
    jakarta/slide/trunk/src/share/org/apache/slide/search/basic/OrderBy.java
    jakarta/slide/trunk/src/stores/org/apache/slide/index/lucene/Index.java
    jakarta/slide/trunk/src/stores/org/apache/slide/index/lucene/expressions/AbstractLuceneExpression.java
    jakarta/slide/trunk/src/webdav/server/org/apache/slide/webdav/util/ResourceWithProvidedProperties.java

Modified: jakarta/slide/trunk/src/share/org/apache/slide/search/RequestedResource.java
URL: http://svn.apache.org/viewcvs/jakarta/slide/trunk/src/share/org/apache/slide/search/RequestedResource.java?rev=209077&r1=209076&r2=209077&view=diff
==============================================================================
--- jakarta/slide/trunk/src/share/org/apache/slide/search/RequestedResource.java (original)
+++ jakarta/slide/trunk/src/share/org/apache/slide/search/RequestedResource.java Mon Jul  4 06:51:17 2005
@@ -28,6 +28,7 @@
 import org.apache.slide.common.PropertyName;
 
 import org.apache.slide.content.NodeProperty;
+import org.apache.slide.content.NodeRevisionNumber;
 
 import java.util.Iterator;
 
@@ -47,7 +48,14 @@
      * @throws     SlideException
      */
     public String getUri() throws SlideException;
-    
+
+     /**
+     * Returns the revision number of the resource.
+     *
+     * @return     the revision number of resource
+     */
+	 public NodeRevisionNumber getRevisionNumber();
+ 
     /**
      * Returns the property with the given <code>name</code> and
      * <code>namespace</code>.

Modified: jakarta/slide/trunk/src/share/org/apache/slide/search/basic/ComparableResourceImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/slide/trunk/src/share/org/apache/slide/search/basic/ComparableResourceImpl.java?rev=209077&r1=209076&r2=209077&view=diff
==============================================================================
--- jakarta/slide/trunk/src/share/org/apache/slide/search/basic/ComparableResourceImpl.java (original)
+++ jakarta/slide/trunk/src/share/org/apache/slide/search/basic/ComparableResourceImpl.java Mon Jul  4 06:51:17 2005
@@ -39,6 +39,7 @@
 import org.apache.slide.content.NodeRevisionContent;
 import org.apache.slide.content.NodeRevisionDescriptor;
 import org.apache.slide.content.NodeRevisionDescriptors;
+import org.apache.slide.content.NodeRevisionNumber;
 import org.apache.slide.search.CompareHint;
 import org.apache.slide.search.PropertyProvider;
 import org.apache.slide.search.QueryScope;
@@ -114,13 +115,31 @@
     public ComparableResourceImpl (ObjectNode objectNode, SearchToken searchToken, QueryScope scope, PropertyProvider propertyProvider)
         throws SlideException
     {
-        this (objectNode, searchToken.getSlideToken(), searchToken.getContentHelper(), scope, propertyProvider);
-        this.searchToken = searchToken;
+        this (objectNode, searchToken, scope, propertyProvider, null);
     }
     
+	/**
+	* Constructs a RequestedResource.
+	*
+	* @param objectNode        the ObjectNode for this resource
+	* @param searchToken       the SearchToken for this request
+	* @param scope             the scope of the query.
+	* @param propertyProvider  the  PropertyProvider to use (may be
+	*                          <code>null</code>).
+	* @param revisionNumber		the revision number of this resource
+	*
+	* @throws BadQueryException
+	*/
+	public ComparableResourceImpl (ObjectNode objectNode, SearchToken searchToken, QueryScope scope, PropertyProvider propertyProvider, NodeRevisionNumber revisionNumber) 
+		throws SlideException
+	{
+		this (objectNode, searchToken.getSlideToken(), searchToken.getContentHelper(), scope, propertyProvider, revisionNumber);
+		this.searchToken = searchToken;
+	}
+
     
     // private boolean isCollection;
-    
+
     /**
      * Constructs a RequestedResource.
      *
@@ -130,10 +149,11 @@
      * @param scope             the scope of the query.
      * @param propertyProvider  the  PropertyProvider to use (may be
      *                          <code>null</code>).
+	  * @param revisionNumber		the revision number of this resource
      *
      * @throws BadQueryException
      */
-    public ComparableResourceImpl (ObjectNode objectNode, SlideToken slideToken, Content contentHelper, QueryScope scope, PropertyProvider propertyProvider) throws SlideException {
+    public ComparableResourceImpl (ObjectNode objectNode, SlideToken slideToken, Content contentHelper, QueryScope scope, PropertyProvider propertyProvider, NodeRevisionNumber revisionNumber) throws SlideException {
         
         this.objectNode = objectNode;
         this.contentHelper = contentHelper;
@@ -142,13 +162,14 @@
         this.scope = scope;
         
         try {
-            revisionDescriptors =
-                contentHelper.retrieve (slideToken, objectNode.getUri());
+            revisionDescriptors = contentHelper.retrieve (slideToken, objectNode.getUri());
             
             try {
-                revisionDescriptor =
-                    contentHelper.retrieve (slideToken, revisionDescriptors);
-                
+                if (revisionNumber == null) {
+                    revisionDescriptor = contentHelper.retrieve (slideToken, revisionDescriptors);
+                } else {
+                    revisionDescriptor = contentHelper.retrieve (slideToken, revisionDescriptors, revisionNumber);
+                }
             }
             catch (org.apache.slide.content.RevisionDescriptorNotFoundException e) {
                 // The object doesn't have any revision, we create a dummy
@@ -310,6 +331,15 @@
     public String getUri() {
         return getInternalHref();
     }
+
+  /**
+     * Returns the revision number of the resource.
+     *
+     * @return     the revision number of the resource.
+     */
+	public NodeRevisionNumber getRevisionNumber() {
+		return revisionDescriptor.getRevisionNumber();
+	}
     
     /**
      * Returns the property with the given <code>propertyName</code>.
@@ -452,8 +482,9 @@
         Comparable otherValue = (Comparable) otherResource.getThisValue (hint.getPropName(), hint.getPropNamespace());
         Comparable thisValue = (Comparable) getThisValue (hint.getPropName(), hint.getPropNamespace());
         
-        if (getInternalHref().equals (otherResource.getInternalHref()))
-            result = 0;
+			if (getInternalHref().equals (otherResource.getInternalHref()) &&
+				(getRevisionNumber().equals(((ComparableResource)otherResource).getRevisionNumber())))
+            	result = 0;
             
         else if (thisValue != null && otherValue != null) {
             result = thisValue.compareTo(otherValue);
@@ -652,10 +683,7 @@
             otherUri = ((ComparableResource)otherObject).getUri();
         } catch (SlideException e) {}
 
-        if (getUri().equals (otherUri))
-            return true;
-        else
-            return false;
+        return getUri().equals (otherUri) && getRevisionNumber().equals(((ComparableResource)otherObject).getRevisionNumber());
     }
 
     public int hashCode () {

Modified: jakarta/slide/trunk/src/share/org/apache/slide/search/basic/OrderBy.java
URL: http://svn.apache.org/viewcvs/jakarta/slide/trunk/src/share/org/apache/slide/search/basic/OrderBy.java?rev=209077&r1=209076&r2=209077&view=diff
==============================================================================
--- jakarta/slide/trunk/src/share/org/apache/slide/search/basic/OrderBy.java (original)
+++ jakarta/slide/trunk/src/share/org/apache/slide/search/basic/OrderBy.java Mon Jul  4 06:51:17 2005
@@ -203,7 +203,8 @@
             ComparableResource r2 = (ComparableResource)o2;
 
             int result = 0;
-            if (r1.getInternalHref().equals (r2.getInternalHref())) {
+            if (r1.getInternalHref().equals (r2.getInternalHref()) && 
+            	   r1.getRevisionNumber().equals(r2.getRevisionNumber())) {
                 result = 0;
             }
             else {

Modified: jakarta/slide/trunk/src/stores/org/apache/slide/index/lucene/Index.java
URL: http://svn.apache.org/viewcvs/jakarta/slide/trunk/src/stores/org/apache/slide/index/lucene/Index.java?rev=209077&r1=209076&r2=209077&view=diff
==============================================================================
--- jakarta/slide/trunk/src/stores/org/apache/slide/index/lucene/Index.java (original)
+++ jakarta/slide/trunk/src/stores/org/apache/slide/index/lucene/Index.java Mon Jul  4 06:51:17 2005
@@ -65,6 +65,7 @@
 {
     public static final String KEY_FIELD_NAME = "SLIDE_KEY";
     public static final String URI_FIELD_NAME = "SLIDE_URI";
+    public static final String REVISION_FIELD_NAME = "SLIDE_REVISION";
     public static final String SCOPE_FIELD_NAME = "SLIDE_SCOPE";
     public static final String DEPTH_FIELD_NAME = "SLIDE_DEPTH";
     public static final String VERSION_FIELD_NAME = "SLIDE_VERSION";
@@ -221,6 +222,7 @@
         doc.add(unstoredString(Index.KEY_FIELD_NAME, 
                 configuration.generateKey(uri, descriptor.getRevisionNumber())));
         doc.add(storedString(Index.URI_FIELD_NAME, uri));
+        doc.add(storedString(Index.REVISION_FIELD_NAME, descriptor.getRevisionNumber().toString()));
         
         // scopes
         StringTokenizer tokenizer = new StringTokenizer(uri, "/");
@@ -305,6 +307,7 @@
         doc.add(unstoredString(Index.KEY_FIELD_NAME, 
                 configuration.generateKey(uri, descriptor.getRevisionNumber())));
         doc.add(storedString(Index.URI_FIELD_NAME, uri));
+        doc.add(storedString(Index.REVISION_FIELD_NAME, descriptor.getRevisionNumber().toString()));
         
         // scopes
         StringTokenizer tokenizer = new StringTokenizer(uri, "/");

Modified: jakarta/slide/trunk/src/stores/org/apache/slide/index/lucene/expressions/AbstractLuceneExpression.java
URL: http://svn.apache.org/viewcvs/jakarta/slide/trunk/src/stores/org/apache/slide/index/lucene/expressions/AbstractLuceneExpression.java?rev=209077&r1=209076&r2=209077&view=diff
==============================================================================
--- jakarta/slide/trunk/src/stores/org/apache/slide/index/lucene/expressions/AbstractLuceneExpression.java (original)
+++ jakarta/slide/trunk/src/stores/org/apache/slide/index/lucene/expressions/AbstractLuceneExpression.java Mon Jul  4 06:51:17 2005
@@ -53,6 +53,7 @@
 import org.apache.slide.structure.ObjectNode;
 import org.apache.slide.structure.SubjectNode;
 import org.apache.slide.util.logger.Logger;
+import org.apache.slide.content.NodeRevisionNumber;
 import org.jdom.Element;
 
 
@@ -156,7 +157,9 @@
             for (int i = 0, l = hits.length(); i < l; i++) {
                 Document doc = hits.doc(i);
                 String uri = doc.get(Index.URI_FIELD_NAME);
-                RequestedResource resource = createResource(uri);
+                String number = doc.get(Index.REVISION_FIELD_NAME);
+                NodeRevisionNumber nodeNumber = new NodeRevisionNumber(number);
+                RequestedResource resource = createResource(uri, nodeNumber);
                 result.add(resource);
             }
             
@@ -199,7 +202,7 @@
         return new TermQuery(new Term(Index.SCOPE_FIELD_NAME, "/"));
     }
 
-    protected RequestedResource createResource(String uri) throws SearchException
+    protected RequestedResource createResource(String uri, NodeRevisionNumber nodeNumber) throws SearchException
     {
         ObjectNode node = new SubjectNode(uri); // this will return the root
                                                 // folder
@@ -208,7 +211,7 @@
         
         try {
             resource = new ComparableResourceImpl(node, query.getSearchToken(),
-                    query.getScope(), factory.getPropertyProvider());
+                    query.getScope(), factory.getPropertyProvider(), nodeNumber);
         } catch (SlideException e) {
             throw new SearchException(e);
         }

Modified: jakarta/slide/trunk/src/webdav/server/org/apache/slide/webdav/util/ResourceWithProvidedProperties.java
URL: http://svn.apache.org/viewcvs/jakarta/slide/trunk/src/webdav/server/org/apache/slide/webdav/util/ResourceWithProvidedProperties.java?rev=209077&r1=209076&r2=209077&view=diff
==============================================================================
--- jakarta/slide/trunk/src/webdav/server/org/apache/slide/webdav/util/ResourceWithProvidedProperties.java (original)
+++ jakarta/slide/trunk/src/webdav/server/org/apache/slide/webdav/util/ResourceWithProvidedProperties.java Mon Jul  4 06:51:17 2005
@@ -33,6 +33,7 @@
 import org.apache.slide.content.NodeProperty;
 import org.apache.slide.content.NodeRevisionDescriptor;
 import org.apache.slide.content.NodeRevisionDescriptors;
+import org.apache.slide.content.NodeRevisionNumber;
 import org.apache.slide.search.PropertyProvider;
 import org.apache.slide.search.RequestedResource;
 
@@ -89,7 +90,16 @@
     public String getUri() {
         return revisionDescriptors.getOriginalUri();
     }
-    
+
+     /**
+     * Returns the revision number of the resource.
+     *
+     * @return     the revision number of the resource.
+     */
+	public NodeRevisionNumber getRevisionNumber() {
+		return revisionDescriptor.getRevisionNumber();
+	}
+ 
     /**
      * Returns the property with the given <code>propertyName</code>.
      *



---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org