All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.jasper.compiler.ELInterpreterFactory Maven / Gradle / Ivy

There is a newer version: 11.0.0
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.apache.jasper.compiler;

import jakarta.servlet.ServletContext;

import org.apache.jasper.JspCompilationContext;

/**
 * Provides {@link ELInterpreter} instances for JSP compilation.
 *
 * The search order is as follows:
 * 
    *
  1. ELInterpreter instance or implementation class name provided as a * ServletContext attribute
  2. *
  3. Implementation class named in a ServletContext initialisation parameter *
  4. *
  5. Default implementation
  6. *
*/ public class ELInterpreterFactory { public static final String EL_INTERPRETER_CLASS_NAME = ELInterpreter.class.getName(); private static final ELInterpreter DEFAULT_INSTANCE = new DefaultELInterpreter(); /** * Obtain the correct EL Interpreter for the given web application. * @param context The Servlet context * @return the EL interpreter * @throws Exception If an error occurs creating the interpreter */ public static ELInterpreter getELInterpreter(ServletContext context) throws Exception { ELInterpreter result = null; // Search for an implementation // 1. ServletContext attribute (set by application or cached by a // previous call to this method). Object attribute = context.getAttribute(EL_INTERPRETER_CLASS_NAME); if (attribute instanceof ELInterpreter) { return (ELInterpreter) attribute; } else if (attribute instanceof String) { result = createInstance(context, (String) attribute); } // 2. ServletContext init parameter if (result == null) { String className = context.getInitParameter(EL_INTERPRETER_CLASS_NAME); if (className != null) { result = createInstance(context, className); } } // 3. Default if (result == null) { result = DEFAULT_INSTANCE; } // Cache the result for next time context.setAttribute(EL_INTERPRETER_CLASS_NAME, result); return result; } private static ELInterpreter createInstance(ServletContext context, String className) throws Exception { return (ELInterpreter) context.getClassLoader().loadClass( className).getConstructor().newInstance(); } private ELInterpreterFactory() { // Utility class. Hide default constructor. } public static class DefaultELInterpreter implements ELInterpreter { @Override public String interpreterCall(JspCompilationContext context, boolean isTagFile, String expression, Class expectedType, String fnmapvar) { return JspUtil.interpreterCall(isTagFile, expression, expectedType, fnmapvar); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy