From 876e2d97f1b253bc1d918f61a792d450b2e1ae30 Mon Sep 17 00:00:00 2001 From: briancaruso Date: Fri, 18 Nov 2011 17:07:52 +0000 Subject: [PATCH] Adding more unit tests for EditN3Generator. Dealing with literals better --- .../n3editing/VTwo/EditN3GeneratorVTwo.java | 4 +- .../ext/dump/BaseDumpDirective.java | 6 +- .../VTwo/EditN3GeneratorVTwoTest.java | 69 ++++++++++++++++++- 3 files changed, 74 insertions(+), 5 deletions(-) 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 1a5704e71..e23669813 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 @@ -148,7 +148,7 @@ public class EditN3GeneratorVTwo { * */ protected String subInLiterals(String var, Literal literal, String target){ - String varRegex = "\\?" + var + "(?=\\.\\p{Space}|\\p{Space})"; + String varRegex = "\\?" + var + "(?=\\p{Punct}||\\p{Space}|&)"; if (target==null ) { log.error("subInLiterals was passed a null target"); return "blankBecauseTargetOrValueWasNull"; @@ -215,7 +215,7 @@ public class EditN3GeneratorVTwo { String valueString = org.apache.commons.lang.StringUtils.join(n3Values, ","); //Substitute it in to n3 - String varRegex = "\\?" + var + "(?=\\.\\p{Space}|\\p{Space})"; + String varRegex = "\\?" + var + "(?=\\p{Punct}|\\p{Space}|$)"; String out = null; if( valueString != null ) diff --git a/webapp/src/freemarker/ext/dump/BaseDumpDirective.java b/webapp/src/freemarker/ext/dump/BaseDumpDirective.java index 53c10e6e4..5587468e9 100644 --- a/webapp/src/freemarker/ext/dump/BaseDumpDirective.java +++ b/webapp/src/freemarker/ext/dump/BaseDumpDirective.java @@ -385,7 +385,8 @@ public abstract class BaseDumpDirective implements TemplateDirectiveModel { // and other unusual places that can cause problems. Class c = method.getDeclaringClass(); - if (c.equals(java.lang.Object.class) || + if (c == null || + c.equals(java.lang.Object.class) || c.equals(java.lang.reflect.Constructor.class) || c.equals(java.lang.reflect.Field.class ) ) continue; @@ -416,7 +417,8 @@ public abstract class BaseDumpDirective implements TemplateDirectiveModel { TemplateModel value = model.get(propertyName); properties.put(propertyName, getDump(value)); }catch(Throwable th){ - log.error("problem dumping " + propertyName + " on " + object.getClass().getName(), th); + log.error("problem dumping " + propertyName + " on " + object.getClass().getName() + + " declared in " + c.getName(), th); } continue; } 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 c13e9ede2..90e88a3de 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 @@ -17,6 +17,8 @@ import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.rdf.model.ResourceFactory; +import edu.cornell.mannlib.vitro.webapp.edit.EditLiteral; + public class EditN3GeneratorVTwoTest { static EditN3GeneratorVTwo gen = new EditN3GeneratorVTwo(); @@ -63,9 +65,74 @@ public class EditN3GeneratorVTwoTest { Assert.assertEquals(".", targets.get(0)); Assert.assertEquals(";", targets.get(1)); Assert.assertEquals("]", targets.get(2)); - Assert.assertEquals(",", targets.get(3)); + Assert.assertEquals(",", targets.get(3)); } + @Test + public void testPunctAfterVarNameForLiterals(){ + List targets = Arrays.asList("?var.","?var;","?var]","?var,"); + + Map keyToValues = new HashMap(); + keyToValues.put("var", Arrays.asList(new EditLiteral("ABC", null, null))); + + gen.subInMultiLiterals(keyToValues, targets); + Assert.assertNotNull(targets); + Assert.assertEquals(4,targets.size()); + + Assert.assertEquals("\"ABC\".", targets.get(0)); + Assert.assertEquals("\"ABC\";", targets.get(1)); + Assert.assertEquals("\"ABC\"]", targets.get(2)); + Assert.assertEquals("\"ABC\",", targets.get(3)); + } + + @Test + public void testLiterlasWithDatatypes(){ + List targets = Arrays.asList("?var.","?var;","?var]","?var,","?var", " ?var "); + + String value = "ABC"; + String datatype = "http://someDataType.com/bleck"; + String expected = '"' + value + '"' + "^^<" + datatype + ">"; + + Map keyToValues = new HashMap(); + keyToValues.put("var", Arrays.asList(new EditLiteral(value,datatype,null))); + + gen.subInMultiLiterals(keyToValues, targets); + Assert.assertNotNull(targets); + Assert.assertEquals(6,targets.size()); + + Assert.assertEquals( expected + ".", targets.get(0)); + Assert.assertEquals(expected + ";", targets.get(1)); + Assert.assertEquals(expected + "]", targets.get(2)); + Assert.assertEquals(expected + ",", targets.get(3)); + Assert.assertEquals(expected , targets.get(4)); + Assert.assertEquals(" " + expected + " ", targets.get(5)); + } + + @Test + public void testLiterlasWithLang(){ + List targets = Arrays.asList("?var.","?var;","?var]","?var,","?var", " ?var "); + + String value = "ABC"; + String datatype = null; + String lang = "XYZ"; + String expected = '"' + value + '"' + "@" + lang + ""; + + Map keyToValues = new HashMap(); + keyToValues.put("var", Arrays.asList(new EditLiteral(value,datatype,lang))); + + gen.subInMultiLiterals(keyToValues, targets); + Assert.assertNotNull(targets); + Assert.assertEquals(6,targets.size()); + + Assert.assertEquals( expected + ".", targets.get(0)); + Assert.assertEquals(expected + ";", targets.get(1)); + Assert.assertEquals(expected + "]", targets.get(2)); + Assert.assertEquals(expected + ",", targets.get(3)); + Assert.assertEquals(expected , targets.get(4)); + Assert.assertEquals(" " + expected + " ", targets.get(5)); + } + + @Test public void testSubInMultiUrisNull(){ String n3 = "?varXYZ" ;