unico       2004/07/21 02:16:49

  Modified:    src/stores/org/apache/slide/store/impl/rdbms
                        RDBMSComparableResourcesPool.java
  Log:
  account for null property provider
  
  Revision  Changes    Path
  1.8       +40 -14    
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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- RDBMSComparableResourcesPool.java 20 Jul 2004 11:24:35 -0000      1.7
  +++ RDBMSComparableResourcesPool.java 21 Jul 2004 09:16:49 -0000      1.8
  @@ -28,6 +28,7 @@
   import java.sql.ResultSet;
   import java.sql.SQLException;
   import java.util.ArrayList;
  +import java.util.Collections;
   import java.util.HashMap;
   import java.util.HashSet;
   import java.util.Iterator;
  @@ -50,6 +51,7 @@
   import org.apache.slide.search.basic.ComparableResourceImpl;
   import org.apache.slide.search.basic.ComparableResourcesPool;
   import org.apache.slide.search.basic.IBasicQuery;
  +import org.apache.slide.store.impl.rdbms.expression.RDBMSExpressionFactory;
   import org.apache.slide.store.impl.rdbms.expression.RDBMSQueryContext;
   import org.apache.slide.structure.ObjectNode;
   import org.apache.slide.util.logger.Logger;
  @@ -113,6 +115,7 @@
                       _pool.add(new ComparableResourceImpl(objects[i], _token, 
_scope, _provider));
                   }
               } catch (ServiceAccessException e) {
  +                e.printStackTrace();
                   throw new BadQueryException(e);
               } catch (SlideException e) {
                   throw new BadQueryException(e);
  @@ -173,7 +176,8 @@
                       final RequestedProperty requested = (RequestedProperty) 
iter.next();
                       final String name = requested.getName();
                       final String namespace = requested.getNamespace();
  -                    final String value = result.getString(requested.getName());
  +                    final String alias = 
RDBMSExpressionFactory.propertyToAlias(requested.getName());
  +                    final String value = result.getString(alias);
                       final NodeProperty property = new NodeProperty(name, value, 
namespace);
                       final Map properties = (Map) _selectProperties.get(requested);
                       properties.put(uri, property);
  @@ -300,12 +304,19 @@
               if (_selectProperties.containsKey(new 
RequestedPropertyImpl(propertyName, propertyNamespace))) {
                   return true;
               }
  -            return _propertyProvider.isSupportedProperty(resourceUri, propertyName, 
propertyNamespace);
  +            else if (_propertyProvider != null) {
  +                return _propertyProvider.isSupportedProperty(resourceUri, 
propertyName, propertyNamespace);
  +            }
  +            return false;
           }
   
           public Iterator getSupportedPropertiesNames(String resourceUri) throws 
SlideException {
  -            return new PropertyNamesIterator(_selectProperties.keySet().iterator(), 
  -                    _propertyProvider.getSupportedPropertiesNames(resourceUri));
  +            Iterator selected = _selectProperties.keySet().iterator();
  +            Iterator provided = null;
  +            if (_propertyProvider != null) {
  +                provided = 
_propertyProvider.getSupportedPropertiesNames(resourceUri);
  +            }
  +            return new PropertyNamesIterator(selected, provided);
           }
   
           public NodeProperty getProperty(String resourceUri, String propertyName, 
String propertyNamespace) throws SlideException {
  @@ -313,14 +324,19 @@
               if (properties != null) {
                   return (NodeProperty) properties.get(resourceUri);
               }
  -            return _propertyProvider.getProperty(resourceUri, propertyName, 
propertyNamespace);
  +            else if (_propertyProvider != null) {
  +                return _propertyProvider.getProperty(resourceUri, propertyName, 
propertyNamespace);
  +            }
  +            return null;
           }
   
           public Iterator getSupportedProperties(String resourceUri) throws 
SlideException {
  -            return new NodePropertiesIterator(
  -                    resourceUri,
  -                    _selectProperties.values().iterator(), 
  -                    _propertyProvider.getSupportedProperties(resourceUri));
  +            Iterator selected = _selectProperties.values().iterator();
  +            Iterator provided = null;
  +            if (provided != null) {
  +                provided = _propertyProvider.getSupportedProperties(resourceUri);
  +            }
  +            return new NodePropertiesIterator(resourceUri, selected, provided);
           }
   
           private static class PropertyNamesIterator implements Iterator {
  @@ -330,7 +346,12 @@
               
               private PropertyNamesIterator(Iterator selectedProperties, Iterator 
providedProperties) {
                   _selectedProperties = selectedProperties;
  -                _providedProperties = providedProperties;
  +                if (providedProperties != null) {
  +                    _providedProperties = providedProperties;
  +                }
  +                else {
  +                    _providedProperties = Collections.EMPTY_LIST.iterator();
  +                }
               }
               
               public void remove() {
  @@ -360,7 +381,12 @@
               private NodePropertiesIterator(String resourceUri, Iterator 
selectedProperties, Iterator providedProperties) {
                   _resourceUri = resourceUri;
                   _selectedProperties = selectedProperties;
  -                _providedProperties = providedProperties;
  +                if (providedProperties != null) {
  +                    _providedProperties = providedProperties;
  +                }
  +                else {
  +                    _providedProperties = Collections.EMPTY_LIST.iterator();
  +                }
               }
   
               public void remove() {
  
  
  

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

Reply via email to