// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.io.protocols.data; import java.io.IOException; import java.net.URL; import java.net.URLConnection; import java.net.URLStreamHandler; import org.openstreetmap.josm.tools.Utils; /** * Protocol handler for {@code data:} URLs. * This class must be named "Handler" and in a package "data" (fixed named convention)! * <p> * See <a href="http://stackoverflow.com/a/9388757/2257172">StackOverflow</a>. * @since 10931 */ public class Handler extends URLStreamHandler { @Override protected URLConnection openConnection(URL u) throws IOException { return new DataConnection(u); } /** * Installs protocol handler. */ public static void install() { String pkgName = Handler.class.getPackage().getName(); String pkg = pkgName.substring(0, pkgName.lastIndexOf('.')); String protocolHandlers = System.getProperty("java.protocol.handler.pkgs", ""); if (!protocolHandlers.contains(pkg)) { StringBuilder sb = new StringBuilder(protocolHandlers); if (sb.length() > 0) { sb.append('|'); } sb.append(pkg); Utils.updateSystemProperty("java.protocol.handler.pkgs", sb.toString()); } } }