mirror of
https://github.com/apache/poi.git
synced 2025-02-08 02:58:18 +00:00
Adjust init of PresetGeometries to not keep the object if static initialization fails
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1692898 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
7eb27ea492
commit
7501e761f6
@ -96,18 +96,23 @@ public class PresetGeometries extends LinkedHashMap<String, CustomGeometry> {
|
|||||||
|
|
||||||
public static synchronized PresetGeometries getInstance(){
|
public static synchronized PresetGeometries getInstance(){
|
||||||
if(_inst == null) {
|
if(_inst == null) {
|
||||||
_inst = new PresetGeometries();
|
// use a local object first to not assign a partly constructed object
|
||||||
|
// in case of failure
|
||||||
|
PresetGeometries lInst = new PresetGeometries();
|
||||||
try {
|
try {
|
||||||
InputStream is = PresetGeometries.class.
|
InputStream is = PresetGeometries.class.
|
||||||
getResourceAsStream("presetShapeDefinitions.xml");
|
getResourceAsStream("presetShapeDefinitions.xml");
|
||||||
_inst.init(is);
|
try {
|
||||||
is.close();
|
lInst.init(is);
|
||||||
|
} finally {
|
||||||
|
is.close();
|
||||||
|
}
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
_inst = lInst;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _inst;
|
return _inst;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,11 +18,13 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.poi.sl.draw.geom;
|
package org.apache.poi.sl.draw.geom;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.*;
|
||||||
import static org.junit.Assert.assertNotNull;
|
|
||||||
|
|
||||||
import java.awt.geom.GeneralPath;
|
import java.awt.geom.GeneralPath;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Enumeration;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -35,11 +37,9 @@ import org.junit.Test;
|
|||||||
public class TestPresetGeometries {
|
public class TestPresetGeometries {
|
||||||
@Test
|
@Test
|
||||||
public void testRead(){
|
public void testRead(){
|
||||||
|
|
||||||
Map<String, CustomGeometry> shapes = PresetGeometries.getInstance();
|
Map<String, CustomGeometry> shapes = PresetGeometries.getInstance();
|
||||||
assertEquals(187, shapes.size());
|
assertEquals(187, shapes.size());
|
||||||
|
|
||||||
|
|
||||||
for(String name : shapes.keySet()) {
|
for(String name : shapes.keySet()) {
|
||||||
CustomGeometry geom = shapes.get(name);
|
CustomGeometry geom = shapes.get(name);
|
||||||
Context ctx = new Context(geom, new Rectangle2D.Double(0, 0, 100, 100), new IAdjustableShape() {
|
Context ctx = new Context(geom, new Rectangle2D.Double(0, 0, 100, 100), new IAdjustableShape() {
|
||||||
@ -52,8 +52,11 @@ public class TestPresetGeometries {
|
|||||||
assertNotNull(path);
|
assertNotNull(path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we get the same instance on further calls
|
||||||
|
assertTrue(shapes == PresetGeometries.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
// helper methods to adjust list of presets for other tests
|
// helper methods to adjust list of presets for other tests
|
||||||
public static void clearPreset() {
|
public static void clearPreset() {
|
||||||
// ensure that we are initialized
|
// ensure that we are initialized
|
||||||
@ -66,4 +69,24 @@ public class TestPresetGeometries {
|
|||||||
public static void resetPreset() {
|
public static void resetPreset() {
|
||||||
PresetGeometries._inst = null;
|
PresetGeometries._inst = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCheckXMLParser() throws Exception{
|
||||||
|
// Gump reports a strange error because of an unavailable XML Parser, let's try to find out where
|
||||||
|
// this comes from
|
||||||
|
//
|
||||||
|
Enumeration<URL> resources = this.getClass().getClassLoader().getResources("META-INF/services/javax.xml.stream.XMLEventFactory");
|
||||||
|
printURLs(resources);
|
||||||
|
resources = ClassLoader.getSystemResources("META-INF/services/javax.xml.stream.XMLEventFactory");
|
||||||
|
printURLs(resources);
|
||||||
|
resources = ClassLoader.getSystemResources("org/apache/poi/sl/draw/geom/presetShapeDefinitions.xml");
|
||||||
|
printURLs(resources);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void printURLs(Enumeration<URL> resources) {
|
||||||
|
while(resources.hasMoreElements()) {
|
||||||
|
URL url = resources.nextElement();
|
||||||
|
System.out.println("URL: " + url);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user