von XMLGregorianCalendar Datum/Kalender fügt zusätzliche Zeit/unerwünschte

Entwickle ich einen client an einen web-Dienst, der entlarvt (.wsdl -) Vertrag, erfordert yyyy-MM-dd-format für 1 auf die request-Parameter , jedoch automatisch generierten POJOS basiert auf der .wsdl erstellen Sie das Attribut "Datum" als Typ XMLGregorianCalendar.


Mein Problem ist NICHT die Konvertierung zu oder von XMLGregorianCalendar siehe mein Dienstprogramm unten:

public static XMLGregorianCalendar toXMLGregorianCalendar(Calendar c){
 GregorianCalendar gc = new GregorianCalendar();
 gc.setTimeInMillis(c.getTimeInMillis());
 XMLGregorianCalendar xc= null;
try {
    xc = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
} catch (DatatypeConfigurationException e) {
    //TODO Auto-generated catch block
    e.printStackTrace();
}
 return xc;
}

Mein Problem ist der Weg von XMLGregorianCalendar Datum/Kalender fügt zusätzliche Zeit/nicht mehr benötigte Daten zu meinem yyyy-MM-dd beim Aufruf Kalender.getTime();

In einem bestimmten code-segment, die ich brauche, um zu gehen von XMLGregorianCalendar bisher

if (repairOrderType.getCloseDate() != null) {

                LOG.debug("ServiceHistoryMapper, processRepairOrders() , repairOrderType.getCloseDate() BEFORE:"
                        + repairOrderType.getCloseDate());
                String date = repairOrderType.getCloseDate().getYear() + "-"
                        + repairOrderType.getCloseDate().getMonth() + "-"
                        + repairOrderType.getCloseDate().getDay();

                //Approach #1, trying to remove hour,minute,sec values by calendar.clear() method , not successful 
                Calendar calendar = Calendar.getInstance();
                calendar.set(repairOrderType.getCloseDate().getYear(),
                        repairOrderType.getCloseDate().getMonth(),
                        repairOrderType.getCloseDate().getDay());
                calendar.clear(Calendar.HOUR);
                calendar.clear(Calendar.MINUTE);
                calendar.clear(Calendar.SECOND);
                calendar.clear(Calendar.MILLISECOND);



                /*Approach#2 , trying to remove hour,minute,sec values using SimpleDateFormat ,
                 * also not successful. SimpleDateFormat or DateFormat are use to format String output NOT remove internal data
                 *
                DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
                Calendar calendar = formatter.getCalendar();
                calendar.set(repairOrderType.getCloseDate().getYear(),
                repairOrderType.getCloseDate().getMonth(),
                repairOrderType.getCloseDate().getDay());
                */

                LOG.debug("ServiceHistoryMapper, processRepairOrders() , repairOrderType.getCloseDate() AFTER:"
                        + calendar.getTime());
                repairOrder.setCloseDate(calendar.getTime());

            }

Ausgabe:

27-Nov-2012 18:10:39.743 DEBUG com.tms.Besitzer.- integration.nsh.mapping.ServiceHistoryMapper - ServiceHistoryMapper, processRepairOrders() , repairOrderType.getCloseDate() VOR:2012-04-30

27-Nov-2012 18:10:51.413 DEBUG com.tms.Besitzer.- integration.nsh.mapping.ServiceHistoryMapper - ServiceHistoryMapper, processRepairOrders() , repairOrderType.getCloseDate() NACH:mi Mai 30 18:00:00 PDT 2012

Wie Sie oben sehen können, BEVOR Datum VOR:2012-04-30 und NACH Datum Mai 30 18:00:00 PDT 2012 mit unerwünschten Stunden "18:00:00 PDT".


Unten ist meine eigentliche XML-Anfrage an den Dienst gesendet:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns4:VehicleServiceHistoryDetails
            xmlns="urn:tms.toyota.com/Components" xmlns:ns2="urn://esb.ari.xxxxxx.com/2008/12/10/schemas/common/Customer"
            xmlns:ns3="urn:incentives.ari.xxxxxx.com/StandardHeader"
            xmlns:ns4="urn://esb.ari.xxxxxx.com/2008/12/10/schemas/History"
            xmlns:ns5="http://ice.ari.xxxxxx.com/EMF" xmlns:ns6="urn:ari.xxxxxx.com/rtmheader">
            <ns5:ApplicationArea>
                <ns5:CreationDateTime>2012-11-27T18:11:23.071-08:00
                </ns5:CreationDateTime>
                <ns5:Sender />
                <ns5:UserArea />
            </ns5:ApplicationArea>
            <ns4:VehicleServiceHistoryDataArea>
                <ns4:VehicleServiceHistoryHeader>
                    <ns3:TimeStamp>2012-11-27T18:11:23.071-08:00</ns3:TimeStamp>
                    <ns3:SourceSystem>TOO</ns3:SourceSystem>
                    <ns4:SourceKey>TOY1TWXE</ns4:SourceKey>
                </ns4:VehicleServiceHistoryHeader>
                <ns4:VehicleServiceHistory>
                    <ns4:VIN>XXXXXXXXXXXXXXXX</ns4:VIN>
                    <ns4:RepairOrder>
                        <ns2:RepairOrderDealer>
                            <DealerNumber>29059</DealerNumber>
                        </ns2:RepairOrderDealer>
                        <ns2:RepairOrderNumber>0088745</ns2:RepairOrderNumber>
                        <ns2:CloseDate>2012-05-30-07:00</ns2:CloseDate>
                    </ns4:RepairOrder>
                </ns4:VehicleServiceHistory>
            </ns4:VehicleServiceHistoryDataArea>
        </ns4:VehicleServiceHistoryDetails>
    </S:Body>
</S:Envelope>

Sehen Sie in der request-xml in der 2012-05-30-07:00 das extra "-07:00" - Daten Hinzugefügt wird, ich möchte nur 2012-05-30.

Dank

InformationsquelleAutor cyber101 | 2012-11-28
Schreibe einen Kommentar