1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. 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 18 package org.apache.commons.net; 19 import java.util.EventObject; 20 21 /*** 22 * There exists a large class of IETF protocols that work by sending an 23 * ASCII text command and arguments to a server, and then receiving an 24 * ASCII text reply. For debugging and other purposes, it is extremely 25 * useful to log or keep track of the contents of the protocol messages. 26 * The ProtocolCommandEvent class coupled with the 27 * {@link org.apache.commons.net.ProtocolCommandListener} 28 * interface facilitate this process. 29 * <p> 30 * <p> 31 * @see ProtocolCommandListener 32 * @see ProtocolCommandSupport 33 * @author Daniel F. Savarese 34 ***/ 35 36 public class ProtocolCommandEvent extends EventObject 37 { 38 private int __replyCode; 39 private boolean __isCommand; 40 private String __message, __command; 41 42 /*** 43 * Creates a ProtocolCommandEvent signalling a command was sent to 44 * the server. ProtocolCommandEvents created with this constructor 45 * should only be sent after a command has been sent, but before the 46 * reply has been received. 47 * <p> 48 * @param source The source of the event. 49 * @param command The string representation of the command type sent, not 50 * including the arguments (e.g., "STAT" or "GET"). 51 * @param message The entire command string verbatim as sent to the server, 52 * including all arguments. 53 ***/ 54 public ProtocolCommandEvent(Object source, String command, String message) 55 { 56 super(source); 57 __replyCode = 0; 58 __message = message; 59 __isCommand = true; 60 __command = command; 61 } 62 63 64 /*** 65 * Creates a ProtocolCommandEvent signalling a reply to a command was 66 * received. ProtocolCommandEvents created with this constructor 67 * should only be sent after a complete command reply has been received 68 * fromt a server. 69 * <p> 70 * @param source The source of the event. 71 * @param replyCode The integer code indicating the natureof the reply. 72 * This will be the protocol integer value for protocols 73 * that use integer reply codes, or the reply class constant 74 * corresponding to the reply for protocols like POP3 that use 75 * strings like OK rather than integer codes (i.e., POP3Repy.OK). 76 * @param message The entire reply as received from the server. 77 ***/ 78 public ProtocolCommandEvent(Object source, int replyCode, String message) 79 { 80 super(source); 81 __replyCode = replyCode; 82 __message = message; 83 __isCommand = false; 84 __command = null; 85 } 86 87 /*** 88 * Returns the string representation of the command type sent (e.g., "STAT" 89 * or "GET"). If the ProtocolCommandEvent is a reply event, then null 90 * is returned. 91 * <p> 92 * @return The string representation of the command type sent, or null 93 * if this is a reply event. 94 ***/ 95 public String getCommand() 96 { 97 return __command; 98 } 99 100 101 /*** 102 * Returns the reply code of the received server reply. Undefined if 103 * this is not a reply event. 104 * <p> 105 * @return The reply code of the received server reply. Undefined if 106 * not a reply event. 107 ***/ 108 public int getReplyCode() 109 { 110 return __replyCode; 111 } 112 113 /*** 114 * Returns true if the ProtocolCommandEvent was generated as a result 115 * of sending a command. 116 * <p> 117 * @return true If the ProtocolCommandEvent was generated as a result 118 * of sending a command. False otherwise. 119 ***/ 120 public boolean isCommand() 121 { 122 return __isCommand; 123 } 124 125 /*** 126 * Returns true if the ProtocolCommandEvent was generated as a result 127 * of receiving a reply. 128 * <p> 129 * @return true If the ProtocolCommandEvent was generated as a result 130 * of receiving a reply. False otherwise. 131 ***/ 132 public boolean isReply() 133 { 134 return !isCommand(); 135 } 136 137 /*** 138 * Returns the entire message sent to or received from the server. 139 * <p> 140 * @return The entire message sent to or received from the server. 141 ***/ 142 public String getMessage() 143 { 144 return __message; 145 } 146 }