You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2016/07/27 20:07:17 UTC
svn commit: r1754338 - in /pdfbox/trunk/xmpbox/src:
main/java/org/apache/xmpbox/DateConverter.java
main/java/org/apache/xmpbox/type/TypeMapping.java
test/java/org/apache/xmpbox/DateConverterTest.java
Author: tilman
Date: Wed Jul 27 20:07:16 2016
New Revision: 1754338
URL: http://svn.apache.org/viewvc?rev=1754338&view=rev
Log:
PDFBOX-3439: avoid another exception if seconds are missing, which is valid ISO8601 but not xsd:datetime; improve error message
Modified:
pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java
pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/TypeMapping.java
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java
Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java?rev=1754338&r1=1754337&r2=1754338&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java Wed Jul 27 20:07:16 2016
@@ -365,20 +365,23 @@ public final class DateConverter
if (timeZoneString != null)
{
-
- Calendar cal = javax.xml.bind.DatatypeConverter.parseDateTime(
- dateString.substring(0, dateString.indexOf(timeZoneString))
- );
-
+ // can't use parseDateTime immediately, first do handling for time that has no seconds
+ int teeIndex = dateString.indexOf('T');
+ int tzIndex = dateString.indexOf(timeZoneString);
+ String toParse = dateString.substring(0, tzIndex);
+ if (tzIndex - teeIndex == 6)
+ {
+ toParse = dateString.substring(0, tzIndex) + ":00";
+ }
+ Calendar cal = javax.xml.bind.DatatypeConverter.parseDateTime(toParse);
+
TimeZone z = TimeZone.getTimeZone(timeZoneString);
- cal.setTimeZone(z);
-
+ cal.setTimeZone(z);
return cal;
}
else
{
- // can't use parseDateTime immediately,
- // first do handling for time that has no seconds
+ // can't use parseDateTime immediately, first do handling for time that has no seconds
int teeIndex = dateString.indexOf('T');
if (teeIndex == -1)
{
Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/TypeMapping.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/TypeMapping.java?rev=1754338&r1=1754337&r2=1754338&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/TypeMapping.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/TypeMapping.java Wed Jul 27 20:07:16 2016
@@ -176,40 +176,40 @@ public final class TypeMapping
// constructor parameters
Object[] params = new Object[] { metadata, nsuri, prefix, name, value };
// type
+ Class<? extends AbstractSimpleProperty> clz =
+ type.getImplementingClass().asSubclass(AbstractSimpleProperty.class);
try
{
- Class<? extends AbstractSimpleProperty> clz = type.getImplementingClass().asSubclass(
- AbstractSimpleProperty.class);
Constructor<? extends AbstractSimpleProperty> cons = clz.getConstructor(SIMPLEPROPERTYCONSTPARAMS);
return cons.newInstance(params);
}
catch (NoSuchMethodError e)
{
- throw new IllegalArgumentException("Failed to instanciate property", e);
+ throw new IllegalArgumentException("Failed to instanciate " + clz.getSimpleName() + " property with value " + value, e);
}
catch (IllegalArgumentException e)
{
- throw new IllegalArgumentException("Failed to instanciate property", e);
+ throw new IllegalArgumentException("Failed to instanciate " + clz.getSimpleName() + " property with value " + value, e);
}
catch (InstantiationException e)
{
- throw new IllegalArgumentException("Failed to instanciate property", e);
+ throw new IllegalArgumentException("Failed to instanciate " + clz.getSimpleName() + " property with value " + value, e);
}
catch (IllegalAccessException e)
{
- throw new IllegalArgumentException("Failed to instanciate property", e);
+ throw new IllegalArgumentException("Failed to instanciate " + clz.getSimpleName() + " property with value " + value, e);
}
catch (InvocationTargetException e)
{
- throw new IllegalArgumentException("Failed to instanciate property", e);
+ throw new IllegalArgumentException("Failed to instanciate " + clz.getSimpleName() + " property with value " + value, e);
}
catch (SecurityException e)
{
- throw new IllegalArgumentException("Failed to instanciate property", e);
+ throw new IllegalArgumentException("Failed to instanciate " + clz.getSimpleName() + " property with value " + value, e);
}
catch (NoSuchMethodException e)
{
- throw new IllegalArgumentException("Failed to instanciate property", e);
+ throw new IllegalArgumentException("Failed to instanciate " + clz.getSimpleName() + " property with value " + value, e);
}
}
Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java?rev=1754338&r1=1754337&r2=1754338&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java Wed Jul 27 20:07:16 2016
@@ -57,6 +57,8 @@ public class DateConverterTest
//Test missing seconds
assertEquals(DateConverter.toCalendar("2015-12-08T12:07:00-05:00"),
DateConverter.toCalendar("2015-12-08T12:07-05:00"));
+ assertEquals(DateConverter.toCalendar("2011-11-20T10:09:00Z"),
+ DateConverter.toCalendar("2011-11-20T10:09Z"));
// Test some time zone offsets
jaxbCal = javax.xml.bind.DatatypeConverter.parseDateTime("2015-02-02T16:37:19.192Z");