dev@javaserverfaces.java.net

Re: [mojarra~git:22fb7da2] JAVASERVERFACES-4092 - [Port 2.1] JAVASERVERFACES-3031 not fixed when usi

From: manfred riem <manfred.riem_at_oracle.com>
Date: Tue, 19 Jan 2016 08:44:26 -0600

Hi Vernon,

Yes CI test are being run.

Thanks!

Kind regards,
Manfred Riem

On 1/18/16, 8:52 AM, Vernon Singleton wrote:
> Hi Manfred and dev,
>
> So, is the 2.1.29 branch getting tested by one of the CI servers?
>
> - Vernon
>
> On Fri, Jan 15, 2016 at 9:09 AM, manfred riem <manfred.riem_at_oracle.com
> <mailto:manfred.riem_at_oracle.com>> wrote:
>
> Hi Vernon,
>
> CC'ing dev alias as we should really be using it for open
> communication.
>
> You are using Glassfish to run the tests right?
>
> Thanks!
>
> Kind regards,
> Manfred Riem
>
> On 1/14/16, 5:29 PM, Vernon Singleton wrote:
>> Hi Manfred,
>>
>> On Thu, Jan 14, 2016 at 10:23 AM, manfred riem
>> <manfred.riem_at_oracle.com <mailto:manfred.riem_at_oracle.com>> wrote:
>>
>> Hi Vernon,
>>
>> I assume you made sure all the tests pass locally before
>> committing?
>>
>>
>> I am not able to get the "Agnostic - Application - Basic" tests
>> to pass even without the commit ... getting the following failure:
>>
>> Running
>> com.sun.faces.test.agnostic.application.ApplicationImplConfigIT
>> Jan 14, 2016 6:20:08 PM com.gargoylesoftware.htmlunit.WebClient
>> printContentIfNecessary
>> INFO: statusCode=[500] contentType=[text/plain]
>> Jan 14, 2016 6:20:08 PM com.gargoylesoftware.htmlunit.WebClient
>> printContentIfNecessary
>> INFO:
>>
>> Message:
>> PWC6033: Error in Javac compilation for JSP
>> PWC6197: An error occurred at line: 48 in the jsp file:
>> /appConfig.jsp
>> PWC6199: Generated servlet error:
>> package com.sun.faces.taglib.jsf_core does not exist
>>
>> Any idea what causes this?
>>
>> - Vernon
>>
>>
>>
>> Thanks!
>>
>> Kind regards,
>> Manfred Riem
>>
>> On 1/12/16, 12:33 PM, vsingleton_at_java.net
>> <mailto:vsingleton_at_java.net> wrote:
>>
>> Project: mojarra
>> Repository: git
>> Revision: 22fb7da2ff9a1140c9342a967f1a4e39582849cf
>> Author: vsingleton
>> Date: 2016-01-12 18:26:36 UTC
>> Link:
>>
>> Log Message:
>> ------------
>> JAVASERVERFACES-4092 - [Port 2.1] JAVASERVERFACES-3031
>> not fixed when using f:param without AJAX
>>
>>
>>
>> Revisions:
>> ----------
>> 22fb7da2ff9a1140c9342a967f1a4e39582849cf
>>
>>
>> Modified Paths:
>> ---------------
>> jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitUtils.java
>> test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/UserBean.java
>> test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/faces-config.xml
>> test/agnostic/ajax-namespace/src/main/webapp/index.xhtml
>> test/agnostic/ajax-namespace/src/test/java/com/sun/faces/test/agnostic/ajax_namespace/Issue3031IT.java
>>
>>
>> Added Paths:
>> ------------
>> test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/ExternalContextFactoryImpl.java
>> test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/ExternalContextNamespaceImpl.java
>> test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/NamespacedRequestParameterMap.java
>>
>>
>> Diffs:
>> ------
>> ---
>> a/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitUtils.java
>> +++
>> b/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitUtils.java
>> @@ -65,6 +65,8 @@ import
>> javax.faces.render.ResponseStateManager;
>> import javax.faces.render.Renderer;
>>
>> import com.sun.faces.RIConstants;
>> +import com.sun.faces.config.WebConfiguration;
>> +import
>> com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter;
>> import com.sun.faces.facelets.util.DevTools;
>> import com.sun.faces.util.FacesLogger;
>> import com.sun.faces.util.Util;
>> @@ -151,7 +153,7 @@ public class RenderKitUtils {
>>
>>
>> protected static final Logger LOGGER =
>> FacesLogger.RENDERKIT.getLogger();
>> -
>> +
>>
>> //
>> ------------------------------------------------------------
>> Constructors
>>
>> @@ -1562,8 +1564,21 @@ public class RenderKitUtils {
>> appendProperty(builder, componentClientId,
>> componentClientId);
>>
>> if ((null != params)&& (!params.isEmpty())) {
>> +
>> + String namingContainerId = "";
>> +
>> + WebConfiguration webConfig =
>> WebConfiguration.getInstance();
>> + boolean namespaceParameters =
>> webConfig.isOptionEnabled(BooleanWebContextInitParameter.NamespaceParameters);
>> +
>> + if (namespaceParameters) {
>> + UIViewRoot viewRoot = context.getViewRoot();
>> + if (viewRoot instanceof NamingContainer) {
>> + namingContainerId =
>> viewRoot.getContainerClientId(context);
>> + }
>> + }
>> +
>> for (ClientBehaviorContext.Parameter param
>> : params) {
>> - appendProperty(builder, param.getName(),
>> param.getValue());
>> + appendProperty(builder,
>> namingContainerId + param.getName(), param.getValue());
>> }
>> }
>>
>> --- /dev/null
>> +++
>> b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/ExternalContextFactoryImpl.java
>> @@ -0,0 +1,83 @@
>> +/*
>> + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>> + *
>> + * Copyright (c) 1997-2012 Oracle and/or its affiliates.
>> All rights reserved.
>> + *
>> + * The contents of this file are subject to the terms of
>> either the GNU
>> + * General Public License Version 2 only ("GPL") or the
>> Common Development
>> + * and Distribution License("CDDL") (collectively, the
>> "License"). You
>> + * may not use this file except in compliance with the
>> License. You can
>> + * obtain a copy of the License at
>> + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
>> + * or packager/legal/LICENSE.txt. See the License for
>> the specific
>> + * language governing permissions and limitations under
>> the License.
>> + *
>> + * When distributing the software, include this License
>> Header Notice in each
>> + * file and include the License file at
>> packager/legal/LICENSE.txt.
>> + *
>> + * GPL Classpath Exception:
>> + * Oracle designates this particular file as subject to
>> the "Classpath"
>> + * exception as provided by Oracle in the GPL Version 2
>> section of the License
>> + * file that accompanied this code.
>> + *
>> + * Modifications:
>> + * If applicable, add the following below the License
>> Header, with the fields
>> + * enclosed by brackets [] replaced by your own
>> identifying information:
>> + * "Portions Copyright [year] [name of copyright owner]"
>> + *
>> + * Contributor(s):
>> + * If you wish your version of this file to be governed
>> by only the CDDL or
>> + * only the GPL Version 2, indicate your decision by
>> adding "[Contributor]
>> + * elects to include this software in this distribution
>> under the [CDDL or GPL
>> + * Version 2] license." If you don't indicate a single
>> choice of license, a
>> + * recipient has the option to distribute your version
>> of this file under
>> + * either the CDDL, the GPL Version 2 or to extend the
>> choice of license to
>> + * its licensees as provided above. However, if you add
>> GPL Version 2 code
>> + * and therefore, elected the GPL Version 2 license,
>> then the option applies
>> + * only if the new code is made subject to such option
>> by the copyright
>> + * holder.
>> +
>> + */
>> +
>> +package com.sun.faces.test.agnostic.ajax_namespace;
>> +
>> +import javax.faces.FacesException;
>> +import javax.faces.application.Application;
>> +import javax.faces.application.ApplicationFactory;
>> +import javax.faces.context.ExternalContext;
>> +import javax.faces.context.ExternalContextFactory;
>> +import javax.servlet.ServletContext;
>> +import javax.servlet.ServletRequest;
>> +import javax.servlet.ServletResponse;
>> +
>> +import com.sun.faces.context.ExternalContextImpl;
>> +
>> +public class ExternalContextFactoryImpl extends
>> ExternalContextFactory {
>> + private final ExternalContextFactory parent;
>> +
>> + public
>> ExternalContextFactoryImpl(ExternalContextFactory parent) {
>> + this.parent = parent;
>> + }
>> +
>> + @Override
>> + public ExternalContextFactory getWrapped() {
>> + return parent;
>> + }
>> +
>> + public ExternalContext getExternalContext(Object
>> context, Object request,
>> + Object response) throws
>> FacesException {
>> + ExternalContext extContext = new
>> ExternalContextNamespaceImpl(
>> + new
>> ExternalContextImpl((ServletContext) context,
>> +
>> (ServletRequest) request, (ServletResponse) response));
>> +
>> + if (request instanceof ServletRequest) {
>> + ((ServletRequest) request)
>> + .setAttribute(
>> +
>> com.sun.faces.context.ExternalContextFactoryImpl.DEFAULT_EXTERNAL_CONTEXT_KEY,
>> +
>> extContext);
>> + }
>> +
>> + return extContext;
>> + }
>> +
>> +}
>> \ No newline at end of file
>> --- /dev/null
>> +++
>> b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/ExternalContextNamespaceImpl.java
>> @@ -0,0 +1,75 @@
>> +/*
>> + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>> + *
>> + * Copyright (c) 1997-2012 Oracle and/or its affiliates.
>> All rights reserved.
>> + *
>> + * The contents of this file are subject to the terms of
>> either the GNU
>> + * General Public License Version 2 only ("GPL") or the
>> Common Development
>> + * and Distribution License("CDDL") (collectively, the
>> "License"). You
>> + * may not use this file except in compliance with the
>> License. You can
>> + * obtain a copy of the License at
>> + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
>> + * or packager/legal/LICENSE.txt. See the License for
>> the specific
>> + * language governing permissions and limitations under
>> the License.
>> + *
>> + * When distributing the software, include this License
>> Header Notice in each
>> + * file and include the License file at
>> packager/legal/LICENSE.txt.
>> + *
>> + * GPL Classpath Exception:
>> + * Oracle designates this particular file as subject to
>> the "Classpath"
>> + * exception as provided by Oracle in the GPL Version 2
>> section of the License
>> + * file that accompanied this code.
>> + *
>> + * Modifications:
>> + * If applicable, add the following below the License
>> Header, with the fields
>> + * enclosed by brackets [] replaced by your own
>> identifying information:
>> + * "Portions Copyright [year] [name of copyright owner]"
>> + *
>> + * Contributor(s):
>> + * If you wish your version of this file to be governed
>> by only the CDDL or
>> + * only the GPL Version 2, indicate your decision by
>> adding "[Contributor]
>> + * elects to include this software in this distribution
>> under the [CDDL or GPL
>> + * Version 2] license." If you don't indicate a single
>> choice of license, a
>> + * recipient has the option to distribute your version
>> of this file under
>> + * either the CDDL, the GPL Version 2 or to extend the
>> choice of license to
>> + * its licensees as provided above. However, if you add
>> GPL Version 2 code
>> + * and therefore, elected the GPL Version 2 license,
>> then the option applies
>> + * only if the new code is made subject to such option
>> by the copyright
>> + * holder.
>> +
>> + */
>> +
>> +package com.sun.faces.test.agnostic.ajax_namespace;
>> +
>> +import java.util.Collections;
>> +import java.util.Map;
>> +
>> +import javax.faces.context.ExternalContext;
>> +import javax.faces.context.ExternalContextWrapper;
>> +import javax.servlet.ServletRequest;
>> +
>> +import com.sun.faces.context.RequestParameterMap;
>> +
>> +public class ExternalContextNamespaceImpl extends
>> ExternalContextWrapper {
>> +
>> + private final ExternalContext parent;
>> + private Map<String, String> requestParameterMap
>> = null;
>> +
>> + public
>> ExternalContextNamespaceImpl(ExternalContext
>> externalContext) {
>> + parent = externalContext;
>> + }
>> +
>> + public ExternalContext getWrapped() {
>> + return parent;
>> + }
>> +
>> + public Map<String, String>
>> getRequestParameterMap() {
>> + if (null == requestParameterMap) {
>> + requestParameterMap = Collections
>> +
>> .unmodifiableMap(new NamespacedRequestParameterMap(
>> +
>> ((ServletRequest) getWrapped().getRequest())));
>> + }
>> + return requestParameterMap;
>> + }
>> +
>> +}
>> \ No newline at end of file
>> --- /dev/null
>> +++
>> b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/NamespacedRequestParameterMap.java
>> @@ -0,0 +1,88 @@
>> +/*
>> + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>> + *
>> + * Copyright (c) 1997-2012 Oracle and/or its affiliates.
>> All rights reserved.
>> + *
>> + * The contents of this file are subject to the terms of
>> either the GNU
>> + * General Public License Version 2 only ("GPL") or the
>> Common Development
>> + * and Distribution License("CDDL") (collectively, the
>> "License"). You
>> + * may not use this file except in compliance with the
>> License. You can
>> + * obtain a copy of the License at
>> + * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
>> + * or packager/legal/LICENSE.txt. See the License for
>> the specific
>> + * language governing permissions and limitations under
>> the License.
>> + *
>> + * When distributing the software, include this License
>> Header Notice in each
>> + * file and include the License file at
>> packager/legal/LICENSE.txt.
>> + *
>> + * GPL Classpath Exception:
>> + * Oracle designates this particular file as subject to
>> the "Classpath"
>> + * exception as provided by Oracle in the GPL Version 2
>> section of the License
>> + * file that accompanied this code.
>> + *
>> + * Modifications:
>> + * If applicable, add the following below the License
>> Header, with the fields
>> + * enclosed by brackets [] replaced by your own
>> identifying information:
>> + * "Portions Copyright [year] [name of copyright owner]"
>> + *
>> + * Contributor(s):
>> + * If you wish your version of this file to be governed
>> by only the CDDL or
>> + * only the GPL Version 2, indicate your decision by
>> adding "[Contributor]
>> + * elects to include this software in this distribution
>> under the [CDDL or GPL
>> + * Version 2] license." If you don't indicate a single
>> choice of license, a
>> + * recipient has the option to distribute your version
>> of this file under
>> + * either the CDDL, the GPL Version 2 or to extend the
>> choice of license to
>> + * its licensees as provided above. However, if you add
>> GPL Version 2 code
>> + * and therefore, elected the GPL Version 2 license,
>> then the option applies
>> + * only if the new code is made subject to such option
>> by the copyright
>> + * holder.
>> +
>> + */
>> +
>> +package com.sun.faces.test.agnostic.ajax_namespace;
>> +
>> +import java.util.Collection;
>> +import java.util.Collections;
>> +import java.util.Iterator;
>> +import java.util.Map;
>> +import java.util.Set;
>> +
>> +import javax.servlet.ServletRequest;
>> +
>> +import com.sun.faces.context.RequestParameterMap;
>> +import com.sun.faces.util.Util;
>> +
>> +public class NamespacedRequestParameterMap extends
>> RequestParameterMap {
>> +
>> + private final ServletRequest request;
>> +
>> + public
>> NamespacedRequestParameterMap(ServletRequest request) {
>> + super(request);
>> + this.request = request;
>> + }
>> +
>> + @Override
>> + public String get(Object key) {
>> + String mapKey = key.toString();
>> +
>> + String value =
>> request.getParameter(getNamingContainerId() + mapKey);
>> +
>> + if (value == null&&
>> !mapKey.equals("param")) {
>> + value = request.getParameter(mapKey);
>> + }
>> + return value;
>> + }
>> +
>> + @Override
>> + public boolean containsKey(Object key) {
>> + String mapKey = key.toString();
>> + boolean contains =
>> (request.getParameter(getNamingContainerId()
>> + + mapKey) != null);
>> +
>> + if (!contains&& !mapKey.equals("param")) {
>> + contains =
>> (request.getParameter(mapKey) != null);
>> + }
>> +
>> + return contains;
>> + }
>> +}
>> \ No newline at end of file
>> ---
>> a/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/UserBean.java
>> +++
>> b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/UserBean.java
>> @@ -2,13 +2,14 @@ package
>> com.sun.faces.test.agnostic.ajax_namespace;
>>
>> import java.io.Serializable;
>> import java.util.Date;
>> -
>> +import java.util.Map;
>>
>> import javax.faces.application.FacesMessage;
>> import javax.faces.bean.ManagedBean;
>> import javax.faces.bean.SessionScoped;
>> import javax.faces.component.UIComponent;
>> import javax.faces.context.FacesContext;
>> +import javax.faces.event.ActionEvent;
>> import javax.faces.validator.ValidatorException;
>>
>> @ManagedBean
>> @@ -90,5 +91,15 @@ public class UserBean implements
>> Serializable {
>>
>> FacesContext.getCurrentInstance().addMessage(null,
>> doneMessage);
>> return "done";
>> }
>> +
>> + public void paramActionListener (ActionEvent
>> actionEvent) {
>> + Map<String, String> params =
>> +
>> FacesContext.getCurrentInstance().getExternalContext().
>> + getRequestParameterMap();
>> + String paramValue = params.get("param");
>> + if (paramValue != null) {
>> + this.lastName = this.lastName + " " +
>> params.get("param");
>> + }
>> + }
>> }
>>
>> ---
>> a/test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/faces-config.xml
>> +++
>> b/test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/faces-config.xml
>> @@ -3,5 +3,6 @@
>> <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> version="2.1"
>> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>> http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd">
>> <factory>
>> <application-factory>com.sun.faces.test.agnostic.ajax_namespace.ApplicationFactoryImpl</application-factory>
>> +<external-context-factory>com.sun.faces.test.agnostic.ajax_namespace.ExternalContextFactoryImpl</external-context-factory>
>> </factory>
>> </faces-config>
>> \ No newline at end of file
>> ---
>> a/test/agnostic/ajax-namespace/src/main/webapp/index.xhtml
>> +++
>> b/test/agnostic/ajax-namespace/src/main/webapp/index.xhtml
>> @@ -61,12 +61,33 @@
>>
>> <br />
>>
>> +<h:form id="ajaxFormParams" prependId="false">
>> + <h:inputText id="ajaxInputParams"
>> value="#{userBean.lastName}" />
>> +<h:outputText id="ajaxOutputParams"
>> value="#{userBean.lastName}" />
>> +<h:commandButton id="ajaxSubmitParams" value="submit"
>> actionListener="#{userBean.paramActionListener}">
>> + <f:ajax render="@form" execute="@form"/>
>> + <f:param name="param" value="value"/>
>> +</h:commandButton>
>> +</h:form>
>> +
>> +<br />
>> +
>> <h:form id="nonAjaxForm" prependId="false">
>> <h:inputText id="nonAjaxInput"
>> value="#{userBean.lastName}" />
>> <h:outputText id="nonAjaxOutput"
>> value="#{userBean.lastName}" />
>> <h:commandButton id="nonAjaxSubmit" value="submit" />
>> </h:form>
>>
>> +<br />
>> +
>> +<h:form id="nonAjaxFormParams" prependId="false">
>> +<h:inputText id="nonAjaxInputParams"
>> value="#{userBean.lastName}" />
>> +<h:outputText id="nonAjaxOutputParams"
>> value="#{userBean.lastName}" />
>> +<h:commandButton id="nonAjaxSubmitParams" value="submit"
>> actionListener="#{userBean.paramActionListener}">
>> + <f:param name="param" value="value"/>
>> +</h:commandButton>
>> +</h:form>
>> +
>> </body>
>>
>> </f:view>
>> ---
>> a/test/agnostic/ajax-namespace/src/test/java/com/sun/faces/test/agnostic/ajax_namespace/Issue3031IT.java
>> +++
>> b/test/agnostic/ajax-namespace/src/test/java/com/sun/faces/test/agnostic/ajax_namespace/Issue3031IT.java
>> @@ -114,6 +114,26 @@ public class Issue3031IT {
>> }
>>
>> @Test
>> + public void testAjaxWithParams() throws Exception {
>> + HtmlPage page = webClient.getPage(webUrl);
>> +
>> + HtmlElement input = (HtmlElement)
>> page.getElementById("MyNamingContainerj_id1:ajaxInputParams");
>> + assertTrue(null != input);
>> + assertTrue(input instanceof HtmlTextInput);
>> + HtmlTextInput textInput = (HtmlTextInput) input;
>> + textInput.setText("MyText");
>> +
>> + HtmlSubmitInput button = (HtmlSubmitInput)
>> page.getElementById("MyNamingContainerj_id1:ajaxSubmitParams");
>> + page = button.click();
>> + webClient.waitForBackgroundJavaScript(60000);
>> +
>> + HtmlElement output = (HtmlElement)
>> page.getElementById("MyNamingContainerj_id1:ajaxOutputParams");
>> + assertTrue(output.asText().contains("MyText
>> value"));
>> +
>> +
>> + }
>> +
>> + @Test
>> public void testNonAjax() throws Exception {
>> HtmlPage page = webClient.getPage(webUrl);
>>
>> @@ -132,4 +152,22 @@ public class Issue3031IT {
>>
>> }
>>
>> + @Test
>> + public void testNonAjaxWithParams() throws Exception {
>> + HtmlPage page = webClient.getPage(webUrl);
>> +
>> + HtmlElement input = (HtmlElement)
>> page.getElementById("MyNamingContainerj_id1:nonAjaxInputParams");
>> + assertTrue(null != input);
>> + assertTrue(input instanceof HtmlTextInput);
>> + HtmlTextInput textInput = (HtmlTextInput) input;
>> + textInput.setText("MyNonAjaxText");
>> +
>> + HtmlSubmitInput button = (HtmlSubmitInput)
>> page.getElementById("MyNamingContainerj_id1:nonAjaxSubmitParams");
>> + page = button.click();
>> +
>> + HtmlElement output = (HtmlElement)
>> page.getElementById("MyNamingContainerj_id1:nonAjaxOutputParams");
>> +
>> assertTrue(output.asText().contains("MyNonAjaxText value"));
>> +
>> +
>> + }
>> }
>>
>>
>>
>>
>>
>