From 71c646801ae1b6125dbe8c80e260dd4d788c11f4 Mon Sep 17 00:00:00 2001 From: Chris Bowditch Date: Mon, 6 Jan 2020 14:44:14 +0000 Subject: FOP-2892; fix + test git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1872384 13f79535-47bb-0310-9956-ffa450edef68 --- .../fop/configuration/DefaultConfiguration.java | 12 +++--- .../configuration/DefaultConfigurationTest.java | 47 ++++++++++++++++++++++ .../org/apache/fop/configuration/sample_config.xml | 20 +++++++++ 3 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 fop-core/src/test/java/org/apache/fop/configuration/DefaultConfigurationTest.java create mode 100644 fop-core/src/test/resources/org/apache/fop/configuration/sample_config.xml diff --git a/fop-core/src/main/java/org/apache/fop/configuration/DefaultConfiguration.java b/fop-core/src/main/java/org/apache/fop/configuration/DefaultConfiguration.java index 22f28a170..b50fd8b17 100644 --- a/fop-core/src/main/java/org/apache/fop/configuration/DefaultConfiguration.java +++ b/fop-core/src/main/java/org/apache/fop/configuration/DefaultConfiguration.java @@ -108,7 +108,7 @@ public class DefaultConfiguration implements Configuration { @Override public Configuration getChild(String key) { - NodeList nl = element.getElementsByTagName(key); + NodeList nl = element.getChildNodes(); for (int i = 0; i < nl.getLength(); ++i) { Node n = nl.item(i); if (n.getNodeName().equals(key)) { @@ -133,13 +133,15 @@ public class DefaultConfiguration implements Configuration { @Override public Configuration[] getChildren(String key) { - NodeList nl = element.getElementsByTagName(key); - Configuration[] result = new Configuration[nl.getLength()]; + ArrayList result = new ArrayList<>(1); + NodeList nl = element.getChildNodes(); for (int i = 0; i < nl.getLength(); ++i) { Node n = nl.item(i); - result[i] = new DefaultConfiguration((Element) n); + if (n.getNodeName().equals(key)) { + result.add(new DefaultConfiguration((Element) n)); + } } - return result; + return result.toArray(new Configuration[0]); } @Override diff --git a/fop-core/src/test/java/org/apache/fop/configuration/DefaultConfigurationTest.java b/fop-core/src/test/java/org/apache/fop/configuration/DefaultConfigurationTest.java new file mode 100644 index 000000000..f25df7e39 --- /dev/null +++ b/fop-core/src/test/java/org/apache/fop/configuration/DefaultConfigurationTest.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.fop.configuration; + +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class DefaultConfigurationTest { + + DefaultConfiguration configuration; + + @Before + public void setup() throws Exception { + DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(); + configuration = builder.build(getClass().getResourceAsStream("sample_config.xml")); + } + + @Test + public void testGetChild() { + Configuration fontsConfig = configuration.getChild("fonts"); + assertEquals("fonts element should be direct child", "fop/fonts", fontsConfig.getLocation()); + } + + @Test + public void testGetChildren() { + Configuration[] fontsConfig = configuration.getChildren("fonts"); + assertEquals("only direct children should match", 1, fontsConfig.length); + assertEquals("fonts element should be direct child", "fop/fonts", fontsConfig[0].getLocation()); + } +} diff --git a/fop-core/src/test/resources/org/apache/fop/configuration/sample_config.xml b/fop-core/src/test/resources/org/apache/fop/configuration/sample_config.xml new file mode 100644 index 000000000..d3bc3e3ef --- /dev/null +++ b/fop-core/src/test/resources/org/apache/fop/configuration/sample_config.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- cgit v1.2.3