diff --git a/ocpp-v1_6/pom.xml b/ocpp-v1_6/pom.xml
index 24def484f..9b337beaa 100644
--- a/ocpp-v1_6/pom.xml
+++ b/ocpp-v1_6/pom.xml
@@ -49,7 +49,7 @@
org.java-websocket
Java-WebSocket
- 1.3.7
+ 1.3.8
junit
diff --git a/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/JSONClient.java b/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/JSONClient.java
index eceb5be8c..dc6e9ed2e 100644
--- a/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/JSONClient.java
+++ b/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/JSONClient.java
@@ -58,7 +58,7 @@ public JSONClient(ClientCoreProfile coreProfile) {
*/
public JSONClient(ClientCoreProfile coreProfile, String identity) {
this.identity = identity;
- transmitter = new WebSocketTransmitter(new OcppDraft());
+ transmitter = new WebSocketTransmitter();
JSONCommunicator communicator = new JSONCommunicator(transmitter);
AsyncPromiseFulfilerDecorator promiseFulfiler = new AsyncPromiseFulfilerDecorator(new SimplePromiseFulfiller());
featureRepository = new FeatureRepository();
diff --git a/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/OcppDraft.java b/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/OcppDraft.java
deleted file mode 100644
index 41a5d8b74..000000000
--- a/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/OcppDraft.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package eu.chargetime.ocpp;
-/*
- ChargeTime.eu - Java-OCA-OCPP
-
- MIT License
-
- Copyright (C) 2016-2018 Thomas Volden
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
- */
-
-import org.java_websocket.drafts.Draft_6455;
-import org.java_websocket.exceptions.InvalidHandshakeException;
-import org.java_websocket.handshake.ClientHandshake;
-import org.java_websocket.handshake.ClientHandshakeBuilder;
-import org.java_websocket.handshake.HandshakeBuilder;
-import org.java_websocket.handshake.ServerHandshakeBuilder;
-
-public class OcppDraft extends Draft_6455 {
-
- private final String SUBPROTOCOL = "ocpp1.6";
-
- @Override
- public ClientHandshakeBuilder postProcessHandshakeRequestAsClient(ClientHandshakeBuilder request) {
- ClientHandshakeBuilder clientHandshakeBuilder = postProcessHandshakeRequestAsClient(request);
- clientHandshakeBuilder.put("Sec-WebSocket-Protocol", SUBPROTOCOL);
- return clientHandshakeBuilder;
- }
-
- @Override
- public HandshakeBuilder postProcessHandshakeResponseAsServer(ClientHandshake request, ServerHandshakeBuilder response) throws InvalidHandshakeException {
- HandshakeBuilder handshakeBuilder = postProcessHandshakeResponseAsServer(request, response);
- String subProtocol = request.getFieldValue("Sec-WebSocket-Protocol");
- if (subProtocol.length() > 0) {
- handshakeBuilder.put("Sec-WebSocket-Protocol", subProtocol);
- }
- return handshakeBuilder;
- }
-
- @Override
- public int hashCode() {
- int hash = super.hashCode();
- hash = 31 * hash + SUBPROTOCOL.hashCode();
- return hash;
- }
-
- @Override
- public String toString() {
- String result = super.toString();
- result += " sub protocol: " + SUBPROTOCOL;
- return result;
- }
-}
\ No newline at end of file
diff --git a/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/WebSocketListener.java b/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/WebSocketListener.java
index 83ea34219..1d198c8a8 100644
--- a/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/WebSocketListener.java
+++ b/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/WebSocketListener.java
@@ -30,34 +30,36 @@ of this software and associated documentation files (the "Software"), to deal
import org.apache.logging.log4j.Logger;
import org.java_websocket.WebSocket;
import org.java_websocket.drafts.Draft;
+import org.java_websocket.drafts.Draft_6455;
+import org.java_websocket.extensions.IExtension;
import org.java_websocket.handshake.ClientHandshake;
+import org.java_websocket.protocols.IProtocol;
+import org.java_websocket.protocols.Protocol;
import org.java_websocket.server.DefaultSSLWebSocketServerFactory;
import org.java_websocket.server.WebSocketServer;
import javax.net.ssl.SSLContext;
import java.net.InetSocketAddress;
-import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
-import java.util.List;
public class WebSocketListener implements Listener {
private static final Logger logger = LogManager.getLogger(WebSocketListener.class);
private final IServerSessionFactory sessionFactory;
- private final List drafts;
private WebSocketServer server;
private HashMap sockets;
private boolean handleRequestAsync;
- public WebSocketListener(IServerSessionFactory sessionFactory, Draft... drafts) {
+ public WebSocketListener(IServerSessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
- this.drafts = Arrays.asList(drafts);
this.sockets = new HashMap<>();
}
@Override
public void open(String hostname, int port, ListenerEvents handler) {
- server = new WebSocketServer(new InetSocketAddress(hostname, port), drafts) {
+ Draft_6455 draft = new Draft_6455(Collections.emptyList(), Collections.singletonList(new Protocol("ocpp1.6")));
+ server = new WebSocketServer(new InetSocketAddress(hostname, port), Collections.singletonList(draft)) {
@Override
public void onOpen(WebSocket webSocket, ClientHandshake clientHandshake) {
WebSocketReceiver receiver = new WebSocketReceiver(message -> webSocket.send(message));
diff --git a/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/WebSocketTransmitter.java b/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/WebSocketTransmitter.java
index 36c0b8512..fd1daf1de 100644
--- a/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/WebSocketTransmitter.java
+++ b/ocpp-v1_6/src/main/java/eu/chargetime/ocpp/WebSocketTransmitter.java
@@ -30,32 +30,35 @@ of this software and associated documentation files (the "Software"), to deal
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.java_websocket.client.WebSocketClient;
-import org.java_websocket.drafts.Draft;
+import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.exceptions.WebsocketNotConnectedException;
+import org.java_websocket.extensions.IExtension;
import org.java_websocket.handshake.ServerHandshake;
+import org.java_websocket.protocols.IProtocol;
+import org.java_websocket.protocols.Protocol;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import java.io.IOException;
import java.net.ConnectException;
import java.net.URI;
+import java.util.Collections;
+
/**
* Web Socket implementation of the Transmitter.
*/
public class WebSocketTransmitter implements Transmitter
{
private static final Logger logger = LogManager.getLogger(WebSocketTransmitter.class);
- private final Draft draft;
private WebSocketClient client;
- public WebSocketTransmitter(Draft draft) {
- this.draft = draft;
+ public WebSocketTransmitter() {
}
@Override
public void connect(String uri, RadioEvents events) {
-
+ Draft_6455 draft = new Draft_6455(Collections.emptyList(), Collections.singletonList(new Protocol("ocpp1.6")));
client = new WebSocketClient(URI.create(uri), draft) {
@Override
public void onOpen(ServerHandshake serverHandshake)
@@ -72,6 +75,7 @@ public void onMessage(String s)
@Override
public void onClose(int i, String s, boolean b)
{
+ logger.debug("WebSocketClient.onClose: code = " + i + ", message = " + s + ", host closed = " + b);
events.disconnected();
}
@@ -109,6 +113,7 @@ public void disconnect()
@Override
public void send(Object request) throws NotConnectedException {
+ logger.debug("Sending: " + request);
try {
client.send(request.toString());
} catch (WebsocketNotConnectedException ex) {