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