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

📄 jcrurlhandler.java

📁 jsr170接口的java实现。是个apache的开源项目。
💻 JAVA
字号:
/* * 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.net;import java.net.URL;import java.net.URLConnection;import java.net.URLStreamHandler;import javax.jcr.Session;/** * The <code>JCRURLHandler</code> is the <code>URLStreamHandler</code> for * JCR Repository URLs identified by the scheme <code>jcr</code>. * <p> * JCR Repository URLs have not been standardized yet and may only be created * in the context of an existing <code>Session</code>. Therefore this handler * is not globally available and JCR Repository URLs may only be created through * the factory methods in the {@link org.apache.jackrabbit.net.URLFactory} * class. * <p> * This class is not intended to be subclassed or instantiated by clients. * * @author Felix Meschberger * * @see org.apache.jackrabbit.net.JCRURLConnection * @see org.apache.jackrabbit.net.URLFactory * @see org.apache.jackrabbit.net.URLFactory#createURL(Session, String) */class JCRURLHandler extends URLStreamHandler {    /**     * The session used to create this handler, which is also used to open     * the connection object.     *     * @see #getSession()     */    private final Session session;    /**     * Creates a new instance of the <code>JCRURLHandler</code> with the     * given session.     *     * @param session The <code>Session</code> supporting this handler. This     *      must not be <code>null</code>.     *     * @throws NullPointerException if <code>session</code> is <code>null</code>.     */    JCRURLHandler(Session session) {        if (session == null) {            throw new NullPointerException("session");        }        this.session = session;    }    /**     * Returns the session supporting this handler.     */    Session getSession() {        return session;    }    //---------- URLStreamHandler abstracts ------------------------------------    /**     * Gets a connection object to connect to an JCR Repository URL.     *     * @param url The JCR Repository URL to connect to.     *     * @return An instance of the {@link JCRURLConnection} class.     *     * @see JCRURLConnection     */    protected URLConnection openConnection(URL url) {        return new JCRURLConnection(url, this);    }    /**     * Checks the new <code>authority</code> and <code>path</code> before     * actually setting the values on the url calling the base class     * implementation.     * <p>     * We check the authority to not have been modified from the original URL,     * as the authority is dependent on the repository <code>Session</code> on     * which this handler is based and which was used to create the original     * URL. Likewise the repository and workspace name parts of the path must     * not have changed.     *     * @param u the URL to modify.     * @param protocol the protocol name.     * @param host the remote host value for the URL.     * @param port the port on the remote machine.     * @param authority the authority part for the URL.     * @param userInfo the userInfo part of the URL.     * @param path the path component of the URL.     * @param query the query part for the URL.     * @param ref the reference.     *     * @throws IllegalArgumentException if the authority or the repository name     *             or workspace name parts of the path has changed.     */    protected void setURL(URL u, String protocol, String host, int port,        String authority, String userInfo, String path, String query, String ref) {        // check for authority        if (u.getAuthority() != authority) {            if (u.getAuthority() == null) {                if (authority != null) {                    throw new IllegalArgumentException("Authority " +                        authority + " not supported by this handler");                }            } else if (!u.getAuthority().equals(authority)) {                throw new IllegalArgumentException("Authority " +                    authority + " not supported by this handler");            }        }        // check for repository and/or workspace modifications        FileParts newParts = new FileParts(path);        if (!"_".equals(newParts.getRepository())) {            throw new IllegalArgumentException("Repository " +                newParts.getRepository() + " not supported by this handler");        }        if (!session.getWorkspace().getName().equals(newParts.getWorkspace())) {            throw new IllegalArgumentException("Workspace " +                newParts.getWorkspace() + " not supported by this handler");        }        // finally set the new values on the URL        super.setURL(u, protocol, host, port, authority, userInfo, path, query,            ref);    }}

⌨️ 快捷键说明

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