Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2008, Red Hat Middleware LLC, and individual contributors
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * Licensed 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.
  */
 package org.jboss.as.weld.webtier.jsf;
 
 import  org.jboss.weld.el.WeldELContextListener;
 
 import  javax.faces.application.Application;

Author(s):
pmuir
 
 public class WeldApplication extends ForwardingApplication {
 
     private static class AdjustableELResolver extends ForwardingELResolver {
 
         private ELResolver delegate;
 
         public void setDelegate(ELResolver delegate) {
             this. = delegate;
         }
 
         @Override
         protected ELResolver delegate() {
             return ;
         }
     }
 
     private final Application application;
     private final AdjustableELResolver elResolver;
 
     private volatile ExpressionFactory expressionFactory;
     private volatile boolean initialized = false;
     private volatile BeanManager beanManager;
 
     public WeldApplication(Application application) {
         this. = application;
         application.addELContextListener(new WeldELContextListener());
          = new AdjustableELResolver();
         .setDelegate(new DummyELResolver());
         application.addELResolver();
     }
 
     private void init() {
         if (! &&  beanManager() != null) {
             synchronized (this) {
                 if(! &&  beanManager() != null) {
                     .setDelegate(beanManager().getELResolver());
                      = true;
                 }
             }
         }
     }
 
     @Override
     protected Application delegate() {
         init();
         return ;
     }
 
     @Override
         init();
         // may be improved for thread safety, but right now the only risk is to invoke wrapExpressionFactory
         // multiple times for concurrent threads. This is ok, as the call is
         if ( == null) {
             synchronized (this) {
                 if ( == null) {
                     BeanManager bm = beanManager();
                     if (bm == null) {
                          = .getExpressionFactory();
                     } else {
                          = bm.wrapExpressionFactory(.getExpressionFactory());
                     }
                 }
             }
         }
         return ;
     }
 
     private BeanManager beanManager() {
        if ( == null) {
            synchronized (this) {
                if ( == null) {
                    try {
                         = (BeanManagernew InitialContext().lookup("java:comp/BeanManager");
                    } catch (NamingException e) {
                        return null;
                    }
                }
            }
        }
        return ;
    }
New to GrepCode? Check out our FAQ X