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