001 /* 002 * Copyright 2001-2005 The Apache Software Foundation 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.apache.commons.net; 017 import java.util.EventObject; 018 019 /*** 020 * There exists a large class of IETF protocols that work by sending an 021 * ASCII text command and arguments to a server, and then receiving an 022 * ASCII text reply. For debugging and other purposes, it is extremely 023 * useful to log or keep track of the contents of the protocol messages. 024 * The ProtocolCommandEvent class coupled with the 025 * {@link org.apache.commons.net.ProtocolCommandListener} 026 * interface facilitate this process. 027 * <p> 028 * <p> 029 * @see ProtocolCommandListener 030 * @see ProtocolCommandSupport 031 * @author Daniel F. Savarese 032 ***/ 033 034 public class ProtocolCommandEvent extends EventObject 035 { 036 private int __replyCode; 037 private boolean __isCommand; 038 private String __message, __command; 039 040 /*** 041 * Creates a ProtocolCommandEvent signalling a command was sent to 042 * the server. ProtocolCommandEvents created with this constructor 043 * should only be sent after a command has been sent, but before the 044 * reply has been received. 045 * <p> 046 * @param source The source of the event. 047 * @param command The string representation of the command type sent, not 048 * including the arguments (e.g., "STAT" or "GET"). 049 * @param message The entire command string verbatim as sent to the server, 050 * including all arguments. 051 ***/ 052 public ProtocolCommandEvent(Object source, String command, String message) 053 { 054 super(source); 055 __replyCode = 0; 056 __message = message; 057 __isCommand = true; 058 __command = command; 059 } 060 061 062 /*** 063 * Creates a ProtocolCommandEvent signalling a reply to a command was 064 * received. ProtocolCommandEvents created with this constructor 065 * should only be sent after a complete command reply has been received 066 * fromt a server. 067 * <p> 068 * @param source The source of the event. 069 * @param replyCode The integer code indicating the natureof the reply. 070 * This will be the protocol integer value for protocols 071 * that use integer reply codes, or the reply class constant 072 * corresponding to the reply for protocols like POP3 that use 073 * strings like OK rather than integer codes (i.e., POP3Repy.OK). 074 * @param message The entire reply as received from the server. 075 ***/ 076 public ProtocolCommandEvent(Object source, int replyCode, String message) 077 { 078 super(source); 079 __replyCode = replyCode; 080 __message = message; 081 __isCommand = false; 082 __command = null; 083 } 084 085 /*** 086 * Returns the string representation of the command type sent (e.g., "STAT" 087 * or "GET"). If the ProtocolCommandEvent is a reply event, then null 088 * is returned. 089 * <p> 090 * @return The string representation of the command type sent, or null 091 * if this is a reply event. 092 ***/ 093 public String getCommand() 094 { 095 return __command; 096 } 097 098 099 /*** 100 * Returns the reply code of the received server reply. Undefined if 101 * this is not a reply event. 102 * <p> 103 * @return The reply code of the received server reply. Undefined if 104 * not a reply event. 105 ***/ 106 public int getReplyCode() 107 { 108 return __replyCode; 109 } 110 111 /*** 112 * Returns true if the ProtocolCommandEvent was generated as a result 113 * of sending a command. 114 * <p> 115 * @return true If the ProtocolCommandEvent was generated as a result 116 * of sending a command. False otherwise. 117 ***/ 118 public boolean isCommand() 119 { 120 return __isCommand; 121 } 122 123 /*** 124 * Returns true if the ProtocolCommandEvent was generated as a result 125 * of receiving a reply. 126 * <p> 127 * @return true If the ProtocolCommandEvent was generated as a result 128 * of receiving a reply. False otherwise. 129 ***/ 130 public boolean isReply() 131 { 132 return !isCommand(); 133 } 134 135 /*** 136 * Returns the entire message sent to or received from the server. 137 * <p> 138 * @return The entire message sent to or received from the server. 139 ***/ 140 public String getMessage() 141 { 142 return __message; 143 } 144 }