SECTION: Modified Files
----------------------------
M jsf-api/src/javax/faces/model/ResultSetDataModel.java
- made inner classes static nested classes
M jsf-api/src/javax/faces/validator/DoubleRangeValidator.java
M jsf-api/src/javax/faces/validator/LengthValidator.java
M jsf-api/src/javax/faces/validator/LongRangeValidator.java
M jsf-ri/src/com/sun/faces/config/ConfigureListener.java
M jsf-ri/src/com/sun/faces/context/ExternalContextImpl.java
- overrode hashCode since equals() was overridden
M jsf-api/test/javax/faces/validator/DoubleRangeValidatorTestCase.java
M jsf-api/test/javax/faces/validator/LengthValidatorTestCase.java
M jsf-api/test/javax/faces/validator/LongRangeValidatorTestCase.java
- added tests to ensure hashCode() works as expected
M jsf-ri/src/com/sun/faces/el/PropertyResolverImpl.java
M jsf-ri/src/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java
M jsf-api/src/javax/faces/webapp/ConverterTag.java
- removed unused vars
SECTION: Diffs
----------------------------
Index: jsf-api/src/javax/faces/model/ResultSetDataModel.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-api/src/javax/faces/model/ResultSetDataModel.java,v
retrieving revision 1.29
diff -u -r1.29 ResultSetDataModel.java
--- jsf-api/src/javax/faces/model/ResultSetDataModel.java 19 May 2005
19:14:17 -0000 1.29
+++ jsf-api/src/javax/faces/model/ResultSetDataModel.java 20 May 2005
14:19:29 -0000
@@ -439,7 +439,7 @@
// Private implementation of Set that implements the entrySet()
behavior
// for ResultSetMap
- private class ResultSetEntries extends AbstractSet {
+ private static class ResultSetEntries extends AbstractSet {
public ResultSetEntries(ResultSetMap map) {
this.map = map;
@@ -514,7 +514,7 @@
// Private implementation of Iterator that implements the iterator()
// behavior for the Set returned by entrySet() from ResultSetMap
- private class ResultSetEntriesIterator implements Iterator {
+ private static class ResultSetEntriesIterator implements Iterator {
public ResultSetEntriesIterator(ResultSetMap map) {
this.map = map;
Index: jsf-api/src/javax/faces/validator/DoubleRangeValidator.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-api/src/javax/faces/validator/DoubleRangeValidator.java,v
retrieving revision 1.45
diff -u -r1.45 DoubleRangeValidator.java
--- jsf-api/src/javax/faces/validator/DoubleRangeValidator.java 11
Mar 2005 21:05:28 -0000 1.45
+++ jsf-api/src/javax/faces/validator/DoubleRangeValidator.java 20
May 2005 14:19:29 -0000
@@ -10,12 +10,9 @@
package javax.faces.validator;
-import javax.faces.application.FacesMessage;
import javax.faces.component.StateHolder;
import javax.faces.component.UIComponent;
-import javax.faces.component.UIOutput;
import javax.faces.context.FacesContext;
-
import javax.faces.convert.Converter;
/**
@@ -304,6 +301,17 @@
(minimum == other.minimum) &&
(maximumSet == other.maximumSet) &&
(minimumSet == other.minimumSet));
+
+ }
+
+
+ public int hashCode() {
+
+ int hashCode = new Double(minimum).hashCode()
+ + new Double(maximum).hashCode()
+ + Boolean.valueOf(minimumSet).hashCode()
+ + Boolean.valueOf(maximumSet).hashCode();
+ return (hashCode);
}
Index: jsf-api/src/javax/faces/validator/LengthValidator.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-api/src/javax/faces/validator/LengthValidator.java,v
retrieving revision 1.44
diff -u -r1.44 LengthValidator.java
--- jsf-api/src/javax/faces/validator/LengthValidator.java 11 Mar
2005 21:05:28 -0000 1.44
+++ jsf-api/src/javax/faces/validator/LengthValidator.java 20 May
2005 14:19:29 -0000
@@ -10,11 +10,9 @@
package javax.faces.validator;
-import javax.faces.application.FacesMessage;
import javax.faces.component.StateHolder;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
-
import javax.faces.convert.Converter;
/**
@@ -241,6 +239,15 @@
(minimum == other.minimum) &&
(maximumSet == other.maximumSet) &&
(minimumSet == other.minimumSet));
+
+ }
+
+ public int hashCode() {
+
+ int hashCode = minimum + maximum
+ + Boolean.valueOf(minimumSet).hashCode()
+ + Boolean.valueOf(maximumSet).hashCode();
+ return (hashCode);
}
Index: jsf-api/src/javax/faces/validator/LongRangeValidator.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-api/src/javax/faces/validator/LongRangeValidator.java,v
retrieving revision 1.40
diff -u -r1.40 LongRangeValidator.java
--- jsf-api/src/javax/faces/validator/LongRangeValidator.java 11 Mar
2005 21:05:28 -0000 1.40
+++ jsf-api/src/javax/faces/validator/LongRangeValidator.java 20 May
2005 14:19:29 -0000
@@ -10,7 +10,6 @@
package javax.faces.validator;
-import javax.faces.application.FacesMessage;
import javax.faces.component.StateHolder;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
@@ -307,6 +306,17 @@
(minimum == other.minimum) &&
(maximumSet == other.maximumSet) &&
(minimumSet == other.minimumSet));
+
+ }
+
+
+ public int hashCode() {
+
+ int hashCode = new Long(minimum).hashCode()
+ + new Long(maximum).hashCode()
+ + Boolean.valueOf(minimumSet).hashCode()
+ + Boolean.valueOf(maximumSet).hashCode();
+ return (hashCode);
}
Index: jsf-api/src/javax/faces/webapp/ConverterTag.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-api/src/javax/faces/webapp/ConverterTag.java,v
retrieving revision 1.16
diff -u -r1.16 ConverterTag.java
--- jsf-api/src/javax/faces/webapp/ConverterTag.java 19 May 2005
13:26:57 -0000 1.16
+++ jsf-api/src/javax/faces/webapp/ConverterTag.java 20 May 2005
14:19:29 -0000
@@ -127,7 +127,7 @@
// Locate our parent UIComponentTag
UIComponentClassicTagBase tag =
- UIComponentTag.getParentUIComponentClassicTagBase(pageContext);
+
UIComponentClassicTagBase.getParentUIComponentClassicTagBase(pageContext);
if (tag == null) { // PENDING - i18n
throw new JspException("Not nested in a UIComponentTag
Error for tag with handler class:"+
this.getClass().getName());
@@ -163,8 +163,7 @@
converterError = converterId;
}
}
-
- Object params [] =
{"javax.faces.convert.Converter",converterError};
+
// PENDING i18n
throw new JspException("Can't create class of type:"+
"javax.faces.convert.Converter for:"+converterError);
Index: jsf-api/test/javax/faces/validator/DoubleRangeValidatorTestCase.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-api/test/javax/faces/validator/DoubleRangeValidatorTestCase.java,v
retrieving revision 1.1
diff -u -r1.1 DoubleRangeValidatorTestCase.java
---
jsf-api/test/javax/faces/validator/DoubleRangeValidatorTestCase.java
12 May 2004 02:00:48 -0000 1.1
+++
jsf-api/test/javax/faces/validator/DoubleRangeValidatorTestCase.java
20 May 2005 14:19:29 -0000
@@ -10,14 +10,13 @@
package javax.faces.validator;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
import java.util.Locale;
import javax.faces.component.UIInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
/**
* <p>Unit tests for {_at_link DoubleRangeValidator}.</p>
*/
@@ -90,6 +89,41 @@
}
assertTrue(exceptionThrown);
+ }
+
+ public void testHashCode() {
+ DoubleRangeValidator validator1 = new DoubleRangeValidator();
+ DoubleRangeValidator validator2 = new DoubleRangeValidator();
+
+ validator1.setMinimum(10.0d);
+ validator1.setMaximum(15.1d);
+ validator2.setMinimum(10.0d);
+ validator2.setMaximum(15.1d);
+
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+
+ validator2.setMaximum(15.2d);
+
+ assertTrue(validator1.hashCode() != validator2.hashCode());
+
+ validator1 = new DoubleRangeValidator();
+ validator2 = new DoubleRangeValidator();
+
+ validator1.setMinimum(10.0d);
+ validator2.setMinimum(10.0d);
+
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+
+ validator1.setMinimum(11.0d);
+
+ assertTrue(validator1.hashCode() != validator2.hashCode());
+
+ validator1.setMinimum(10.0d);
+ validator1.setMaximum(10.1d);
+
+ assertTrue(validator1.hashCode() != validator2.hashCode());
}
}
Index: jsf-api/test/javax/faces/validator/LengthValidatorTestCase.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-api/test/javax/faces/validator/LengthValidatorTestCase.java,v
retrieving revision 1.1
diff -u -r1.1 LengthValidatorTestCase.java
--- jsf-api/test/javax/faces/validator/LengthValidatorTestCase.java
12 May 2004 02:00:48 -0000 1.1
+++ jsf-api/test/javax/faces/validator/LengthValidatorTestCase.java
20 May 2005 14:19:29 -0000
@@ -10,14 +10,13 @@
package javax.faces.validator;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
import java.util.Locale;
import javax.faces.component.UIInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
/**
* <p>Unit tests for {_at_link LengthValidator}.</p>
*/
@@ -88,6 +87,41 @@
}
assertTrue(exceptionThrown);
+ }
+
+ public void testHashCode() {
+ LengthValidator validator1 = new LengthValidator();
+ LengthValidator validator2 = new LengthValidator();
+
+ validator1.setMinimum(10);
+ validator1.setMaximum(15);
+ validator2.setMinimum(10);
+ validator2.setMaximum(15);
+
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+
+ validator2.setMaximum(16);
+
+ assertTrue(validator1.hashCode() != validator2.hashCode());
+
+ validator1 = new LengthValidator();
+ validator2 = new LengthValidator();
+
+ validator1.setMinimum(10);
+ validator2.setMinimum(10);
+
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+
+ validator1.setMinimum(11);
+
+ assertTrue(validator1.hashCode() != validator2.hashCode());
+
+ validator1.setMinimum(10);
+ validator1.setMaximum(10);
+
+ assertTrue(validator1.hashCode() != validator2.hashCode());
}
}
Index: jsf-api/test/javax/faces/validator/LongRangeValidatorTestCase.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-api/test/javax/faces/validator/LongRangeValidatorTestCase.java,v
retrieving revision 1.1
diff -u -r1.1 LongRangeValidatorTestCase.java
--- jsf-api/test/javax/faces/validator/LongRangeValidatorTestCase.java
12 May 2004 02:00:49 -0000 1.1
+++ jsf-api/test/javax/faces/validator/LongRangeValidatorTestCase.java
20 May 2005 14:19:29 -0000
@@ -10,14 +10,13 @@
package javax.faces.validator;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
import java.util.Locale;
import javax.faces.component.UIInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
/**
* <p>Unit tests for {_at_link LongRangeValidator}.</p>
*/
@@ -90,6 +89,41 @@
}
assertTrue(exceptionThrown);
+ }
+
+ public void testHashCode() {
+ LongRangeValidator validator1 = new LongRangeValidator();
+ LongRangeValidator validator2 = new LongRangeValidator();
+
+ validator1.setMinimum(10l);
+ validator1.setMaximum(15l);
+ validator2.setMinimum(10l);
+ validator2.setMaximum(15l);
+
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+
+ validator2.setMaximum(16l);
+
+ assertTrue(validator1.hashCode() != validator2.hashCode());
+
+ validator1 = new LongRangeValidator();
+ validator2 = new LongRangeValidator();
+
+ validator1.setMinimum(10l);
+ validator2.setMinimum(10l);
+
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+ assertTrue(validator1.hashCode() == validator2.hashCode());
+
+ validator1.setMinimum(11l);
+
+ assertTrue(validator1.hashCode() != validator2.hashCode());
+
+ validator1.setMinimum(10l);
+ validator1.setMaximum(11l);
+
+ assertTrue(validator1.hashCode() != validator2.hashCode());
}
}
Index: jsf-ri/src/com/sun/faces/config/ConfigureListener.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-ri/src/com/sun/faces/config/ConfigureListener.java,v
retrieving revision 1.34
diff -u -r1.34 ConfigureListener.java
--- jsf-ri/src/com/sun/faces/config/ConfigureListener.java 17 May
2005 03:30:40 -0000 1.34
+++ jsf-ri/src/com/sun/faces/config/ConfigureListener.java 20 May
2005 14:19:30 -0000
@@ -1596,7 +1596,7 @@
static class ApplicationMap extends java.util.AbstractMap {
- private ServletContext servletContext = null;
+ private final ServletContext servletContext;
ApplicationMap(ServletContext servletContext) {
this.servletContext = servletContext;
@@ -1642,6 +1642,15 @@
if (obj == null || !(obj instanceof ApplicationMap))
return false;
return super.equals(obj);
+ }
+
+
+ public int hashCode() {
+ int hashCode = 7 * servletContext.hashCode();
+ for (Iterator i = entrySet().iterator(); i.hasNext();) {
+ hashCode += i.next().hashCode();
+ }
+ return hashCode;
}
public void clear() {
Index: jsf-ri/src/com/sun/faces/context/ExternalContextImpl.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-ri/src/com/sun/faces/context/ExternalContextImpl.java,v
retrieving revision 1.30
diff -u -r1.30 ExternalContextImpl.java
--- jsf-ri/src/com/sun/faces/context/ExternalContextImpl.java 16 May
2005 20:16:17 -0000 1.30
+++ jsf-ri/src/com/sun/faces/context/ExternalContextImpl.java 20 May
2005 14:19:30 -0000
@@ -64,7 +64,7 @@
private Map cookieMap = null;
private Map initParameterMap = null;
- static Class theUnmodifiableMapClass =
+ static final Class theUnmodifiableMapClass =
Collections.unmodifiableMap(new HashMap()).getClass();
public ExternalContextImpl(ServletContext sc, ServletRequest request,
@@ -497,7 +497,7 @@
class ApplicationMap extends BaseContextMap {
- private ServletContext servletContext = null;
+ private final ServletContext servletContext;
ApplicationMap(ServletContext servletContext) {
@@ -552,11 +552,20 @@
return super.equals(obj);
}
+
+ public int hashCode() {
+ int hashCode = 7 * servletContext.hashCode();
+ for (Iterator i = entrySet().iterator(); i.hasNext(); ) {
+ hashCode += i.next().hashCode();
+ }
+ return hashCode;
+ }
+
} // END ApplicationMap
class SessionMap extends BaseContextMap {
- private HttpServletRequest request = null;
+ private final HttpServletRequest request;
SessionMap(HttpServletRequest request) {
@@ -619,11 +628,19 @@
return request.getSession(true);
}
+ public int hashCode() {
+ int hashCode = 7 * request.getSession().hashCode();
+ for (Iterator i = entrySet().iterator(); i.hasNext(); ) {
+ hashCode += i.next().hashCode();
+ }
+ return hashCode;
+ }
+
} // END SessionMap
class RequestMap extends BaseContextMap {
- private ServletRequest request = null;
+ private final ServletRequest request;
RequestMap(ServletRequest request) {
@@ -677,11 +694,20 @@
return false;
return super.equals(obj);
}
+
+ public int hashCode() {
+ int hashCode = 7 * request.hashCode();
+ for (Iterator i = entrySet().iterator(); i.hasNext(); ) {
+ hashCode += i.next().hashCode();
+ }
+ return hashCode;
+ }
+
} // END RequestMap
class RequestParameterMap extends BaseContextMap {
- private ServletRequest request = null;
+ private final ServletRequest request;
RequestParameterMap(ServletRequest request) {
@@ -718,11 +744,20 @@
}
return super.equals(obj);
}
+
+ public int hashCode() {
+ int hashCode = 7 * request.hashCode();
+ for (Iterator i = entrySet().iterator(); i.hasNext(); ) {
+ hashCode += i.next().hashCode();
+ }
+ return hashCode;
+ }
+
} // END RequestParameterMap
class RequestParameterValuesMap extends BaseContextMap {
- private ServletRequest request = null;
+ private final ServletRequest request;
RequestParameterValuesMap(ServletRequest request) {
@@ -760,11 +795,20 @@
}
return super.equals(obj);
}
+
+ public int hashCode() {
+ int hashCode = 7 * request.hashCode();
+ for (Iterator i = entrySet().iterator(); i.hasNext(); ) {
+ hashCode += i.next().hashCode();
+ }
+ return hashCode;
+ }
+
} // END RequestParameterValuesMap
class RequestHeaderMap extends BaseContextMap {
- private HttpServletRequest request = null;
+ private final HttpServletRequest request;
RequestHeaderMap(HttpServletRequest request) {
@@ -801,11 +845,20 @@
}
return super.equals(obj);
}
+
+ public int hashCode() {
+ int hashCode = 7 * request.hashCode();
+ for (Iterator i = entrySet().iterator(); i.hasNext(); ) {
+ hashCode += i.next().hashCode();
+ }
+ return hashCode;
+ }
+
} // END RequestHeaderMap
class RequestHeaderValuesMap extends BaseContextMap {
- private HttpServletRequest request = null;
+ private final HttpServletRequest request;
RequestHeaderValuesMap(HttpServletRequest request) {
@@ -902,7 +955,7 @@
class RequestCookieMap extends BaseContextMap {
- private HttpServletRequest request = null;
+ private final HttpServletRequest request;
RequestCookieMap(HttpServletRequest newRequest) {
@@ -957,11 +1010,20 @@
}
return super.equals(obj);
}
+
+ public int hashCode() {
+ int hashCode = 7 * request.hashCode();
+ for (Iterator i = entrySet().iterator(); i.hasNext(); ) {
+ hashCode += i.next().hashCode();
+ }
+ return hashCode;
+ }
+
} // END RequestCookiesMap
class InitParameterMap extends BaseContextMap {
- private ServletContext servletContext;
+ private final ServletContext servletContext;
InitParameterMap(ServletContext newServletContext) {
@@ -1001,6 +1063,14 @@
return false;
}
return super.equals(obj);
+ }
+
+ public int hashCode() {
+ int hashCode = 7 * servletContext.hashCode();
+ for (Iterator i = entrySet().iterator(); i.hasNext(); ) {
+ hashCode += i.next().hashCode();
+ }
+ return hashCode;
}
} // END InitParameterMap
Index: jsf-ri/src/com/sun/faces/el/PropertyResolverImpl.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-ri/src/com/sun/faces/el/PropertyResolverImpl.java,v
retrieving revision 1.17
diff -u -r1.17 PropertyResolverImpl.java
--- jsf-ri/src/com/sun/faces/el/PropertyResolverImpl.java 18 May 2005
17:33:44 -0000 1.17
+++ jsf-ri/src/com/sun/faces/el/PropertyResolverImpl.java 20 May 2005
14:19:30 -0000
@@ -90,7 +90,6 @@
return null;
}
- Class type = base.getClass();
if (base.getClass().isArray()) {
try {
return Array.get(base, index);
@@ -129,8 +128,7 @@
public boolean isReadOnly(Object base, int index) {
// validate input
assertInput(base, index);
-
- Class type = base.getClass();
+
if (base instanceof List || base.getClass().isArray()) {
return false;
} else {
Index: jsf-ri/src/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-ri/src/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java,v
retrieving revision 1.14
diff -u -r1.14 ValueChangeListenerTag.java
---
jsf-ri/src/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java
19 May 2005 13:27:00 -0000 1.14
+++
jsf-ri/src/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java
20 May 2005 14:19:30 -0000
@@ -17,7 +17,6 @@
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeListener;
import javax.faces.webapp.UIComponentClassicTagBase;
-import javax.faces.webapp.UIComponentELTag;
import javax.faces.webapp.UIComponentTag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
@@ -116,9 +115,9 @@
// Locate our parent UIComponentTag
UIComponentClassicTagBase tag =
-
UIComponentELTag.getParentUIComponentClassicTagBase(pageContext);
+
UIComponentClassicTagBase.getParentUIComponentClassicTagBase(pageContext);
if (tag == null) {
- Object params [] = {this.getClass().getName()};
+ // Object[] params = {this.getClass().getName()};
// PENDING(rogerk): do something with params
throw new JspException(
Util.getExceptionMessageString(
@@ -136,7 +135,7 @@
Util.getExceptionMessageString(Util.NULL_COMPONENT_ERROR_MESSAGE_ID));
}
if (!(component instanceof EditableValueHolder)) {
- Object params [] = {this.getClass().getName()};
+ Object[] params = {this.getClass().getName()};
throw new JspException(
Util.getExceptionMessageString(
Util.NOT_NESTED_IN_TYPE_TAG_ERROR_MESSAGE_ID, params));