You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2012/02/14 20:49:52 UTC
svn commit: r1244192 - in /pdfbox/trunk/pdfbox/src:
main/java/org/apache/pdfbox/cos/COSNumber.java
test/java/org/apache/pdfbox/cos/TestCOSNumber.java
Author: lehmi
Date: Tue Feb 14 19:49:51 2012
New Revision: 1244192
URL: http://svn.apache.org/viewvc?rev=1244192&view=rev
Log:
PDFBOX-1172: support exponential format for float values as proposed by Stanislav Oaserele
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSNumber.java
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/cos/TestCOSNumber.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSNumber.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSNumber.java?rev=1244192&r1=1244191&r2=1244192&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSNumber.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSNumber.java Tue Feb 14 19:49:51 2012
@@ -76,17 +76,25 @@ public abstract class COSNumber extends
*/
public static COSNumber get( String number ) throws IOException
{
- if (number.length() == 1) {
+ if (number.length() == 1)
+ {
char digit = number.charAt(0);
- if ('0' <= digit && digit <= '9') {
+ if ('0' <= digit && digit <= '9')
+ {
return COSInteger.get(digit - '0');
- } else if (digit == '-' || digit == '.') {
+ }
+ else if (digit == '-' || digit == '.')
+ {
// See https://issues.apache.org/jira/browse/PDFBOX-592
return COSInteger.ZERO;
- } else {
+ }
+ else
+ {
throw new IOException("Not a number: " + number);
}
- } else if (number.indexOf('.') == -1) {
+ }
+ else if (number.indexOf('.') == -1 && (number.toLowerCase().indexOf('e') == -1))
+ {
try
{
return COSInteger.get( Long.parseLong( number ) );
@@ -95,7 +103,9 @@ public abstract class COSNumber extends
{
throw new IOException( "Value is not an integer: " + number );
}
- } else {
+ }
+ else
+ {
return new COSFloat(number);
}
}
Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/cos/TestCOSNumber.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/cos/TestCOSNumber.java?rev=1244192&r1=1244191&r2=1244192&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/cos/TestCOSNumber.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/cos/TestCOSNumber.java Tue Feb 14 19:49:51 2012
@@ -64,6 +64,10 @@ public abstract class TestCOSNumber exte
assertEquals(new COSFloat(1.1f), COSNumber.get("1.1"));
assertEquals(new COSFloat(100f), COSNumber.get("100.0"));
assertEquals(new COSFloat(-100.001f), COSNumber.get("-100.001"));
+ // according to the specs the exponential shall not be used
+ // but obviously there some
+ assertNotNull(COSNumber.get("-2e-006"));
+ assertNotNull(COSNumber.get("-8e+05"));
try
{
assertEquals("Null Value...", COSNumber.get(null));