Package org.openntf.domino.xsp

Source Code of org.openntf.domino.xsp.OpenntfFacesContextFactory

/**
*
*/
package org.openntf.domino.xsp;

import javax.faces.FacesException;
import javax.faces.context.FacesContext;
import javax.faces.context.FacesContextFactory;
import javax.faces.lifecycle.Lifecycle;

import org.openntf.domino.utils.Factory;

import com.ibm.xsp.FacesExceptionEx;
import com.ibm.xsp.context.FacesContextFactoryImpl;
import com.ibm.xsp.domino.context.DominoFacesContextFactoryImpl;

/**
* @author Nathan T. Freeman
*
*/
public class OpenntfFacesContextFactory extends FacesContextFactory implements com.ibm.xsp.event.FacesContextListener {
  // private static final Logger log_ = Logger.getLogger(OpenntfFacesContextFactory.class.getName());
  private final FacesContextFactory _delegate;

  /**
   * Constructor
   */
  public OpenntfFacesContextFactory() {
    // System.out.println("Creating new OpenntfFacesContextFactory");
    Object inst;
    try {
      @SuppressWarnings("rawtypes")
      Class delegateClass = DominoFacesContextFactoryImpl.class;
      inst = delegateClass.newInstance();
    } catch (Exception e) {
      e.printStackTrace();
      throw new FacesExceptionEx(e);
    }
    if (inst instanceof FacesContextFactory) {
      _delegate = (FacesContextFactory) inst;
    } else {
      System.out.println("WARNING: Delegate for OpenntfFacesContextFactory is null. Many things will probably break.");
      _delegate = null;
    }
  }

  /**
   * Overloaded constructor
   *
   * @param delegate
   *            FacesContextFactory, delegate of OpenntfFacesContextFactory
   */
  public OpenntfFacesContextFactory(final FacesContextFactory delegate) {
    // System.out.println("Creating new OpenntfFacesContextFactory from delegate");

    if (delegate instanceof FacesContextFactoryImpl) {
      _delegate = ((FacesContextFactoryImpl) delegate).getDelegate();
    } else {
      _delegate = delegate;
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.faces.context.FacesContextFactory#getFacesContext(java.lang.Object, java.lang.Object, java.lang.Object,
   * javax.faces.lifecycle.Lifecycle)
   */
  @Override
  public FacesContext getFacesContext(final Object context, final Object request, final Object response, final Lifecycle lifecycle)
      throws FacesException {
    FacesContext ctx = _delegate.getFacesContext(context, request, response, lifecycle);
    try {
      Class<?> vnClass = Class.forName("org.openntf.domino.xsp.helpers.OpenntfViewNavigatorEx");
    } catch (ClassNotFoundException e) {
      System.out.println("OpenntfFacesContextFactory unable to resolve ViewNavigatorEx either!");
    }
    try {
      Factory.setClassLoader(Thread.currentThread().getContextClassLoader());
      if (ctx instanceof com.ibm.xsp.context.FacesContextEx) {
        ((com.ibm.xsp.context.FacesContextEx) ctx).addRequestListener(this);
      }
      // System.out.println("Created OpenntfFacesContext and setup factory");
    } catch (Throwable t) {
      t.printStackTrace();
    }
    return ctx;
  }

  /*
   * (non-Javadoc)
   *
   * @see com.ibm.xsp.event.FacesContextListener#beforeContextReleased(javax.faces.context.FacesContext)
   */
  @Override
  public void beforeContextReleased(final FacesContext paramFacesContext) {
    try {
      System.out.println("Terminating the factory in " + getClass().getName());
      Factory.terminate();
    } catch (Throwable t) {
      t.printStackTrace();
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see com.ibm.xsp.event.FacesContextListener#beforeRenderingPhase(javax.faces.context.FacesContext)
   */
  @Override
  public void beforeRenderingPhase(final FacesContext paramFacesContext) {
    // TODO NOOP
  }
}
TOP

Related Classes of org.openntf.domino.xsp.OpenntfFacesContextFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.