| /* |
| * Copyright (C) 2017 The Guava Authors |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except |
| * in compliance with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software distributed under the License |
| * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
| * or implied. See the License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| |
| package com.google.common.util.concurrent; |
| |
| import static com.google.common.base.StandardSystemProperty.JAVA_CLASS_PATH; |
| import static com.google.common.base.StandardSystemProperty.PATH_SEPARATOR; |
| |
| import com.google.common.base.Splitter; |
| import com.google.common.collect.ImmutableList; |
| import java.io.File; |
| import java.net.MalformedURLException; |
| import java.net.URL; |
| import java.net.URLClassLoader; |
| |
| // TODO(b/65488446): Make this a public API. |
| /** Utility method to parse the system class path. */ |
| final class ClassPathUtil { |
| private ClassPathUtil() {} |
| |
| /** |
| * Returns the URLs in the class path specified by the {@code java.class.path} {@linkplain |
| * System#getProperty system property}. |
| */ |
| // TODO(b/65488446): Make this a public API. |
| static URL[] parseJavaClassPath() { |
| ImmutableList.Builder<URL> urls = ImmutableList.builder(); |
| for (String entry : Splitter.on(PATH_SEPARATOR.value()).split(JAVA_CLASS_PATH.value())) { |
| try { |
| try { |
| urls.add(new File(entry).toURI().toURL()); |
| } catch (SecurityException e) { // File.toURI checks to see if the file is a directory |
| urls.add(new URL("file", null, new File(entry).getAbsolutePath())); |
| } |
| } catch (MalformedURLException e) { |
| AssertionError error = new AssertionError("malformed class path entry: " + entry); |
| error.initCause(e); |
| throw error; |
| } |
| } |
| return urls.build().toArray(new URL[0]); |
| } |
| |
| /** Returns the URLs in the class path. */ |
| static URL[] getClassPathUrls() { |
| return ClassPathUtil.class.getClassLoader() instanceof URLClassLoader |
| ? ((URLClassLoader) ClassPathUtil.class.getClassLoader()).getURLs() |
| : parseJavaClassPath(); |
| } |
| } |