View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one
    3    * or more contributor license agreements.  See the NOTICE file
    4    * distributed with this work for additional information
    5    * regarding copyright ownership.  The ASF licenses this file
    6    * to you under the Apache License, Version 2.0 (the
    7    * "License"); you may not use this file except in compliance
    8    * with the License.  You may obtain a copy of the License at
    9    *
    10   *   http://www.apache.org/licenses/LICENSE-2.0
    11   *
    12   * Unless required by applicable law or agreed to in writing,
    13   * software distributed under the License is distributed on an
    14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    15   * KIND, either express or implied.  See the License for the
    16   * specific language governing permissions and limitations
    17   * under the License.
    18   */
    19  package org.apache.myfaces.orchestra.lib.jsf;
    20
    21  import java.util.Iterator;
    22
    23  import javax.el.ELContext;
    24  import javax.faces.application.Application;
    25  import javax.faces.application.FacesMessage;
    26  import javax.faces.component.UIViewRoot;
    27  import javax.faces.context.ExternalContext;
    28  import javax.faces.context.FacesContext;
    29  import javax.faces.context.ResponseStream;
    30  import javax.faces.context.ResponseWriter;
    31  import javax.faces.render.RenderKit;
    32
    33
    34  /**
    35   * Convenient class to wrap the current FacesContext.
    36   * <p>
    37   * A class of this name is provided in JSF1.2, but not in JSF1.1.
    38   * <p>
    39   * Any methods that do not actually need to be overridden are declared final
    40   * in order to improve performance (helps the JVM to optimise away the call).
    41   * <p>
    42   * Note that whether a newly-created instance immediately becomes the
    43   * object that is returned by FacesContext.getCurrentInstance() depends
    44   * upon the value of the "install" parameter for the constructor method.
    45   * <p>
    46   * This class is copied from the code in MyFaces Core Impl 1.2.x, but
    47   * modified to be compatible with JSF1.1.
    48   * <p>
    49   * Note that this class must be public in order to support custom
    50   * FacesContextFactory classes in other libraries that also wrap this
    51   * instance, then use reflection to invoke methods on this object. In
    52   * this case, an IllegalAccessException would occur if this class was
    53   * package-scoped. However this class is NOT intended to be part of the
    54   * public Orchestra API, and may change at any time.
    55   *
    56   * @since 1.1
    57   *
    58   * @author Manfred Geiler (latest modification by $Author: skitching $)
    59   * @author Anton Koinov
    60   * @version $Revision: 672906 $ $Date: 2008-06-30 15:45:16 -0500 (lun, 30 jun 2008) $
    61   */
    62  public class _FacesContextWrapper extends FacesContext
    63  {
    64      //~ Instance fields -------------------------------------------------------
    65
    66      private final FacesContext _facesContext;
    67
    68      //~ Constructors ----------------------------------------------------------
    69
    70      /**
    71       * The install parameter controls whether this object will be configured as
    72       * the object returned from calls to FacesContext.getCurrentInstance() or not.
    73       * <p>
    74       * When only overriding the release() method, then install=false is ok as that
    75       * is called directly by the FacesServlet on the instance returned by the
    76       * FacesContextFactory. However all other methods are invoked on the object
    77       * that is returned from FacesContext.getCurrentInstance, so install=true is
    78       * needed in order for any other method overrides to have any effect.
    79       * <p>
    80       * <b>IMPORTANT</b>: install=true should not be used until MYFACES-1820 is fixed.
    81       */
    82      public _FacesContextWrapper(FacesContext facesContext, boolean install)
    83      {
    84          _facesContext = facesContext;
    85
    86          if (install)
    87          {
    88              FacesContext.setCurrentInstance(this);
    89          }
    90      }
    91
    92      //~ Non-Final Methods -----------------------------------------------------
    93
    94      public void release()
    95      {
    96          _facesContext.release();
    97      }
    98
    99      //~ Final Methods ---------------------------------------------------------
    100
    101     public final Application getApplication()
    102     {
    103         return _facesContext.getApplication();
    104     }
    105
    106     public final Iterator getClientIdsWithMessages()
    107     {
    108         return _facesContext.getClientIdsWithMessages();
    109     }
    110
    111     public final ExternalContext getExternalContext()
    112     {
    113         return _facesContext.getExternalContext();
    114     }
    115
    116     public final FacesMessage.Severity getMaximumSeverity()
    117     {
    118         return _facesContext.getMaximumSeverity();
    119     }
    120
    121     public final Iterator getMessages()
    122     {
    123         return _facesContext.getMessages();
    124     }
    125
    126     public final Iterator getMessages(String clientId)
    127     {
    128         return _facesContext.getMessages(clientId);
    129     }
    130
    131     public final RenderKit getRenderKit()
    132     {
    133         return _facesContext.getRenderKit();
    134     }
    135
    136     public final boolean getRenderResponse()
    137     {
    138         return _facesContext.getRenderResponse();
    139     }
    140
    141     public final boolean getResponseComplete()
    142     {
    143         return _facesContext.getResponseComplete();
    144     }
    145
    146     public final void setResponseStream(ResponseStream responsestream)
    147     {
    148         _facesContext.setResponseStream(responsestream);
    149     }
    150
    151     public final ResponseStream getResponseStream()
    152     {
    153         return _facesContext.getResponseStream();
    154     }
    155
    156     public final void setResponseWriter(ResponseWriter responsewriter)
    157     {
    158         _facesContext.setResponseWriter(responsewriter);
    159     }
    160
    161     public final ResponseWriter getResponseWriter()
    162     {
    163         return _facesContext.getResponseWriter();
    164     }
    165
    166     public final void setViewRoot(UIViewRoot viewRoot)
    167     {
    168         _facesContext.setViewRoot(viewRoot);
    169     }
    170
    171     public final UIViewRoot getViewRoot()
    172     {
    173         return _facesContext.getViewRoot();
    174     }
    175
    176     public final void addMessage(String clientId, FacesMessage message)
    177     {
    178         _facesContext.addMessage(clientId, message);
    179     }
    180
    181     public final void renderResponse()
    182     {
    183         _facesContext.renderResponse();
    184     }
    185
    186     public final void responseComplete()
    187     {
    188         _facesContext.responseComplete();
    189     }
    190
    191     /**
    192      * Implement getELContext by delegating call to another instance.
    193      */
    194     public final ELContext getELContext()
    195     {
    196         return _facesContext.getELContext();
    197     }
    198 }