summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/kitfox/svg/SVGUniverse.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/kitfox/svg/SVGUniverse.java')
-rw-r--r--src/main/java/com/kitfox/svg/SVGUniverse.java33
1 files changed, 13 insertions, 20 deletions
diff --git a/src/main/java/com/kitfox/svg/SVGUniverse.java b/src/main/java/com/kitfox/svg/SVGUniverse.java
index ac285dd..13c8988 100644
--- a/src/main/java/com/kitfox/svg/SVGUniverse.java
+++ b/src/main/java/com/kitfox/svg/SVGUniverse.java
@@ -50,8 +50,7 @@ import java.net.URLConnection;
import java.net.URLStreamHandler;
import java.util.HashMap;
import java.util.Iterator;
-
-import java.util.zip.InflaterInputStream;
+import java.util.zip.GZIPInputStream;
import javax.imageio.ImageIO;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.EntityResolver;
@@ -319,29 +318,23 @@ public class SVGUniverse implements Serializable
}
- private InputStreamReader createDocumentReader(InputStream is)
+ private InputStreamReader createDocumentReader(InputStream is) throws IOException
{
BufferedInputStream bin = new BufferedInputStream(is);
- bin.mark(4);
-
- byte[] buf = new byte[4];
- try
- {
- bin.read(buf, 0, buf.length);
- bin.reset();
- } catch (IOException ex)
- {
- ex.printStackTrace();
- }
-
-
- if (buf[0] == 0x1f)
+ bin.mark(2);
+ int b0 = bin.read();
+ int b1 = bin.read();
+ bin.reset();
+
+ //Check for gzip magic number
+ if ((b1 << 8 | b0) == GZIPInputStream.GZIP_MAGIC)
{
- InflaterInputStream iis = new InflaterInputStream(bin);
+ GZIPInputStream iis = new GZIPInputStream(bin);
return new InputStreamReader(iis);
}
else
{
+ //Plain text
return new InputStreamReader(bin);
}
}
@@ -378,12 +371,12 @@ public class SVGUniverse implements Serializable
}
- public URI loadSVG(InputStream is, String name)
+ public URI loadSVG(InputStream is, String name) throws IOException
{
return loadSVG(is, name, false);
}
- public URI loadSVG(InputStream is, String name, boolean forceLoad)
+ public URI loadSVG(InputStream is, String name, boolean forceLoad) throws IOException
{
return loadSVG(createDocumentReader(is), name, forceLoad);
}