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>