You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2007/08/16 20:44:03 UTC
svn commit: r566797 - in /myfaces/tobago/trunk/contrib/message-order-fix: ./
src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/myfaces/ src/main/java/org/apache/myfaces/tobago/
src/main/java/org/apache/...
Author: bommel
Date: Thu Aug 16 11:44:02 2007
New Revision: 566797
URL: http://svn.apache.org/viewvc?view=rev&rev=566797
Log:
adding FacesContextWrapper for fixing the message order problem with ri < 1.2
Added:
myfaces/tobago/trunk/contrib/message-order-fix/ (with props)
myfaces/tobago/trunk/contrib/message-order-fix/pom.xml
myfaces/tobago/trunk/contrib/message-order-fix/src/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/message/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/message/MessageFixFacesContext.java
myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/message/MessageFixFacesContextFactoryImpl.java
myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/
myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/LICENSE.txt
- copied unchanged from r566063, myfaces/tobago/trunk/contrib/fileupload/src/main/resources/META-INF/LICENSE.txt
myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/NOTICE.txt
- copied, changed from r566063, myfaces/tobago/trunk/contrib/fileupload/src/main/resources/META-INF/NOTICE.txt
myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/faces-config.xml
- copied, changed from r566063, myfaces/tobago/trunk/contrib/fileupload/src/main/resources/META-INF/faces-config.xml
Propchange: myfaces/tobago/trunk/contrib/message-order-fix/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Aug 16 11:44:02 2007
@@ -0,0 +1,6 @@
+*.iml
+*.iws
+*.ipr
+target
+.classpath
+.project
Added: myfaces/tobago/trunk/contrib/message-order-fix/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/message-order-fix/pom.xml?view=auto&rev=566797
==============================================================================
--- myfaces/tobago/trunk/contrib/message-order-fix/pom.xml (added)
+++ myfaces/tobago/trunk/contrib/message-order-fix/pom.xml Thu Aug 16 11:44:02 2007
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * 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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.myfaces.tobago</groupId>
+ <artifactId>tobago-contrib</artifactId>
+ <version>1.0.12-SNAPSHOT</version>
+ </parent>
+ <packaging>jar</packaging>
+ <name>Tobago FacesMessage ordering fix for the ri (before the 1.2 version)</name>
+ <artifactId>tobago-message-fix</artifactId>
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/tobago/trunk/contrib/message-fix</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/tobago/trunk/contrib/message-fix</developerConnection>
+ <url>http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/message-fix</url>
+ </scm>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.myfaces.core</groupId>
+ <artifactId>myfaces-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+ <profiles>
+ <profile>
+ <id>jdk14retro</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>retrotranslator-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>translate-project</goal>
+ </goals>
+ <configuration>
+ <classifier>jdk14retro</classifier>
+ <attach>true</attach>
+ <verify>true</verify>
+ <verifyClasspath>
+ <element>${java14.home}/lib/rt.jar</element>
+ </verifyClasspath>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>net.sf.retrotranslator</groupId>
+ <artifactId>retrotranslator-runtime</artifactId>
+ </dependency>
+ </dependencies>
+ </profile>
+ <profile>
+ <id>generate-assembly</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-scm-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <id>getting-scm.revision</id>
+ <goals>
+ <goal>update</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
\ No newline at end of file
Added: myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/message/MessageFixFacesContext.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/message/MessageFixFacesContext.java?view=auto&rev=566797
==============================================================================
--- myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/message/MessageFixFacesContext.java (added)
+++ myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/message/MessageFixFacesContext.java Thu Aug 16 11:44:02 2007
@@ -0,0 +1,172 @@
+package org.apache.myfaces.tobago.extension.fix.message;
+
+/*
+ * 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.
+ */
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
+import javax.faces.render.RenderKit;
+import javax.faces.component.UIViewRoot;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Collections;
+import java.util.List;
+import java.util.ArrayList;
+
+/*
+ * Date: Aug 16, 2007
+ * Time: 7:41:04 PM
+ */
+public class MessageFixFacesContext extends FacesContext {
+ private FacesContext facesContext;
+ private Map<String, List<FacesMessage>> clientIdsWithMessages;
+ private List<FacesMessage> messages;
+ private FacesMessage.Severity maximumSeverity;
+ private boolean released = false;
+
+ public MessageFixFacesContext(FacesContext facesContext) {
+ this.facesContext = facesContext;
+ }
+
+ public Iterator getMessages() {
+ if (released) {
+ throw new IllegalStateException("FacesContext already released");
+ }
+ return (messages != null) ? messages.iterator() : Collections.EMPTY_LIST.iterator();
+ }
+
+ public Iterator getMessages(String clientId) {
+ if (released) {
+ throw new IllegalStateException("FacesContext already released");
+ }
+ if (messages == null || messages.isEmpty()) {
+ return Collections.EMPTY_LIST.iterator();
+ }
+ if (clientIdsWithMessages.containsKey(clientId)) {
+ return clientIdsWithMessages.get(clientId).iterator();
+ }
+ return Collections.EMPTY_LIST.iterator();
+ }
+
+ public Iterator getClientIdsWithMessages() {
+ if (released) {
+ throw new IllegalStateException("FacesContext already released");
+ }
+ if (messages == null || messages.isEmpty()) {
+ return Collections.EMPTY_LIST.iterator();
+ }
+ return clientIdsWithMessages.keySet().iterator();
+ }
+
+ public void addMessage(String clientId, FacesMessage message) {
+ if (released) {
+ throw new IllegalStateException("FacesContext already released");
+ }
+ if (message == null) {
+ throw new NullPointerException("message");
+ }
+
+ if (messages == null) {
+ messages = new ArrayList<FacesMessage>();
+ clientIdsWithMessages = new LinkedHashMap<String, List<FacesMessage>>();
+ }
+ messages.add(message);
+ if (clientId != null) {
+ if (!clientIdsWithMessages.containsKey(clientId)) {
+ List<FacesMessage> facesMessages = new ArrayList<FacesMessage>();
+ facesMessages.add(message);
+ clientIdsWithMessages.put(clientId, facesMessages);
+ } else {
+ clientIdsWithMessages.get(clientId).add(message);
+ }
+ }
+ FacesMessage.Severity severity = message.getSeverity();
+ if (severity != null) {
+ if (maximumSeverity == null) {
+ maximumSeverity = severity;
+ } else if (severity.compareTo(maximumSeverity) > 0) {
+ maximumSeverity = severity;
+ }
+ }
+ }
+
+ public FacesMessage.Severity getMaximumSeverity() {
+ return maximumSeverity;
+ }
+
+ public void release() {
+ released = true;
+ facesContext.release();
+ }
+
+ public Application getApplication() {
+ return facesContext.getApplication();
+ }
+
+ public ExternalContext getExternalContext() {
+ return facesContext.getExternalContext();
+ }
+
+ public RenderKit getRenderKit() {
+ return facesContext.getRenderKit();
+ }
+
+ public boolean getRenderResponse() {
+ return facesContext.getRenderResponse();
+ }
+
+ public boolean getResponseComplete() {
+ return facesContext.getResponseComplete();
+ }
+
+ public ResponseStream getResponseStream() {
+ return facesContext.getResponseStream();
+ }
+
+ public void setResponseStream(ResponseStream responseStream) {
+ facesContext.setResponseStream(responseStream);
+ }
+
+ public ResponseWriter getResponseWriter() {
+ return facesContext.getResponseWriter();
+ }
+
+ public void setResponseWriter(ResponseWriter responseWriter) {
+ facesContext.setResponseWriter(responseWriter);
+ }
+
+ public UIViewRoot getViewRoot() {
+ return facesContext.getViewRoot();
+ }
+
+ public void setViewRoot(UIViewRoot root) {
+ facesContext.setViewRoot(root);
+ }
+
+ public void renderResponse() {
+ facesContext.renderResponse();
+ }
+
+ public void responseComplete() {
+ facesContext.responseComplete();
+ }
+}
\ No newline at end of file
Added: myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/message/MessageFixFacesContextFactoryImpl.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/message/MessageFixFacesContextFactoryImpl.java?view=auto&rev=566797
==============================================================================
--- myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/message/MessageFixFacesContextFactoryImpl.java (added)
+++ myfaces/tobago/trunk/contrib/message-order-fix/src/main/java/org/apache/myfaces/tobago/extension/fix/message/MessageFixFacesContextFactoryImpl.java Thu Aug 16 11:44:02 2007
@@ -0,0 +1,46 @@
+package org.apache.myfaces.tobago.extension.fix.message;
+
+/*
+ * 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.
+ */
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.faces.context.FacesContextFactory;
+import javax.faces.context.FacesContext;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.FacesException;
+
+/*
+ * Date: Aug 16, 2007
+ * Time: 7:41:04 PM
+ */
+public class MessageFixFacesContextFactoryImpl extends FacesContextFactory {
+ private static final Log LOG = LogFactory.getLog(MessageFixFacesContextFactoryImpl.class);
+ private FacesContextFactory facesContextFactory;
+
+ public MessageFixFacesContextFactoryImpl(FacesContextFactory facesContextFactory) {
+ this.facesContextFactory = facesContextFactory;
+ }
+
+ public FacesContext getFacesContext(Object context, Object request, Object response, Lifecycle lifecycle)
+ throws FacesException {
+ return new MessageFixFacesContext(facesContextFactory.getFacesContext(context, request, response, lifecycle));
+ }
+
+
+}
Copied: myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/NOTICE.txt (from r566063, myfaces/tobago/trunk/contrib/fileupload/src/main/resources/META-INF/NOTICE.txt)
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/NOTICE.txt?view=diff&rev=566797&p1=myfaces/tobago/trunk/contrib/fileupload/src/main/resources/META-INF/NOTICE.txt&r1=566063&p2=myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/NOTICE.txt&r2=566797
==============================================================================
--- myfaces/tobago/trunk/contrib/fileupload/src/main/resources/META-INF/NOTICE.txt (original)
+++ myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/NOTICE.txt Thu Aug 16 11:44:02 2007
@@ -4,6 +4,3 @@
This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
-Based on source code originally developed by
-Atanion GmbH (http://www.atanion.com/).
-
Copied: myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/faces-config.xml (from r566063, myfaces/tobago/trunk/contrib/fileupload/src/main/resources/META-INF/faces-config.xml)
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/faces-config.xml?view=diff&rev=566797&p1=myfaces/tobago/trunk/contrib/fileupload/src/main/resources/META-INF/faces-config.xml&r1=566063&p2=myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/faces-config.xml&r2=566797
==============================================================================
--- myfaces/tobago/trunk/contrib/fileupload/src/main/resources/META-INF/faces-config.xml (original)
+++ myfaces/tobago/trunk/contrib/message-order-fix/src/main/resources/META-INF/faces-config.xml Thu Aug 16 11:44:02 2007
@@ -24,7 +24,7 @@
<faces-config>
<factory>
- <faces-context-factory>org.apache.myfaces.tobago.fileupload.FileUploadFacesContextFactoryImpl</faces-context-factory>
+ <faces-context-factory>org.apache.myfaces.tobago.extension.fix.message.MessageFixFacesContextFactoryImpl</faces-context-factory>
</factory>
</faces-config>