亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? castorpsmlmanagerservice.java

?? jetspeed源代碼
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
/*
 * Copyright 2000-2001,2004 The Apache Software Foundation.
 * 
 * Licensed 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.jetspeed.services.psmlmanager;

//Jetspeed stuff
import org.apache.jetspeed.om.profile.ProfileLocator;
import org.apache.jetspeed.om.profile.QueryLocator;
import org.apache.jetspeed.util.FileCopy;
import org.apache.jetspeed.util.DirectoryUtils;
import org.apache.jetspeed.services.Profiler;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import org.apache.jetspeed.services.JetspeedSecurity;
import org.apache.jetspeed.services.resources.JetspeedResources;

//Castor defined API
import org.apache.jetspeed.om.profile.Portlets;
import org.apache.jetspeed.om.profile.*;

//turbine stuff
import org.apache.turbine.services.TurbineBaseService;
import org.apache.turbine.services.InitializationException;
import org.apache.turbine.services.TurbineServices;
import org.apache.turbine.services.servlet.TurbineServlet;
import org.apache.turbine.services.resources.ResourceService;
import org.apache.turbine.services.servlet.ServletService;

import org.apache.jetspeed.om.security.JetspeedUser;
import org.apache.jetspeed.om.security.Role;
import org.apache.jetspeed.om.security.JetspeedRoleFactory;
import org.apache.jetspeed.om.security.Group;
import org.apache.jetspeed.om.security.JetspeedGroupFactory;
import org.apache.jetspeed.om.security.JetspeedUserFactory;

//castor support
import org.exolab.castor.xml.MarshalException;
import org.exolab.castor.xml.Unmarshaller;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.ValidationException;
import org.exolab.castor.mapping.Mapping;
import org.exolab.castor.mapping.MappingException;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;

// serialization support
import org.apache.xml.serialize.Serializer;
import org.apache.xml.serialize.XMLSerializer;
import org.apache.xml.serialize.OutputFormat;

//standard java stuff
import java.io.File;
import java.io.Reader;
import java.io.FileReader;
import java.io.Writer;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.LinkedList;
import javax.servlet.ServletConfig;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.apache.jetspeed.cache.FileCache;
import org.apache.jetspeed.cache.FileCacheEventListener;
import org.apache.jetspeed.cache.FileCacheEntry;


/**
 * This service is responsible for loading and saving PSML documents.
 *
 * @author <a href="mailto:raphael@apache.org">Rapha雔 Luta</a>
 * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
 * @author <a href="mailto:sgala@apache.org">Santiago Gala</a>
 * @version $Id: CastorPsmlManagerService.java,v 1.44 2004/03/31 00:23:02 jford Exp $
 */
