Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 1 | /* |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 2 | * Copyright (c) OSGi Alliance (2002, 2013). All Rights Reserved. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | |
| 17 | package org.osgi.service.url; |
| 18 | |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 19 | import java.net.InetAddress; |
| 20 | import java.net.URL; |
| 21 | import java.net.URLConnection; |
| 22 | import java.net.URLStreamHandler; |
| 23 | import org.osgi.annotation.versioning.ConsumerType; |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 24 | |
| 25 | /** |
Richard S. Hall | dfd78a4 | 2012-05-11 20:19:02 +0000 | [diff] [blame] | 26 | * Abstract implementation of the {@code URLStreamHandlerService} interface. All |
| 27 | * the methods simply invoke the corresponding methods on |
| 28 | * {@code java.net.URLStreamHandler} except for {@code parseURL} and |
| 29 | * {@code setURL}, which use the {@code URLStreamHandlerSetter} parameter. |
| 30 | * Subclasses of this abstract class should not need to override the |
| 31 | * {@code setURL} and {@code parseURL(URLStreamHandlerSetter,...)} methods. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 32 | * |
| 33 | * @ThreadSafe |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 34 | * @author $Id: 79cfc45d97b037436d50bda26111109bd5d42a37 $ |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 35 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 36 | @ConsumerType |
Richard S. Hall | dfd78a4 | 2012-05-11 20:19:02 +0000 | [diff] [blame] | 37 | public abstract class AbstractURLStreamHandlerService extends URLStreamHandler implements URLStreamHandlerService { |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 38 | /** |
| 39 | * @see "java.net.URLStreamHandler.openConnection" |
| 40 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 41 | @Override |
Richard S. Hall | dfd78a4 | 2012-05-11 20:19:02 +0000 | [diff] [blame] | 42 | public abstract URLConnection openConnection(URL u) throws java.io.IOException; |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 43 | |
| 44 | /** |
Richard S. Hall | dfd78a4 | 2012-05-11 20:19:02 +0000 | [diff] [blame] | 45 | * The {@code URLStreamHandlerSetter} object passed to the parseURL method. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 46 | */ |
| 47 | protected volatile URLStreamHandlerSetter realHandler; |
| 48 | |
| 49 | /** |
Richard S. Hall | dfd78a4 | 2012-05-11 20:19:02 +0000 | [diff] [blame] | 50 | * Parse a URL using the {@code URLStreamHandlerSetter} object. This method |
| 51 | * sets the {@code realHandler} field with the specified |
Richard S. Hall | d0dca9b | 2011-05-18 14:52:16 +0000 | [diff] [blame] | 52 | * {@code URLStreamHandlerSetter} object and then calls |
| 53 | * {@code parseURL(URL,String,int,int)}. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 54 | * |
Richard S. Hall | dfd78a4 | 2012-05-11 20:19:02 +0000 | [diff] [blame] | 55 | * @param realHandler The object on which the {@code setURL} method must be |
| 56 | * invoked for the specified URL. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 57 | * @see "java.net.URLStreamHandler.parseURL" |
| 58 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 59 | public void parseURL(@SuppressWarnings("hiding") URLStreamHandlerSetter realHandler, URL u, String spec, int start, int limit) { |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 60 | this.realHandler = realHandler; |
| 61 | parseURL(u, spec, start, limit); |
| 62 | } |
| 63 | |
| 64 | /** |
Richard S. Hall | d0dca9b | 2011-05-18 14:52:16 +0000 | [diff] [blame] | 65 | * This method calls {@code super.toExternalForm}. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 66 | * |
| 67 | * @see "java.net.URLStreamHandler.toExternalForm" |
| 68 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 69 | @Override |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 70 | public String toExternalForm(URL u) { |
| 71 | return super.toExternalForm(u); |
| 72 | } |
| 73 | |
| 74 | /** |
Richard S. Hall | d0dca9b | 2011-05-18 14:52:16 +0000 | [diff] [blame] | 75 | * This method calls {@code super.equals(URL,URL)}. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 76 | * |
| 77 | * @see "java.net.URLStreamHandler.equals(URL,URL)" |
| 78 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 79 | @Override |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 80 | public boolean equals(URL u1, URL u2) { |
| 81 | return super.equals(u1, u2); |
| 82 | } |
| 83 | |
| 84 | /** |
Richard S. Hall | d0dca9b | 2011-05-18 14:52:16 +0000 | [diff] [blame] | 85 | * This method calls {@code super.getDefaultPort}. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 86 | * |
| 87 | * @see "java.net.URLStreamHandler.getDefaultPort" |
| 88 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 89 | @Override |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 90 | public int getDefaultPort() { |
| 91 | return super.getDefaultPort(); |
| 92 | } |
| 93 | |
| 94 | /** |
Richard S. Hall | d0dca9b | 2011-05-18 14:52:16 +0000 | [diff] [blame] | 95 | * This method calls {@code super.getHostAddress}. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 96 | * |
| 97 | * @see "java.net.URLStreamHandler.getHostAddress" |
| 98 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 99 | @Override |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 100 | public InetAddress getHostAddress(URL u) { |
| 101 | return super.getHostAddress(u); |
| 102 | } |
| 103 | |
| 104 | /** |
Richard S. Hall | d0dca9b | 2011-05-18 14:52:16 +0000 | [diff] [blame] | 105 | * This method calls {@code super.hashCode(URL)}. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 106 | * |
| 107 | * @see "java.net.URLStreamHandler.hashCode(URL)" |
| 108 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 109 | @Override |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 110 | public int hashCode(URL u) { |
| 111 | return super.hashCode(u); |
| 112 | } |
| 113 | |
| 114 | /** |
Richard S. Hall | d0dca9b | 2011-05-18 14:52:16 +0000 | [diff] [blame] | 115 | * This method calls {@code super.hostsEqual}. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 116 | * |
| 117 | * @see "java.net.URLStreamHandler.hostsEqual" |
| 118 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 119 | @Override |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 120 | public boolean hostsEqual(URL u1, URL u2) { |
| 121 | return super.hostsEqual(u1, u2); |
| 122 | } |
| 123 | |
| 124 | /** |
Richard S. Hall | d0dca9b | 2011-05-18 14:52:16 +0000 | [diff] [blame] | 125 | * This method calls {@code super.sameFile}. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 126 | * |
| 127 | * @see "java.net.URLStreamHandler.sameFile" |
| 128 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 129 | @Override |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 130 | public boolean sameFile(URL u1, URL u2) { |
| 131 | return super.sameFile(u1, u2); |
| 132 | } |
| 133 | |
| 134 | /** |
| 135 | * This method calls |
Richard S. Hall | d0dca9b | 2011-05-18 14:52:16 +0000 | [diff] [blame] | 136 | * {@code realHandler.setURL(URL,String,String,int,String,String)}. |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 137 | * |
| 138 | * @see "java.net.URLStreamHandler.setURL(URL,String,String,int,String,String)" |
| 139 | * @deprecated This method is only for compatibility with handlers written |
| 140 | * for JDK 1.1. |
| 141 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 142 | @SuppressWarnings("javadoc") |
Richard S. Hall | dfd78a4 | 2012-05-11 20:19:02 +0000 | [diff] [blame] | 143 | protected void setURL(URL u, String proto, String host, int port, String file, String ref) { |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 144 | realHandler.setURL(u, proto, host, port, file, ref); |
| 145 | } |
| 146 | |
| 147 | /** |
| 148 | * This method calls |
Richard S. Hall | dfd78a4 | 2012-05-11 20:19:02 +0000 | [diff] [blame] | 149 | * {@code realHandler.setURL(URL,String,String,int,String,String,String,String)} |
| 150 | * . |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 151 | * |
| 152 | * @see "java.net.URLStreamHandler.setURL(URL,String,String,int,String,String,String,String)" |
| 153 | */ |
Carsten Ziegeler | 3314f91 | 2014-07-30 07:22:32 +0000 | [diff] [blame^] | 154 | @Override |
Richard S. Hall | dfd78a4 | 2012-05-11 20:19:02 +0000 | [diff] [blame] | 155 | protected void setURL(URL u, String proto, String host, int port, String auth, String user, String path, String query, String ref) { |
Richard S. Hall | 2532cf8 | 2010-03-24 09:51:11 +0000 | [diff] [blame] | 156 | realHandler.setURL(u, proto, host, port, auth, user, path, query, ref); |
| 157 | } |
| 158 | } |