Skip to content

Commit 13a1849

Browse files
committed
Changed JSON lib to gson. Reverted hotfix.
1 parent f7e3abc commit 13a1849

29 files changed

+209
-193
lines changed

ocpp-v1_6-test/src/main/java/eu/chargetime/ocpp/test/FakeCentralSystem.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ public void sendChangeAvailabilityRequest(int connectorId, AvailabilityType type
202202
public boolean hasReceivedChangeAvailabilityConfirmation(String status) {
203203
boolean result = receivedConfirmation instanceof ChangeAvailabilityConfirmation;
204204
if (result)
205-
result &= ((ChangeAvailabilityConfirmation) receivedConfirmation).getStatus().equals(status);
205+
result &= ((ChangeAvailabilityConfirmation) receivedConfirmation).getStatus().toString().equals(status);
206206
return result;
207207
}
208208

@@ -272,7 +272,7 @@ public void sendRemoteStartTransactionRequest(int connectorId, String idTag) thr
272272
public boolean hasReceivedRemoteStartTransactionConfirmation(String status) {
273273
boolean result = receivedConfirmation instanceof RemoteStartTransactionConfirmation;
274274
if (result)
275-
result &= ((RemoteStartTransactionConfirmation) receivedConfirmation).getStatus().equals(status);
275+
result &= ((RemoteStartTransactionConfirmation) receivedConfirmation).getStatus().toString().equals(status);
276276
return result;
277277
}
278278

@@ -285,7 +285,7 @@ public void sendRemoteStopTransactionRequest(int transactionId) throws Exception
285285
public boolean hasReceivedRemoteStopTransactionConfirmation(String status) {
286286
boolean result = receivedConfirmation instanceof RemoteStopTransactionConfirmation;
287287
if (result)
288-
result &= ((RemoteStopTransactionConfirmation) receivedConfirmation).getStatus().equals(status);
288+
result &= ((RemoteStopTransactionConfirmation) receivedConfirmation).getStatus().toString().equals(status);
289289
return result;
290290
}
291291

@@ -298,7 +298,7 @@ public void sendResetRequest(ResetType type) throws Exception {
298298
public boolean hasReceivedResetConfirmation(String status) {
299299
boolean result = receivedConfirmation instanceof ResetConfirmation;
300300
if (result)
301-
result &= ((ResetConfirmation) receivedConfirmation).getStatus().equals(status);
301+
result &= ((ResetConfirmation) receivedConfirmation).getStatus().toString().equals(status);
302302
return result;
303303
}
304304

@@ -323,7 +323,7 @@ public void sendUnlockConnectorRequest(int connectorId) throws Exception {
323323
public boolean hasReceivedUnlockConnectorConfirmation(String status) {
324324
boolean result = receivedConfirmation instanceof UnlockConnectorConfirmation;
325325
if (result)
326-
result &= ((UnlockConnectorConfirmation) receivedConfirmation).getStatus().equals(status);
326+
result &= ((UnlockConnectorConfirmation) receivedConfirmation).getStatus().toString().equals(status);
327327
return result;
328328
}
329329

ocpp-v1_6-test/src/main/java/eu/chargetime/ocpp/test/FakeChargePoint.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,19 +209,19 @@ private void send(Request request) throws Exception {
209209

210210
public boolean hasReceivedBootConfirmation(String status) {
211211
if (receivedConfirmation instanceof BootNotificationConfirmation)
212-
return ((BootNotificationConfirmation) receivedConfirmation).getStatus().equals(status);
212+
return ((BootNotificationConfirmation) receivedConfirmation).getStatus().toString().equals(status);
213213
return false;
214214
}
215215

216216
public boolean hasReceivedAuthorizeConfirmation(String status) {
217217
if (receivedConfirmation instanceof AuthorizeConfirmation)
218-
return ((AuthorizeConfirmation) receivedConfirmation).getIdTagInfo().getStatus().equals(status);
218+
return ((AuthorizeConfirmation) receivedConfirmation).getIdTagInfo().getStatus().toString().equals(status);
219219
return false;
220220
}
221221

222222
public boolean hasReceivedDataTransferConfirmation(String status) {
223223
if (receivedConfirmation instanceof DataTransferConfirmation)
224-
return ((DataTransferConfirmation) receivedConfirmation).getStatus().equals(status);
224+
return ((DataTransferConfirmation) receivedConfirmation).getStatus().toString().equals(status);
225225
return false;
226226
}
227227

ocpp-v1_6/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@
4141
<version>0.3-SNAPSHOT</version>
4242
</dependency>
4343
<dependency>
44-
<groupId>org.json</groupId>
45-
<artifactId>json</artifactId>
46-
<version>20160212</version>
44+
<groupId>com.google.code.gson</groupId>
45+
<artifactId>gson</artifactId>
46+
<version>2.8.0</version>
4747
<scope>compile</scope>
4848
</dependency>
4949
<dependency>

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/JSONCommunicator.java

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
package eu.chargetime.ocpp;
22

3+
import com.google.gson.*;
34
import eu.chargetime.ocpp.model.CallErrorMessage;
45
import eu.chargetime.ocpp.model.CallMessage;
56
import eu.chargetime.ocpp.model.CallResultMessage;
67
import eu.chargetime.ocpp.model.Message;
7-
import org.json.JSONArray;
8-
import org.json.JSONObject;
98

10-
import javax.xml.bind.DatatypeConverter;
11-
import java.lang.reflect.Array;
12-
import java.lang.reflect.Method;
139
import java.lang.reflect.Type;
10+
import java.text.ParseException;
11+
import java.text.SimpleDateFormat;
1412
import java.util.Calendar;
13+
import java.util.Date;
14+
import java.util.GregorianCalendar;
15+
import java.util.TimeZone;
1516

1617
/*
1718
ChargeTime.eu - Java-OCA-OCPP
@@ -74,13 +75,41 @@ public JSONCommunicator(Radio radio) {
7475

7576
@Override
7677
public <T> T unpackPayload(Object payload, Class<T> type) throws Exception {
77-
JSONObject json = new JSONObject(payload.toString());
78-
return parseJSON(json, type);
78+
GsonBuilder builder = new GsonBuilder();
79+
builder.registerTypeAdapter(Calendar.class, new CalendarDeserializer());
80+
Gson gson = builder.create();
81+
return gson.fromJson(payload.toString(), type);
7982
}
8083

8184
@Override
8285
public Object packPayload(Object payload) {
83-
return new JSONObject(payload).toString();
86+
GsonBuilder builder = new GsonBuilder();
87+
builder.registerTypeAdapter(GregorianCalendar.class, new CalendarSerializer());
88+
Gson gson = builder.create();
89+
return gson.toJson(payload);
90+
}
91+
92+
private class CalendarSerializer implements JsonSerializer<Calendar> {
93+
public JsonElement serialize(Calendar src, Type typeOfSrc, JsonSerializationContext context) {
94+
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
95+
formatter.setTimeZone(TimeZone.getTimeZone("GMT+00:00"));
96+
return new JsonPrimitive(formatter.format(src.getTime()));
97+
}
98+
}
99+
100+
private class CalendarDeserializer implements JsonDeserializer<Calendar> {
101+
public Calendar deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
102+
try {
103+
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
104+
formatter.setTimeZone(TimeZone.getTimeZone("GMT+00:00"));
105+
Calendar calendar = Calendar.getInstance();
106+
Date date = formatter.parse(json.getAsJsonPrimitive().getAsString());
107+
calendar.setTime(date);
108+
return calendar;
109+
} catch (ParseException e) {
110+
throw new JsonParseException(e);
111+
}
112+
}
84113
}
85114

86115
@Override
@@ -101,26 +130,28 @@ protected Object makeCallError(String uniqueId, String errorCode, String errorDe
101130
@Override
102131
protected Message parse(Object json) {
103132
Message message = null;
104-
JSONArray array = new JSONArray(json.toString());
133+
JsonParser parser = new JsonParser();
134+
JsonArray array = parser.parse(json.toString()).getAsJsonArray();
105135

106-
if (array.getInt(INDEX_MESSAGEID) == TYPENUMBER_CALL) {
136+
if (array.get(INDEX_MESSAGEID).getAsInt() == TYPENUMBER_CALL) {
107137
message = new CallMessage();
108-
((CallMessage)message).setAction(array.getString(INDEX_CALL_ACTION));
138+
((CallMessage) message).setAction(array.get(INDEX_CALL_ACTION).getAsString());
109139
message.setPayload(array.get(INDEX_CALL_PAYLOAD).toString());
110-
} else if (array.getInt(INDEX_MESSAGEID) == TYPENUMBER_CALLRESULT) {
140+
} else if (array.get(INDEX_MESSAGEID).getAsInt() == TYPENUMBER_CALLRESULT) {
111141
message = new CallResultMessage();
112142
message.setPayload(array.get(INDEX_CALLRESULT_PAYLOAD).toString());
113-
} else if (array.getInt(INDEX_MESSAGEID) == TYPENUMBER_CALLERROR) {
143+
} else if (array.get(INDEX_MESSAGEID).getAsInt() == TYPENUMBER_CALLERROR) {
114144
message = new CallErrorMessage();
115-
((CallErrorMessage) message).setErrorCode(array.get(INDEX_CALLERROR_ERRORCODE).toString());
116-
((CallErrorMessage) message).setErrorDescription(array.get(INDEX_CALLERROR_DESCRIPTION).toString());
145+
((CallErrorMessage) message).setErrorCode(array.get(INDEX_CALLERROR_ERRORCODE).getAsString());
146+
((CallErrorMessage) message).setErrorDescription(array.get(INDEX_CALLERROR_DESCRIPTION).getAsString());
117147
((CallErrorMessage) message).setRawPayload(array.get(INDEX_CALLERROR_PAYLOAD).toString());
118148
}
119-
message.setId(array.getString(INDEX_UNIQUEID));
149+
message.setId(array.get(INDEX_UNIQUEID).getAsString());
120150

121151
return message;
122152
}
123153

154+
/*
124155
private <T> T parseJSON(JSONObject json, Class<T> type) throws Exception {
125156
T object = type.newInstance();
126157
@@ -246,4 +277,5 @@ private boolean methodIsSetter(Method method) {
246277
247278
return isSetter;
248279
}
280+
*/
249281
}

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/core/BootNotificationConfirmation.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55

66
import javax.xml.bind.annotation.XmlElement;
77
import javax.xml.bind.annotation.XmlRootElement;
8-
import java.text.SimpleDateFormat;
98
import java.util.Calendar;
10-
import java.util.TimeZone;
119

1210
/*
1311
ChargeTime.eu - Java-OCA-OCPP
@@ -49,23 +47,21 @@ public class BootNotificationConfirmation implements Confirmation
4947
private RegistrationStatus status;
5048

5149
/**
52-
* Formattet Central System's current time.
53-
* Pattern: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
50+
* Central System's current time.
5451
*
55-
* @return Formattet time.
52+
* @return an instance of Calendar.
5653
*/
57-
public String getCurrentTime()
54+
public Calendar getCurrentTime()
5855
{
59-
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
60-
formatter.setTimeZone(TimeZone.getTimeZone("GMT+00:00"));
61-
return formatter.format(currentTime.getTime());
56+
return currentTime;
6257
}
6358

6459
/**
6560
* Central System's current time.
6661
*
6762
* @return an instance of Calendar.
6863
*/
64+
@Deprecated
6965
public Calendar objCurrentTime() {
7066
return currentTime;
7167
}
@@ -114,6 +110,7 @@ public void setInterval(int interval) throws PropertyConstraintException {
114110
*
115111
* @return Charge Points registration status as {@link RegistrationStatus}.
116112
*/
113+
@Deprecated
117114
public RegistrationStatus objStatus()
118115
{
119116
return status;
@@ -122,11 +119,11 @@ public RegistrationStatus objStatus()
122119
/**
123120
* This contains whether the Charge Point has been registered within the System Central.
124121
*
125-
* @return Charge Points registration status as String.
122+
* @return Charge Points registration status as {@link RegistrationStatus}.
126123
*/
127-
public String getStatus()
124+
public RegistrationStatus getStatus()
128125
{
129-
return status.toString();
126+
return status;
130127
}
131128

132129
/**

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/core/ChangeAvailabilityConfirmation.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,18 @@ public class ChangeAvailabilityConfirmation implements Confirmation {
4343
/**
4444
* This indicates whether the Charge Point is able to perform the availability change.
4545
*
46-
* @return String, the {@link AvailabilityStatus} of the connector
46+
* @return The {@link AvailabilityStatus} of the connector.
4747
*/
48-
public String getStatus() {
49-
return status.toString();
48+
public AvailabilityStatus getStatus() {
49+
return status;
5050
}
5151

5252
/**
5353
* This indicates whether the Charge Point is able to perform the availability change.
5454
*
5555
* @return The {@link AvailabilityStatus} of the connector.
5656
*/
57+
@Deprecated
5758
public AvailabilityStatus objStatus() {
5859
return status;
5960
}

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/core/ChangeAvailabilityRequest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,18 @@ public void setConnectorId(int connectorId) throws PropertyConstraintException {
7070
/**
7171
* This contains the type of availability change that the Charge Point should perform.
7272
*
73-
* @return Stirng version of {@link AvailabilityType}.
73+
* @return {@link AvailabilityType} of the connector.
7474
*/
75-
public String getType() {
76-
return type.toString();
75+
public AvailabilityType getType() {
76+
return type;
7777
}
7878

7979
/**
8080
* This contains the type of availability change that the Charge Point should perform.
8181
*
8282
* @return {@link AvailabilityType} of the connector.
8383
*/
84+
@Deprecated
8485
public AvailabilityType objType() {
8586
return type;
8687
}

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/model/core/ChangeConfigurationConfirmation.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,16 @@ public class ChangeConfigurationConfirmation implements Confirmation {
4444
*
4545
* @return String, the {@link ConfigurationStatus}.
4646
*/
47-
public String getStatus() {
48-
return status.toString();
47+
public ConfigurationStatus getStatus() {
48+
return status;
4949
}
5050

5151
/**
5252
* Returns whether configuration change has been accepted.
5353
*
5454
* @return the {@link ConfigurationStatus}.
5555
*/
56+
@Deprecated
5657
public ConfigurationStatus objStatus() {
5758
return status;
5859
}

0 commit comments

Comments
 (0)