/*
* 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.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.servlet30.facesContext;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UICommand;
import javax.faces.context.FacesContext;
import static org.junit.Assert.*;
/**
* The managed bean for the message tests.
*
* @author Manfred Riem (manfred.riem@oracle.com)
*/
@ManagedBean(name = "messageBean")
@RequestScoped
public class MessageBean implements Serializable {
public String getMessageResult1() {
FacesContext context = FacesContext.getCurrentInstance();
assertNotNull(context);
try {
context.addMessage(null, null);
fail();
} catch (NullPointerException exception) {
}
try {
context.addMessage(null, null);
fail();
} catch (NullPointerException exception) {
}
return "PASSED";
}
public String getMessageResult2() {
FacesContext context = FacesContext.getCurrentInstance();
assertTrue(context != null);
FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_ERROR,
"summary1", "detail1");
context.addMessage(null, msg1);
FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_FATAL,
"summary2", "detail2");
context.addMessage(null, msg2);
UICommand command = new UICommand();
FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_FATAL,
"summary3", "detail3");
context.addMessage(command.getClientId(context), msg3);
FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_WARN,
"summary4", "detail4");
context.addMessage(command.getClientId(context), msg4);
assertTrue(context.getMaximumSeverity() == FacesMessage.SEVERITY_FATAL);
List controlList = new ArrayList();
controlList.add(msg1);
controlList.add(msg2);
controlList.add(msg3);
controlList.add(msg4);
Iterator it = context.getMessages();
for (int i = 0, size = controlList.size(); i < size; i++) {
assertTrue(controlList.get(i).equals(it.next()));
}
controlList.clear();
controlList.add(msg3);
controlList.add(msg4);
it = context.getMessages(command.getClientId(context));
for (int i = 0, size = controlList.size(); i < size; i++) {
assertTrue(controlList.get(i).equals(it.next()));
}
controlList.clear();
controlList.add(msg1);
controlList.add(msg2);
it = context.getMessages(null);
for (int i = 0, size = controlList.size(); i < size; i++) {
assertTrue(controlList.get(i).equals(it.next()));
}
return "PASSED";
}
public String getMessageResult3() {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
context.addMessage(null, msg1);
context.addMessage("id1", msg2);
context.addMessage("id2", msg3);
context.addMessage("id2", msg4);
Class unmodifiableType = Collections.unmodifiableList(Collections.emptyList()).getClass();
List list = context.getMessageList(null);
assertTrue(list.size() == 1);
assertTrue(unmodifiableType.isInstance(list));
assertTrue(msg1.equals(list.get(0)));
list = context.getMessageList("id1");
assertTrue(list.size() == 1);
assertTrue(unmodifiableType.isInstance(list));
assertTrue(msg2.equals(list.get(0)));
list = context.getMessageList("id2");
assertTrue(list.size() == 2);
assertTrue(unmodifiableType.isInstance(list));
assertTrue(msg3.equals(list.get(0)));
assertTrue(msg4.equals(list.get(1)));
list = context.getMessageList();
assertTrue(list.size() == 4);
assertTrue(unmodifiableType.isInstance(list));
assertTrue(list.contains(msg1));
assertTrue(list.contains(msg2));
assertTrue(list.contains(msg3));
assertTrue(list.contains(msg4));
return "PASSED";
}
public String getMessageResult4() {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
context.addMessage(null, msg2);
context.addMessage(null, msg1);
assertTrue(FacesMessage.SEVERITY_WARN.equals(context.getMaximumSeverity()));
return "PASSED";
}
public String getMessageResult5() {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
context.addMessage(null, msg2);
context.addMessage(null, msg1);
context.addMessage(null, msg3);
assertTrue(FacesMessage.SEVERITY_ERROR.equals(context.getMaximumSeverity()));
return "PASSED";
}
public String getMessageResult6() {
FacesContext context = FacesContext.getCurrentInstance();
Iterator<FacesMessage> messages = context.getMessages();
assertTrue(!messages.hasNext());
FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "");
context.addMessage(null, msg2);
context.addMessage(null, msg1);
context.addMessage(null, msg3);
messages = context.getMessages();
assertTrue(messages.hasNext());
while (messages.hasNext()) {
messages.next();
messages.remove();
}
assertTrue(context.getMaximumSeverity() == null);
context.addMessage("id1", msg1);
context.addMessage("id3", msg1);
context.addMessage("id3", msg3);
context.addMessage("id3", msg1);
context.addMessage(null, msg4);
assertTrue(context.getMaximumSeverity() == FacesMessage.SEVERITY_FATAL);
for (Iterator<FacesMessage> i = context.getMessages(); i.hasNext(); ) {
FacesMessage m = i.next();
if (m.getSeverity() == FacesMessage.SEVERITY_FATAL) {
i.remove();
}
}
assertTrue(context.getMaximumSeverity() == FacesMessage.SEVERITY_ERROR);
for (Iterator<FacesMessage> i = context.getMessages(); i.hasNext(); ) {
FacesMessage m = i.next();
if (m.getSeverity() == FacesMessage.SEVERITY_ERROR) {
i.remove();
}
}
assertTrue(context.getMaximumSeverity() == FacesMessage.SEVERITY_INFO);
for (Iterator<FacesMessage> i = context.getMessages(); i.hasNext(); ) {
FacesMessage m = i.next();
if (m.getSeverity() == FacesMessage.SEVERITY_INFO) {
i.remove();
}
}
assertTrue(context.getMaximumSeverity() == null);
return "PASSED";
}
public String getMessageResult7() {
FacesContext context = FacesContext.getCurrentInstance();
Iterator<FacesMessage> messages = context.getMessages();
assertTrue(!messages.hasNext());
FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "");
context.addMessage("id1", msg1);
context.addMessage("id3", msg2);
context.addMessage("id3", msg3);
context.addMessage("id3", msg4);
context.addMessage("id2", msg1);
for (Iterator<String> i = context.getClientIdsWithMessages();
i.hasNext();) {
String id = i.next();
if ("id3".equals(id)) {
i.remove();
}
}
assertTrue(!context.getMessages("id3").hasNext());
assertTrue(context.getMaximumSeverity() == FacesMessage.SEVERITY_INFO);
for (Iterator<String> i = context.getClientIdsWithMessages();
i.hasNext();) {
i.next();
i.remove();
}
assertTrue(context.getMaximumSeverity() == null);
return "PASSED";
}
public String getMessageResult8() {
FacesContext context = FacesContext.getCurrentInstance();
// we use a custom iterator for iterating over all messages.
// ensure the proper exceptions are thrown by next() and remove()
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "", ""));
// next should throw NoSuchElementException after the second call to next()
Iterator i = context.getMessages();
i.next();
try {
i.next();
assertTrue(false);
} catch (NoSuchElementException nsee) { }
// remove should throw an IllegalStateException if called without having
// called next()
i = context.getMessages();
try {
i.remove();
assertTrue(false);
} catch (IllegalStateException ise) { }
return "PASSED";
}
}