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) {