TIMEOUT: 17:00 PST May 3
https://glassfish.dev.java.net/issues/show_bug.cgi?id=2965
dpatil: com/sun/enterprise/ee/admin/PortInUse.java:147:150 HE:
com.sun.enterprise.ee.admin.PortInUse defines equals and uses
Object.hashCode() (H)
dpatil: com/sun/enterprise/ee/admin/PortInUse.java:160:160 Nm: VERY
confusing to have methods
com.sun.enterprise.ee.admin.PortInUse.HashCode() and
java.lang.Object.hashCode() (H)
Index: admin-ee/admin/src/java/com/sun/enterprise/ee/admin/
PortInUse.java
===================================================================
RCS file: /cvs/glassfish/admin-ee/admin/src/java/com/sun/enterprise/
ee/admin/PortInUse.java,v
retrieving revision 1.1.1.1
diff -w -u -r1.1.1.1 PortInUse.java
--- admin-ee/admin/src/java/com/sun/enterprise/ee/admin/
PortInUse.java 8 Aug 2006 19:48:39 -0000 1.1.1.1
+++ admin-ee/admin/src/java/com/sun/enterprise/ee/admin/
PortInUse.java 3 May 2007 18:54:12 -0000
@@ -33,16 +33,17 @@
*
* In addition a conflicting port may optionally be resolved to a
non-conflicting port.
* If this is the case then
+ <b>NOT THREAD SAFE (mutable variables)</b>
*/
-public class PortInUse implements Serializable {
+public final class PortInUse implements Serializable {
public static final int NO_NEW_PORT = -1;
- private String _propertyName = null;
- private int _port;
- private String _hostName = null;
- private String _serverName = null;
- private String _conflictingPropertyName = null;
+ private final String _propertyName;
+ private final int _port;
+ private final String _hostName;
+ private final String _serverName;
+ private final String _conflictingPropertyName;
private int _newPort = NO_NEW_PORT;
/**
@@ -150,13 +151,18 @@
return false;
}
}
- /**
- * this overriding method is temporary added to avoid findBugs
warnings
- * it intentionally not based on port number
- * BTW, I could not find any usage of PortInUse.equals so it
maybe unecessary
- */
- public int HashCode()
- {
- return ((Object)this).hashCode();
+
+ private static int
+ hashIt( final Object o ) {
+ return o == null ? 0 : o.hashCode();
}
+
+ public int hashCode() {
+ return _port ^ _newPort ^
+ hashIt( _propertyName ) ^
+ hashIt( _hostName ) ^
+ hashIt( _serverName ) ^
+ hashIt( _conflictingPropertyName );
+ }
+
}