亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
在线不卡a资源高清| 色美美综合视频| 午夜在线成人av| 亚洲区小说区图片区qvod| 国产精品污网站| 一区在线观看免费| 一区二区三区四区不卡在线| 一区二区三区四区精品在线视频 | 日韩欧美精品三级| 日韩欧美激情在线| 久久综合色之久久综合| 51午夜精品国产| 精品久久久久av影院 | 在线一区二区三区| 欧美色区777第一页| 8x8x8国产精品| xnxx国产精品| 日韩毛片视频在线看| 亚洲一区在线观看视频| 蜜桃免费网站一区二区三区 | 亚洲视频一二区| 亚洲成人激情自拍| 国产中文字幕一区| 91久久久免费一区二区| 69久久夜色精品国产69蝌蚪网| 日韩欧美国产综合在线一区二区三区| 欧美videos大乳护士334| 国产精品免费aⅴ片在线观看| 尤物在线观看一区| 久久99久久精品| 99国产精品国产精品久久| 7777精品伊人久久久大香线蕉最新版| 久久在线观看免费| 亚洲综合视频在线| 国产精品白丝jk黑袜喷水| 91精品婷婷国产综合久久| 精品国产乱码久久久久久免费| 国产精品你懂的在线欣赏| 亚洲bdsm女犯bdsm网站| 国产成人aaa| 欧美一区二区三区四区高清| 国产精品美女一区二区| 蜜臀va亚洲va欧美va天堂| 91蝌蚪国产九色| 26uuu精品一区二区三区四区在线| 亚洲精品福利视频网站| 国产成人激情av| 日韩一级视频免费观看在线| 亚洲精品国产a久久久久久| 国产精品一区二区果冻传媒| 精品视频在线免费看| 国产精品久久久久久久久久久免费看 | 日韩亚洲欧美一区| 一级日本不卡的影视| 丁香婷婷综合五月| 欧美va亚洲va香蕉在线| 天堂资源在线中文精品| 99久久精品情趣| 久久久久9999亚洲精品| 久久av中文字幕片| 8v天堂国产在线一区二区| 亚洲一区二区三区在线播放| 不卡区在线中文字幕| 久久久美女毛片| 国产精品亚洲а∨天堂免在线| 精品国产三级a在线观看| 久久电影网站中文字幕| 日韩欧美亚洲国产精品字幕久久久| 一区二区不卡在线播放| 日本电影亚洲天堂一区| 亚洲理论在线观看| 日本电影欧美片| 亚洲精品一二三| 91免费版在线| 亚洲香肠在线观看| 欧美日韩一二区| 秋霞午夜鲁丝一区二区老狼| 欧美一区二区三区四区五区| 青椒成人免费视频| 久久色.com| 国产91精品在线观看| 国产三级一区二区三区| 北条麻妃国产九九精品视频| 国产精品成人免费精品自在线观看 | 91在线一区二区| 亚洲图片欧美视频| 欧美日韩不卡一区二区| 人人爽香蕉精品| 精品国产三级a在线观看| 国产成人精品一区二区三区四区| 久久久www免费人成精品| 成人三级伦理片| 一级日本不卡的影视| 3d动漫精品啪啪| 国产一区二区三区在线看麻豆| 久久久91精品国产一区二区精品| 丁香婷婷综合激情五月色| 一区二区三区在线视频免费观看| 欧美精品免费视频| 国产**成人网毛片九色| 一区二区三区四区高清精品免费观看| 欧美另类变人与禽xxxxx| 国产自产v一区二区三区c| 日韩美女视频一区| 欧美一区二区三区免费大片| 成人午夜在线视频| 午夜精品久久久久久久久久| 久久精品免视看| 在线看国产一区| 国产精品66部| 天天色天天操综合| 国产精品久久久久久久久图文区 | 亚洲国产精品一区二区久久| 久久久综合精品| 欧美视频日韩视频在线观看| 国产精品一区免费视频| 亚洲h在线观看| 国产精品乱码一区二三区小蝌蚪| 欧美猛男超大videosgay| 国产91在线观看丝袜| 免费在线视频一区| 国产精品乱码妇女bbbb| 欧美电影免费观看高清完整版在| 一本一本久久a久久精品综合麻豆| 国产一区二区三区四区五区入口| 亚洲aaa精品| 亚洲靠逼com| 中文字幕一区不卡| 久久色中文字幕| 欧美一级日韩免费不卡| 在线观看亚洲成人| k8久久久一区二区三区| 激情欧美日韩一区二区| 男女激情视频一区| 视频在线观看一区二区三区| 亚洲精品亚洲人成人网| 国产精品三级av在线播放| 久久美女艺术照精彩视频福利播放 | 国产iv一区二区三区| 久久99国产精品免费网站| 亚洲h动漫在线| 午夜精品久久久久久| 亚洲一区二区偷拍精品| 亚洲乱码国产乱码精品精98午夜 | 欧美一区二区三区成人| 欧美日韩激情一区二区| 欧美亚洲综合另类| 欧美中文字幕不卡| 欧美色精品天天在线观看视频| 色综合久久综合网欧美综合网| 91丨九色丨尤物| 91片黄在线观看| 欧美三电影在线| 欧美人妇做爰xxxⅹ性高电影| 在线观看不卡视频| 欧美麻豆精品久久久久久| 91精品在线一区二区| 精品国产乱码久久久久久图片 | 97精品国产露脸对白| av一本久道久久综合久久鬼色| 99在线精品一区二区三区| 色婷婷久久综合| 欧美福利一区二区| 精品国产污网站| 中文字幕成人av| 一区二区日韩电影| 亚洲国产乱码最新视频| 久久精品国产亚洲一区二区三区 | 亚洲高清免费在线| 麻豆成人久久精品二区三区小说| 国产一区二区91| 色综合天天综合网天天看片| 欧美男男青年gay1069videost| 欧美大片拔萝卜| 国产精品九色蝌蚪自拍| 亚洲国产另类av| 国产精品一区二区三区四区| 99re成人在线| 日韩免费高清电影| 国产精品高潮呻吟| 性做久久久久久| 国产91精品露脸国语对白| 91黄色在线观看| 久久一区二区三区四区| 亚洲女人的天堂| 美女视频免费一区| av高清久久久| 日韩精品一区在线| 亚洲免费在线视频| 激情综合网av| 欧美在线制服丝袜| 亚洲国产精品成人久久综合一区| 亚洲福利视频导航| 成人激情开心网| 欧美一区二区三区在线观看| 国产精品国模大尺度视频| 免费观看91视频大全| 在线亚洲高清视频| www国产成人免费观看视频 深夜成人网| 亚洲婷婷国产精品电影人久久|