1/*
2 * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package jdk.internal.loader;
27
28import java.net.URL;
29import java.io.File;
30import sun.net.www.ParseUtil;
31
32/**
33 * (Solaris) platform specific handling for file: URLs .
34 * urls must not contain a hostname in the authority field
35 * other than "localhost".
36 *
37 * This implementation could be updated to map such URLs
38 * on to /net/host/...
39 *
40 * @author      Michael McMahon
41 */
42
43public class FileURLMapper {
44
45    URL url;
46    String path;
47
48    public FileURLMapper (URL url) {
49        this.url = url;
50    }
51
52    /**
53     * @return the platform specific path corresponding to the URL
54     *  so long as the URL does not contain a hostname in the authority field.
55     */
56
57    public String getPath () {
58        if (path != null) {
59            return path;
60        }
61        String host = url.getHost();
62        if (host == null || "".equals(host) || "localhost".equalsIgnoreCase (host)) {
63            path = url.getFile();
64            path = ParseUtil.decode (path);
65        }
66        return path;
67    }
68
69    /**
70     * Checks whether the file identified by the URL exists.
71     */
72    public boolean exists () {
73        String s = getPath ();
74        if (s == null) {
75            return false;
76        } else {
77            File f = new File (s);
78            return f.exists();
79        }
80    }
81}
82