View Javadoc

1   /**
2    * Copyright 2005 Steve Molloy
3    * 
4    * This file is part of OV4J.
5    * 
6    * OV4J is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
7    * published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
8    * 
9    * OV4J is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
10   * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
11   * 
12   * You should have received a copy of the GNU General Public License along with OV4J; if not, write to the Free Software
13   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
14   * 
15   */
16  package org.ov4j.retry;
17  
18  import java.io.Serializable;
19  import java.util.logging.Level;
20  import java.util.logging.Logger;
21  
22  /**
23   * This class is used as ID for storing RetryableCall objects.
24   * 
25   * @author smolloy
26   * 
27   */
28  public class RetryableCallId implements Comparable<RetryableCallId>, Serializable {
29  	/**
30  	 * Logger for this class
31  	 */
32  	private static final Logger	logger				= Logger.getLogger(RetryableCallId.class.getName());
33  
34  	/** Serial UID */
35  	private static final long	serialVersionUID	= -5349395545122185734L;
36  
37  	/** Name of the class to use for the call. */
38  	private String				className;
39  
40  	/** Name of the method to call. */
41  	private String				methodName;
42  
43  	/** Unique ID to the stored arguments for the call. */
44  	private Long				args;
45  
46  	/**
47  	 * Constructor.
48  	 */
49  	public RetryableCallId() {
50  	}
51  
52  	/**
53  	 * @see java.lang.Comparable#compareTo(T)
54  	 */
55  	public int compareTo(final RetryableCallId o) {
56  		if (RetryableCallId.logger.isLoggable(Level.FINEST)) {
57  			RetryableCallId.logger.entering("RetryableCallId", "compareTo(RetryableCallId=" + o + ")", "start");
58  		}
59  
60  		if (o == null) {
61  			if (RetryableCallId.logger.isLoggable(Level.FINEST)) {
62  				RetryableCallId.logger.exiting("RetryableCallId", "compareTo(RetryableCallId=null)",
63  					"end - return value=" + 1);
64  			}
65  			return 1;
66  		}
67  
68  		int res = ((className == null) ? "" : className).compareTo((o.getClassName() == null) ? "" : o.getClassName());
69  		if (res == 0) {
70  			res =
71  				((methodName == null) ? "" : methodName)
72  					.compareTo((o.getMethodName() == null) ? "" : o.getMethodName());
73  			if (res == 0) {
74  				if (args == null) {
75  					res = (o.getArgs() == null) ? 0 : -1;
76  				} else {
77  					res = args.compareTo(o.getArgs());
78  				}
79  			}
80  		}
81  
82  		if (RetryableCallId.logger.isLoggable(Level.FINEST)) {
83  			RetryableCallId.logger.exiting("RetryableCallId", "compareTo(RetryableCallId=" + o + ")",
84  				"end - return value=" + res);
85  		}
86  		return res;
87  	}
88  
89  	/**
90  	 * @see java.lang.Object#equals(java.lang.Object)
91  	 */
92  	@Override
93  	public boolean equals(final Object obj) {
94  		if (RetryableCallId.logger.isLoggable(Level.FINEST)) {
95  			RetryableCallId.logger.entering("RetryableCallId", "equals(Object=" + obj + ")", "start");
96  		}
97  
98  		final boolean returnboolean = (obj instanceof RetryableCallId && compareTo((RetryableCallId) obj) == 0);
99  
100 		if (RetryableCallId.logger.isLoggable(Level.FINEST)) {
101 			RetryableCallId.logger.exiting("RetryableCallId", "equals(Object=" + obj + ")", "end - return value="
102 				+ returnboolean);
103 		}
104 		return returnboolean;
105 	}
106 
107 	/**
108 	 * @return Returns the args.
109 	 */
110 	public Long getArgs() {
111 		return args;
112 	}
113 
114 	/**
115 	 * @return Returns the className.
116 	 */
117 	public String getClassName() {
118 		return className;
119 	}
120 
121 	/**
122 	 * @return Returns the methodName.
123 	 */
124 	public String getMethodName() {
125 		return methodName;
126 	}
127 
128 	/**
129 	 * @see java.lang.Object#hashCode()
130 	 */
131 	@Override
132 	public int hashCode() {
133 		return (className == null ? 0 : className.hashCode()) + (methodName == null ? 0 : methodName.hashCode())
134 			+ (args == null ? 0 : args.hashCode());
135 	}
136 
137 	/**
138 	 * @param args
139 	 *            The args to set.
140 	 */
141 	public void setArgs(final Long args) {
142 		this.args = args;
143 	}
144 
145 	/**
146 	 * @param className
147 	 *            The className to set.
148 	 */
149 	public void setClassName(final String className) {
150 		this.className = className;
151 	}
152 
153 	/**
154 	 * @param methodName
155 	 *            The methodName to set.
156 	 */
157 	public void setMethodName(final String methodName) {
158 		this.methodName = methodName;
159 	}
160 
161 	/**
162 	 * @see java.long.Object#toString()
163 	 */
164 	@Override
165 	public String toString() {
166 		return "RetryableCallId(Class: " + className + ", Method: " + methodName + ", Args: " + args + ")";
167 	}
168 }