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 <[EMAIL PROTECTED]>
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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]