⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmsxmltemplateloader.java

📁 一个cms内容管理平台
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
    public synchronized void cmsEvent(CmsEvent event) {

        switch (event.getType()) {

            case I_CmsEventListener.EVENT_FLEX_CACHE_CLEAR:
                clearLoaderCache(true, true);
                break;
            case I_CmsEventListener.EVENT_CLEAR_ONLINE_CACHES:
                clearLoaderCache(true, true);
                break;
            case I_CmsEventListener.EVENT_CLEAR_OFFLINE_CACHES:
                clearLoaderCache(true, true);
                break;
            case I_CmsEventListener.EVENT_CLEAR_CACHES:
                clearLoaderCache(true, true);
                break;
            default:
        // no operation
        }
    }

    /** 
     * Destroy this ResourceLoder, this is a NOOP so far.  
     */
    public void destroy() {

        // NOOP
    }

    /**
     * @see org.opencms.loader.I_CmsResourceLoader#dump(org.opencms.file.CmsObject, org.opencms.file.CmsResource, java.lang.String, java.util.Locale, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     */
    public byte[] dump(
        CmsObject cms,
        CmsResource file,
        String element,
        Locale locale,
        HttpServletRequest req,
        HttpServletResponse res) throws CmsException {

        initLegacyRequest(cms, req, res);
        String absolutePath = cms.getSitePath(file);
        // this will work for the "default" template class com.opencms.template.CmsXmlTemplate only
        CmsXmlTemplate template = new CmsXmlTemplate();
        // get the appropriate content and convert it to bytes
        return template.getContent(cms, absolutePath, element, null);
    }

    /**
     * @see org.opencms.loader.I_CmsResourceLoader#export(org.opencms.file.CmsObject, org.opencms.file.CmsResource, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     */
    public byte[] export(CmsObject cms, CmsResource resource, HttpServletRequest req, HttpServletResponse res)
    throws IOException, CmsException {

        CmsFile file = CmsFile.upgrade(resource, cms);
        initLegacyRequest(cms, req, res);
        CmsRequestHttpServlet cmsReq = new CmsRequestHttpServlet(req, cms.getRequestContext().getFileTranslator());
        return generateOutput(cms, file, cmsReq);
    }

    /**
     * @see org.opencms.configuration.I_CmsConfigurationParameterHandler#getConfiguration()
     */
    public Map getConfiguration() {

        // return the configuration in an immutable form
        return Collections.unmodifiableMap(m_configuration);
    }

    /**
     * @see org.opencms.loader.I_CmsResourceLoader#getLoaderId()
     */
    public int getLoaderId() {

        return C_RESOURCE_LOADER_ID;
    }

    /**
     * Return a String describing the ResourceLoader,
     * which is <code>"The OpenCms default resource loader for XMLTemplates"</code>.<p>
     * 
     * @return a describing String for the ResourceLoader 
     */
    public String getResourceLoaderInfo() {

        return "The OpenCms default resource loader for XMLTemplates";
    }

    /**
     * @see org.opencms.loader.I_CmsLoaderIncludeExtension#includeExtension(java.lang.String, java.lang.String, boolean, java.util.Map, javax.servlet.ServletRequest, javax.servlet.ServletResponse)
     */
    public String includeExtension(
        String target,
        String element,
        boolean editable,
        Map parameterMap,
        ServletRequest req,
        ServletResponse res) throws CmsException {

        // the Flex controller provides access to the interal OpenCms structures
        CmsFlexController controller = CmsFlexController.getController(req);
        // simple sanity check, controller should never be null here
        if (controller == null) {
            return target;
        }
        // special code to handle XmlTemplate based file includes        
        if (element != null) {
            if (!("body".equals(element) || "(default)".equals(element))) {
                // add template selector for multiple body XML files
                CmsJspTagInclude.addParameter(parameterMap, CmsXmlTemplate.C_FRAME_SELECTOR, element, true);
            }
        }
        boolean isPageTarget;
        try {
            // check if the target does exist in the OpenCms VFS
            CmsResource targetResource = controller.getCmsObject().readResource(target);
            isPageTarget = ((CmsResourceTypePage.getStaticTypeId() == targetResource.getTypeId()));
        } catch (CmsException e) {
            controller.setThrowable(e, target);
            throw new CmsLegacyException("File not found: " + target, e);
        }
        String bodyAttribute = (String)controller.getCmsObject().getRequestContext().getAttribute(
            CmsDefaultPageEditor.XML_BODY_ELEMENT);
        if (bodyAttribute == null) {
            // no body attribute is set: this is NOT a sub-element in a XML mastertemplate
            if (isPageTarget) {
                // add body file path to target 
                if (!target.startsWith(CmsCompatibleCheck.VFS_PATH_BODIES)) {
                    target = CmsCompatibleCheck.VFS_PATH_BODIES + target.substring(1);
                }
                // save target as "element replace" parameter for body loader
                CmsJspTagInclude.addParameter(
                    parameterMap,
                    CmsXmlTemplateLoader.C_ELEMENT_REPLACE,
                    "body:" + target,
                    true);
                target = C_BODYLOADER_URI;
            }
        } else {
            // body attribute is set: this is a sub-element in a XML mastertemplate
            if (target.equals(controller.getCmsObject().getRequestContext().getUri())) {
                // target can be ignored, set body attribute as "element replace" parameter  
                CmsJspTagInclude.addParameter(parameterMap, CmsXmlTemplateLoader.C_ELEMENT_REPLACE, "body:"
                    + bodyAttribute, true);
                // redirect target to body loader
                target = C_BODYLOADER_URI;
            } else {
                if (isPageTarget) {
                    // add body file path to target 
                    if (isPageTarget && !target.startsWith(CmsCompatibleCheck.VFS_PATH_BODIES)) {
                        target = CmsCompatibleCheck.VFS_PATH_BODIES + target.substring(1);
                    }
                    // save target as "element replace" parameter  
                    CmsJspTagInclude.addParameter(parameterMap, CmsXmlTemplateLoader.C_ELEMENT_REPLACE, "body:"
                        + target, true);
                    target = C_BODYLOADER_URI;
                }
            }
        }

        return target;
    }

    /**
     * @see org.opencms.configuration.I_CmsConfigurationParameterHandler#initConfiguration()
     */
    public void initConfiguration() {

        ExtendedProperties config = new ExtendedProperties();
        config.putAll(m_configuration);

        // check if the element cache is enabled
        boolean elementCacheEnabled = config.getBoolean("elementcache.enabled", false);
        if (CmsLog.INIT.isInfoEnabled()) {
            CmsLog.INIT.info(". Loader init          : XMLTemplate element cache "
                + (elementCacheEnabled ? "enabled" : "disabled"));
        }
        if (elementCacheEnabled) {
            try {
                m_elementCache = new CmsElementCache(config.getInteger("elementcache.uri", 10000), config.getInteger(
                    "elementcache.elements",
                    50000), config.getInteger("elementcache.variants", 100));
            } catch (Exception e) {
                if (CmsLog.INIT.isWarnEnabled()) {
                    CmsLog.INIT.warn(". Loader init          : XMLTemplate element cache non-critical error "
                        + e.toString());
                }
            }
            m_variantDeps = new Hashtable();
            m_elementCache.getElementLocator().setExternDependencies(m_variantDeps);
        } else {
            m_elementCache = null;
        }

        if (CmsLog.INIT.isInfoEnabled()) {
            CmsLog.INIT.info(". Loader init          : " + this.getClass().getName() + " initialized");
        }
    }

    /**
     * @see org.opencms.loader.I_CmsResourceLoader#isStaticExportEnabled()
     */
    public boolean isStaticExportEnabled() {

        return true;
    }

    /**
     * @see org.opencms.loader.I_CmsResourceLoader#isStaticExportProcessable()
     */
    public boolean isStaticExportProcessable() {

        return true;
    }

    /**
     * @see org.opencms.loader.I_CmsResourceLoader#isUsableForTemplates()
     */
    public boolean isUsableForTemplates() {

        return true;
    }

    /**
     * @see org.opencms.loader.I_CmsResourceLoader#isUsingUriWhenLoadingTemplate()
     */
    public boolean isUsingUriWhenLoadingTemplate() {

        return true;
    }

    /**
     * @see org.opencms.loader.I_CmsResourceLoader#load(org.opencms.file.CmsObject, org.opencms.file.CmsResource, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     */
    public void load(CmsObject cms, CmsResource resource, HttpServletRequest req, HttpServletResponse res)
    throws CmsException {

        initLegacyRequest(cms, req, res);
        processXmlTemplate(cms, CmsFile.upgrade(resource, cms));
    }

    /**
     * @see org.opencms.loader.I_CmsResourceLoader#service(org.opencms.file.CmsObject, org.opencms.file.CmsResource, javax.servlet.ServletRequest, javax.servlet.ServletResponse)
     */
    public void service(CmsObject cms, CmsResource file, ServletRequest req, ServletResponse res)
    throws CmsException, IOException {

        long timer1 = 0;
        if (DEBUG > 0) {
            timer1 = System.currentTimeMillis();
            System.err.println("============ CmsXmlTemplateLoader loading: " + cms.getSitePath(file));
            System.err.println("CmsXmlTemplateLoader.service() cms uri is: " + cms.getRequestContext().getUri());
        }
        // save the original context settings
        String rnc = cms.getRequestContext().getEncoding().trim();
        // String oldUri = cms.getRequestContext().getUri();

        initLegacyRequest(cms, (HttpServletRequest)req, (HttpServletResponse)res);
        I_CmsRequest cms_req = CmsXmlTemplateLoader.getRequest(cms.getRequestContext());
        HttpServletRequest originalreq = cms_req.getOriginalRequest();

        try {
            // get the CmsRequest
            byte[] result = null;
            org.opencms.file.CmsFile fx = cms.readFile(cms.getSitePath(file));
            // care about encoding issues
            String dnc = OpenCms.getSystemInfo().getDefaultEncoding().trim();
            String enc = cms.readPropertyObject(
                cms.getSitePath(fx),
                CmsPropertyDefinition.PROPERTY_CONTENT_ENCODING,
                true).getValue(dnc).trim();
            // fake the called URI (otherwise XMLTemplate / ElementCache would not work)            
            cms_req.setOriginalRequest((HttpServletRequest)req);
            cms.getRequestContext().setEncoding(enc);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -