001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.io.protocols.data; 003 004import java.io.IOException; 005import java.net.URL; 006import java.net.URLConnection; 007import java.net.URLStreamHandler; 008 009import org.openstreetmap.josm.tools.Utils; 010 011/** 012 * Protocol handler for {@code data:} URLs. 013 * This class must be named "Handler" and in a package "data" (fixed named convention)! 014 * <p> 015 * See <a href="http://stackoverflow.com/a/9388757/2257172">StackOverflow</a>. 016 * @since 10931 017 */ 018public class Handler extends URLStreamHandler { 019 020 @Override 021 protected URLConnection openConnection(URL u) throws IOException { 022 return new DataConnection(u); 023 } 024 025 /** 026 * Installs protocol handler. 027 */ 028 public static void install() { 029 String pkgName = Handler.class.getPackage().getName(); 030 String pkg = pkgName.substring(0, pkgName.lastIndexOf('.')); 031 032 String protocolHandlers = System.getProperty("java.protocol.handler.pkgs", ""); 033 if (!protocolHandlers.contains(pkg)) { 034 StringBuilder sb = new StringBuilder(protocolHandlers); 035 if (sb.length() > 0) { 036 sb.append('|'); 037 } 038 sb.append(pkg); 039 Utils.updateSystemProperty("java.protocol.handler.pkgs", sb.toString()); 040 } 041 } 042}