Hm, I wondered what this method of SearchImpl (setting PropertyProvider of a SearchQuery to null and leading to the NPE) is good for.

public SearchQuery createSearchQuery (String grammarUri,
Element queryElement,
SlideToken token,
int maxDepth,
String requestUri)
throws BadQueryException
{
return createSearchQuery (grammarUri, queryElement, token, maxDepth, null, requestUri);
}



I did a search in Eclipse and found 5 other places where it's used. I guess these sould be fixed in a similar manner?


Guido


Guido Casper wrote:
This unfortunately introduced another NPE on MOVE requests which the attached fix solved for me.

Guido


[EMAIL PROTECTED] wrote:

unico       2004/07/20 04:24:36

Modified: src/stores/org/apache/slide/store/impl/rdbms
RDBMSComparableResourcesPool.java
Log:
fix NPE when using <allprop> within select as reported by Guido Casper
Revision Changes Path
1.7 +70 -6 jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/RDBMSComparableResourcesPool.java


Index: RDBMSComparableResourcesPool.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/RDBMSComparableResourcesPool.java,v


retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- RDBMSComparableResourcesPool.java 14 Jul 2004 19:19:48 -0000 1.6
+++ RDBMSComparableResourcesPool.java 20 Jul 2004 11:24:35 -0000 1.7
@@ -34,6 +34,7 @@
import java.util.Map;
import java.util.Set;
+import org.apache.slide.common.PropertyName;
import org.apache.slide.common.RequestedProperties;
import org.apache.slide.common.RequestedProperty;
import org.apache.slide.common.RequestedPropertyImpl;
@@ -64,7 +65,7 @@
private final SearchToken _token;
private final QueryScope _scope;
private final Map _selectProperties;
- private PropertyProvider _provider;
+ private final PropertyProvider _provider;
private Set _pool;
@@ -303,7 +304,8 @@
}
public Iterator getSupportedPropertiesNames(String resourceUri) throws SlideException {
- return null;
+ return new PropertyNamesIterator(_selectProperties.keySet().iterator(), + _propertyProvider.getSupportedPropertiesNames(resourceUri));
}
public NodeProperty getProperty(String resourceUri, String propertyName, String propertyNamespace) throws SlideException {
@@ -315,8 +317,70 @@
}
public Iterator getSupportedProperties(String resourceUri) throws SlideException {
- return null;
+ return new NodePropertiesIterator(
+ resourceUri,
+ _selectProperties.values().iterator(), + _propertyProvider.getSupportedProperties(resourceUri));
+ }
+
+ private static class PropertyNamesIterator implements Iterator {
+
+ private final Iterator _selectedProperties;
+ private final Iterator _providedProperties;
+ + private PropertyNamesIterator(Iterator selectedProperties, Iterator providedProperties) {
+ _selectedProperties = selectedProperties;
+ _providedProperties = providedProperties;
+ }
+ + public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean hasNext() {
+ return _selectedProperties.hasNext() || _providedProperties.hasNext();
+ }
+
+ public Object next() {
+ if (_selectedProperties.hasNext()) {
+ RequestedProperty property = (RequestedProperty) _selectedProperties.next();
+ return new PropertyName(property.getName(), property.getNamespace());
+ }
+ return _providedProperties.next();
+ }
+ + }
+ + private static class NodePropertiesIterator implements Iterator {
+
+ private String _resourceUri;
+ private Iterator _selectedProperties;
+ private Iterator _providedProperties;
+
+ private NodePropertiesIterator(String resourceUri, Iterator selectedProperties, Iterator providedProperties) {
+ _resourceUri = resourceUri;
+ _selectedProperties = selectedProperties;
+ _providedProperties = providedProperties;
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean hasNext() {
+ return _selectedProperties.hasNext() || _providedProperties.hasNext();
+ }
+
+ public Object next() {
+ if (_selectedProperties.hasNext()) {
+ Map properties = (Map) _selectedProperties.next();
+ return (NodeProperty) properties.get(_resourceUri);
+ }
+ return _providedProperties.next();
+ }
+
}
}
+ }
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]






------------------------------------------------------------------------

Index: MoveMethod.java
===================================================================
RCS file: /home/cvspublic/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/MoveMethod.java,v
retrieving revision 1.69
diff -u -r1.69 MoveMethod.java
--- MoveMethod.java 24 Jun 2004 13:18:52 -0000 1.69
+++ MoveMethod.java 20 Jul 2004 15:52:09 -0000
@@ -52,6 +52,7 @@
import org.apache.slide.webdav.WebdavException;
import org.apache.slide.webdav.WebdavServletConfig;
import org.apache.slide.webdav.event.WebdavEvent;
+import org.apache.slide.webdav.util.ComputedPropertyProvider;
import org.apache.slide.webdav.util.DaslConstants;
import org.apache.slide.webdav.util.DeltavConstants;
import org.apache.slide.webdav.util.PreconditionViolationException;
@@ -474,6 +475,7 @@
basicSearch,
slideToken,
Integer.MAX_VALUE,
+ new ComputedPropertyProvider(token, slideToken, getSlideContextPath(), getConfig()),
requestURIWithScope.toString());
SearchQueryResult queryResult = searchHelper.search(slideToken, searchQuery);




------------------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to