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

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

?? expandingarchiveclasspathentry.java

?? jsr170接口的java實現。是個apache的開源項目。
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* * 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.jackrabbit.classloader;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import java.util.Calendar;import java.util.StringTokenizer;import java.util.jar.Manifest;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;import javax.jcr.Item;import javax.jcr.Node;import javax.jcr.Property;import javax.jcr.RepositoryException;import javax.jcr.Session;import javax.jcr.Workspace;import javax.jcr.nodetype.NoSuchNodeTypeException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * The <code>ExpandingArchiveClassPathEntry</code> extends the * {@link org.apache.jackrabbit.classloader.ArchiveClassPathEntry} class with support * to automatically expand the archive (JAR or ZIP) into the repository * below the path entry node. The path used to construct the instance is the * path of an item resolving to a property containing the jar archive to access. * * @author Felix Meschberger * * @see org.apache.jackrabbit.classloader.ArchiveClassPathEntry * @see org.apache.jackrabbit.classloader.ClassPathEntry *//* package */ class ExpandingArchiveClassPathEntry extends ArchiveClassPathEntry {    /** The name of the node type required to expand the archive */    public static final String TYPE_JARFILE = "rep:jarFile";    /** The name of the child node taking the expanded archive */    public static final String NODE_JARCONTENTS = "rep:jarContents";    /**     * The name of the property taking the time at which the archive was     * expanded     */    public static final String PROP_EXPAND_DATE = "rep:jarExpanded";    /** Default logger */    private static final Logger log =        LoggerFactory.getLogger(ExpandingArchiveClassPathEntry.class);    /** The node of the unpacked JAR contents */    private Node jarContents;    /**     * Creates an instance of the <code>ExpandingArchiveClassPathEntry</code>     * class.     *     * @param prop The <code>Property</code> containing the archive and     *      the session used to access the repository.     * @param path The original class path entry leading to the creation of     *      this instance. This is not necessairily the same path as the     *      property's path if the property was found through the primary     *      item chain.     *     * @throws RepositoryException If an error occurrs retrieving the session     *      from the property.     */    ExpandingArchiveClassPathEntry(Property prop, String path)            throws RepositoryException {        super(prop, path);    }    /**     * Clones the indicated <code>ExpandingArchiveClassPathEntry</code> object     * by taking over its path, session and property.     *     * @param base The base <code>ExpandingArchiveClassPathEntry</code> entry     *      to clone.     *     * @see ClassPathEntry#ClassPathEntry(ClassPathEntry)     */    private ExpandingArchiveClassPathEntry(ExpandingArchiveClassPathEntry base) {        super(base);    }    /**     * Returns a {@link ClassLoaderResource} for the named resource if it     * can be found in the archive identified by the path given at     * construction time. Note that if the archive property would exist but is     * not readable by the current session, no resource is returned.     *     * @param name The name of the resource to return. If the resource would     *      be a class the name must already be modified to denote a valid     *      path, that is dots replaced by slashes and the <code>.class</code>     *      extension attached.     *     * @return The {@link ClassLoaderResource} identified by the name or     *      <code>null</code> if no resource is found for that name.     */    public ClassLoaderResource getResource(final String name) {        try {            // find the resource for the name in the expanded archive contents            Node jarContents = getJarContents();            Item resItem = null;            if (jarContents.hasNode(name)) {                resItem = jarContents.getNode(name);            } else if (jarContents.hasProperty(name)) {                resItem = jarContents.getProperty(name);            }            // if the name resolved to an item, resolve the item to a            // single-valued non-reference property            Property resProp = (resItem != null)                    ? Util.getProperty(resItem)                    : null;            // if found create the resource to return            if (resProp != null) {                return new ClassLoaderResource(this, name, resProp) {                    public URL getURL() {                        return ExpandingArchiveClassPathEntry.this.getURL(getName());                    }                    public URL getCodeSourceURL() {                        return ExpandingArchiveClassPathEntry.this.getCodeSourceURL();                    }                    public Manifest getManifest() {                        return ExpandingArchiveClassPathEntry.this.getManifest();                    }                    protected Property getExpiryProperty() {                        return ExpandingArchiveClassPathEntry.this.getProperty();                    }                };            }            log.debug("getResource: resource {} not found in archive {}", name,                path);        } catch (RepositoryException re) {            log.warn("getResource: problem accessing the archive {} for {}",                new Object[] { path, name }, re.toString());        }        // invariant : not found or problem accessing the archive        return null;    }    /**     * Returns a <code>ClassPathEntry</code> with the same configuration as     * this <code>ClassPathEntry</code>.     * <p>     * The <code>ExpandingArchiveClassPathEntry</code> class has internal state.     * Therefore a new instance is created from the unmodifiable configuration     * of this instance.     */    ClassPathEntry copy() {        return new ExpandingArchiveClassPathEntry(this);    }    //----------- internal helper to find the entry ------------------------    /**     * Returns the root node of the expanded archive. If the archive's node     * does not contain the expanded archive, it is expanded on demand. If the     * archive has already been expanded, it is checked whether it is up to     * date and expanded again if not.     *     * @throws RepositoryException if an error occurrs expanding the archive     *      into the repository.     */    private Node getJarContents() throws RepositoryException {        if (jarContents == null) {            Node jarNode = null; // the node containing the jar file            Node jarRoot = null; // the root node of the expanded contents            try {                Item jarItem = session.getItem(getPath());                jarNode = (jarItem.isNode()) ? (Node) jarItem : jarItem.getParent();                // if the jar been unpacked once, check for updated jar file,                // which must be unpacked                if (jarNode.isNodeType(TYPE_JARFILE)) {                    long lastMod = Util.getLastModificationTime(getProperty());                    long expanded =                        jarNode.getProperty(PROP_EXPAND_DATE).getLong();                    // get the content, remove if outdated or use if ok                    jarRoot = jarNode.getNode(NODE_JARCONTENTS);                    // if expanded content is outdated, remove it                    if (lastMod <= expanded) {                        jarRoot.remove();                        jarRoot = null; // have to unpack below                    }                } else if (!jarNode.canAddMixin(TYPE_JARFILE)) {                    // this is actually a problem, because I expect to be able                    // to add the mixin node type due to checkExpandArchives                    // having returned true earlier                    throw new RepositoryException(                        "Cannot unpack JAR file contents into "                            + jarNode.getPath());                } else {                    jarNode.addMixin(TYPE_JARFILE);                    jarNode.setProperty(PROP_EXPAND_DATE, Calendar.getInstance());

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一卡二卡三卡| 欧美三级电影精品| 亚洲综合色区另类av| 日韩精品一区二区三区蜜臀| 成人高清视频免费观看| 久久综合综合久久综合| 亚洲一区日韩精品中文字幕| 久久久国产午夜精品| 欧美日韩mp4| 一本到不卡精品视频在线观看| 激情综合网天天干| 午夜亚洲福利老司机| 中文字幕一区二区视频| 欧美tk—视频vk| 欧美日韩综合在线免费观看| 成人动漫在线一区| 国产黑丝在线一区二区三区| 蜜桃在线一区二区三区| 亚洲第一会所有码转帖| 一色桃子久久精品亚洲| 国产亚洲成年网址在线观看| 欧美成人性战久久| 337p亚洲精品色噜噜| 色哟哟一区二区三区| 99久久99久久免费精品蜜臀| 国产成人精品免费网站| 亚洲欧美一区二区在线观看| 日本一区二区三区国色天香 | 欧美激情一区二区三区在线| 日韩一区二区三区精品视频| 欧美午夜一区二区三区 | 国模冰冰炮一区二区| 日本女人一区二区三区| 亚洲成人在线免费| 亚洲一区二三区| 一区二区三区中文在线观看| 自拍偷自拍亚洲精品播放| 国产精品护士白丝一区av| 国产女人18毛片水真多成人如厕| 久久女同性恋中文字幕| 久久综合色鬼综合色| 精品国产乱码久久久久久蜜臀| 欧美一卡二卡三卡四卡| 日韩一区二区视频| 精品粉嫩超白一线天av| 国产亚洲欧美色| 中文字幕免费不卡在线| 最新日韩av在线| 亚洲欧美成aⅴ人在线观看| 亚洲免费在线视频一区 二区| 亚洲精品欧美二区三区中文字幕| 一区二区三区在线视频观看58| 一区二区三区在线免费播放| 亚洲影视在线观看| 日韩和欧美的一区| 麻豆91免费看| 国产成人99久久亚洲综合精品| 成人sese在线| 欧美在线免费观看亚洲| 欧美剧情片在线观看| 日韩精品一区二区三区视频播放 | 日韩电影在线观看一区| 日韩成人dvd| 国产精品亚洲专一区二区三区 | 欧美精品tushy高清| 欧美成人乱码一区二区三区| 亚洲国产精品成人综合色在线婷婷 | 日韩精品每日更新| 国产一区二区三区美女| 成人黄色片在线观看| 在线观看免费亚洲| 日韩色在线观看| 中文字幕免费不卡在线| 亚洲成人黄色小说| 国产精品中文字幕欧美| 91久久精品国产91性色tv| 日韩欧美专区在线| 国产精品久久久久久亚洲毛片| 亚洲综合网站在线观看| 狠狠色丁香久久婷婷综| 一本一本久久a久久精品综合麻豆| 欧美日韩一区三区四区| 国产肉丝袜一区二区| 亚洲国产精品久久久久秋霞影院 | 在线观看国产精品网站| 欧美xingq一区二区| 亚洲人成影院在线观看| 麻豆91小视频| 在线亚洲免费视频| 久久精品一区二区三区不卡牛牛| 亚洲精品成人少妇| 国模冰冰炮一区二区| 在线精品视频免费观看| 久久婷婷一区二区三区| 亚洲福利国产精品| 成人一区二区三区视频| 51午夜精品国产| 亚洲男人天堂av| 国产精品自产自拍| 91精品国产福利| 一区二区三区自拍| 国产成人a级片| 欧美xxxxxxxx| 视频一区中文字幕国产| 色呦呦一区二区三区| 国产免费成人在线视频| 免费观看一级欧美片| 欧美色成人综合| 亚洲欧美日韩系列| 成人夜色视频网站在线观看| 欧美一级艳片视频免费观看| 亚洲乱码国产乱码精品精小说 | 亚洲成av人片一区二区| 9i在线看片成人免费| 久久综合五月天婷婷伊人| 视频在线在亚洲| 欧美日韩一二三| 一区二区三区精密机械公司| youjizz久久| 中文字幕二三区不卡| 国产曰批免费观看久久久| 欧美一区二区播放| 午夜精品福利在线| 欧美体内she精高潮| 亚洲女同一区二区| 91麻豆免费观看| 亚洲视频网在线直播| 不卡一区二区在线| 国产精品久久一级| 成人18视频日本| 国产精品理论在线观看| 国产99一区视频免费| 国产亚洲精品免费| 国产91高潮流白浆在线麻豆| 久久久国产一区二区三区四区小说 | 久久激情五月婷婷| 日韩三级伦理片妻子的秘密按摩| 天天综合色天天综合色h| 欧美精品久久久久久久多人混战 | 国产乱码字幕精品高清av| 欧美成人女星排行榜| 精彩视频一区二区| 国产亚洲综合色| youjizz国产精品| 亚洲黄色小说网站| 欧美色图免费看| 手机精品视频在线观看| 日韩一级在线观看| 狠狠色丁香婷综合久久| 欧美激情资源网| av日韩在线网站| 亚洲自拍偷拍九九九| 欧美日韩国产影片| 久久99国产精品久久| 久久精品夜色噜噜亚洲aⅴ| 成人免费视频免费观看| 亚洲欧洲制服丝袜| 欧美精品在线一区二区三区| 美腿丝袜在线亚洲一区| 久久久亚洲午夜电影| 99久久综合国产精品| 亚洲电影在线播放| 欧美精品一区二区三区四区| 成人免费电影视频| 亚洲成人第一页| 久久久久久一级片| 色综合久久天天| 日本91福利区| 国产精品久久福利| 欧美人狂配大交3d怪物一区| 国产在线乱码一区二区三区| 国产精品久久久久久福利一牛影视| 色哟哟国产精品| 久久国产免费看| 亚洲天堂a在线| 日韩欧美电影在线| 99riav久久精品riav| 91影视在线播放| 首页亚洲欧美制服丝腿| 欧美国产日韩亚洲一区| 欧美日韩亚洲综合| 国产成人免费视频精品含羞草妖精| 亚洲精品乱码久久久久久黑人| 日韩一区二区三区四区| 菠萝蜜视频在线观看一区| 日韩福利视频导航| 亚洲视频综合在线| 日韩精品中文字幕一区二区三区| 99久久99久久精品免费看蜜桃 | 成人黄色电影在线| 日韩福利视频导航| 日韩毛片一二三区| 精品国产伦一区二区三区观看体验 | 中文av一区特黄| 欧美日韩在线综合| 99久久精品国产麻豆演员表| 久久99日本精品| 婷婷开心久久网| 亚洲欧美经典视频| 国产精品天美传媒沈樵|