Search in sources :

Example 1 with RemoveLogMessage

use of org.apache.openejb.log.RemoveLogMessage in project tomee by apache.

the class TomEEMyFacesContainerInitializer method onStartup.

@Override
public void onStartup(final Set<Class<?>> classes, final ServletContext ctx) throws ServletException {
    // try to skip first
    if ("true".equalsIgnoreCase(ctx.getInitParameter("org.apache.myfaces.INITIALIZE_ALWAYS_STANDALONE")) || "true".equals(SystemInstance.get().getProperty(OPENEJB_JSF_SKIP, "false"))) {
        return;
    }
    // if mojarra is present skip myfaces startup
    try {
        ctx.getClassLoader().loadClass("com.sun.faces.context.SessionMap");
        return;
    } catch (final ClassNotFoundException | NoClassDefFoundError cnfe) {
    // no-op
    }
    // some message filtering, not a perf killer since this class don't log a lot
    final Logger abstractInitializerLogger = Logger.getLogger(AbstractFacesInitializer.class.getName());
    abstractInitializerLogger.setFilter(new RemoveLogMessage(new RemoveLogMessage(abstractInitializerLogger.getFilter(), Level.WARNING, "No mappings of FacesServlet found. Abort initializing MyFaces."), Level.WARNING, "No mappings of FacesServlet found. Abort destroy MyFaces."));
    final boolean facesServletPresent = isFacesServletPresent(ctx);
    if (facesServletPresent || isFacesConfigPresent(ctx)) {
        // we found a faces-config.xml or some classes so let's delegate to myfaces
        // since we don't want to call isFacesConfigPresent again (it scan all jars!!!!)
        // forcing classes to not be empty
        Set<Class<?>> passedClasses = classes;
        if (passedClasses == null) {
            passedClasses = new HashSet<Class<?>>();
        }
        if (passedClasses.isEmpty()) {
            passedClasses.add(TomEEMyFacesContainerInitializer.class);
        }
        if (ctx instanceof ApplicationContextFacade) {
            try {
                final ApplicationContext appCtx = (ApplicationContext) get(ApplicationContextFacade.class, ctx);
                final Context tomcatCtx = (Context) get(ApplicationContext.class, appCtx);
                if (!Arrays.asList(tomcatCtx.findApplicationListeners()).contains(StartupServletContextListener.class.getName())) {
                    addListener(ctx);
                }
            } catch (final Exception e) {
                // add it, not important we'll simply get a warning saying it is already here
                addListener(ctx);
            }
        }
        // finally delegating begin sure we'll not call isFacesConfigPresent
        if (!facesServletPresent) {
            delegate.onStartup(classes, ctx);
        }
    // else already done since there is the servlet
    }
}
Also used : ApplicationContext(org.apache.catalina.core.ApplicationContext) Context(org.apache.catalina.Context) ServletContext(javax.servlet.ServletContext) StandardContext(org.apache.catalina.core.StandardContext) AbstractFacesInitializer(org.apache.myfaces.webapp.AbstractFacesInitializer) ApplicationContextFacade(org.apache.catalina.core.ApplicationContextFacade) Logger(java.util.logging.Logger) ServletException(javax.servlet.ServletException) ApplicationContext(org.apache.catalina.core.ApplicationContext) RemoveLogMessage(org.apache.openejb.log.RemoveLogMessage)

Aggregations

Logger (java.util.logging.Logger)1 ServletContext (javax.servlet.ServletContext)1 ServletException (javax.servlet.ServletException)1 Context (org.apache.catalina.Context)1 ApplicationContext (org.apache.catalina.core.ApplicationContext)1 ApplicationContextFacade (org.apache.catalina.core.ApplicationContextFacade)1 StandardContext (org.apache.catalina.core.StandardContext)1 AbstractFacesInitializer (org.apache.myfaces.webapp.AbstractFacesInitializer)1 RemoveLogMessage (org.apache.openejb.log.RemoveLogMessage)1