Home » geronimo-2.2-source-release » org.apache.geronimo.myfaces » [javadoc | source]

    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   
   20   
   21   package org.apache.geronimo.myfaces;
   22   
   23   import java.util.Map;
   24   import java.util.concurrent.ConcurrentHashMap;
   25   
   26   import javax.faces.context.ExternalContext;
   27   
   28   import org.apache.myfaces.config.annotation.LifecycleProvider;
   29   import org.apache.myfaces.config.annotation.LifecycleProviderFactory;
   30   
   31   /**
   32    * @version $Rev: 720842 $ $Date: 2008-11-26 05:18:49 -0800 (Wed, 26 Nov 2008) $
   33    */
   34   public class ApplicationIndexedLifecycleProviderFactory extends LifecycleProviderFactory {
   35   
   36       private final Map<ClassLoader, LifecycleProvider> providers = new ConcurrentHashMap<ClassLoader, LifecycleProvider>();
   37   
   38       public LifecycleProvider getLifecycleProvider(ExternalContext externalContext) {
   39           ClassLoader cl = Thread.currentThread().getContextClassLoader();
   40           LifecycleProvider provider = providers.get(cl);
   41           if (provider == null) {
   42               throw new IllegalStateException("No LifecycleProvider registered for application classloader: " + cl);
   43           }
   44           return provider;
   45       }
   46   
   47       /**
   48        * Register a lifecycle provider for an application classloader.  This method is intended to be called
   49        * by the container in which MyFaces is running, once for each application, during application startup before
   50        * any other myfaces initialization has taken place.
   51        *
   52        * @param cl       application classloader, used to index LifecycleProviders
   53        * @param provider LifecycleProvider for the application.
   54        */
   55       public void registerLifecycleProvider(ClassLoader cl, LifecycleProvider provider) {
   56           providers.put(cl, provider);
   57       }
   58   
   59       public void unregisterLifecycleProvider(ClassLoader cl) {
   60           providers.remove(cl);
   61       }
   62   
   63       public void release() {
   64           providers.clear();
   65       }
   66   
   67   }

Home » geronimo-2.2-source-release » org.apache.geronimo.myfaces » [javadoc | source]