1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.vfs2.impl; 18 19 import java.io.IOException; 20 import java.net.MalformedURLException; 21 import java.net.URL; 22 import java.net.URLConnection; 23 import java.net.URLStreamHandler; 24 25 /** 26 * A proxy for URLs that are supported by the standard stream handler factory. 27 */ 28 final class URLStreamHandlerProxy extends URLStreamHandler { 29 30 @Override 31 protected URLConnection openConnection(final URL url) throws IOException { 32 return new URL(url.toExternalForm()).openConnection(); 33 } 34 35 @Override 36 protected void parseURL(final URL u, final String spec, final int start, final int limit) { 37 try { 38 final URL url = new URL(u, spec); 39 setURL(u, url.getProtocol(), url.getHost(), url.getPort(), url.getAuthority(), url.getUserInfo(), 40 url.getFile(), url.getQuery(), url.getRef()); 41 } catch (final MalformedURLException mue) { 42 // We retrow this as a simple runtime exception. 43 // It is retrown in URL as a MalformedURLException anyway. 44 throw new RuntimeException(mue.getMessage()); 45 } 46 } 47 }