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]




--
Guido Casper
-------------------------------------------------
S&N AG              Tel.: 05251/1581-87
netBank solutions   Fax : 05251/1581-71
Klingenderstr. 5    <mailto:[EMAIL PROTECTED]>
D-33100 Paderborn   http://www.s-und-n.de
-------------------------------------------------
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]

Reply via email to