diff --git a/src/config/worldwind.xml b/src/config/worldwind.xml
index dfe4931bd4..0ebcc607ce 100644
--- a/src/config/worldwind.xml
+++ b/src/config/worldwind.xml
@@ -100,4 +100,12 @@
jar:file:milstd2525-symbols.zip! (local zip archive) -->
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/gov/nasa/worldwind/formats/gpx/GpxWriter.java b/src/gov/nasa/worldwind/formats/gpx/GpxWriter.java
index c7fc5c2bb9..5d2bbb0864 100644
--- a/src/gov/nasa/worldwind/formats/gpx/GpxWriter.java
+++ b/src/gov/nasa/worldwind/formats/gpx/GpxWriter.java
@@ -6,6 +6,7 @@
package gov.nasa.worldwind.formats.gpx;
import gov.nasa.worldwind.util.Logging;
+import gov.nasa.worldwind.util.WWXML;
import gov.nasa.worldwind.tracks.Track;
import gov.nasa.worldwind.tracks.TrackSegment;
import gov.nasa.worldwind.tracks.TrackPoint;
@@ -153,8 +154,7 @@ private void doWriteTrackPoint(TrackPoint point, org.w3c.dom.Element elem)
private void doFlush() throws javax.xml.transform.TransformerException
{
- javax.xml.transform.TransformerFactory factory = javax.xml.transform.TransformerFactory.newInstance();
- javax.xml.transform.Transformer transformer = factory.newTransformer();
+ javax.xml.transform.Transformer transformer = WWXML.createTransformer();
javax.xml.transform.Source source = new javax.xml.transform.dom.DOMSource(this.doc);
transformer.transform(source, this.result);
}
diff --git a/src/gov/nasa/worldwind/util/RestorableSupport.java b/src/gov/nasa/worldwind/util/RestorableSupport.java
index f3ef304ecc..370c5cc579 100644
--- a/src/gov/nasa/worldwind/util/RestorableSupport.java
+++ b/src/gov/nasa/worldwind/util/RestorableSupport.java
@@ -5,6 +5,7 @@
*/
package gov.nasa.worldwind.util;
+import gov.nasa.worldwind.Configuration;
import gov.nasa.worldwind.avlist.*;
import gov.nasa.worldwind.geom.*;
import gov.nasa.worldwind.render.OffsetsList;
@@ -44,7 +45,8 @@ public class RestorableSupport
{
protected static final String DEFAULT_DOCUMENT_ELEMENT_TAG_NAME = "restorableState";
protected static final String DEFAULT_STATE_OBJECT_TAG_NAME = "stateObject";
-
+ private static final String PROP_OUTPUTKEY = RestorableSupport.class.getName() + ".outputkey";
+
protected org.w3c.dom.Document doc;
protected javax.xml.xpath.XPath xpath;
protected String stateObjectTagName;
@@ -203,14 +205,25 @@ protected static void createDocumentElement(org.w3c.dom.Document doc, String tag
*/
public String getStateAsXml()
{
- javax.xml.transform.TransformerFactory transformerFactory =
- javax.xml.transform.TransformerFactory.newInstance();
+ //Check for any restorablestate ouputkeys for the transformer
+ Map outputKeys = new HashMap();
+ Integer i=1;
+ String outputKey = PROP_OUTPUTKEY + "." + i;
+ String value;
+ while((value = Configuration.getStringValue(outputKey)) != null)
+ {
+ String[] parts = value.split(",");
+ outputKeys.put(parts[0], parts[1]);
+ i++;
+ outputKey = PROP_OUTPUTKEY + "." + i;
+ }
+
try
{
// The StringWriter will receive the document xml.
java.io.StringWriter stringWriter = new java.io.StringWriter();
// Attempt to write the Document to the StringWriter.
- javax.xml.transform.Transformer transformer = transformerFactory.newTransformer();
+ javax.xml.transform.Transformer transformer = WWXML.createTransformer(outputKeys);
transformer.transform(
new javax.xml.transform.dom.DOMSource(this.doc),
new javax.xml.transform.stream.StreamResult(stringWriter));
diff --git a/src/gov/nasa/worldwind/util/WWXML.java b/src/gov/nasa/worldwind/util/WWXML.java
index 80827c22a4..656eaba799 100644
--- a/src/gov/nasa/worldwind/util/WWXML.java
+++ b/src/gov/nasa/worldwind/util/WWXML.java
@@ -28,6 +28,7 @@
import java.nio.ByteBuffer;
import java.text.*;
import java.util.*;
+import java.util.Map.Entry;
/**
* A collection of static methods use for opening, reading and otherwise working with XML files.
@@ -38,7 +39,9 @@
public class WWXML
{
public static final String XLINK_URI = "http://www.w3.org/1999/xlink";
-
+ private static final String PROP_OUTPUTKEY = WWXML.class.getName() + ".outputkey";
+
+
/**
* Create a DOM builder.
*
@@ -88,12 +91,49 @@ public static DocumentBuilder createDocumentBuilder(boolean isNamespaceAware)
* @throws WWRuntimeException if an error occurs.
*/
public static Transformer createTransformer()
+ {
+ return createTransformer(null);
+ }
+
+ /**
+ * Create a XML transformer.
+ * @parameter outputKeys a map of {@link javax.xml.transform.OutputKeys} settings
+ * @return a {@link javax.xml.transform.Transformer}
+ *
+ * @throws WWRuntimeException if an error occurs.
+ */
+ public static Transformer createTransformer(Map outputKeys)
{
TransformerFactory transformerFactory = TransformerFactory.newInstance();
try
{
- return transformerFactory.newTransformer();
+ Transformer transformer = transformerFactory.newTransformer();
+
+ //Check for any globally assigned ouputkeys for the transformer
+ Integer i=1;
+ String outputKey = PROP_OUTPUTKEY + "." + i;
+ String value;
+ while((value = Configuration.getStringValue(outputKey)) != null)
+ {
+ String[] parts = value.split(",");
+ transformer.setOutputProperty(parts[0], parts[1]);
+ i++;
+ outputKey = PROP_OUTPUTKEY + "." + i;
+ }
+
+ if(outputKeys != null)
+ {
+ //Now set any provided outputkeys
+ Iterator> it = outputKeys.entrySet().iterator();
+ while (it.hasNext())
+ {
+ Map.Entry pair = (Map.Entry)it.next();
+ transformer.setOutputProperty(pair.getKey().toString(), pair.getValue());
+ }
+ }
+
+ return transformer;
}
catch (TransformerConfigurationException e)
{
diff --git a/src/gov/nasa/worldwindx/applications/sar/SARAnnotationWriter.java b/src/gov/nasa/worldwindx/applications/sar/SARAnnotationWriter.java
index e3c92682a8..c7a4cd332d 100644
--- a/src/gov/nasa/worldwindx/applications/sar/SARAnnotationWriter.java
+++ b/src/gov/nasa/worldwindx/applications/sar/SARAnnotationWriter.java
@@ -6,6 +6,7 @@
package gov.nasa.worldwindx.applications.sar;
import gov.nasa.worldwind.util.Logging;
+import gov.nasa.worldwind.util.WWXML;
/**
* @author dcollins
@@ -138,8 +139,7 @@ private void doWriteAnnotation(SARAnnotation sarAnnotation, org.w3c.dom.Element
private void doFlush() throws javax.xml.transform.TransformerException
{
- javax.xml.transform.TransformerFactory factory = javax.xml.transform.TransformerFactory.newInstance();
- javax.xml.transform.Transformer transformer = factory.newTransformer();
+ javax.xml.transform.Transformer transformer = WWXML.createTransformer();
javax.xml.transform.Source source = new javax.xml.transform.dom.DOMSource(this.doc);
transformer.transform(source, this.result);
}
diff --git a/src/gov/nasa/worldwindx/examples/kml/ExportKML.java b/src/gov/nasa/worldwindx/examples/kml/ExportKML.java
index d30afc3eb0..dec62ed028 100644
--- a/src/gov/nasa/worldwindx/examples/kml/ExportKML.java
+++ b/src/gov/nasa/worldwindx/examples/kml/ExportKML.java
@@ -10,6 +10,7 @@
import gov.nasa.worldwind.geom.*;
import gov.nasa.worldwind.render.*;
import gov.nasa.worldwind.util.Logging;
+import gov.nasa.worldwind.util.WWXML;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
@@ -156,10 +157,11 @@ public static void main(String[] args)
String xmlString = stringWriter.toString();
// Set up a transformer to pretty-print the XML
- Transformer transformer = TransformerFactory.newInstance().newTransformer();
- transformer.setOutputProperty(OutputKeys.INDENT, "yes");
- transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
-
+ Map outputKeys = new HashMap();
+ outputKeys.put(OutputKeys.INDENT, "yes");
+ outputKeys.put("{http://xml.apache.org/xslt}indent-amount", "4");
+ Transformer transformer = WWXML.createTransformer(outputKeys);
+
// Write the pretty-printed document to stdout
transformer.transform(new StreamSource(new StringReader(xmlString)), new StreamResult(System.out));
}