/* * Copyright (c) OSGi Alliance (2002, 2013). All Rights Reserved. * * 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.osgi.service.url; import java.net.InetAddress; import java.net.URL; import java.net.URLConnection; import java.net.URLStreamHandler; import org.osgi.annotation.versioning.ConsumerType; /** * Abstract implementation of the {@code URLStreamHandlerService} interface. All * the methods simply invoke the corresponding methods on * {@code java.net.URLStreamHandler} except for {@code parseURL} and * {@code setURL}, which use the {@code URLStreamHandlerSetter} parameter. * Subclasses of this abstract class should not need to override the * {@code setURL} and {@code parseURL(URLStreamHandlerSetter,...)} methods. * * @ThreadSafe * @author $Id: 79cfc45d97b037436d50bda26111109bd5d42a37 $ */ @ConsumerType public abstract class AbstractURLStreamHandlerService extends URLStreamHandler implements URLStreamHandlerService { /** * @see "java.net.URLStreamHandler.openConnection" */ @Override public abstract URLConnection openConnection(URL u) throws java.io.IOException; /** * The {@code URLStreamHandlerSetter} object passed to the parseURL method. */ protected volatile URLStreamHandlerSetter realHandler; /** * Parse a URL using the {@code URLStreamHandlerSetter} object. This method * sets the {@code realHandler} field with the specified * {@code URLStreamHandlerSetter} object and then calls * {@code parseURL(URL,String,int,int)}. * * @param realHandler The object on which the {@code setURL} method must be * invoked for the specified URL. * @see "java.net.URLStreamHandler.parseURL" */ public void parseURL(@SuppressWarnings("hiding") URLStreamHandlerSetter realHandler, URL u, String spec, int start, int limit) { this.realHandler = realHandler; parseURL(u, spec, start, limit); } /** * This method calls {@code super.toExternalForm}. * * @see "java.net.URLStreamHandler.toExternalForm" */ @Override public String toExternalForm(URL u) { return super.toExternalForm(u); } /** * This method calls {@code super.equals(URL,URL)}. * * @see "java.net.URLStreamHandler.equals(URL,URL)" */ @Override public boolean equals(URL u1, URL u2) { return super.equals(u1, u2); } /** * This method calls {@code super.getDefaultPort}. * * @see "java.net.URLStreamHandler.getDefaultPort" */ @Override public int getDefaultPort() { return super.getDefaultPort(); } /** * This method calls {@code super.getHostAddress}. * * @see "java.net.URLStreamHandler.getHostAddress" */ @Override public InetAddress getHostAddress(URL u) { return super.getHostAddress(u); } /** * This method calls {@code super.hashCode(URL)}. * * @see "java.net.URLStreamHandler.hashCode(URL)" */ @Override public int hashCode(URL u) { return super.hashCode(u); } /** * This method calls {@code super.hostsEqual}. * * @see "java.net.URLStreamHandler.hostsEqual" */ @Override public boolean hostsEqual(URL u1, URL u2) { return super.hostsEqual(u1, u2); } /** * This method calls {@code super.sameFile}. * * @see "java.net.URLStreamHandler.sameFile" */ @Override public boolean sameFile(URL u1, URL u2) { return super.sameFile(u1, u2); } /** * This method calls * {@code realHandler.setURL(URL,String,String,int,String,String)}. * * @see "java.net.URLStreamHandler.setURL(URL,String,String,int,String,String)" * @deprecated This method is only for compatibility with handlers written * for JDK 1.1. */ @SuppressWarnings("javadoc") protected void setURL(URL u, String proto, String host, int port, String file, String ref) { realHandler.setURL(u, proto, host, port, file, ref); } /** * This method calls * {@code realHandler.setURL(URL,String,String,int,String,String,String,String)} * . * * @see "java.net.URLStreamHandler.setURL(URL,String,String,int,String,String,String,String)" */ @Override protected void setURL(URL u, String proto, String host, int port, String auth, String user, String path, String query, String ref) { realHandler.setURL(u, proto, host, port, auth, user, path, query, ref); } }