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

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

?? databaseregistryservice.java

?? jetspeed源代碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * Copyright 2000-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.registry;

// Java classes
import java.io.Reader;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import javax.servlet.ServletConfig;

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

// Jetspeed classes
import org.apache.jetspeed.om.registry.DBRegistry;
import org.apache.jetspeed.om.registry.Registry;
import org.apache.jetspeed.om.registry.RegistryEntry;
import org.apache.jetspeed.om.registry.RegistryException;
import org.apache.jetspeed.om.registry.base.BaseRegistry;
import org.apache.jetspeed.om.registry.base.LocalRegistry;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;

/**
 * <p>This is an implementation of the <code>RegistryService</code>
 * based on the Jetspeed Database Persistence Manager</p>
 *
 * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
 * @author <a href="mailto:susinha@cisco.com">Suchisubhra Sinha</a>
 * @version $Id: DatabaseRegistryService.java,v 1.6 2004/02/23 03:31:50 jford Exp $
 */
public class DatabaseRegistryService
    extends TurbineBaseService
    implements RegistryService , FileRegistry 
{
    private static final JetspeedLogger logger = JetspeedLogFactoryService.getLogger(CastorRegistryService.class.getName());
        
    /** The name of this service */
    public static String SERVICE_NAME = "DatabaseRegistry";

    public static final int DEFAULT_VERBOSE = 1;

    /** regsitry type keyed list of entries */
    private Hashtable registries = new Hashtable();

    /** The list of default fragments stores for newly created objects */
    private Hashtable defaults = new Hashtable();

    /** The Castor generated RegsitryFragment objects */
    private Hashtable fragments = new Hashtable();

    /** Associates entries with their fragments name for quick lookup */
    private Hashtable entryIndex = new Hashtable();

    /** the Watcher object which monitors the regsitry directory */
    private DatabaseRegistryWatcher watcher = null;

    /** Assign  the default  poolname */
    private final static String POOL_NAME = "database";

    
    /** controls amount of debug output, the bigger the more output will be generated */
    private int verbose = DEFAULT_VERBOSE;

    /** Base class to implement  */
    private static Hashtable baseClass = new Hashtable();
    
    /**
     * Returns a Registry object for further manipulation
     *
     * @param regName the name of the registry to fetch
     * @return a Registry object if found by the manager or null
     */
    public Registry get(String regName) 
    {
        return (Registry) registries.get(regName);
    }

    /**
     *  List all the registry currently available to this service
     *
     * @return an Enumeration of registry names.
     */
    public Enumeration getNames() 
    {
        return registries.keys();
    }

    /**
     * Creates a new RegistryEntry instance compatible with the current
     * Registry instance implementation
     *
     * @param regName the name of the registry to use
     * @return the newly created RegistryEntry
     */
    public RegistryEntry createEntry(String regName) 
    {
        RegistryEntry entry = null;
        Registry registry = (Registry) registries.get(regName);

        if (registry != null) 
        {
            entry = registry.createEntry();
        }

        return entry;
    }

    
    /**
     * Returns a RegistryEntry from the named Registry.
     * This is a convenience wrapper around {@link
     * org.apache.jetspeed.om.registry.Registry#getEntry }
     *
     * @param regName the name of the registry
     * @param entryName the name of the entry to retrieve from the registry.
     * @return a RegistryEntry object if the key is found or null
     */
    public RegistryEntry getEntry(String regName, String entryName) 
    {
        try 
        {
            return ((Registry) registries.get(regName)).getEntry(entryName);
        } 
        catch (RegistryException e) 
        {
            if (logger.isInfoEnabled()) 
            {
                logger.info(
                    "RegistryService: Failed to retrieve "
                        + entryName
                        + " from "
                        + regName);
            }
        } 
        catch (NullPointerException e) 
        {
            logger.error(
                "DatabaseRegistryService: "
                    + regName
                    + " registry is not known ");
            logger.error(e);
        }

        return null;
    }
            
    /**
     * Add a new RegistryEntry in the named Registry.
     * This is a convenience wrapper around {@link
     * org.apache.jetspeed.om.registry.Registry#addEntry }
     *
     * @param regName the name of the registry
     * @param entry the Registry entry to add
     * @exception Sends a RegistryException if the manager can't add
     *            the provided entry
     */
    public void addEntry(String regName, RegistryEntry entry)
        throws RegistryException 
    {
        if (entry == null) 
        {
            return;
        }

        LocalRegistry registry = (LocalRegistry) registries.get(regName);

        if (registry != null) 
        {
            String fragmentName = (String) entryIndex.get(entry.getName());

            if (fragmentName == null) 
            {
                // either the entry was deleted or it does not exist
                // in both cases, use the default fragment
                fragmentName = (String) defaults.get(regName);
            }

            RegistryFragment fragment =
                (RegistryFragment) fragments.get(fragmentName);

            //Fragment can be (and sometimes is, but should not be) null
            if (fragment == null) 
            {
                fragment = new RegistryFragment();
                fragment.put(regName, new Vector());
                fragments.put(fragmentName, fragment);
            } 
            else 
            {
                Vector vectRegistry = (Vector) fragment.get(regName);
                if (vectRegistry == null) 
                {
                    fragment.put(regName, new Vector());
                }
            }

            synchronized (entryIndex) 
            {
                if (registry.hasEntry(entry.getName())) 
                {
                    fragment.setEntry(regName, entry);
                    registry.setLocalEntry(entry);
                } 
                else 
                {
                    fragment.addEntry(regName, entry);
                    registry.addLocalEntry(entry);
                }

                entryIndex.put(entry.getName(), fragmentName);
                // mark this fragment so that it's persisted next time
                // the registry watcher is running
                fragment.setDirty(true);
            }
        }
    }
    
   /**
    * Deletes a RegistryEntry from the named Registry
    * This is a convenience wrapper around {@link
    * org.apache.jetspeed.om.registry.Registry#removeEntry }
    *
    * @param regName the name of the registry
    * @param entryName the name of the entry to remove
    */
    public void removeEntry(String regName, String entryName) 
    {
        if (entryName == null) 
        {
            return;
        }

        LocalRegistry registry = (LocalRegistry) registries.get(regName);

        if (registry != null) 
        {
            String fragmentName = (String) entryIndex.get(entryName);

            if (fragmentName != null) 
            {
                RegistryFragment fragment =
                    (RegistryFragment) fragments.get(fragmentName);

                synchronized (entryIndex) 
                {
                    fragment.removeEntry(regName, entryName);
                    entryIndex.remove(entryName);

                    // mark this fragment so that it's persisted next time
                    // the registry watcher is running
                    fragment.setDirty(true);
                }
            }

            // the entry is physically removed, remove the dangling reference
            registry.removeLocalEntry(entryName);
        }
    }
    
    /**
     * This is the early initialization method called by the
     * Turbine <code>Service</code> framework
     */
    public synchronized void init(ServletConfig conf)
    throws InitializationException 
    {
        int refreshRate = 0;
        Vector names = new Vector();
    
        //Ensure that the servlet service is initialized
        TurbineServices.getInstance().initService(ServletService.SERVICE_NAME, conf);

        ResourceService serviceConf =
            ((TurbineServices) TurbineServices.getInstance()).getResources(SERVICE_NAME);

        //build the map of default fragments, eahc registry must be associated
        //with at least one fragment
        try 
        {            
            refreshRate = serviceConf.getInt("refreshRate", DEFAULT_REFRESH);
            ResourceService defaults = serviceConf.getResources("default");
            Iterator i = defaults.getKeys();

            while (i.hasNext()) 
            {
                String name = (String) i.next();
                // add this name in the list of available registries
                
                names.add(name);
                try 
                {
                    String registryClass =
                        "org.apache.jetspeed.om.registry.database.BaseJetspeed"
                            + name
                            + "Peer";

                    baseClass.put(
                        name,
                        (DBRegistry) Class
                            .forName(registryClass)
                            .newInstance());
                } 
                catch (Exception e) 
                {
                    if (logger.isWarnEnabled()) 
                    {
                        logger.warn(
                            "DatabaseRegistryService: Class "
                                + name
                                + " not found");
                    }

                }

            }
        } 
        catch (Throwable t) 
        {
            throw new InitializationException("Unable to initialize DatabaseRegistryService, missing config keys");
        }
    
        this.watcher = new DatabaseRegistryWatcher();
        this.watcher.setSubscriber(this);

        if (refreshRate == 0) 
        {
            this.watcher.setDone();
        } 
        else 
        {
            this.watcher.setRefreshRate(refreshRate);
        }
        // changing the base will trigger a synchronous loading of the fragments
        this.watcher.changeBase(names);

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

        // load the registries
        Enumeration en = names.elements();

        RegistryService localeService =
            (RegistryService) TurbineServices
                .getInstance()
                .getService(RegistryService.SERVICE_NAME);

        while (en.hasMoreElements()) 
        {
            String name = (String) en.nextElement();
            Registry registry = (Registry) registries.get(name);

            if (registry == null) 
            {
                String registryClass = null;
                try 
                {
                    registry = localeService.get(name);
                } 
                catch (Exception e) 
                {
                    if (logger.isWarnEnabled()) 
                    {
                        logger.warn(
                            "DatabaseRegistryService: Class "
                                + registryClass
                                + " not found, reverting to default Registry");
                    }
                    registry = new BaseRegistry();
                }
                registries.put(name, registry);
            }

            refresh(name);
        }
        
        // Start the directory watcher thread and rely on its refresh process
        // to completely load all registries
        if (this.watcher != null) 
        {
            this.watcher.start();
        }

        if (logger.isDebugEnabled()) 
        {
            logger.debug(
                "DatabaseRegistryService: early init()....end!, this.getInit()= "
                    + getInit());
        }
    }
    /**
         * @return a Map of all fragments keyed by file names
         */
    public Map getFragmentMap() 
    {
        return (Map) fragments.clone();
    }

    /** Late init method from Turbine Service model */
    public void init() throws InitializationException 
    {
        if (logger.isDebugEnabled()) 
        {
            logger.debug("DatabaseRegistryService: Late init called");
        }
        while (!getInit()) 
        {
            //Not yet...

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美偷拍另类a∨色屁股| 成人精品国产免费网站| 欧美自拍丝袜亚洲| 777午夜精品视频在线播放| 精品污污网站免费看| 成人福利电影精品一区二区在线观看| 欧美羞羞免费网站| 成人网在线播放| 亚洲精品久久久久久国产精华液| 91精品国产综合久久久蜜臀粉嫩| 成人午夜电影网站| 色狠狠综合天天综合综合| 日本欧美一区二区三区乱码| 天堂一区二区在线免费观看| 久99久精品视频免费观看| 捆绑变态av一区二区三区| 国产成人在线看| 欧美亚日韩国产aⅴ精品中极品| 日韩欧美综合在线| 亚洲精品久久久久久国产精华液| 天天操天天综合网| 波多野结衣精品在线| 日韩一区二区三区四区五区六区| 欧美高清在线一区二区| 日韩高清电影一区| 在线精品国精品国产尤物884a| 久久久无码精品亚洲日韩按摩| 亚洲午夜国产一区99re久久| 99视频精品在线| 欧美日韩一区不卡| 色噜噜夜夜夜综合网| 蜜桃av一区二区三区电影| 日韩1区2区3区| 91在线观看成人| 日本高清无吗v一区| 91精品国产综合久久婷婷香蕉 | 狠狠色丁香久久婷婷综合_中 | 欧美视频一区二区三区四区| 成人午夜伦理影院| 欧美一级日韩免费不卡| 亚洲一级电影视频| 91香蕉国产在线观看软件| 国产精品麻豆99久久久久久| 国产一区二区三区精品视频| 日韩视频一区在线观看| 免费的成人av| 欧美精品一区二区三区在线| 久久精品国产99| 亚洲精品在线三区| 日日摸夜夜添夜夜添国产精品| 欧美精品aⅴ在线视频| 午夜精品久久久久久久蜜桃app| 欧美另类变人与禽xxxxx| 丝袜国产日韩另类美女| 欧美疯狂性受xxxxx喷水图片| 日韩黄色在线观看| 国产精品欧美久久久久无广告 | 国产成人午夜精品5599| 国产精品国产三级国产aⅴ中文| 91在线观看一区二区| 亚洲国产成人va在线观看天堂| 欧美电影免费观看高清完整版在| 韩国精品主播一区二区在线观看| 成人免费视频在线观看| 91麻豆精品国产91久久久资源速度| 久久精品国产精品亚洲精品| 欧美精品一区二| 欧美日免费三级在线| 国产精品乡下勾搭老头1| 亚洲午夜三级在线| 亚洲日穴在线视频| 久久综合久色欧美综合狠狠| 欧美区在线观看| 91丨porny丨户外露出| 久久超碰97人人做人人爱| 亚洲国产综合在线| 亚洲欧美日韩国产成人精品影院| 2014亚洲片线观看视频免费| 91精品国产综合久久久蜜臀粉嫩 | 亚洲精品中文在线影院| 国产欧美一区二区精品秋霞影院| 日韩一区二区三区三四区视频在线观看 | 国内精品伊人久久久久av影院| 亚洲午夜精品在线| 日韩中文字幕区一区有砖一区| 亚洲精品视频自拍| 洋洋成人永久网站入口| 一区二区三区日韩在线观看| 亚洲色欲色欲www| 亚洲美女区一区| 亚洲一区电影777| 日韩电影免费在线| 另类综合日韩欧美亚洲| 国产激情视频一区二区三区欧美| 国产盗摄精品一区二区三区在线| 国产揄拍国内精品对白| 成人免费视频视频| 99热精品一区二区| 99久久免费精品高清特色大片| 高清不卡在线观看av| 成人网男人的天堂| 色婷婷综合久色| 538在线一区二区精品国产| 欧美久久免费观看| 精品免费日韩av| 久久精品视频网| 亚洲精品国产第一综合99久久 | 日韩一区二区免费视频| 久久青草国产手机看片福利盒子| 国产精品系列在线| 一区二区三区日韩欧美精品| 视频一区二区中文字幕| 国产精品一级在线| 99精品视频一区| 精品国产污网站| 亚洲男人的天堂网| 日韩精品免费视频人成| 国产·精品毛片| 91久久香蕉国产日韩欧美9色| 色av一区二区| 欧美精品一区二区三区高清aⅴ | 欧美精品国产精品| 中文字幕在线一区二区三区| 日韩在线观看一区二区| 不卡的av在线播放| 亚洲精品一区二区精华| 偷窥少妇高潮呻吟av久久免费| 麻豆国产精品视频| 99v久久综合狠狠综合久久| 欧美丰满美乳xxx高潮www| 一区二区中文视频| av网站免费线看精品| 日韩无一区二区| 日本最新不卡在线| 欧美日韩性生活| 一区二区欧美视频| 国产精品一卡二卡| 国产欧美日韩亚州综合| 国内精品免费在线观看| 51久久夜色精品国产麻豆| 亚洲成人中文在线| 欧美视频你懂的| 一级女性全黄久久生活片免费| 欧美午夜片在线看| 蜜桃精品视频在线观看| 国产精品一区二区三区乱码 | 亚洲欧洲一区二区在线播放| 国产欧美1区2区3区| 亚洲mv大片欧洲mv大片精品| 成人在线一区二区三区| 成人激情开心网| 国产精品美女久久久久久| 韩国在线一区二区| 一区二区中文字幕在线| 92国产精品观看| 亚洲大片一区二区三区| 欧美成人video| eeuss鲁片一区二区三区在线看| 久久精品视频在线免费观看| 国产成人a级片| 午夜视频一区在线观看| 欧美另类z0zxhd电影| 美腿丝袜在线亚洲一区| 国产精品久久久久久久久免费相片| 99国产欧美另类久久久精品| 午夜亚洲福利老司机| 国产亲近乱来精品视频| 色94色欧美sute亚洲线路一久 | 精品国产免费视频| 91美女蜜桃在线| 国产精品1024| 日韩av中文在线观看| 亚洲美女电影在线| 欧美激情一区二区在线| 国产成人综合亚洲91猫咪| 婷婷国产v国产偷v亚洲高清| 日本一区二区三区dvd视频在线| 8x8x8国产精品| 色综合久久综合网| 从欧美一区二区三区| 激情丁香综合五月| 美女视频黄 久久| 午夜精品久久久久| 亚洲一本大道在线| 亚洲视频在线观看一区| 中文av一区特黄| 国产精品免费av| 欧美精品一区视频| 久久久精品蜜桃| 国产午夜精品久久| 国产精品日日摸夜夜摸av| 欧美—级在线免费片| 国产精品成人一区二区艾草| 国产精品高清亚洲| 一区二区三区.www| 亚洲一区二区三区在线播放| 日本成人在线不卡视频| 九九九久久久精品| 国产成人免费av在线| 国产精品77777|