Changes for checkstyle 8.32
[policy/apex-pdp.git] / tools / simple-wsclient / src / main / java / org / onap / policy / apex / tools / simple / wsclient / SimpleEcho.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.tools.simple.wsclient;
22
23 import java.io.PrintStream;
24 import java.net.URI;
25 import java.net.URISyntaxException;
26 import org.apache.commons.lang3.Validate;
27 import org.java_websocket.client.WebSocketClient;
28 import org.java_websocket.framing.CloseFrame;
29 import org.java_websocket.handshake.ServerHandshake;
30
31 /**
32  * Simple WS client as an echo.
33  *
34  * @author Sven van der Meer (sven.van.der.meer@ericsson.com)
35  */
36 public class SimpleEcho extends WebSocketClient {
37
38     /** Application name, used as prompt. */
39     private final String appName;
40
41     // Output and error streams
42     private PrintStream outStream;
43     private PrintStream errStream;
44
45     /**
46      * Creates a new simple echo object.
47      *
48      * @param server the name of the server as either IP address or fully qualified host name, must not be blank
49      * @param port the port to be used, must not be blank
50      * @param appName the application name, used as prompt, must not be blank
51      * @param outStream the stream for message output
52      * @param errStream the stream for error messages
53      * @throws URISyntaxException is URI could not be created from server/port settings
54      * @throws RuntimeException if server or port where blank
55      */
56     public SimpleEcho(final String server, final String port, final String appName, PrintStream outStream,
57                     PrintStream errStream) throws URISyntaxException {
58         super(new URI("ws://" + server + ":" + port));
59         Validate.notBlank(appName, "SimpleEcho: given application name was blank");
60  
61         this.appName = appName;
62         this.outStream = outStream;
63         this.errStream = errStream;
64     }
65
66     @Override
67     public void onClose(final int code, final String reason, final boolean remote) {
68         outStream.println(this.appName + ": Connection closed by " + (remote ? "APEX" : "me"));
69         outStream.print(" ==-->> ");
70         switch (code) {
71             case CloseFrame.NORMAL:
72                 outStream.println("normal");
73                 break;
74             case CloseFrame.GOING_AWAY:
75                 outStream.println("APEX going away");
76                 break;
77             case CloseFrame.PROTOCOL_ERROR:
78                 outStream.println("some protocol error");
79                 break;
80             case CloseFrame.REFUSE:
81                 outStream.println("received unacceptable type of data");
82                 break;
83             case CloseFrame.NO_UTF8:
84                 outStream.println("expected UTF-8, found something else");
85                 break;
86             case CloseFrame.TOOBIG:
87                 outStream.println("message too big");
88                 break;
89             case CloseFrame.UNEXPECTED_CONDITION:
90                 outStream.println("unexpected server condition");
91                 break;
92             default:
93                 outStream.println("unkown close frame code");
94                 break;
95         }
96         outStream.print(" ==-->> " + reason);
97     }
98
99     @Override
100     public void onError(final Exception ex) {
101         errStream.println(this.appName + ": " + ex.getMessage());
102     }
103
104     @Override
105     public void onMessage(final String message) {
106         outStream.println(this.appName + ": received");
107         outStream.println("---------------------------------");
108         outStream.println(message);
109         outStream.println("=================================");
110         outStream.println();
111     }
112
113     @Override
114     public void onOpen(final ServerHandshake handshakedata) {
115         outStream.println(this.appName + ": opened connection to APEX (" + handshakedata.getHttpStatusMessage() + ")");
116     }
117
118 }