Skip to content

Commit ec25b02

Browse files
author
Maruan Sahyoun
committed
PDFBOX-5061: remove jaxb dependency
git-svn-id: https://svn.apache.org/repos/asf/pdfbox/trunk@1884943 13f79535-47bb-0310-9956-ffa450edef68
1 parent fb77284 commit ec25b02

File tree

4 files changed

+54
-150
lines changed

4 files changed

+54
-150
lines changed

xmpbox/pom.xml

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,6 @@
3131
<relativePath>../parent/pom.xml</relativePath>
3232
</parent>
3333

34-
<profiles>
35-
<profile>
36-
<activation>
37-
<jdk>[11,)</jdk>
38-
</activation>
39-
<dependencies>
40-
<dependency>
41-
<groupId>javax.xml.bind</groupId>
42-
<artifactId>jaxb-api</artifactId>
43-
<scope>provided</scope>
44-
</dependency>
45-
</dependencies>
46-
</profile>
47-
</profiles>
48-
4934
<dependencies>
5035
<dependency>
5136
<groupId>org.junit.jupiter</groupId>

xmpbox/src/main/java/org/apache/xmpbox/DateConverter.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,8 @@ public static String toISO8601(Calendar cal, boolean printMillis)
346346
*/
347347
private static Calendar fromISO8601(String dateString)
348348
{
349+
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX][zzz]");
350+
349351
// Pattern to test for a time zone string
350352
Pattern timeZonePattern = Pattern.compile(
351353
"[\\d-]*T?[\\d-\\.]([A-Z]{1,4})$|(.*\\d*)([A-Z][a-z]+\\/[A-Z][a-z]+)$"
@@ -376,7 +378,6 @@ private static Calendar fromISO8601(String dateString)
376378
toParse = dateString.substring(0, tzIndex) + ":00";
377379
}
378380

379-
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX][zzz]");
380381
ZonedDateTime zonedDateTime = ZonedDateTime.parse(toParse + timeZoneString, dateTimeFormatter);
381382

382383
return GregorianCalendar.from(zonedDateTime);
@@ -387,21 +388,25 @@ private static Calendar fromISO8601(String dateString)
387388
int teeIndex = dateString.indexOf('T');
388389
if (teeIndex == -1)
389390
{
390-
return javax.xml.bind.DatatypeConverter.parseDateTime(dateString);
391+
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateString, dateTimeFormatter);
392+
return GregorianCalendar.from(zonedDateTime);
391393
}
392394
int plusIndex = dateString.indexOf('+', teeIndex + 1);
393395
int minusIndex = dateString.indexOf('-', teeIndex + 1);
394396
if (plusIndex == -1 && minusIndex == -1)
395397
{
396-
return javax.xml.bind.DatatypeConverter.parseDateTime(dateString);
398+
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateString, dateTimeFormatter);
399+
return GregorianCalendar.from(zonedDateTime);
397400
}
398401
plusIndex = Math.max(plusIndex, minusIndex);
399402
if (plusIndex - teeIndex == 6)
400403
{
401404
String toParse = dateString.substring(0, plusIndex) + ":00" + dateString.substring(plusIndex);
402-
return javax.xml.bind.DatatypeConverter.parseDateTime(toParse);
405+
ZonedDateTime zonedDateTime = ZonedDateTime.parse(toParse, dateTimeFormatter);
406+
return GregorianCalendar.from(zonedDateTime);
403407
}
404-
return javax.xml.bind.DatatypeConverter.parseDateTime(dateString);
408+
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateString, dateTimeFormatter);
409+
return GregorianCalendar.from(zonedDateTime);
405410
}
406411
}
407412
}

xmpbox/src/test/java/org/apache/xmpbox/DateConverterTest.java

Lines changed: 44 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import static org.junit.jupiter.api.Assertions.assertEquals;
2525

2626
import java.text.SimpleDateFormat;
27+
import java.time.ZonedDateTime;
28+
import java.time.format.DateTimeFormatter;
2729
import java.util.Calendar;
2830

2931
import org.junit.jupiter.api.Test;
@@ -46,9 +48,6 @@ class DateConverterTest
4648
@Test
4749
void testDateConversion() throws Exception
4850
{
49-
final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
50-
Calendar jaxbCal;
51-
5251
// Test partial dates
5352
Calendar convDate = DateConverter.toCalendar("2015-02-02");
5453
assertEquals(2015, convDate.get(Calendar.YEAR));
@@ -60,44 +59,54 @@ void testDateConversion() throws Exception
6059
DateConverter.toCalendar("2011-11-20T10:09Z"));
6160

6261
// Test some time zone offsets
63-
jaxbCal = javax.xml.bind.DatatypeConverter.parseDateTime("2015-02-02T16:37:19.192Z");
64-
convDate = DateConverter.toCalendar("2015-02-02T16:37:19.192Z");
65-
assertEquals(dateFormat.format(jaxbCal.getTime()), dateFormat.format(convDate.getTime()));
62+
String testString1 = "";
63+
String testString2 = "";
64+
65+
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm[:ss][.SSS][XXX]");
66+
67+
//Test missing seconds
68+
testString1 = "2015-12-08T12:07:00-05:00";
69+
testString2 = "2015-12-08T12:07-05:00";
70+
71+
assertEquals(DateConverter.toCalendar(testString1), DateConverter.toCalendar(testString2));
72+
assertEquals(DateConverter.toCalendar(testString1).toInstant(),ZonedDateTime.parse(testString1, dateTimeFormatter).toInstant());
73+
assertEquals(DateConverter.toCalendar(testString2).toInstant(),ZonedDateTime.parse(testString2, dateTimeFormatter).toInstant());
74+
75+
// Test some time zone offsets
76+
testString1 = "2015-02-02T16:37:19.192Z";
77+
testString2 = "2015-02-02T16:37:19.192Z";
6678

67-
jaxbCal = javax.xml.bind.DatatypeConverter.parseDateTime("2015-02-02T16:37:19.192+00:00");
68-
convDate = DateConverter.toCalendar("2015-02-02T16:37:19.192Z");
69-
assertEquals(dateFormat.format(jaxbCal.getTime()), dateFormat.format(convDate.getTime()));
79+
assertEquals(DateConverter.toCalendar(testString2).toInstant(),ZonedDateTime.parse(testString1, dateTimeFormatter).toInstant());
7080

71-
jaxbCal = javax.xml.bind.DatatypeConverter.parseDateTime("2015-02-02T16:37:19.192+02:00");
72-
convDate = DateConverter.toCalendar("2015-02-02T16:37:19.192+02:00");
73-
assertEquals(dateFormat.format(jaxbCal.getTime()), dateFormat.format(convDate.getTime()));
81+
testString1 = "2015-02-02T16:37:19.192+00:00";
82+
testString2 = "2015-02-02T16:37:19.192Z";
7483

75-
jaxbCal = javax.xml.bind.DatatypeConverter.parseDateTime("2015-02-02T16:37:19.192Z");
76-
convDate = DateConverter.toCalendar("2015-02-02T08:37:19.192PST");
77-
assertEquals(dateFormat.format(jaxbCal.getTime()), dateFormat.format(convDate.getTime()));
84+
assertEquals(DateConverter.toCalendar(testString2).toInstant(),ZonedDateTime.parse(testString1, dateTimeFormatter).toInstant());
7885

79-
jaxbCal = javax.xml.bind.DatatypeConverter.parseDateTime("2015-02-02T16:37:19.192+01:00");
80-
convDate = DateConverter.toCalendar("2015-02-02T16:37:19.192Europe/Berlin");
81-
assertEquals(dateFormat.format(jaxbCal.getTime()), dateFormat.format(convDate.getTime()));
86+
testString1 = "2015-02-02T16:37:19.192+02:00";
87+
testString2 = "2015-02-02T16:37:19.192+02:00";
88+
89+
assertEquals(DateConverter.toCalendar(testString2).toInstant(),ZonedDateTime.parse(testString1, dateTimeFormatter).toInstant());
90+
91+
testString1 = "2015-02-02T16:37:19.192Z";
92+
testString2 = "2015-02-02T08:37:19.192PST";
93+
94+
assertEquals(DateConverter.toCalendar(testString2).toInstant(),ZonedDateTime.parse(testString1, dateTimeFormatter).toInstant());
95+
96+
testString1 = "2015-02-02T16:37:19.192+01:00";
97+
testString2 = "2015-02-02T16:37:19.192Europe/Berlin";
98+
99+
assertEquals(DateConverter.toCalendar(testString2).toInstant(),ZonedDateTime.parse(testString1, dateTimeFormatter).toInstant());
82100

83101
// PDFBOX-4902: half-hour TZ
84-
String time = "2015-02-02T16:37:19.192+05:30";
85-
jaxbCal = javax.xml.bind.DatatypeConverter.parseDateTime(time);
86-
assertEquals(time, DateConverter.toISO8601(jaxbCal, true));
87-
convDate = DateConverter.toCalendar(time);
88-
assertEquals(dateFormat.format(jaxbCal.getTime()), dateFormat.format(convDate.getTime()));
89-
90-
time = "2015-02-02T16:37:19.192-05:30";
91-
jaxbCal = javax.xml.bind.DatatypeConverter.parseDateTime(time);
92-
assertEquals(time, DateConverter.toISO8601(jaxbCal, true));
93-
convDate = DateConverter.toCalendar(time);
94-
assertEquals(dateFormat.format(jaxbCal.getTime()), dateFormat.format(convDate.getTime()));
95-
96-
time = "2015-02-02T16:37:19.192+10:30";
97-
jaxbCal = javax.xml.bind.DatatypeConverter.parseDateTime(time);
98-
assertEquals(time, DateConverter.toISO8601(jaxbCal, true));
99-
convDate = DateConverter.toCalendar(time);
100-
assertEquals(dateFormat.format(jaxbCal.getTime()), dateFormat.format(convDate.getTime()));
102+
testString1 = "2015-02-02T16:37:19.192+05:30";
103+
assertEquals(DateConverter.toCalendar(testString1).toInstant(),ZonedDateTime.parse(testString1, dateTimeFormatter).toInstant());
104+
105+
testString1 = "2015-02-02T16:37:19.192-05:30";
106+
assertEquals(DateConverter.toCalendar(testString1).toInstant(),ZonedDateTime.parse(testString1, dateTimeFormatter).toInstant());
107+
108+
testString1 = "2015-02-02T16:37:19.192+10:30";
109+
assertEquals(DateConverter.toCalendar(testString1).toInstant(),ZonedDateTime.parse(testString1, dateTimeFormatter).toInstant());
101110
}
102111

103112
/**

xmpbox/src/test/java/org/apache/xmpbox/JavaTimeTest.java

Lines changed: 0 additions & 95 deletions
This file was deleted.

0 commit comments

Comments
 (0)