Browse Source

XSLF Performance - don't initialize the JAXBContext every time

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1873499 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_4_1_2
Andreas Beeker 4 years ago
parent
commit
4a2273c370
1 changed files with 18 additions and 6 deletions
  1. 18
    6
      src/java/org/apache/poi/sl/draw/geom/PresetGeometries.java

+ 18
- 6
src/java/org/apache/poi/sl/draw/geom/PresetGeometries.java View File

@@ -38,12 +38,24 @@ import org.apache.poi.util.POILogger;
import org.apache.poi.util.XMLHelper;

/**
*
*
*/
public class PresetGeometries extends LinkedHashMap<String, CustomGeometry> {
private final static POILogger LOG = POILogFactory.getLogger(PresetGeometries.class);
protected final static String BINDING_PACKAGE = "org.apache.poi.sl.draw.binding";
private final static String BINDING_PACKAGE = "org.apache.poi.sl.draw.binding";

private static class SingletonHelper {
private static JAXBContext JAXB_CONTEXT;
static {
try {
JAXB_CONTEXT = JAXBContext.newInstance(BINDING_PACKAGE);
} catch (JAXBException e) {
throw new RuntimeException(e);
}
}
}


protected static PresetGeometries _inst;

protected PresetGeometries(){}
@@ -57,7 +69,7 @@ public class PresetGeometries extends LinkedHashMap<String, CustomGeometry> {
streamReader.nextTag();

// JAXB:
JAXBContext jaxbContext = JAXBContext.newInstance(BINDING_PACKAGE);
JAXBContext jaxbContext = SingletonHelper.JAXB_CONTEXT;
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

long cntElem = 0;
@@ -76,13 +88,13 @@ public class PresetGeometries extends LinkedHashMap<String, CustomGeometry> {
streamReader.close();
}
}
/**
* Convert a single CustomGeometry object, i.e. from xmlbeans
*/
public static CustomGeometry convertCustomGeometry(XMLStreamReader staxReader) {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(BINDING_PACKAGE);
JAXBContext jaxbContext = SingletonHelper.JAXB_CONTEXT;
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
JAXBElement<CTCustomGeometry2D> el = unmarshaller.unmarshal(staxReader, CTCustomGeometry2D.class);
return new CustomGeometry(el.getValue());

Loading…
Cancel
Save