Browse Source

FOP-2892; fix + test

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1872384 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-2_5
Chris Bowditch 4 years ago
parent
commit
71c646801a

+ 7
- 5
fop-core/src/main/java/org/apache/fop/configuration/DefaultConfiguration.java View File

@@ -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<Configuration> 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

+ 47
- 0
fop-core/src/test/java/org/apache/fop/configuration/DefaultConfigurationTest.java View File

@@ -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());
}
}

+ 20
- 0
fop-core/src/test/resources/org/apache/fop/configuration/sample_config.xml View File

@@ -0,0 +1,20 @@
<fop version="1.0">
<renderers>
<renderer mime="application/pdf">
<fonts>
<auto-detect/>
</fonts>
</renderer>
</renderers>
<!-- A substitution can map a font family to another. -->
<fonts>
<substitutions>
<substitution>
<from font-family='courierNew' font-style='normal' font-weight='400'/> <to font-family='Courier New'/>
</substitution>
</substitutions>
</fonts>
</fop>

Loading…
Cancel
Save