diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/EditN3GeneratorVTwo.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/EditN3GeneratorVTwo.java index 847f9206c..47887cc05 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/EditN3GeneratorVTwo.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/EditN3GeneratorVTwo.java @@ -52,10 +52,22 @@ public class EditN3GeneratorVTwo { continue; Set keySet = varsToVals.keySet(); for (String key : keySet) { - List value = varsToVals.get(key); - log.debug("The original value String is " + value.toString()); + List values = varsToVals.get(key); + if( values == null ){ + log.debug("skipping var " + key + " because value List is null"); + continue; + }else if( containsNullOrEmpty( values )){ + + //bdc34: what should we do if the list contains nulls or empty strings? + //for now we just skip the whole key/var. + //Maybe it would be useful to strip the nulls+empties out of the list? + + log.debug("skipping var " + key + " because it contains nulls or empty strings"); + continue; + } + log.debug("The original value String is " + values.toString()); - String valueString = org.apache.commons.lang.StringUtils.join(value, + String valueString = org.apache.commons.lang.StringUtils.join(values, ">, <"); valueString = "<" + valueString + ">"; log.debug("The multiUri value String is " + valueString); @@ -66,6 +78,10 @@ public class EditN3GeneratorVTwo { } } + private boolean containsNullOrEmpty(List values) { + return values != null && ( values.contains(null) || values.contains("") ); + } + /** * The List targets will be modified. */ diff --git a/webapp/test/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/EditN3GeneratorVTwoTest.java b/webapp/test/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/EditN3GeneratorVTwoTest.java index 90e88a3de..d498b6ef5 100644 --- a/webapp/test/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/EditN3GeneratorVTwoTest.java +++ b/webapp/test/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/EditN3GeneratorVTwoTest.java @@ -154,8 +154,34 @@ public class EditN3GeneratorVTwoTest { String not_expected = ""; Assert.assertTrue("must not sub in ", !not_expected.equals(resultN3)); + + not_expected = "<>"; + Assert.assertTrue("must not sub in <>", !not_expected.equals(resultN3)); + + Assert.assertEquals("?varXYZ", resultN3); } + @Test + public void testSubInMultiUrisEmptyString(){ + String n3 = "?varXYZ" ; + List targets = new ArrayList(); + targets.add(n3); + + Map> keyToValues = new HashMap>(); + List targetValue = new ArrayList(); + targetValue.add(""); + keyToValues.put("varXYZ", targetValue); + + gen.subInMultiUris(keyToValues, targets); + Assert.assertNotNull(targets); + Assert.assertEquals(1,targets.size()); + + String resultN3 = targets.get(0); + Assert.assertNotNull(resultN3); + Assert.assertTrue("String was empty", !resultN3.isEmpty()); + + Assert.assertEquals("?varXYZ", resultN3); + } @Test public void testSubInUrisNull(){