Today i found a new problem: If I want to transmit a Calendar object inside an IdTagInfo object inside an AuthorizeConfirmation object from the methode:
public AuthorizeConfirmation handleAuthorizeRequest(int sessionIndex, AuthorizeRequest request)
back to the client the following exception gets thrown by the client.
java.lang.IllegalArgumentException: java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Berlin",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=143,lastRule=java.util.SimpleTimeZone[id=Europe/Berlin,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2018,MONTH=1,WEEK_OF_YEAR=2,WEEK_OF_MONTH=2,DAY_OF_MONTH=1,DAY_OF_YEAR=13,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=11,HOUR_OF_DAY=1,MINUTE=1,SECOND=1,MILLISECOND=343,ZONE_OFFSET=3600000,DST_OFFSET=0]
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl$Parser.parseAndSetYear(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl$Parser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.<init>(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl.newXMLGregorianCalendar(Unknown Source)
at javax.xml.bind.DatatypeConverterImpl._parseDateTime(Unknown Source)
at javax.xml.bind.DatatypeConverterImpl.parseDateTime(Unknown Source)
at javax.xml.bind.DatatypeConverter.parseDateTime(Unknown Source)
at eu.chargetime.ocpp.JSONCommunicator.parseValue(JSONCommunicator.java:157)
at eu.chargetime.ocpp.JSONCommunicator.parseValue(JSONCommunicator.java:144)
at eu.chargetime.ocpp.JSONCommunicator.parseJSON(JSONCommunicator.java:133)
at eu.chargetime.ocpp.JSONCommunicator.parseValue(JSONCommunicator.java:174)
at eu.chargetime.ocpp.JSONCommunicator.parseValue(JSONCommunicator.java:144)
at eu.chargetime.ocpp.JSONCommunicator.parseJSON(JSONCommunicator.java:133)
at eu.chargetime.ocpp.JSONCommunicator.unpackPayload(JSONCommunicator.java:78)
at eu.chargetime.ocpp.Session$CommunicatorEventHandler.onCallResult(Session.java:117)
at eu.chargetime.ocpp.Communicator$EventHandler.receivedMessage(Communicator.java:234)
at eu.chargetime.ocpp.WebSocketTransmitter$1.onMessage(WebSocketTransmitter.java:56)
at org.java_websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:312)
at org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:368)
at org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:157)
at org.java_websocket.client.WebSocketClient.interruptableRun(WebSocketClient.java:230)
at org.java_websocket.client.WebSocketClient.run(WebSocketClient.java:188)
at java.lang.Thread.run(Unknown Source)
It seems like the client isnt able to parse a Calendar object. If i dont transmit the calendar, all is fine.
My test Calendar Object which causes the exception:
Calendar calendar = Calendar.getInstance();
calendar.set(2018, 1, 1, 1, 1, 1);