You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/09/18 00:35:38 UTC

svn commit: r1625840 - in /pdfbox/trunk: pdfbox/src/main/java/org/apache/pdfbox/encoding/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/ pdfbox/src/main/java/org/apache/pdfbox/util/ p...

Author: jahewson
Date: Wed Sep 17 22:35:37 2014
New Revision: 1625840

URL: http://svn.apache.org/r1625840
Log:
PDFBOX-2358: Remove ResourceLoader usage in PDFBox

Added:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Version.java
Removed:
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/PDDeviceCMYK.properties
Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/GlyphList.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/Validator_A1b.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Version.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/GlyphList.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/GlyphList.java?rev=1625840&r1=1625839&r2=1625840&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/GlyphList.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/GlyphList.java Wed Sep 17 22:35:37 2014
@@ -16,9 +16,9 @@
  */
 package org.apache.pdfbox.encoding;
 
+import java.net.URL;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.pdfbox.util.ResourceLoader;
 
 import java.io.File;
 import java.io.IOException;
@@ -41,35 +41,42 @@ public class GlyphList
 
     static
     {
-        DEFAULT = new GlyphList();
+        try
+        {
+            DEFAULT = new GlyphList();
 
-        // Loads the official glyph List based on adobes glyph list
-        DEFAULT.loadGlyphs("org/apache/pdfbox/resources/glyphlist.properties");
+            // Loads the official glyph List based on adobes glyph list
+            DEFAULT.loadGlyphs("org/apache/pdfbox/resources/glyphlist.properties");
 
-        // Loads some additional glyph mappings
-        DEFAULT.loadGlyphs("org/apache/pdfbox/resources/additional_glyphlist.properties");
+            // Loads some additional glyph mappings
+            DEFAULT.loadGlyphs("org/apache/pdfbox/resources/additional_glyphlist.properties");
 
-        // Load an external glyph list file that user can give as JVM property
-        try
-        {
-            String location = System.getProperty("glyphlist_ext");
-            if (location != null)
+            // Load an external glyph list file that user can give as JVM property
+            try
             {
-                File external = new File(location);
-                if (external.exists())
+                String location = System.getProperty("glyphlist_ext");
+                if (location != null)
                 {
-                    DEFAULT.loadGlyphs(location);
+                    File external = new File(location);
+                    if (external.exists())
+                    {
+                        DEFAULT.loadGlyphs(location);
+                    }
                 }
             }
+            catch (SecurityException e)  // can occur on System.getProperty
+            {
+                // PDFBOX-1946 ignore and continue
+            }
+
+            // Zapf Dingbats has its own glyph list
+            ZAPF_DINGBATS = new GlyphList();
+            ZAPF_DINGBATS.loadGlyphs("org/apache/pdfbox/resources/zapf_dingbats.properties");
         }
-        catch (SecurityException e)  // can occur on System.getProperty
+        catch (IOException e)
         {
-            // PDFBOX-1946 ignore and continue
+            throw new RuntimeException(e);
         }
-
-        // Zapf Dingbats has its own glyph list
-        ZAPF_DINGBATS = new GlyphList();
-        ZAPF_DINGBATS.loadGlyphs("org/apache/pdfbox/resources/zapf_dingbats.properties");
     }
 
     private final Map<String, String> nameToUnicode = new HashMap<String, String>();
@@ -79,51 +86,48 @@ public class GlyphList
     {
     }
 
-    private void loadGlyphs(String path)
+    private void loadGlyphs(String resourceName) throws IOException
     {
-        try
+        URL url = GlyphList.class.getClassLoader().getResource(resourceName);
+        if (url == null)
+        {
+            throw new MissingResourceException("Glyphlist not found: " + resourceName,
+                    GlyphList.class.getName(), resourceName);
+        }
+
+        Properties properties = new Properties();
+        properties.load(url.openStream());
+
+        Enumeration<?> names = properties.propertyNames();
+        for (Object name : Collections.list(names))
         {
-            Properties glyphProperties = ResourceLoader.loadProperties(path, false);
-            if (glyphProperties == null)
+            String glyphName = name.toString();
+            String unicodeValue = properties.getProperty(glyphName);
+            StringTokenizer tokenizer = new StringTokenizer(unicodeValue, " ", false);
+            StringBuilder value = new StringBuilder();
+            while (tokenizer.hasMoreTokens())
             {
-                throw new MissingResourceException("Glyphlist not found: " + path,
-                        Encoding.class.getName(), path);
+                int characterCode = Integer.parseInt(tokenizer.nextToken(), 16);
+                value.append((char) characterCode);
             }
-            Enumeration<?> names = glyphProperties.propertyNames();
-            for (Object name : Collections.list(names))
-            {
-                String glyphName = name.toString();
-                String unicodeValue = glyphProperties.getProperty(glyphName);
-                StringTokenizer tokenizer = new StringTokenizer(unicodeValue, " ", false);
-                StringBuilder value = new StringBuilder();
-                while (tokenizer.hasMoreTokens())
-                {
-                    int characterCode = Integer.parseInt(tokenizer.nextToken(), 16);
-                    value.append((char) characterCode);
-                }
-                String unicode = value.toString();
+            String unicode = value.toString();
 
-                if (nameToUnicode.containsKey(glyphName))
-                {
-                    LOG.warn("duplicate value for " + glyphName + " -> " + unicode + " " +
-                             nameToUnicode.get(glyphName));
-                }
-                else
-                {
-                    nameToUnicode.put(glyphName, unicode);
-                }
+            if (nameToUnicode.containsKey(glyphName))
+            {
+                LOG.warn("duplicate value for " + glyphName + " -> " + unicode + " " +
+                        nameToUnicode.get(glyphName));
+            }
+            else
+            {
+                nameToUnicode.put(glyphName, unicode);
+            }
 
-                // reverse mapping
-                if (!unicodeToName.containsKey(unicode))
-                {
-                    unicodeToName.put(unicode, glyphName);
-                }
+            // reverse mapping
+            if (!unicodeToName.containsKey(unicode))
+            {
+                unicodeToName.put(unicode, glyphName);
             }
         }
-        catch (IOException io)
-        {
-            LOG.error("error while reading the glyph property file.", io);
-        }
     }
 
     /**

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java?rev=1625840&r1=1625839&r2=1625840&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java Wed Sep 17 22:35:37 2014
@@ -18,6 +18,7 @@ package org.apache.pdfbox.pdmodel.font;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -36,7 +37,6 @@ import org.apache.fontbox.ttf.Type1Equiv
 import org.apache.fontbox.ttf.TrueTypeFont;
 import org.apache.fontbox.type1.Type1Font;
 import org.apache.pdfbox.io.IOUtils;
-import org.apache.pdfbox.util.ResourceLoader;
 
 /**
  * External font service, locates non-embedded fonts via a pluggable FontProvider.
@@ -65,21 +65,23 @@ public final class ExternalFonts
         {
             // ttf
             String ttfName = "org/apache/pdfbox/resources/ttf/LiberationSans-Regular.ttf";
-            InputStream ttfStream = ResourceLoader.loadResource(ttfName);
-            if (ttfStream == null)
+            URL url = ExternalFonts.class.getClassLoader().getResource(ttfName);
+            if (url == null)
             {
                 throw new IOException("Error loading resource: " + ttfName);
             }
+            InputStream ttfStream = url.openStream();
             TTFParser ttfParser = new TTFParser();
             ttfFallbackFont = ttfParser.parse(ttfStream);
 
             // cff
             String cffName = "org/apache/pdfbox/resources/otf/AdobeBlank.otf";
-            InputStream cffStream = ResourceLoader.loadResource(cffName);
-            if (cffStream == null)
+            url = ExternalFonts.class.getClassLoader().getResource(cffName);
+            if (url == null)
             {
-                throw new IOException("Error loading resource: " + cffName);
+                throw new IOException("Error loading resource: " + ttfName);
             }
+            InputStream cffStream = url.openStream();
             byte[] bytes = IOUtils.toByteArray(cffStream);
             CFFParser cffParser = new CFFParser();
             cidFallbackFont = (CFFCIDFont)cffParser.parse(bytes).get(0);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java?rev=1625840&r1=1625839&r2=1625840&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Wed Sep 17 22:35:37 2014
@@ -19,6 +19,7 @@ package org.apache.pdfbox.pdmodel.font;
 import java.awt.geom.GeneralPath;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URL;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
@@ -34,13 +35,11 @@ import org.apache.pdfbox.cos.COSDictiona
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.encoding.Encoding;
-import org.apache.pdfbox.encoding.GlyphList;
 import org.apache.pdfbox.encoding.StandardEncoding;
 import org.apache.pdfbox.encoding.Type1Encoding;
 import org.apache.pdfbox.encoding.WinAnsiEncoding;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.common.PDStream;
-import org.apache.pdfbox.util.ResourceLoader;
 
 /**
  * A PostScript Type 1 Font.
@@ -57,47 +56,51 @@ public class PDType1Font extends PDSimpl
     private static final Map<String, FontMetrics> AFM_MAP;
     static
     {
-        AFM_MAP = new HashMap<String, FontMetrics>();
-        addMetric("Courier-Bold");
-        addMetric("Courier-BoldOblique");
-        addMetric("Courier");
-        addMetric("Courier-Oblique");
-        addMetric("Helvetica");
-        addMetric("Helvetica-Bold");
-        addMetric("Helvetica-BoldOblique");
-        addMetric("Helvetica-Oblique");
-        addMetric("Symbol");
-        addMetric("Times-Bold");
-        addMetric("Times-BoldItalic");
-        addMetric("Times-Italic");
-        addMetric("Times-Roman");
-        addMetric("ZapfDingbats");
+        try
+        {
+            AFM_MAP = new HashMap<String, FontMetrics>();
+            addMetric("Courier-Bold");
+            addMetric("Courier-BoldOblique");
+            addMetric("Courier");
+            addMetric("Courier-Oblique");
+            addMetric("Helvetica");
+            addMetric("Helvetica-Bold");
+            addMetric("Helvetica-BoldOblique");
+            addMetric("Helvetica-Oblique");
+            addMetric("Symbol");
+            addMetric("Times-Bold");
+            addMetric("Times-BoldItalic");
+            addMetric("Times-Italic");
+            addMetric("Times-Roman");
+            addMetric("ZapfDingbats");
+        }
+        catch (IOException e)
+        {
+            throw new RuntimeException(e);
+        }
     }
 
-    private static void addMetric(String name)
+    private static void addMetric(String fontName) throws IOException
     {
-        String prefix = name; // todo: HACK
-        try
+        String resourceName = "org/apache/pdfbox/resources/afm/" + fontName + ".afm";
+        URL url = PDType1Font.class.getClassLoader().getResource(resourceName);
+        if (url != null)
         {
-            String resource = "org/apache/pdfbox/resources/afm/" + prefix + ".afm";
-            InputStream afmStream = ResourceLoader.loadResource(resource);
-            if (afmStream != null)
+            InputStream afmStream = url.openStream();
+            try
             {
-                try
-                {
-                    AFMParser parser = new AFMParser(afmStream);
-                    FontMetrics metric = parser.parse();
-                    AFM_MAP.put(name, metric);
-                }
-                finally
-                {
-                    afmStream.close();
-                }
+                AFMParser parser = new AFMParser(afmStream);
+                FontMetrics metric = parser.parse();
+                AFM_MAP.put(fontName, metric);
+            }
+            finally
+            {
+                afmStream.close();
             }
         }
-        catch (Exception e)
+        else
         {
-            LOG.error("Something went wrong when reading the adobe afm files", e);
+            throw new IOException(resourceName + " not found");
         }
     }
 

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java?rev=1625840&r1=1625839&r2=1625840&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java Wed Sep 17 22:35:37 2014
@@ -16,9 +16,8 @@
  */
 package org.apache.pdfbox.pdmodel.graphics.color;
 
+import java.net.URL;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.io.IOUtils;
-import org.apache.pdfbox.util.ResourceLoader;
 
 import java.awt.color.ICC_ColorSpace;
 import java.awt.color.ICC_Profile;
@@ -27,7 +26,6 @@ import java.awt.image.WritableRaster;
 import java.io.IOException;
 
 import java.io.InputStream;
-import java.util.Properties;
 
 /**
  * Allows colors to be specified according to the subtractive CMYK (cyan, magenta, yellow, black)
@@ -58,29 +56,39 @@ public class PDDeviceCMYK extends PDDevi
     private PDDeviceCMYK() throws IOException
     {
         // loads the ICC color profile for CMYK
-        InputStream profile = null;
-        try
+        ICC_Profile iccProfile = getICCProfile();
+        if (iccProfile == null)
         {
-            Properties properties = ResourceLoader.loadProperties(
-                    "org/apache/pdfbox/resources/PDDeviceCMYK.properties", new Properties());
-
-            profile = ResourceLoader.loadResource(properties.getProperty("DeviceCMYK"));
-            if (profile == null)
-            {
-                throw new IOException("Default CMYK color profile could not be loaded");
-            }
-            ICC_Profile iccProfile = ICC_Profile.getInstance(profile);
-            awtColorSpace = new ICC_ColorSpace(iccProfile);
-
-            // there is a JVM bug which results in a CMMException which appears to be a race
-            // condition caused by lazy initialization of the color transform, so we perform
-            // an initial color conversion while we're still in a static context, see PDFBOX-2184
-            awtColorSpace.toRGB(new float[] { 0, 0, 0, 0 });
+            throw new IOException("Default CMYK color profile could not be loaded");
         }
-        finally
+        awtColorSpace = new ICC_ColorSpace(iccProfile);
+
+        // there is a JVM bug which results in a CMMException which appears to be a race
+        // condition caused by lazy initialization of the color transform, so we perform
+        // an initial color conversion while we're still in a static context, see PDFBOX-2184
+        awtColorSpace.toRGB(new float[] { 0, 0, 0, 0 });
+    }
+
+    protected ICC_Profile getICCProfile() throws IOException
+    {
+        // Adobe Acrobat uses "U.S. Web Coated (SWOP) v2" as the default
+        // CMYK profile, however it is not available under an open license.
+        // Instead, the "ISO Coated v2 300% (basICColor)" is used, which
+        // is an open alternative to the "ISO Coated v2 300% (ECI)" profile.
+
+        String name = "org/apache/pdfbox/resources/icc/ISOcoated_v2_300_bas.icc";
+
+        URL url = PDDeviceCMYK.class.getClassLoader().getResource(name);
+        if (url == null)
         {
-            IOUtils.closeQuietly(profile);
+            throw new IOException("Error loading resource: " + name);
         }
+
+        InputStream input = url.openStream();
+        ICC_Profile iccProfile = ICC_Profile.getInstance(input);
+        input.close();
+
+        return iccProfile;
     }
 
     @Override

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java?rev=1625840&r1=1625839&r2=1625840&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java Wed Sep 17 22:35:37 2014
@@ -31,7 +31,6 @@ import java.util.Properties;
  */
 public class ResourceLoader
 {
-
     /**
      * private constructor for utility class.
      */
@@ -49,7 +48,7 @@ public class ResourceLoader
      *
      * @throws IOException If there is an error while attempting to load the resource.
      */
-    public static InputStream loadResource( String resourceName ) throws IOException
+    private static InputStream loadResource( String resourceName ) throws IOException
     {
         ClassLoader loader = null;
         try
@@ -137,35 +136,4 @@ public class ResourceLoader
         }
         return properties;
     }
-
-    /**
-     * This will attempt to load the resource given the resource name.
-     *
-     * @param resourceName The resource to try and load.
-     * @param defaults A stream of default properties.
-     *
-     * @return The resource as a stream or null if it could not be found.
-     *
-     * @throws IOException If there is an error loading the properties.
-     */
-    public static Properties loadProperties( String resourceName, Properties defaults ) throws IOException
-    {
-        InputStream is = null;
-        try
-        {
-            is = loadResource( resourceName );
-            if( is != null )
-            {
-                defaults.load( is );
-            }
-        }
-        finally
-        {
-            if( is != null )
-            {
-                is.close();
-            }
-        }
-        return defaults;
-    }
 }

Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Version.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Version.java?rev=1625840&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Version.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/Version.java Wed Sep 17 22:35:37 2014
@@ -0,0 +1,58 @@
+/*
+ * 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.pdfbox.util;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Properties;
+
+/**
+ * Exposes PDFBox version.
+ */
+public class Version
+{
+    private static final String PDFBOX_VERSION_PROPERTIES =
+            "org/apache/pdfbox/resources/pdfbox.properties";
+
+    private Version()
+    {
+        // static helper
+    }
+
+    /**
+     * Returns the version of PDFBox.
+     */
+    public static String getVersion()
+    {
+        try
+        {
+            URL url = Version.class.getClassLoader().getResource(PDFBOX_VERSION_PROPERTIES);
+            if (url == null)
+            {
+                return null;
+            }
+            Properties properties = new Properties();
+            properties.load(url.openStream());
+            return properties.getProperty("pdfbox.version", null);
+        }
+        catch (IOException io)
+        {
+            return null;
+        }
+    }
+}

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/Validator_A1b.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/Validator_A1b.java?rev=1625840&r1=1625839&r2=1625840&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/Validator_A1b.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/Validator_A1b.java Wed Sep 17 22:35:37 2014
@@ -28,7 +28,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Properties;
 
 import javax.activation.DataSource;
 import javax.activation.FileDataSource;
@@ -44,7 +43,7 @@ import org.apache.pdfbox.preflight.Valid
 import org.apache.pdfbox.preflight.exception.SyntaxValidationException;
 import org.apache.pdfbox.preflight.parser.PreflightParser;
 import org.apache.pdfbox.preflight.parser.XmlResultParser;
-import org.apache.pdfbox.util.ResourceLoader;
+import org.apache.pdfbox.util.Version;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
@@ -141,8 +140,7 @@ public class Validator_A1b
     }
 
     private static void usage () throws IOException {
-        Properties props = ResourceLoader.loadProperties("org/apache/pdfbox/resources/pdfbox.properties", false);
-        String version = props.getProperty( "pdfbox.version", "unknown" );
+        String version = Version.getVersion();
 
         System.out.println("Usage : java org.apache.pdfbox.preflight.Validator_A1b [xml] [mode] <file path>");
         System.out.println();

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Version.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Version.java?rev=1625840&r1=1625839&r2=1625840&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Version.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Version.java Wed Sep 17 22:35:37 2014
@@ -16,24 +16,14 @@
  */
 package org.apache.pdfbox.tools;
 
-import java.io.IOException;
-
-import java.util.Properties;
-
-import org.apache.pdfbox.util.ResourceLoader;
-
-
 /**
  * A simple command line utility to get the version of PDFBox.
  *
  * @author <a href="ben@benlitchfield.com">Ben Litchfield</a>
  * @version $Revision: 1.5 $
  */
-public class Version
+class Version
 {
-    private static final String PDFBOX_VERSION_PROPERTIES =
-        "org/apache/pdfbox/resources/pdfbox.properties";
-
     private Version()
     {
         //should not be constructed.
@@ -46,18 +36,15 @@ public class Version
      */
     public static String getVersion()
     {
-        String version = "unknown";
-        try
+        String version = org.apache.pdfbox.util.Version.getVersion();
+        if (version != null)
         {
-            Properties props = ResourceLoader.loadProperties( PDFBOX_VERSION_PROPERTIES, false );
-            return props.getProperty( "pdfbox.version", version );
+            return version;
         }
-        catch( IOException io )
+        else
         {
-            //if there is a problem loading the properties then don't throw an
-            //exception, 'unknown' will be returned instead.
+            return "unknown";
         }
-        return version;
     }
 
     /**
@@ -85,5 +72,4 @@ public class Version
     {
         System.err.println( "usage: " + Version.class.getName() );
     }
-
 }