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>
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>
> 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 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"));
>>> +
>>> +
>>> + }
>>> }
>>>
>>>
>>>
>>>
>>>
>