public class CastorPsmlManagerService extends TurbineBaseService
                                      implements FileCacheEventListener,
                                                 PsmlManagerService
{
    /**
     * Static initialization of the logger for this class
     */    
    private static final JetspeedLogger logger = JetspeedLogFactoryService.getLogger(CastorPsmlManagerService.class.getName());
    
    // resource path constants
    protected static final String PATH_GROUP              = "group";
    protected static final String PATH_ROLE               = "role";
    protected static final String PATH_USER               = "user";

    // configuration keys
    protected final static String CONFIG_ROOT             = "root";
    protected final static String CONFIG_EXT              = "ext";
    protected final static String CONFIG_SCAN_RATE        = "scanRate";
    protected final static String CONFIG_CACHE_SIZE       = "cacheSize";

    // default configuration values
    public final static String DEFAULT_ROOT             = "/WEB-INF/psml";
    public final static String DEFAULT_EXT              = ".psml";

    // default resource
    public final static String DEFAULT_RESOURCE         = "default.psml";

    // the root psml resource directory
    protected String root;
    // base store directory
    protected File rootDir = null;
    // file extension
    protected String ext;

    /** The documents loaded by this manager */
    protected FileCache documents = null;

    /** the output format for pretty printing when saving registries */
    protected OutputFormat format = null;

    /** the base refresh rate for documents */
    protected long scanRate = 1000 * 60; // every minute

    /** the default cache size */
    protected int cacheSize = 100;

    /** the import/export consumer service **/
    protected PsmlManagerService consumer = null;
    protected boolean importFlag = false;

    // castor mapping
    public static final String DEFAULT_MAPPING = "${webappRoot}/WEB-INF/conf/psml-mapping.xml";
    protected String mapFile = null;

    /** the Castor mapping file name */
    protected Mapping mapping = null;

    /** The default encoding used to serialize PSML files to disk */
    protected String defaultEncoding = JetspeedResources.getString(JetspeedResources.CONTENT_ENCODING_KEY, "utf-8");

    /**
     * This is the early initialization method called by the
     * Turbine <code>Service</code> framework
     */
    public void init( ServletConfig conf ) throws InitializationException
    {
        if (getInit())
        {
            return;
        }

        //Ensure that the servlet service is initialized
        TurbineServices.getInstance().initService(ServletService.SERVICE_NAME, conf);

        // get configuration parameters from Jetspeed Resources
        ResourceService serviceConf = ((TurbineServices)TurbineServices.getInstance())
                                                     .getResources(PsmlManagerService.SERVICE_NAME);
        // get the PSML Root Directory
        this.root = serviceConf.getString( CONFIG_ROOT, DEFAULT_ROOT );
        this.rootDir = new File(root);

        //If the rootDir does not exist, treat it as context relative
        if ( !rootDir.exists() )
        {
            try
            {
                this.rootDir = new File(conf.getServletContext().getRealPath(root));
            }
            catch (Exception e)
            {
                // this.rootDir = new File("./webapp" + this.rootDir.toString());
            }
        }
        //If it is still missing, try to create it
        if (!rootDir.exists())
        {
            try
            {
                rootDir.mkdirs();
            }
            catch (Exception e)
            {
            }
        }

        // get default extension
        this.ext = serviceConf.getString( CONFIG_EXT, DEFAULT_EXT );

        // create the serializer output format
        this.format = new OutputFormat();
        format.setIndenting(true);
        format.setIndent(4);
        format.setLineWidth(0);

        // psml castor mapping file
        mapFile = serviceConf.getString("mapping",DEFAULT_MAPPING);
        mapFile = TurbineServlet.getRealPath( mapFile );
        loadMapping();

        this.scanRate = serviceConf.getLong(CONFIG_SCAN_RATE, this.scanRate);
        this.cacheSize= serviceConf.getInt(CONFIG_CACHE_SIZE, this.cacheSize);

        documents = new FileCache(this.scanRate, this.cacheSize);
        documents.addListener(this);
        documents.startFileScanner();


        //Mark that we are done
        setInit(true);

        // Test
        //testCases();

    }


    /** Late init method from Turbine Service model */
    public void init() throws InitializationException
    {
        while( !getInit() )
        {
            //Not yet...
            try
            {
                Thread.sleep( 500 );
            }
            catch (InterruptedException ie )
            {
                logger.error("Exception", ie);
            }
        }
    }


    /**
     * This is the shutdown method called by the
     * Turbine <code>Service</code> framework
     */
    public void shutdown()
    {
        documents.stopFileScanner();
    }

    /**
     * Returns a PSML document of the given name.
     * For this implementation, the name must be the document
     * URL or absolute filepath
     *
     * @deprecated
     * @param name the name of the document to retrieve
     */
    public PSMLDocument getDocument( String name )
    {
        if (name == null)
        {
            String message = "PSMLManager: Must specify a name";
            logger.error( message );
            throw new IllegalArgumentException( message );
        }

        if (logger.isDebugEnabled())
        {
            logger.debug( "PSMLManager: asked for " + name );
        }

        PSMLDocument doc = null;

        doc = (PSMLDocument)documents.getDocument(name);

        if (doc == null)
        {
            doc = loadDocument(name);

            synchronized (documents)
            {
                // store the document in the hash and reference it to the watcher
                try
                {
                    documents.put(name, doc);
                }
                catch (java.io.IOException e)
                {
                    logger.error("Error putting document", e);
                }
            }
        }

        return doc;
    }

    /**
     * Returns a cached PSML document for the given locator
     * 
     * @param locator The locator descriptor of the document to be retrieved.
     * @return PSML document  from cache (or disk if not yet cached)
     */
    public PSMLDocument getDocument( ProfileLocator locator)
    {
        return getDocument(locator, true);
    }

    /**
     * Returns a PSML document for the given locator
     * 
     * @param locator   The locator descriptor of the document to be retrieved.
     * @param getCached Look in the cache (true) or umarshall a fresh copy from disk (false)
     * @return 
     */
    protected PSMLDocument getDocument( ProfileLocator locator, boolean getCached )
    {
        if (locator == null)
        {
            String message = "PSMLManager: Must specify a name";
            logger.error( message );
            throw new IllegalArgumentException( message );
        }
        File base = this.rootDir;
        String path = mapLocatorToFile(locator);
        File file = new File(base, path);
        String name = null;

        try
        {
            name = file.getCanonicalPath();
        }
        catch (IOException e)
        {
            logger.error("PSMLManager: unable to resolve file path for "+ file);
        }

        if (logger.isDebugEnabled())
        {
            logger.debug("PSMLManager: calculated resource:" + path + ". Base: " + base + " File: " + name);
        }

        PSMLDocument doc = null;
        Profile profile = null;

        if (getCached == true)
        {
            profile = (Profile)documents.getDocument(name);
        }

        if (profile == null)
        {
            doc = loadDocument(name);
            if (null == doc)
            {
                if (logger.isWarnEnabled())
                {
                    logger.warn( "PSMLManager: " + name + " not found, returning null document" );
                }
                return null;
            }

            synchronized (documents)
            {
                // store the document in the hash and reference it to the watcher
                Profile newProfile = createProfile(locator);
                newProfile.setDocument(doc);
                try
                {
                    documents.put(name, newProfile);
                }
                catch (IOException e)
                {
                    logger.error("Error putting document", e);
                }
            }
        }
        else
        {
            doc = profile.getDocument();
        }

        return doc;
    }

    /**

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人a在线| 欧美日韩三级视频| 欧美色男人天堂| 91网页版在线| 7777精品伊人久久久大香线蕉的| 欧洲精品一区二区三区在线观看| 波多野洁衣一区| 欧美亚洲禁片免费| 日韩一级高清毛片| 欧美极品aⅴ影院| 综合欧美一区二区三区| 国产日产欧美一区二区视频| 久久综合久久综合久久| 久久精品亚洲一区二区三区浴池| 久久影音资源网| 亚洲女同一区二区| 丝袜亚洲另类欧美| 激情成人午夜视频| 色婷婷国产精品综合在线观看| 欧美三区在线视频| 久久日韩粉嫩一区二区三区 | 国产精品99久久久久久久女警| 国产成人精品三级| 欧美日韩中文一区| 国产精品久久久久久户外露出| 亚洲国产一二三| 99综合电影在线视频| 精品国产三级电影在线观看| 国产精品欧美精品| 视频一区中文字幕国产| av一区二区三区黑人| 26uuu欧美| 亚洲一区二区三区四区五区中文 | 久久丁香综合五月国产三级网站| 日本乱码高清不卡字幕| 国产精品国产三级国产aⅴ无密码| 久久99精品久久久久久| 欧美伦理影视网| 亚洲欧美日本韩国| 成人福利电影精品一区二区在线观看 | 综合久久综合久久| 丁香天五香天堂综合| www国产成人| 男女男精品网站| 日韩欧美国产一区二区三区| 日韩电影免费在线看| 欧美精品在线视频| 国产精品综合在线视频| 久久亚洲精精品中文字幕早川悠里 | 一区二区三区影院| 欧美日韩国产乱码电影| 亚洲精品欧美在线| 精品视频色一区| 日韩**一区毛片| 欧美国产欧美综合| 在线观看成人小视频| 午夜精品久久久久久久久久久| 欧美精品在线观看一区二区| 国产在线精品一区二区夜色| 国产美女主播视频一区| 欧美一区二区三区在线观看| 精品制服美女久久| 亚洲精品中文在线| 欧美电影免费观看高清完整版在线观看| 蜜臀a∨国产成人精品| 久久久久青草大香线综合精品| 丁香激情综合五月| 日欧美一区二区| 亚洲婷婷国产精品电影人久久| 欧美在线999| 国产成人高清视频| 蜜桃视频在线一区| 亚洲无线码一区二区三区| 国产欧美一区二区精品久导航| 色婷婷综合激情| 一本一道久久a久久精品| 欧美国产日韩精品免费观看| 一本色道综合亚洲| 毛片av中文字幕一区二区| 亚洲午夜激情av| 日韩一区二区免费在线电影| 国产夫妻精品视频| 精品亚洲成a人| 日韩高清不卡一区二区| 亚洲二区在线视频| 亚洲va国产va欧美va观看| 国产精品美女久久久久久2018| 56国语精品自产拍在线观看| 一本大道av一区二区在线播放| 国产91在线|亚洲| 粉嫩av一区二区三区粉嫩 | 日韩高清一区在线| 一区二区高清在线| 偷拍自拍另类欧美| 国产精品国产三级国产aⅴ无密码| 久久伊人蜜桃av一区二区| 欧美伦理电影网| 久久精品一区二区三区不卡 | 日本aⅴ亚洲精品中文乱码| 亚洲高清在线精品| 亚洲成av人片一区二区| 亚洲大片免费看| 天天色天天操综合| 奇米在线7777在线精品| 国产原创一区二区| 亚洲影视资源网| 亚洲第一主播视频| 日产国产高清一区二区三区| 一区二区不卡在线播放| 日本不卡123| 91福利小视频| 国产无遮挡一区二区三区毛片日本| 日韩一区二区三区在线观看| 欧美精品久久一区| 久久久亚洲高清| 一区二区三区日韩精品| 九九视频精品免费| 在线观看成人小视频| 91黄色在线观看| 6080日韩午夜伦伦午夜伦| 久久精品视频网| 亚洲欧美视频在线观看| 国产呦精品一区二区三区网站| 91啦中文在线观看| 69久久夜色精品国产69蝌蚪网| 久久综合久色欧美综合狠狠| 欧美韩日一区二区三区四区| 国产精品乱子久久久久| 综合精品久久久| 国产精品一区免费在线观看| 欧美丝袜丝nylons| 日韩中文字幕区一区有砖一区| 蜜臀av性久久久久蜜臀aⅴ| 成人18视频日本| 色婷婷亚洲一区二区三区| 亚洲乱码国产乱码精品精可以看 | 91色.com| 亚洲日本在线天堂| 成人黄色一级视频| 国产亚洲精品超碰| 亚洲视频 欧洲视频| hitomi一区二区三区精品| 亚洲精品一二三四区| 欧美日韩不卡一区二区| 亚洲第一在线综合网站| 欧美午夜精品免费| 亚洲丶国产丶欧美一区二区三区| www.激情成人| 自拍av一区二区三区| 91久久精品网| 亚洲国产综合在线| 精品国内二区三区| 欧美做爰猛烈大尺度电影无法无天| 国产精品不卡一区二区三区| 成人a级免费电影| 亚洲久本草在线中文字幕| 欧美精品乱码久久久久久| 一片黄亚洲嫩模| 精品国产乱码久久久久久老虎| 极品销魂美女一区二区三区| 国产三级欧美三级| 欧美亚洲愉拍一区二区| 麻豆成人免费电影| 亚洲精品美腿丝袜| 1024成人网| 久久综合色婷婷| 在线观看免费视频综合| 精品一区二区三区在线观看| 日本一区二区在线不卡| 国产日韩高清在线| 欧美日韩日本视频| 国产99久久久国产精品| 日韩精品一二三四| 一区二区三区在线视频免费观看 | 一个色综合网站| 亚洲国产精品v| 日韩免费在线观看| 欧美成人午夜电影| 日韩欧美在线综合网| 色猫猫国产区一区二在线视频| 久久国产成人午夜av影院| 精品一区二区av| 久久99热99| 紧缚捆绑精品一区二区| 亚洲日本va午夜在线电影| 国产精品久久久久精k8 | 欧美大肚乱孕交hd孕妇| 欧美体内she精视频| 欧美绝品在线观看成人午夜影视| 91精品国产91热久久久做人人| 91猫先生在线| 本田岬高潮一区二区三区| 丁香啪啪综合成人亚洲小说| www..com久久爱| 精品一区二区三区视频在线观看 | 欧美大黄免费观看| 日韩欧美一区二区三区在线| 日韩欧美激情四射| 国产精品白丝在线| 国产精品久久国产精麻豆99网站|