Author: ryan
Date: Thu Jun 5 13:10:28 2008
New Revision: 663723
URL: http://svn.apache.org/viewvc?rev=663723&view=rev
Log:
SOLR-193 -- increaseing code coverage on SolrDocument. Fixing some missing
logic on adding vs. setting an Iterable field
Modified:
lucene/solr/trunk/src/java/org/apache/solr/common/SolrDocument.java
lucene/solr/trunk/src/test/org/apache/solr/common/SolrDocumentTest.java
Modified: lucene/solr/trunk/src/java/org/apache/solr/common/SolrDocument.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/common/SolrDocument.java?rev=663723&r1=663722&r2=663723&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/common/SolrDocument.java
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/common/SolrDocument.java Thu Jun
5 13:10:28 2008
@@ -19,6 +19,7 @@
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@@ -83,12 +84,17 @@
public void setField(String name, Object value)
{
if( value instanceof Object[] ) {
- Object[] arr = (Object[])value;
- Collection<Object> c = new ArrayList<Object>( arr.length );
- for( Object o : arr ) {
- c.add( o );
+ value = Arrays.asList( (Object[])value );
+ }
+ else if( value instanceof Collection ) {
+ // nothing
+ }
+ else if( value instanceof Iterable ) {
+ ArrayList<Object> lst = new ArrayList<Object>();
+ for( Object o : (Iterable)value ) {
+ lst.add( o );
}
- value = c;
+ value = lst;
}
_fields.put(name, value);
}
@@ -201,18 +207,6 @@
return getFieldValues( (String)key );
}
- /** Set the field Value */
- public Collection<Object> put(String key, Collection<Object> value) {
- setField( key, value );
- return null;
- }
-
- /** Remove the field Value */
- public Collection<Object> remove(Object key) {
- removeFields( (String)key );
- return null;
- }
-
// Easily Supported methods
public boolean containsKey(Object key) { return _fields.containsKey( key
); }
public Set<String> keySet() { return _fields.keySet(); }
@@ -225,6 +219,8 @@
public Set<java.util.Map.Entry<String, Collection<Object>>> entrySet()
{throw new UnsupportedOperationException();}
public void putAll(Map<? extends String, ? extends Collection<Object>>
t) {throw new UnsupportedOperationException();}
public Collection<Collection<Object>> values() {throw new
UnsupportedOperationException();}
+ public Collection<Object> put(String key, Collection<Object> value)
{throw new UnsupportedOperationException();}
+ public Collection<Object> remove(Object key) {throw new
UnsupportedOperationException();}
};
}
@@ -238,18 +234,6 @@
return getFirstValue( (String)key );
}
- /** Set the field Value */
- public Object put(String key, Object value) {
- setField( key, value );
- return null;
- }
-
- /** Remove the field Value */
- public Object remove(Object key) {
- removeFields( (String)key );
- return null;
- }
-
// Easily Supported methods
public boolean containsKey(Object key) { return _fields.containsKey( key
); }
public Set<String> keySet() { return _fields.keySet(); }
@@ -262,6 +246,8 @@
public Set<java.util.Map.Entry<String, Object>> entrySet() {throw new
UnsupportedOperationException();}
public void putAll(Map<? extends String, ? extends Object> t) {throw new
UnsupportedOperationException();}
public Collection<Object> values() {throw new
UnsupportedOperationException();}
- };
+ public Collection<Object> put(String key, Object value) {throw new
UnsupportedOperationException();}
+ public Collection<Object> remove(Object key) {throw new
UnsupportedOperationException();}
+ };
}
}
Modified:
lucene/solr/trunk/src/test/org/apache/solr/common/SolrDocumentTest.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/common/SolrDocumentTest.java?rev=663723&r1=663722&r2=663723&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/common/SolrDocumentTest.java
(original)
+++ lucene/solr/trunk/src/test/org/apache/solr/common/SolrDocumentTest.java Thu
Jun 5 13:10:28 2008
@@ -20,6 +20,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
import org.apache.solr.common.SolrDocument;
@@ -80,38 +81,83 @@
public void testUnsupportedStuff()
{
SolrDocument doc = new SolrDocument();
-
- try { doc.getFieldValueMap().clear(); fail( "should be
unsupported!" ); } catch( Exception ex ){}
- try { doc.getFieldValueMap().containsValue( null ); fail( "should be
unsupported!" ); } catch( Exception ex ){}
- try { doc.getFieldValueMap().entrySet(); fail( "should be
unsupported!" ); } catch( Exception ex ){}
- try { doc.getFieldValueMap().putAll( null ); fail( "should be
unsupported!" ); } catch( Exception ex ){}
- try { doc.getFieldValueMap().values(); fail( "should be
unsupported!" ); } catch( Exception ex ){}
+
+ try { doc.getFieldValueMap().clear(); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValueMap().containsValue( null ); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValueMap().entrySet(); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValueMap().putAll( null ); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValueMap().values(); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValueMap().remove( "key" ); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValueMap().put( "key", "value" ); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+
+ try { doc.getFieldValuesMap().clear(); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValuesMap().containsValue( null ); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValuesMap().entrySet(); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValuesMap().putAll( null ); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValuesMap().values(); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValuesMap().remove( "key" ); fail( "should be
unsupported!" ); } catch( UnsupportedOperationException ex ){}
+ try { doc.getFieldValueMap().put( "key", Collections.EMPTY_LIST ); fail(
"should be unsupported!" ); } catch( UnsupportedOperationException ex ){}
assertEquals( null, doc.getFieldValueMap().get( "aaa" ) );
doc.setField( "aaa", "bbb" );
assertEquals( "bbb", doc.getFieldValueMap().get( "aaa" ) );
- doc.getFieldValueMap().remove( "aaa" );
- assertEquals( null, doc.getFieldValueMap().get( "aaa" ) );
}
public void testAddCollections()
{
- List<String> c0 = new ArrayList<String>();
+ final List<String> c0 = new ArrayList<String>();
c0.add( "aaa" );
c0.add( "aaa" );
c0.add( "aaa" );
c0.add( "bbb" );
c0.add( "ccc" );
+ c0.add( "ddd" );
SolrDocument doc = new SolrDocument();
doc.addField( "v", c0 );
assertEquals( c0.size(), doc.getFieldValues("v").size() );
+ assertEquals( c0.get(0), doc.getFirstValue( "v" ) );
// Same thing with an array
Object[] arr = new Object[] { "aaa", "aaa", "aaa", 10, 'b' };
doc = new SolrDocument();
- doc.addField( "v", c0 );
+ doc.addField( "v", arr );
assertEquals( arr.length, doc.getFieldValues("v").size() );
+ // try the same thing with 'setField'
+ doc.setField( "v", arr );
+ assertEquals( arr.length, doc.getFieldValues("v").size() );
+
+ doc.clear();
+ assertEquals( 0, doc.getFieldNames().size() );
+
+ Iterable iter = new Iterable() {
+ public Iterator iterator() {
+ return c0.iterator();
+ }
+ };
+ doc.addField( "v", iter );
+ assertEquals( c0.size(), doc.getFieldValues("v").size() );
+ // do it again to get twice the size...
+ doc.addField( "v", iter );
+ assertEquals( c0.size()*2, doc.getFieldValues("v").size() );
+
+ // An empty list:
+ doc.setField( "empty", new ArrayList<String>() );
+ assertNull( doc.getFirstValue( "empty" ) );
+
+ // Try the JSTL accessor functions...
+ assertFalse( doc.getFieldValueMap().isEmpty() );
+ assertFalse( doc.getFieldValuesMap().isEmpty() );
+ assertEquals( 2, doc.getFieldValueMap().size() );
+ assertEquals( 2, doc.getFieldValuesMap().size() );
+ assertTrue( doc.getFieldValueMap().containsKey( "v" ) );
+ assertTrue( doc.getFieldValuesMap().containsKey( "v" ) );
+ assertTrue( doc.getFieldValueMap().keySet().contains( "v" ) );
+ assertTrue( doc.getFieldValuesMap().keySet().contains( "v" ) );
+ assertFalse( doc.getFieldValueMap().containsKey( "g" ) );
+ assertFalse( doc.getFieldValuesMap().containsKey( "g" ) );
+ assertFalse( doc.getFieldValueMap().keySet().contains( "g" ) );
+ assertFalse( doc.getFieldValuesMap().keySet().contains( "g" ) );
}
public void testDuplicate()