You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mb...@apache.org on 2007/01/27 16:50:39 UTC
svn commit: r500553 - in /myfaces/shared/trunk/core/src:
main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java
test/java/org/apache/myfaces/shared/renderkit/
test/java/org/apache/myfaces/shared/renderkit/RendererUtilsTest.java
Author: mbr
Date: Sat Jan 27 07:50:39 2007
New Revision: 500553
URL: http://svn.apache.org/viewvc?view=rev&rev=500553
Log:
fixed - issue MYFACES-731: selectManyListbox calls converter getAsString passing in string value during form post
http://issues.apache.org/jira/browse/MYFACES-731
Added:
myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/
myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/RendererUtilsTest.java (with props)
Modified:
myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java
Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java?view=diff&rev=500553&r1=500552&r2=500553
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java Sat Jan 27 07:50:39 2007
@@ -18,11 +18,19 @@
*/
package org.apache.myfaces.shared.renderkit;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.myfaces.shared.renderkit.html.util.FormInfo;
-import org.apache.myfaces.shared.util.HashMapUtils;
-import org.apache.myfaces.shared.util.SelectItemsIterator;
+import java.io.ByteArrayOutputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
import javax.faces.FacesException;
import javax.faces.component.EditableValueHolder;
@@ -44,25 +52,19 @@
import javax.faces.el.ValueBinding;
import javax.faces.event.PhaseId;
import javax.faces.model.SelectItem;
-import java.io.ByteArrayOutputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Serializable;
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.shared.renderkit.html.util.FormInfo;
+import org.apache.myfaces.shared.util.HashMapUtils;
+import org.apache.myfaces.shared.util.SelectItemsIterator;
/**
* @author Manfred Geiler (latest modification by $Author$)
* @version $Revision$ $Date$
*/
public final class RendererUtils {
+
private RendererUtils() {
//nope
}
@@ -467,6 +469,10 @@
if (submittedValues == null) {
return null;
}
+
+ if(converter != null) {
+ converter = new PassThroughAsStringConverter(converter);
+ }
return internalSubmittedOrSelectedValuesAsSet(context, component, converter, uiSelectMany, submittedValues);
}
@@ -934,4 +940,33 @@
TRINIDAD_FORM_COMPONENT_FAMILY.equals(component.getFamily());
}
+
+ /**
+ * Special converter for handling submitted values which don't need to be converted.
+ *
+ * @author mathias (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+ private static class PassThroughAsStringConverter implements Converter
+ {
+ private final Converter converter;
+
+ public PassThroughAsStringConverter(Converter converter)
+ {
+ this.converter = converter;
+ }
+
+ public Object getAsObject(FacesContext context, UIComponent component,
+ String value) throws ConverterException
+ {
+ return converter.getAsObject(context, component, value);
+ }
+
+ public String getAsString(FacesContext context, UIComponent component,
+ Object value) throws ConverterException
+ {
+ return (String)value;
+ }
+
+ }
}
Added: myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/RendererUtilsTest.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/RendererUtilsTest.java?view=auto&rev=500553
==============================================================================
--- myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/RendererUtilsTest.java (added)
+++ myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/RendererUtilsTest.java Sat Jan 27 07:50:39 2007
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.shared.renderkit;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UISelectMany;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+
+import junit.framework.TestCase;
+
+import org.apache.shale.test.mock.MockFacesContext;
+
+/**
+ * @author Mathias Broekelmann (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class RendererUtilsTest extends TestCase
+{
+ /**
+ * test for MYFACES-731
+ * A converter getAsString method should not be called for submitted values
+ * @throws Exception
+ */
+ public void testGetSubmittedValuesAsSet() throws Exception
+ {
+ MockFacesContext ctx = new MockFacesContext();
+ UISelectMany cmp = new UISelectMany();
+ cmp.setSubmittedValue(new String[] {"testValue"});
+ Converter testConverter = new Converter()
+ {
+ public Object getAsObject(FacesContext context,
+ UIComponent component, String value)
+ throws ConverterException
+ {
+ fail("getAsObject should not get called");
+ throw new UnsupportedOperationException();
+ }
+
+ public String getAsString(FacesContext context,
+ UIComponent component, Object value)
+ throws ConverterException
+ {
+ fail("getAsString should not get called");
+ throw new UnsupportedOperationException();
+ }
+ };
+ RendererUtils.getSubmittedValuesAsSet(ctx, cmp, testConverter, cmp);
+ }
+}
Propchange: myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/RendererUtilsTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/shared/trunk/core/src/test/java/org/apache/myfaces/shared/renderkit/RendererUtilsTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL