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 2006/01/15 16:15:25 UTC
svn commit: r369212 - in /myfaces/tomahawk/trunk/tomahawk/src:
main/java/org/apache/myfaces/component/html/ext/
test/java/org/apache/myfaces/component/html/ext/
test/java/org/apache/myfaces/mock/
Author: mbr
Date: Sun Jan 15 07:15:09 2006
New Revision: 369212
URL: http://svn.apache.org/viewcvs?rev=369212&view=rev
Log:
fix for MYFACES-1010, including test case (testing with suns´ri not included)
Added:
myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/component/html/ext/HtmlDataTableTest.java (with props)
myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/
myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockExternalContext.java (with props)
myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockFacesContext.java (with props)
Modified:
myfaces/tomahawk/trunk/tomahawk/src/main/java/org/apache/myfaces/component/html/ext/HtmlDataTableHack.java
Modified: myfaces/tomahawk/trunk/tomahawk/src/main/java/org/apache/myfaces/component/html/ext/HtmlDataTableHack.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/tomahawk/src/main/java/org/apache/myfaces/component/html/ext/HtmlDataTableHack.java?rev=369212&r1=369211&r2=369212&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/tomahawk/src/main/java/org/apache/myfaces/component/html/ext/HtmlDataTableHack.java (original)
+++ myfaces/tomahawk/trunk/tomahawk/src/main/java/org/apache/myfaces/component/html/ext/HtmlDataTableHack.java Sun Jan 15 07:15:09 2006
@@ -15,8 +15,6 @@
*/
package org.apache.myfaces.component.html.ext;
-import org.apache.myfaces.custom.ExtendedComponentBase;
-
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
@@ -28,6 +26,7 @@
import javax.faces.application.FacesMessage;
import javax.faces.component.EditableValueHolder;
+import javax.faces.component.NamingContainer;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
@@ -39,6 +38,8 @@
import javax.faces.model.ScalarDataModel;
import javax.servlet.jsp.jstl.sql.Result;
+import org.apache.myfaces.custom.ExtendedComponentBase;
+
/**
* Reimplement all UIData functionality to be able to have (protected) access
* the internal DataModel.
@@ -91,6 +92,37 @@
public int getRowIndex()
{
return _rowIndex;
+ }
+
+ /**
+ * Hack since RI does not call getRowIndex()
+ */
+ public String getClientId(FacesContext context)
+ {
+ String clientId = super.getClientId(context);
+ int rowIndex = getRowIndex();
+ if (rowIndex == -1)
+ {
+ return clientId;
+ }
+ // the following code tries to avoid rowindex to be twice in the client id
+ int index = clientId.lastIndexOf(NamingContainer.SEPARATOR_CHAR);
+ if(index != -1)
+ {
+ String rowIndexString = clientId.substring(index + 1);
+ try
+ {
+ if(Integer.parseInt(rowIndexString) == rowIndex)
+ {
+ return clientId;
+ }
+ }
+ catch(NumberFormatException e)
+ {
+ return clientId + NamingContainer.SEPARATOR_CHAR + rowIndex;
+ }
+ }
+ return clientId + NamingContainer.SEPARATOR_CHAR + rowIndex;
}
/**
Added: myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/component/html/ext/HtmlDataTableTest.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/component/html/ext/HtmlDataTableTest.java?rev=369212&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/component/html/ext/HtmlDataTableTest.java (added)
+++ myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/component/html/ext/HtmlDataTableTest.java Sun Jan 15 07:15:09 2006
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed 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.component.html.ext;
+
+import java.util.Collection;
+import java.util.HashSet;
+
+import javax.faces.FactoryFinder;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.render.RenderKitFactory;
+
+import junit.framework.TestCase;
+
+import org.apache.myfaces.mock.MockExternalContext;
+import org.apache.myfaces.mock.MockFacesContext;
+import org.apache.myfaces.renderkit.RenderKitFactoryImpl;
+import org.apache.myfaces.renderkit.html.HtmlRenderKitImpl;
+
+/**
+ * @author Mathias Brökelmann (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlDataTableTest extends TestCase
+{
+ private FacesContext _ctx;
+ private HtmlDataTable _dataTable;
+
+ protected void setUp() throws Exception
+ {
+ MockFacesContext mock = new MockFacesContext();
+ mock.setViewRoot(new UIViewRoot());
+ mock.setExternalContext(new MockExternalContext());
+ _dataTable = new HtmlDataTable();
+ FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY,
+ RenderKitFactoryImpl.class.getName());
+ RenderKitFactory rkf = (RenderKitFactory) FactoryFinder
+ .getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+ rkf.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
+ new HtmlRenderKitImpl());
+ _ctx = mock;
+ }
+
+ protected void tearDown() throws Exception
+ {
+ _ctx = null;
+ _dataTable = null;
+ }
+
+ /*
+ * Test method for
+ * 'org.apache.myfaces.component.html.ext.HtmlDataTable.getClientId(FacesContext)'
+ */
+ public void testGetClientIdFacesContext()
+ {
+ assertEquals(-1, _dataTable.getRowIndex());
+ String baseClientId = _dataTable.getClientId(_ctx);
+ assertNotNull(baseClientId);
+ Collection rowClientIds = new HashSet();
+ for (int i = 0; i < 10; i++)
+ {
+ _dataTable.setRowIndex(i);
+ assertTrue("Duplicate client id while iterating rows",
+ rowClientIds.add(_dataTable.getClientId(_ctx)));
+ }
+ _dataTable.setRowIndex(-1);
+ assertEquals(baseClientId, _dataTable.getClientId(_ctx));
+ }
+
+}
Propchange: myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/component/html/ext/HtmlDataTableTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/component/html/ext/HtmlDataTableTest.java
------------------------------------------------------------------------------
svn:keywords = Revision Author Date Id
Added: myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockExternalContext.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockExternalContext.java?rev=369212&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockExternalContext.java (added)
+++ myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockExternalContext.java Sun Jan 15 07:15:09 2006
@@ -0,0 +1,336 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed 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.mock;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.faces.context.ExternalContext;
+
+/**
+ * @author Mathias Brökelmann (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class MockExternalContext extends ExternalContext
+{
+ private Map _appMap = new HashMap();
+ private String _authType;
+ private Object _context;
+ private Map _initParameterMap = new HashMap();
+ private String _remoteUser;
+ private Object _request;
+ private String _requestContextPath;
+ private Map _requestCookieMap = new HashMap();
+ private Map _requestHeaderMap = new HashMap();
+ private Map _requestHeaderValuesMap = new HashMap();
+ private Locale _requestLocale;
+ private List _requestLocales = new ArrayList();
+ private Map _requestMap = new HashMap();
+ private Map _requestParameterMap = new HashMap();
+ private Map _requestParameterValuesMap = new HashMap();
+ private String _requestPathInfo;
+ private String _requestServletPath;
+ private Object _response;
+ private Object _session;
+ private Map _sessionMap = new HashMap();
+ private Principal _userPrincipal;
+ private Collection _roles = new HashSet();
+
+ public void dispatch(String path) throws IOException
+ {
+ }
+
+ public String encodeActionURL(String url)
+ {
+ return url;
+ }
+
+ public String encodeNamespace(String name)
+ {
+ return name;
+ }
+
+ public String encodeResourceURL(String url)
+ {
+ return url;
+ }
+
+ public Map getApplicationMap()
+ {
+ return _appMap;
+ }
+
+ public void setAuthType(String authType)
+ {
+ _authType = authType;
+ }
+
+ public String getAuthType()
+ {
+ return _authType;
+ }
+
+ public void setContext(Object context)
+ {
+ _context = context;
+ }
+
+ public Object getContext()
+ {
+ return _context;
+ }
+
+ public String getInitParameter(String name)
+ {
+ return (String) _initParameterMap.get(name);
+ }
+
+ public void setInitParameter(String name, String value)
+ {
+ _initParameterMap.put(name, value);
+ }
+
+ public Map getInitParameterMap()
+ {
+ return _initParameterMap;
+ }
+
+ public void setRemoteUser(String remoteUser)
+ {
+ _remoteUser = remoteUser;
+ }
+
+ public String getRemoteUser()
+ {
+ return _remoteUser;
+ }
+
+ public Object getRequest()
+ {
+ return _request;
+ }
+
+ public void setRequest(Object request)
+ {
+ _request = request;
+ }
+
+ public String getRequestContextPath()
+ {
+ return _requestContextPath;
+ }
+
+ public void setRequestContextPath(String requestContextPath)
+ {
+ _requestContextPath = requestContextPath;
+ }
+
+ public void setRequestCookieMap(Map requestCookieMap)
+ {
+ _requestCookieMap = requestCookieMap;
+ }
+
+ public Map getRequestCookieMap()
+ {
+ return _requestCookieMap;
+ }
+
+ public void setRequestHeaderMap(Map requestHeaderMap)
+ {
+ _requestHeaderMap = requestHeaderMap;
+ }
+
+ public Map getRequestHeaderMap()
+ {
+ return _requestHeaderMap;
+ }
+
+ public void setRequestHeaderValuesMap(Map requestHeaderValuesMap)
+ {
+ _requestHeaderValuesMap = requestHeaderValuesMap;
+ }
+
+ public Map getRequestHeaderValuesMap()
+ {
+ return _requestHeaderValuesMap;
+ }
+
+ public Locale getRequestLocale()
+ {
+ return _requestLocale;
+ }
+
+ public void setRequestLocale(Locale requestLocale)
+ {
+ _requestLocale = requestLocale;
+ }
+
+ public Iterator getRequestLocales()
+ {
+ return _requestLocales.iterator();
+ }
+
+ public void setRequestLocales(List requestLocales)
+ {
+ _requestLocales = requestLocales;
+ }
+
+ public void setRequestMap(Map requestMap)
+ {
+ _requestMap = requestMap;
+ }
+
+ public Map getRequestMap()
+ {
+ return _requestMap;
+ }
+
+ public void setRequestParameterMap(Map requestParameterMap)
+ {
+ _requestParameterMap = requestParameterMap;
+ }
+
+ public Map getRequestParameterMap()
+ {
+ return _requestParameterMap;
+ }
+
+ public Iterator getRequestParameterNames()
+ {
+ return _requestParameterMap.keySet().iterator();
+ }
+
+ public void setRequestParameterValuesMap(Map requestParameterValuesMap)
+ {
+ _requestParameterValuesMap = requestParameterValuesMap;
+ }
+
+ public Map getRequestParameterValuesMap()
+ {
+ return _requestParameterValuesMap;
+ }
+
+ public void setRequestPathInfo(String requestPathInfo)
+ {
+ _requestPathInfo = requestPathInfo;
+ }
+
+ public String getRequestPathInfo()
+ {
+ return _requestPathInfo;
+ }
+
+ public void setRequestServletPath(String requestServletPath)
+ {
+ _requestServletPath = requestServletPath;
+ }
+
+ public String getRequestServletPath()
+ {
+ return _requestServletPath;
+ }
+
+ public URL getResource(String path) throws MalformedURLException
+ {
+ return null;
+ }
+
+ public InputStream getResourceAsStream(String path)
+ {
+ return null;
+ }
+
+ public Set getResourcePaths(String path)
+ {
+ return Collections.EMPTY_SET;
+ }
+
+ public void setResponse(Object response)
+ {
+ _response = response;
+ }
+
+ public Object getResponse()
+ {
+ return _response;
+ }
+
+ public void setSession(Object session)
+ {
+ _session = session;
+ }
+
+ public Object getSession(boolean create)
+ {
+ return _session;
+ }
+
+ public Map getSessionMap()
+ {
+ return _sessionMap;
+ }
+
+ public void setUserPrincipal(Principal userPrincipal)
+ {
+ _userPrincipal = userPrincipal;
+ }
+
+ public Principal getUserPrincipal()
+ {
+ return _userPrincipal;
+ }
+
+ public void setUserRoles(Collection roles)
+ {
+ _roles = roles;
+ }
+
+ public void addUserRole(String role)
+ {
+ _roles.add(role);
+ }
+
+ public boolean isUserInRole(String role)
+ {
+ return _roles.contains(role);
+ }
+
+ public void log(String message)
+ {
+ }
+
+ public void log(String message, Throwable exception)
+ {
+ }
+
+ public void redirect(String url) throws IOException
+ {
+ }
+
+}
Propchange: myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockExternalContext.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockExternalContext.java
------------------------------------------------------------------------------
svn:keywords = Revision Author Date Id
Added: myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockFacesContext.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockFacesContext.java?rev=369212&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockFacesContext.java (added)
+++ myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockFacesContext.java Sun Jan 15 07:15:09 2006
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed 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.mock;
+
+import javax.faces.application.Application;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+
+// TODO: have real mock implementations with expected/actual support
+public class MockFacesContext extends FacesContext
+{
+ private UIViewRoot _view;
+ private Application _application;
+ private ResponseWriter _writer;
+ private ResponseStream _stream;
+ private boolean _responseComplete;
+ private boolean _renderResponse;
+ private ExternalContext _externalContext;
+
+ public MockFacesContext()
+ {
+ super.setCurrentInstance(this);
+ }
+
+ public void setApplication(Application application)
+ {
+ _application = application;
+ }
+
+ public Application getApplication()
+ {
+ return _application;
+ }
+
+ public java.util.Iterator getClientIdsWithMessages()
+ {
+ return null;
+ }
+
+ public void setExternalContext(ExternalContext externalContext)
+ {
+ _externalContext = externalContext;
+ }
+
+ public javax.faces.context.ExternalContext getExternalContext()
+ {
+ return _externalContext;
+ }
+
+ public javax.faces.application.FacesMessage.Severity getMaximumSeverity()
+ {
+ return null;
+ }
+
+ public java.util.Iterator getMessages()
+ {
+ return null;
+ }
+
+ public java.util.Iterator getMessages(String clientId)
+ {
+ return null;
+ }
+
+ public javax.faces.render.RenderKit getRenderKit()
+ {
+ return null;
+ }
+
+ public boolean getRenderResponse()
+ {
+ return _renderResponse;
+ }
+
+ public boolean getResponseComplete()
+ {
+ return _responseComplete;
+ }
+
+ public javax.faces.context.ResponseStream getResponseStream()
+ {
+ return _stream;
+ }
+
+ public void setResponseStream(javax.faces.context.ResponseStream stream)
+ {
+ _stream = stream;
+ }
+
+ public javax.faces.context.ResponseWriter getResponseWriter()
+ {
+ return _writer;
+ }
+
+ public void setResponseWriter(javax.faces.context.ResponseWriter writer)
+ {
+ _writer = writer;
+ }
+
+ public javax.faces.component.UIViewRoot getViewRoot()
+ {
+ return _view;
+ }
+
+ public void setViewRoot(javax.faces.component.UIViewRoot view)
+ {
+ _view = view;
+ }
+
+ public void addMessage(String clientId,
+ javax.faces.application.FacesMessage message)
+ {
+ }
+
+ public void release()
+ {
+ }
+
+ public void renderResponse()
+ {
+ _renderResponse = true;
+ }
+
+ public void responseComplete()
+ {
+ _responseComplete = true;
+ }
+}
Propchange: myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockFacesContext.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/trunk/tomahawk/src/test/java/org/apache/myfaces/mock/MockFacesContext.java
------------------------------------------------------------------------------
svn:keywords = Revision Author Date Id