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 javax.faces.context.FacesContext; 22 import javax.faces.context.FacesContextWrapper; 23 24 25 /** 26 * Convenient class to wrap the current FacesContext. 27 * <p> 28 * A class of this name is provided in JSF1.2, but not in JSF1.1. 29 * <p> 30 * Any methods that do not actually need to be overridden are declared final 31 * in order to improve performance (helps the JVM to optimise away the call). 32 * <p> 33 * Note that whether a newly-created instance immediately becomes the 34 * object that is returned by FacesContext.getCurrentInstance() depends 35 * upon the value of the "install" parameter for the constructor method. 36 * <p> 37 * This class is copied from the code in MyFaces Core Impl 1.2.x, but 38 * modified to be compatible with JSF1.1. 39 * <p> 40 * Note that this class must be public in order to support custom 41 * FacesContextFactory classes in other libraries that also wrap this 42 * instance, then use reflection to invoke methods on this object. In 43 * this case, an IllegalAccessException would occur if this class was 44 * package-scoped. However this class is NOT intended to be part of the 45 * public Orchestra API, and may change at any time. 46 * 47 * @since 1.1 48 * 49 * @author Manfred Geiler (latest modification by $Author: skitching $) 50 * @author Anton Koinov 51 * @version $Revision: 672906 $ $Date: 2008-06-30 15:45:16 -0500 (lun, 30 jun 2008) $ 52 */ 53 public class _FacesContextWrapper extends FacesContextWrapper 54 { 55 //~ Instance fields ------------------------------------------------------- 56 57 private final FacesContext _facesContext; 58 59 //~ Constructors ---------------------------------------------------------- 60 61 /** 62 * The install parameter controls whether this object will be configured as 63 * the object returned from calls to FacesContext.getCurrentInstance() or not. 64 * <p> 65 * When only overriding the release() method, then install=false is ok as that 66 * is called directly by the FacesServlet on the instance returned by the 67 * FacesContextFactory. However all other methods are invoked on the object 68 * that is returned from FacesContext.getCurrentInstance, so install=true is 69 * needed in order for any other method overrides to have any effect. 70 * <p> 71 * <b>IMPORTANT</b>: install=true should not be used until MYFACES-1820 is fixed. 72 */ 73 public _FacesContextWrapper(FacesContext facesContext, boolean install) 74 { 75 _facesContext = facesContext; 76 77 if (install) 78 { 79 FacesContext.setCurrentInstance(this); 80 } 81 } 82 83 //~ Non-Final Methods ----------------------------------------------------- 84 85 @Override 86 public FacesContext getWrapped() 87 { 88 return _facesContext; 89 } 90 91 //~ Final Methods --------------------------------------------------------- 92 93 }