vhardy 01/10/16 03:38:10 Modified: test-sources/org/apache/batik/test DefaultTestSuite.java test-sources/org/apache/batik/test/svg SVGAlternateStyleSheetRenderingAccuracyTest.java SVGMediaRenderingAccuracyTest.java SVGRenderingAccuracyTest.java SVGRenderingAccuracyTestValidator.java test-sources/org/apache/batik/test/xml XMLReflect.java XMLTestSuiteLoader.java Added: test-sources/org/apache/batik/test/svg ParametrizedRenderingAccuracyTest.java PreconfiguredRenderingTest.java SVGReferenceRenderingAccuracyTest.java SamplesRenderingTest.java Log: Improved test suite: a. The "class" attribute in testSuites is now inherited. b. Added a notion of testGroup c. Improved output for xml test reports. Revision Changes Path 1.4 +13 -4 xml-batik/test-sources/org/apache/batik/test/DefaultTestSuite.java Index: DefaultTestSuite.java =================================================================== RCS file: /home/cvs/xml-batik/test-sources/org/apache/batik/test/DefaultTestSuite.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DefaultTestSuite.java 2001/10/04 08:25:36 1.3 +++ DefaultTestSuite.java 2001/10/16 10:38:10 1.4 @@ -15,13 +15,13 @@ * Default implementation of the <tt>TestSuite</tt> interface. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: DefaultTestSuite.java,v 1.3 2001/10/04 08:25:36 vhardy Exp $ + * @version $Id: DefaultTestSuite.java,v 1.4 2001/10/16 10:38:10 vhardy Exp $ */ public class DefaultTestSuite extends AbstractTest implements TestSuite { /** * This Test's name */ - private String name = this.getClass().getName(); + private String name = null; /** * Stores the list of child tests @@ -66,11 +66,20 @@ } public String getName(){ - return name; + if(name != null){ + return name; + } + + String id = getId(); + if(id != null && !"".equals(id)){ + return id; + } + + return this.getClass().getName(); } public void setName(String name){ - if(name == null){ + if(name == null && !"".equals(name)){ throw new IllegalArgumentException(); } 1.3 +5 -17 xml-batik/test-sources/org/apache/batik/test/svg/SVGAlternateStyleSheetRenderingAccuracyTest.java Index: SVGAlternateStyleSheetRenderingAccuracyTest.java =================================================================== RCS file: /home/cvs/xml-batik/test-sources/org/apache/batik/test/svg/SVGAlternateStyleSheetRenderingAccuracyTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- SVGAlternateStyleSheetRenderingAccuracyTest.java 2001/10/12 07:37:19 1.2 +++ SVGAlternateStyleSheetRenderingAccuracyTest.java 2001/10/16 10:38:10 1.3 @@ -17,27 +17,15 @@ * alternate stylesheet label. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a> - * @version $Id: SVGAlternateStyleSheetRenderingAccuracyTest.java,v 1.2 2001/10/12 07:37:19 hillion Exp $ + * @version $Id: SVGAlternateStyleSheetRenderingAccuracyTest.java,v 1.3 2001/10/16 10:38:10 vhardy Exp $ */ public class SVGAlternateStyleSheetRenderingAccuracyTest - extends SVGRenderingAccuracyTest { - + extends ParametrizedRenderingAccuracyTest { /** - * The stylesheet to use for rendering. - */ - protected String title; - - /** * Constructor. - * @param svgURL the URL String for the SVG document being tested. - * @param refImgURL the URL for the reference image. - * @param t The stylesheet title to use. */ - public SVGAlternateStyleSheetRenderingAccuracyTest(String svgURL, - String refImgURL, - String t) { - super(svgURL, refImgURL); - title = t; + public SVGAlternateStyleSheetRenderingAccuracyTest(){ + super(); } /** @@ -48,7 +36,7 @@ */ protected Document manipulateSVGDocument(Document doc) { // enable the stylesheet - ((SVGOMDocument)doc).enableAlternateStyleSheet(title); + ((SVGOMDocument)doc).enableAlternateStyleSheet(parameter); return doc; } } 1.4 +4 -22 xml-batik/test-sources/org/apache/batik/test/svg/SVGMediaRenderingAccuracyTest.java Index: SVGMediaRenderingAccuracyTest.java =================================================================== RCS file: /home/cvs/xml-batik/test-sources/org/apache/batik/test/svg/SVGMediaRenderingAccuracyTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- SVGMediaRenderingAccuracyTest.java 2001/10/12 14:35:06 1.3 +++ SVGMediaRenderingAccuracyTest.java 2001/10/16 10:38:10 1.4 @@ -16,35 +16,17 @@ * media. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a> - * @version $Id: SVGMediaRenderingAccuracyTest.java,v 1.3 2001/10/12 14:35:06 hillion Exp $ + * @version $Id: SVGMediaRenderingAccuracyTest.java,v 1.4 2001/10/16 10:38:10 vhardy Exp $ */ -public class SVGMediaRenderingAccuracyTest extends SVGRenderingAccuracyTest { - +public class SVGMediaRenderingAccuracyTest + extends ParametrizedRenderingAccuracyTest { /** - * The media to use for rendering. - */ - protected String media; - - /** - * Constructor. - * @param svgURL the URL String for the SVG document being tested. - * @param refImgURL the URL for the reference image. - * @param m The media to use. - */ - public SVGMediaRenderingAccuracyTest(String svgURL, - String refImgURL, - String m) { - super(svgURL, refImgURL); - media = m; - } - - /** * Returns the <tt>ImageTranscoder</tt> the Test should * use */ public ImageTranscoder getTestImageTranscoder(){ ImageTranscoder t = super.getTestImageTranscoder(); - t.addTranscodingHint(PNGTranscoder.KEY_MEDIA, media); + t.addTranscodingHint(PNGTranscoder.KEY_MEDIA, parameter); return t; } 1.15 +15 -1 xml-batik/test-sources/org/apache/batik/test/svg/SVGRenderingAccuracyTest.java Index: SVGRenderingAccuracyTest.java =================================================================== RCS file: /home/cvs/xml-batik/test-sources/org/apache/batik/test/svg/SVGRenderingAccuracyTest.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- SVGRenderingAccuracyTest.java 2001/10/11 18:37:33 1.14 +++ SVGRenderingAccuracyTest.java 2001/10/16 10:38:10 1.15 @@ -64,7 +64,7 @@ * all pixel values are the same). * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: SVGRenderingAccuracyTest.java,v 1.14 2001/10/11 18:37:33 hillion Exp $ + * @version $Id: SVGRenderingAccuracyTest.java,v 1.15 2001/10/16 10:38:10 vhardy Exp $ */ public class SVGRenderingAccuracyTest extends AbstractTest { /** @@ -278,6 +278,20 @@ */ public SVGRenderingAccuracyTest(String svgURL, String refImgURL){ + setConfig(svgURL, refImgURL); + } + + /** + * For subclasses + */ + protected SVGRenderingAccuracyTest(){ + } + + /** + * Sets this test's config. + */ + public void setConfig(String svgURL, + String refImgURL){ if(svgURL == null){ throw new IllegalArgumentException(); } 1.5 +67 -1 xml-batik/test-sources/org/apache/batik/test/svg/SVGRenderingAccuracyTestValidator.java Index: SVGRenderingAccuracyTestValidator.java =================================================================== RCS file: /home/cvs/xml-batik/test-sources/org/apache/batik/test/svg/SVGRenderingAccuracyTestValidator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- SVGRenderingAccuracyTestValidator.java 2001/10/08 14:51:35 1.4 +++ SVGRenderingAccuracyTestValidator.java 2001/10/16 10:38:10 1.5 @@ -34,7 +34,7 @@ * they are handled properly by the class. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: SVGRenderingAccuracyTestValidator.java,v 1.4 2001/10/08 14:51:35 vhardy Exp $ + * @version $Id: SVGRenderingAccuracyTestValidator.java,v 1.5 2001/10/16 10:38:10 vhardy Exp $ */ public class SVGRenderingAccuracyTestValidator extends DefaultTestSuite { /** @@ -106,6 +106,7 @@ addTest(new SameSizeDifferentContent()); addTest(new AccurateRendering()); addTest(new AccurateRenderingWithVariation()); + addTest(new DefaultConfigTest()); } /** @@ -140,6 +141,71 @@ tmpFile.deleteOnExit(); return tmpFile.toURL(); + } + + + /** + * Validates that the default parameters computation is + * working as expected. + */ + static class DefaultConfigTest extends AbstractTest { + String svgURL = "samples/anne.svg"; + String expectedRefImgURL = "test-references/samples/anne.png"; + String expectedVariationURL = "test-references/samples/accepted-variation/anne.png"; + String expectedCandidateURL = "test-references/samples/candidate-variation/anne.png"; + + String ERROR_EXCEPTION_WHILE_BUILDING_TEST + = "error.exception.while.building.test"; + + String ERROR_UNEXPECTED_REFERENCE_IMAGE_URL + = "error.unexpected.reference.image.url"; + + String ERROR_UNEXPECTED_VARIATION_URL + = "error.unexpected.variation.url"; + + String ERROR_UNEXPECTED_CANDIDATE_URL + = "error.unexpected.candidate.url"; + + String ENTRY_KEY_EXPECTED_VALUE + = "entry.key.expected.value"; + + String ENTRY_KEY_FOUND_VALUE + = "entry.key.found.value"; + + public DefaultConfigTest(){ + super(); + setId("defaultTest"); + } + + public TestReport runImpl() throws Exception { + SVGRenderingAccuracyTest t + = new SamplesRenderingTest(); + + t.setId(svgURL); + + if(!t.refImgURL.toString().endsWith(expectedRefImgURL)){ + TestReport r = reportError(ERROR_UNEXPECTED_REFERENCE_IMAGE_URL); + r.addDescriptionEntry(ENTRY_KEY_EXPECTED_VALUE, expectedRefImgURL); + r.addDescriptionEntry(ENTRY_KEY_FOUND_VALUE, "" + t.refImgURL); + return r; + } + + if(!t.variationURL.toString().endsWith(expectedVariationURL)){ + TestReport r = reportError(ERROR_UNEXPECTED_VARIATION_URL); + r.addDescriptionEntry(ENTRY_KEY_EXPECTED_VALUE, expectedVariationURL); + r.addDescriptionEntry(ENTRY_KEY_FOUND_VALUE, "" + t.variationURL); + return r; + } + + if(!t.saveVariation.toURL().toString().endsWith(expectedCandidateURL)){ + TestReport r = reportError(ERROR_UNEXPECTED_CANDIDATE_URL); + r.addDescriptionEntry(ENTRY_KEY_EXPECTED_VALUE, expectedCandidateURL); + r.addDescriptionEntry(ENTRY_KEY_FOUND_VALUE, "" + t.saveVariation.toURL().toString()); + return r; + } + + return reportSuccess(); + } } 1.1 xml-batik/test-sources/org/apache/batik/test/svg/ParametrizedRenderingAccuracyTest.java Index: ParametrizedRenderingAccuracyTest.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.batik.test.svg; import java.io.File; import org.apache.batik.dom.svg.SVGOMDocument; import org.apache.batik.test.AbstractTest; import org.w3c.dom.Document; /** * Base class for tests which take an additional parameter in addition * to the SVG file. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> * @version $Id: ParametrizedRenderingAccuracyTest.java,v 1.1 2001/10/16 10:38:10 vhardy Exp $ */ public class ParametrizedRenderingAccuracyTest extends SamplesRenderingTest { public static final char PARAMETER_SEPARATOR = '-'; /** * Parameter which was passed appended to the SVG file */ protected String parameter; /** * Constructor. */ public ParametrizedRenderingAccuracyTest(){ super(); } public char getParameterSeparator(){ return PARAMETER_SEPARATOR; } public void setId(String id){ this.id = id; String svgFile = id; int n = svgFile.lastIndexOf(getParameterSeparator()); if(n == -1 || n+1 >= svgFile.length() ){ throw new IllegalArgumentException(id); } parameter = svgFile.substring(n+1, svgFile.length()); svgFile = svgFile.substring(0, n); String[] dirNfile = breakSVGFile(svgFile); setConfig(buildSVGURL(dirNfile[0], dirNfile[1]), buildRefImgURL(dirNfile[0], dirNfile[1])); setVariationURL(buildVariationURL(dirNfile[0], dirNfile[1])); setSaveVariation(new File(buildSaveVariationFile(dirNfile[0], dirNfile[1]))); } /** * Gives a chance to the subclass to control the construction * of the reference PNG file from the svgFile name * The refImgURL is built as: * getRefImagePrefix() + svgDir + getRefImageSuffix() + svgFile */ protected String buildRefImgURL(String svgDir, String svgFile){ return getRefImagePrefix() + svgDir + getRefImageSuffix() + svgFile + parameter + PNG_EXTENSION; } /** * Gives a chance to the subclass to control the construction * of the variation URL, which is built as: * getVariationPrefix() + svgDir + getVariationSuffix() + svgFile + parameter + PNG_EXTENSION */ public String buildVariationURL(String svgDir, String svgFile){ return getVariationPrefix() + svgDir + getVariationSuffix() + svgFile + parameter + PNG_EXTENSION; } /** * Gives a chance to the subclass to control the construction * of the saveVariation URL, which is built as: * getSaveVariationPrefix() + svgDir + getSaveVariationSuffix() + svgFile + parameter + PNG_EXTENSION */ public String buildSaveVariationFile(String svgDir, String svgFile){ return getSaveVariationPrefix() + svgDir + getSaveVariationSuffix() + svgFile + parameter + PNG_EXTENSION; } } 1.1 xml-batik/test-sources/org/apache/batik/test/svg/PreconfiguredRenderingTest.java Index: PreconfiguredRenderingTest.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.batik.test.svg; import java.io.File; /** * Convenience class for creating a SVGRenderingAccuracyTest with predefined * rules for the various configuration parameters. * * @author <a href="[EMAIL PROTECTED]">Vincent Hardy</a> * @version $Id: PreconfiguredRenderingTest.java,v 1.1 2001/10/16 10:38:10 vhardy Exp $ */ public abstract class PreconfiguredRenderingTest extends SVGRenderingAccuracyTest { /** * Generic constants */ public static final String PNG_EXTENSION = ".png"; public static final String SVG_EXTENSION = ".svg"; public static final char PATH_SEPARATOR = '/'; /** * For preconfigured tests, the configuration has to be * derived from the test identifier. The identifier should * characterize the SVG file to be tested. */ public void setId(String id){ super.setId(id); String svgFile = id; String[] dirNfile = breakSVGFile(svgFile); setConfig(buildSVGURL(dirNfile[0], dirNfile[1]), buildRefImgURL(dirNfile[0], dirNfile[1])); setVariationURL(buildVariationURL(dirNfile[0], dirNfile[1])); setSaveVariation(new File(buildSaveVariationFile(dirNfile[0], dirNfile[1]))); } /** * Gives a chance to the subclass to prepend a prefix to the * svgFile name. * The svgURL is built as: * getSVGURLPrefix() + svgDir + svgFile */ protected String buildSVGURL(String svgDir, String svgFile){ return getSVGURLPrefix() + svgDir + svgFile + SVG_EXTENSION; } protected abstract String getSVGURLPrefix(); /** * Gives a chance to the subclass to control the construction * of the reference PNG file from the svgFile name * The refImgURL is built as: * getRefImagePrefix() + svgDir + getRefImageSuffix() + svgFile */ protected String buildRefImgURL(String svgDir, String svgFile){ return getRefImagePrefix() + svgDir + getRefImageSuffix() + svgFile + PNG_EXTENSION; } protected abstract String getRefImagePrefix(); protected abstract String getRefImageSuffix(); /** * Gives a chance to the subclass to control the construction * of the variation URL, which is built as: * getVariationPrefix() + svgDir + getVariationSuffix() + svgFile + PNG_EXTENSION */ public String buildVariationURL(String svgDir, String svgFile){ return getVariationPrefix() + svgDir + getVariationSuffix() + svgFile + PNG_EXTENSION; } protected abstract String getVariationPrefix(); protected abstract String getVariationSuffix(); /** * Gives a chance to the subclass to control the construction * of the saveVariation URL, which is built as: * getSaveVariationPrefix() + svgDir + getSaveVariationSuffix() + svgFile + PNG_EXTENSION */ public String buildSaveVariationFile(String svgDir, String svgFile){ return getSaveVariationPrefix() + svgDir + getSaveVariationSuffix() + svgFile + PNG_EXTENSION; } protected abstract String getSaveVariationPrefix(); protected abstract String getSaveVariationSuffix(); protected String[] breakSVGFile(String svgFile){ if(svgFile == null || !svgFile.endsWith(SVG_EXTENSION)){ throw new IllegalArgumentException(svgFile); } svgFile = svgFile.substring(0, svgFile.length() - SVG_EXTENSION.length()); int fileNameStart = svgFile.lastIndexOf(PATH_SEPARATOR); String svgDir = ""; if(fileNameStart != -1){ if(svgFile.length() < fileNameStart + 2){ // Nothing after PATH_SEPARATOR throw new IllegalArgumentException(svgFile); } svgDir = svgFile.substring(0, fileNameStart + 1); svgFile = svgFile.substring(fileNameStart + 1); } return new String[]{svgDir, svgFile}; } } 1.1 xml-batik/test-sources/org/apache/batik/test/svg/SVGReferenceRenderingAccuracyTest.java Index: SVGReferenceRenderingAccuracyTest.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.batik.test.svg; import java.io.File; import org.apache.batik.dom.svg.SVGOMDocument; import org.apache.batik.test.AbstractTest; import org.w3c.dom.Document; /** * Base class for tests which take an additional parameter in addition * to the SVG file. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> * @version $Id: SVGReferenceRenderingAccuracyTest.java,v 1.1 2001/10/16 10:38:10 vhardy Exp $ */ public class SVGReferenceRenderingAccuracyTest extends ParametrizedRenderingAccuracyTest { protected String alias; /** * For this type of test, the id should be made as * follows:<br /> * <fileName>#reference-alias <br /> * For example: <br /> * samples/anne.svg#svgView(viewBox(0,0,100,100))-viewBox1 */ public void setId(String id){ this.id = id; String svgFile = id; int n = svgFile.lastIndexOf('#'); if(n == -1 || n+1 >= svgFile.length() ){ throw new IllegalArgumentException(id); } parameter = svgFile.substring(n+1, svgFile.length()); svgFile = svgFile.substring(0, n); n = parameter.lastIndexOf('-'); if(n == -1 || n+1 >= parameter.length()){ throw new IllegalArgumentException(id); } alias = parameter.substring(n+1, parameter.length()); parameter = parameter.substring(0, n); String[] dirNfile = breakSVGFile(svgFile); setConfig(buildSVGURL(dirNfile[0], dirNfile[1]), buildRefImgURL(dirNfile[0], dirNfile[1])); setVariationURL(buildVariationURL(dirNfile[0], dirNfile[1])); setSaveVariation(new File(buildSaveVariationFile(dirNfile[0], dirNfile[1]))); } /** * Gives a chance to the subclass to prepend a prefix to the * svgFile name. * The svgURL is built as: * getSVGURLPrefix() + svgDir + svgFile + SVG_EXTENSION + "#" + parameter */ protected String buildSVGURL(String svgDir, String svgFile){ return getSVGURLPrefix() + svgDir + svgFile + SVG_EXTENSION + "#" + parameter; } /** * Gives a chance to the subclass to control the construction * of the reference PNG file from the svgFile name * The refImgURL is built as: * getRefImagePrefix() + svgDir + getRefImageSuffix() + svgFile */ protected String buildRefImgURL(String svgDir, String svgFile){ return getRefImagePrefix() + svgDir + getRefImageSuffix() + svgFile + alias + PNG_EXTENSION; } /** * Gives a chance to the subclass to control the construction * of the variation URL, which is built as: * getVariationPrefix() + svgDir + getVariationSuffix() + svgFile + parameter + PNG_EXTENSION */ public String buildVariationURL(String svgDir, String svgFile){ return getVariationPrefix() + svgDir + getVariationSuffix() + svgFile + alias + PNG_EXTENSION; } /** * Gives a chance to the subclass to control the construction * of the saveVariation URL, which is built as: * getSaveVariationPrefix() + svgDir + getSaveVariationSuffix() + svgFile + parameter + PNG_EXTENSION */ public String buildSaveVariationFile(String svgDir, String svgFile){ return getSaveVariationPrefix() + svgDir + getSaveVariationSuffix() + svgFile + alias + PNG_EXTENSION; } } 1.1 xml-batik/test-sources/org/apache/batik/test/svg/SamplesRenderingTest.java Index: SamplesRenderingTest.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.batik.test.svg; /** * Preconfigured test for SVG files under the xml-batik directory. * * @author <a href="[EMAIL PROTECTED]">Vincent Hardy</a> * @version $Id: SamplesRenderingTest.java,v 1.1 2001/10/16 10:38:10 vhardy Exp $ */ public class SamplesRenderingTest extends PreconfiguredRenderingTest { public static final String SVG_URL_PREFIX = ""; public static final String REF_IMAGE_PREFIX = "test-references/"; public static final String REF_IMAGE_SUFFIX = ""; public static final String VARIATION_PREFIX = "test-references/"; public static final String VARIATION_SUFFIX = "accepted-variation/"; public static final String SAVE_VARIATION_PREFIX = "test-references/"; public static final String SAVE_VARIATION_SUFFIX = "candidate-variation/"; protected String getSVGURLPrefix(){ return SVG_URL_PREFIX; } protected String getRefImagePrefix(){ return REF_IMAGE_PREFIX; } protected String getRefImageSuffix(){ return REF_IMAGE_SUFFIX; } protected String getVariationPrefix(){ return VARIATION_PREFIX; } protected String getVariationSuffix(){ return VARIATION_SUFFIX; } protected String getSaveVariationPrefix(){ return SAVE_VARIATION_PREFIX; } protected String getSaveVariationSuffix(){ return SAVE_VARIATION_SUFFIX; } } 1.4 +30 -5 xml-batik/test-sources/org/apache/batik/test/xml/XMLReflect.java Index: XMLReflect.java =================================================================== RCS file: /home/cvs/xml-batik/test-sources/org/apache/batik/test/xml/XMLReflect.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XMLReflect.java 2001/04/27 07:53:55 1.3 +++ XMLReflect.java 2001/10/16 10:38:10 1.4 @@ -23,7 +23,7 @@ * XML description. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: XMLReflect.java,v 1.3 2001/04/27 07:53:55 cjolif Exp $ + * @version $Id: XMLReflect.java,v 1.4 2001/10/16 10:38:10 vhardy Exp $ */ public class XMLReflect implements XMLReflectConstants{ /** @@ -32,8 +32,7 @@ public static Object buildObject(Element element) throws Exception { String className - = element.getAttributeNS(null, - XR_CLASS_ATTRIBUTE); + = getInheritedClassAttribute(element); Class cl = Class.forName(className); Object[] argsArray = null; @@ -158,8 +157,7 @@ */ public static Object buildArgument(Element element) throws Exception { if(!element.hasChildNodes()){ - String classAttr = element.getAttributeNS(null, - XR_CLASS_ATTRIBUTE); + String classAttr = getInheritedClassAttribute(element); // String based argument Class cl = Class.forName(classAttr); @@ -182,5 +180,32 @@ else{ return buildObject(element); } + } + + /** + * The class name to use is that of the element itself or, if not + * specified, that of its closest ancestor which defines it + * (through the XR_CLASS_ATTRIBUTE + */ + public static String getInheritedClassAttribute(Element element){ + if(element != null){ + String classAttr = element.getAttributeNS(null, + XR_CLASS_ATTRIBUTE); + + if(classAttr == null || "".equals(classAttr)){ + Node parent = element.getParentNode(); + if(parent != null && parent.getNodeType() == Node.ELEMENT_NODE){ + return getInheritedClassAttribute((Element)parent); + } + else{ + return null; + } + } + + return classAttr; + + } + + return null; } } 1.4 +1 -3 xml-batik/test-sources/org/apache/batik/test/xml/XMLTestSuiteLoader.java Index: XMLTestSuiteLoader.java =================================================================== RCS file: /home/cvs/xml-batik/test-sources/org/apache/batik/test/xml/XMLTestSuiteLoader.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XMLTestSuiteLoader.java 2001/10/15 11:21:44 1.3 +++ XMLTestSuiteLoader.java 2001/10/16 10:38:10 1.4 @@ -43,7 +43,7 @@ * into a <tt>TestSuite</tt> object. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: XMLTestSuiteLoader.java,v 1.3 2001/10/15 11:21:44 vhardy Exp $ + * @version $Id: XMLTestSuiteLoader.java,v 1.4 2001/10/16 10:38:10 vhardy Exp $ */ public class XMLTestSuiteLoader implements XTSConstants { /** @@ -132,8 +132,6 @@ String suiteName = element.getAttributeNS(null, XTS_NAME_ATTRIBUTE); - - testSuite.setName(suiteName + " -- " + testSuite.getName()); String suiteId = element.getAttributeNS(null,
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]