Author: rickdn
Date: Mon Mar 26 16:20:27 2012
New Revision: 1305427
URL: http://svn.apache.org/viewvc?rev=1305427&view=rev
Log:
OODT-427 #resolve fixed QueryResult.toString handles empty metadata, test
cases adjusted accordingly
Added:
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/structs/query/
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/structs/query/TestQueryResult.java
Modified:
oodt/trunk/CHANGES.txt
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/query/QueryResult.java
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/cli/action/TestSqlQueryCliAction.java
Modified: oodt/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/oodt/trunk/CHANGES.txt?rev=1305427&r1=1305426&r2=1305427&view=diff
==============================================================================
--- oodt/trunk/CHANGES.txt (original)
+++ oodt/trunk/CHANGES.txt Mon Mar 26 16:20:27 2012
@@ -4,6 +4,9 @@ Apache OODT Change Log
Release 0.4: Current Development
--------------------------------------------
+* OODT-427 filemgr query throws "String index out of range: -1" when some
products have undefined
+ metadata values (rickdn)
+
* OODT-405 Introduced new syntax for environment variable replacement in
opendapps module (luca)
* OODT-425 CAS-PGE logger unit-test fails because it sometimes finds logger
lock file (bfoster)
Modified:
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/query/QueryResult.java
URL:
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/query/QueryResult.java?rev=1305427&r1=1305426&r2=1305427&view=diff
==============================================================================
---
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/query/QueryResult.java
(original)
+++
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/query/QueryResult.java
Mon Mar 26 16:20:27 2012
@@ -18,9 +18,8 @@
package org.apache.oodt.cas.filemgr.structs.query;
//JDK imports
+import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
-import java.util.Map.Entry;
import org.springframework.util.StringUtils;
@@ -76,23 +75,48 @@ public class QueryResult {
return convertMetadataToString(this.metadata, this.toStringFormat);
}
- private static String convertMetadataToString(Metadata metadata,
- String format) {
+ private static String convertMetadataToString(Metadata metadata, String
format) {
if (format == null)
return concatMetadataIntoString(metadata);
String outputString = format;
- for (Entry<String, Object> entry : (Set<Entry<String, Object>>)
metadata
- .getHashtable().entrySet())
- outputString = outputString.replaceAll("\\$" + entry.getKey(),
StringUtils.collectionToDelimitedString((List<String>)entry.getValue(), ","));
+ for (String key : metadata.getAllKeys())
+ outputString = outputString.replaceAll("\\$" + key,
+
StringUtils.collectionToCommaDelimitedString(metadata.getAllMetadata(key)));
return outputString;
}
private static String concatMetadataIntoString(Metadata metadata) {
- String outputString = "";
- for (Entry<String, Object> entry : (Set<Entry<String, Object>>)
metadata
- .getHashtable().entrySet())
- outputString +=
StringUtils.collectionToDelimitedString((List<String>)entry.getValue(), ",") +
",";
- return outputString.substring(0, outputString.length() - 1);
+ List<String> outputString = new ArrayList<String>();
+ for (String key : metadata.getAllKeys())
+
outputString.add(StringUtils.collectionToCommaDelimitedString(metadata.getAllMetadata(key)));
+ return StringUtils.collectionToCommaDelimitedString(outputString);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ QueryResult other = (QueryResult) obj;
+ if (metadata == null) {
+ if (other.metadata != null)
+ return false;
+ } else if (!metadata.equals(other.metadata))
+ return false;
+ if (product == null) {
+ if (other.product != null)
+ return false;
+ } else if (!product.equals(other.product))
+ return false;
+ if (toStringFormat == null) {
+ if (other.toStringFormat != null)
+ return false;
+ } else if (!toStringFormat.equals(other.toStringFormat))
+ return false;
+ return true;
}
-
+
}
Modified:
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/cli/action/TestSqlQueryCliAction.java
URL:
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/cli/action/TestSqlQueryCliAction.java?rev=1305427&r1=1305426&r2=1305427&view=diff
==============================================================================
---
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/cli/action/TestSqlQueryCliAction.java
(original)
+++
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/cli/action/TestSqlQueryCliAction.java
Mon Mar 26 16:20:27 2012
@@ -126,7 +126,10 @@ public class TestSqlQueryCliAction exten
cliAction.setVersionConverter(VERSION_CONV);
cliAction.execute(printer);
assertEquals(2, printer.getPrintedMessages().size());
- assertEquals("data.dat,Bob,Billy", printer.getPrintedMessages().get(0));
+ String msg = printer.getPrintedMessages().get(0);
+ assertTrue(msg.contains("data.dat"));
+ assertTrue(msg.contains("Bob,Billy"));
+ assertEquals(",", msg.replace("data.dat","").replace("Bob,Billy",""));
assertEquals("\n", printer.getPrintedMessages().get(1));
assertEquals(SORT_BY, clientSetComplexQuery.getSortByMetKey());
assertNull(clientSetComplexQuery.getToStringResultFormat());
Added:
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/structs/query/TestQueryResult.java
URL:
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/structs/query/TestQueryResult.java?rev=1305427&view=auto
==============================================================================
---
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/structs/query/TestQueryResult.java
(added)
+++
oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/structs/query/TestQueryResult.java
Mon Mar 26 16:20:27 2012
@@ -0,0 +1,79 @@
+package org.apache.oodt.cas.filemgr.structs.query;
+
+import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
+import org.apache.oodt.cas.filemgr.structs.Product;
+import org.apache.oodt.cas.metadata.Metadata;
+
+import java.util.Arrays;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+public class TestQueryResult extends TestCase {
+
+ private QueryResult qr;
+
+ @Override
+ protected void setUp() throws Exception {
+ Product p = new Product();
+ p.setProductId("TestProductId");
+ Metadata m = new Metadata();
+ m.addMetadata(CoreMetKeys.FILENAME, "datafile.dat");
+ m.addMetadata("Owners", Arrays.asList("Bob", "Billy"));
+ qr = new QueryResult(p, m);
+ }
+
+ public void testToString() {
+ String str = qr.toString();
+ assertTrue(str.contains("datafile.dat"));
+ assertTrue(str.contains("Bob,Billy"));
+ assertEquals(",", str.replace("datafile.dat", "").replace("Bob,Billy",""));
+ }
+
+ public void testToStringFormat() {
+ qr.setToStringFormat("$Owners,$Filename");
+ assertEquals("Bob,Billy,datafile.dat", qr.toString());
+
+ qr.setToStringFormat("$Filename\t$Owners");
+ List<String> list = Arrays.asList(qr.toString().split("\t"));
+ assertEquals(2, list.size());
+ assertEquals("datafile.dat", list.get(0));
+ assertEquals("Bob,Billy", list.get(1));
+ }
+
+ public void testToStringEmpty() {
+ qr.setMetadata(new Metadata());
+ assertEquals("", qr.toString());
+ }
+
+ public void testEquals() {
+ assertEquals(qr, qr);
+ assertFalse(qr.equals(null));
+ assertFalse(qr.equals(0));
+
+ QueryResult metnull = new QueryResult(qr.getProduct(), null);
+ assertFalse(metnull.equals(qr));
+ assertFalse(qr.equals(metnull));
+ assertEquals(metnull, new QueryResult(qr.getProduct(), null));
+
+ QueryResult prodnull = new QueryResult(null, new
Metadata(qr.getMetadata()));
+ assertFalse(prodnull.equals(qr));
+ assertFalse(qr.equals(prodnull));
+ assertEquals(prodnull, new QueryResult(null, new
Metadata(qr.getMetadata())));
+
+ QueryResult equal = new QueryResult(qr.getProduct(), new
Metadata(qr.getMetadata()));
+ assertEquals(qr, equal);
+ assertEquals(equal, qr);
+
+ QueryResult fmt = new QueryResult(qr.getProduct(), new
Metadata(qr.getMetadata()));
+ fmt.setToStringFormat("blah");
+ assertFalse(qr.equals(fmt));
+ assertFalse(fmt.equals(qr));
+
+ QueryResult fmt2 = new QueryResult(qr.getProduct(), new
Metadata(qr.getMetadata()));
+ fmt2.setToStringFormat("blah");
+ assertEquals(fmt, fmt2);
+ assertEquals(fmt2, fmt);
+ }
+
+}