Search in sources :

Example 1 with FragmentJarScannerCallback

use of org.apache.tomcat.util.descriptor.web.FragmentJarScannerCallback in project tomcat by apache.

the class JspCServletContext method scanForFragments.

private Map<String, WebXml> scanForFragments(WebXmlParser webXmlParser) throws JasperException {
    StandardJarScanner scanner = new StandardJarScanner();
    // TODO - enabling this means initializing the classloader first in JspC
    scanner.setScanClassPath(false);
    // TODO - configure filter rules from Ant rather then system properties
    scanner.setJarScanFilter(new StandardJarScanFilter());
    FragmentJarScannerCallback callback = new FragmentJarScannerCallback(webXmlParser, false, true);
    scanner.scan(JarScanType.PLUGGABILITY, this, callback);
    if (!callback.isOk()) {
        throw new JasperException(Localizer.getMessage("jspc.error.invalidFragment"));
    }
    return callback.getFragments();
}
Also used : JasperException(org.apache.jasper.JasperException) StandardJarScanner(org.apache.tomcat.util.scan.StandardJarScanner) FragmentJarScannerCallback(org.apache.tomcat.util.descriptor.web.FragmentJarScannerCallback) StandardJarScanFilter(org.apache.tomcat.util.scan.StandardJarScanFilter)

Example 2 with FragmentJarScannerCallback

use of org.apache.tomcat.util.descriptor.web.FragmentJarScannerCallback in project tomcat by apache.

the class ContextConfig method processJarsForWebFragments.

/**
 * Scan /WEB-INF/lib for JARs and for each one found add it and any
 * /META-INF/web-fragment.xml to the resulting Map. web-fragment.xml files
 * will be parsed before being added to the map. Every JAR will be added and
 * <code>null</code> will be used if no web-fragment.xml was found. Any JARs
 * known not contain fragments will be skipped.
 *
 * @param application The main web.xml metadata
 * @param webXmlParser The parser to use to process the web.xml file
 * @return A map of JAR name to processed web fragment (if any)
 */
protected Map<String, WebXml> processJarsForWebFragments(WebXml application, WebXmlParser webXmlParser) {
    JarScanner jarScanner = context.getJarScanner();
    boolean delegate = false;
    if (context instanceof StandardContext) {
        delegate = ((StandardContext) context).getDelegate();
    }
    boolean parseRequired = true;
    Set<String> absoluteOrder = application.getAbsoluteOrdering();
    if (absoluteOrder != null && absoluteOrder.isEmpty() && !context.getXmlValidation()) {
        // Skip parsing when there is an empty absolute ordering and
        // validation is not enabled
        parseRequired = false;
    }
    FragmentJarScannerCallback callback = new FragmentJarScannerCallback(webXmlParser, delegate, parseRequired);
    jarScanner.scan(JarScanType.PLUGGABILITY, context.getServletContext(), callback);
    if (!callback.isOk()) {
        ok = false;
    }
    return callback.getFragments();
}
Also used : StandardContext(org.apache.catalina.core.StandardContext) FragmentJarScannerCallback(org.apache.tomcat.util.descriptor.web.FragmentJarScannerCallback) JarScanner(org.apache.tomcat.JarScanner)

Aggregations

FragmentJarScannerCallback (org.apache.tomcat.util.descriptor.web.FragmentJarScannerCallback)2 StandardContext (org.apache.catalina.core.StandardContext)1 JasperException (org.apache.jasper.JasperException)1 JarScanner (org.apache.tomcat.JarScanner)1 StandardJarScanFilter (org.apache.tomcat.util.scan.StandardJarScanFilter)1 StandardJarScanner (org.apache.tomcat.util.scan.StandardJarScanner)1