I'm developing a webservice integrated with spring-struts web application, in XSD there is a XMLGregorianCalendar type property, let's say the property name is trxDate.
In SOAPUI testing application, if I inserted the value of trxDate with: 2013-02-21, then I sent the soap xml request data and I printed the value in service method with: System.out.println(trxDate) method, the printout result is same as inputted: 2013-02-21.
Now, I'm trying to create a function to compare trxDate with current date. I know we can compare it using trxDate.compare(currentDate) method. The problem is I don't how to create XMLGregorianCalendar object set with current date with Date portion only (day, month, and year) to be used for comparing.
I tried with this code:
GregorianCalendar gc = new GregorianCalendar();
gc.set(GregorianCalendar.HOUR_OF_DAY, 0);
gc.set(GregorianCalendar.MINUTE, 0);
gc.set(GregorianCalendar.SECOND, 0);
gc.set(GregorianCalendar.MILLISECOND, 0);
XMLGregorianCalendar xgc = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
System.out.println(xgc);
The result is:
2013-02-20T00:00:00.000+07:00
But I'm expecting:
2013-02-20
If use the date (xgc) to compare with trxDate:
int result = trxDate.compare(xgc);
The result is 2, which means: INDETERMINATE (from DatatypeConstants class). The proper result should be -1, 0, or 1.
So what's wrong with my code?