1 /* 2 * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* 25 * A Super class for Transport Services used by 26 * nsk/jdi/PlugConnectors tests 27 */ 28 29 package nsk.share.jdi; 30 31 import com.sun.jdi.*; 32 import com.sun.jdi.connect.*; 33 import com.sun.jdi.connect.spi.*; 34 import java.io.*; 35 import java.util.*; 36 37 public class PlugTransportService extends TransportService { 38 39 String plugTransportServiceName = "Undefined_PlugTransportService_Name"; 40 String plugTransportServiceDescription = "Undefined_PlugTransportService_Description"; 41 TransportService.Capabilities plugTransportServiceCapabilities = new TestCapabilities(); 42 43 /* 44 * Simple implementation of TransportService.Capabilities 45 */ 46 public static class TestCapabilities extends TransportService.Capabilities { 47 boolean supportsAcceptTimeout = false; 48 boolean supportsAttachTimeout = false; 49 boolean supportsHandshakeTimeout = false; 50 boolean supportsMultipleConnections = false; 51 TestCapabilities()52 public TestCapabilities() { 53 } 54 TestCapabilities( boolean supportsAcceptTimeout, boolean supportsAttachTimeout, boolean supportsHandshakeTimeout, boolean supportsMultipleConnections)55 public TestCapabilities( 56 boolean supportsAcceptTimeout, 57 boolean supportsAttachTimeout, 58 boolean supportsHandshakeTimeout, 59 boolean supportsMultipleConnections) { 60 61 this.supportsAcceptTimeout = supportsAcceptTimeout; 62 this.supportsAttachTimeout = supportsAttachTimeout; 63 this.supportsHandshakeTimeout = supportsHandshakeTimeout; 64 this.supportsMultipleConnections = supportsMultipleConnections; 65 } 66 supportsAcceptTimeout()67 public boolean supportsAcceptTimeout() { 68 return supportsAcceptTimeout; 69 } 70 supportsAttachTimeout()71 public boolean supportsAttachTimeout() { 72 return supportsAttachTimeout; 73 } 74 supportsHandshakeTimeout()75 public boolean supportsHandshakeTimeout() { 76 return supportsHandshakeTimeout; 77 } 78 supportsMultipleConnections()79 public boolean supportsMultipleConnections() { 80 return supportsMultipleConnections; 81 } 82 83 } // end of TestCapabilities static class 84 85 /* 86 * Simple implementation of TransportService.ListenKey 87 */ 88 public static class TestListenKey extends TransportService.ListenKey { 89 String address = null; 90 TestListenKey()91 public TestListenKey() { 92 } 93 TestListenKey(String address)94 public TestListenKey(String address) { 95 96 this.address = address; 97 } 98 address()99 public String address() { 100 return address; 101 } 102 103 } // end of TestListenKey static class 104 PlugTransportService()105 public PlugTransportService() { 106 } 107 PlugTransportService( String plugTransportServiceName, String plugTransportServiceDescription, TransportService.Capabilities plugTransportServiceCapabilities )108 public PlugTransportService( 109 String plugTransportServiceName, 110 String plugTransportServiceDescription, 111 TransportService.Capabilities plugTransportServiceCapabilities 112 ) { 113 114 this.plugTransportServiceName = plugTransportServiceName; 115 this.plugTransportServiceDescription = plugTransportServiceDescription; 116 this.plugTransportServiceCapabilities = plugTransportServiceCapabilities; 117 } 118 name()119 public String name() { 120 return plugTransportServiceName; 121 } 122 description()123 public String description() { 124 return plugTransportServiceDescription; 125 } 126 capabilities()127 public TransportService.Capabilities capabilities() { 128 return plugTransportServiceCapabilities; 129 } 130 attach( String address, long attachTimeout, long handshakeTimeout)131 public Connection attach( 132 String address, 133 long attachTimeout, 134 long handshakeTimeout) throws IOException { 135 136 String exceptionMessage = "## PlugTransportService: TransportService name = '" + 137 plugTransportServiceName + "';\nNon-authorized call of attach(...) method!"; 138 139 if ( true ) { 140 throw new RuntimeException(exceptionMessage); 141 } 142 143 return null; 144 } 145 startListening(String address)146 public TransportService.ListenKey startListening(String address) throws IOException { 147 148 String exceptionMessage = "## PlugTransportService: TransportService name = '" + 149 plugTransportServiceName + "';\nNon-authorized call of startListening(...) method!"; 150 151 if ( true ) { 152 throw new RuntimeException(exceptionMessage); 153 } 154 155 return null; 156 } 157 startListening()158 public TransportService.ListenKey startListening() throws IOException { 159 160 String exceptionMessage = "## PlugTransportService: TransportService name = '" + 161 plugTransportServiceName + "';\nNon-authorized call of startListening() method!"; 162 163 if ( true ) { 164 throw new RuntimeException(exceptionMessage); 165 } 166 167 return null; 168 } 169 stopListening(TransportService.ListenKey listenKey)170 public void stopListening(TransportService.ListenKey listenKey) throws IOException { 171 172 String exceptionMessage = "## PlugTransportService: TransportService name = '" + 173 plugTransportServiceName + "';\nNon-authorized call of stopListening() method!"; 174 175 if ( true ) { 176 throw new RuntimeException(exceptionMessage); 177 } 178 } 179 accept( TransportService.ListenKey listenKey, long acceptTimeout, long handshakeTimeout)180 public Connection accept( 181 TransportService.ListenKey listenKey, 182 long acceptTimeout, 183 long handshakeTimeout) throws IOException { 184 185 String exceptionMessage = "## PlugTransportService: TransportService name = '" + 186 plugTransportServiceName + "';\nNon-authorized call of accept(...) method!"; 187 188 if ( true ) { 189 throw new RuntimeException(exceptionMessage); 190 } 191 192 return null; 193 } 194 195 /* 196 * Simple implementation of Connection 197 */ 198 public static class PlugTransportServiceConnection extends Connection { 199 close()200 public void close() throws IOException { 201 String exceptionMessage = 202 "## PlugTransportConnection: \nNon-authorized call of close() method!"; 203 204 if ( true ) { 205 throw new RuntimeException(exceptionMessage); 206 } 207 } 208 isOpen()209 public boolean isOpen() { 210 String exceptionMessage = 211 "## PlugTransportConnection: \nNon-authorized call of isOpen() method!"; 212 213 if ( true ) { 214 throw new RuntimeException(exceptionMessage); 215 } 216 return false; 217 } 218 readPacket()219 public byte[] readPacket() throws IOException { 220 String exceptionMessage = 221 "## PlugTransportConnection: \nNon-authorized call of readPacket() method!"; 222 223 if ( true ) { 224 throw new ClosedConnectionException(exceptionMessage); 225 } 226 227 if ( true ) { 228 throw new ClosedConnectionException(); 229 } 230 231 return null; 232 } 233 writePacket(byte[] pkt)234 public void writePacket(byte[] pkt) throws IOException { 235 String exceptionMessage = 236 "## PlugTransportConnection: \nNon-authorized call of writePacket(...) method!"; 237 238 if ( true ) { 239 throw new ClosedConnectionException(exceptionMessage); 240 } 241 242 if ( true ) { 243 throw new ClosedConnectionException(); 244 } 245 246 } 247 248 } // end of PlugTransportServiceConnection class 249 250 } // end of PlugTransportService class 251