View Javadoc
1   /*
2    * SPDX-FileCopyrightText: Copyright (c) 2011-2026 Yegor Bugayenko
3    * SPDX-License-Identifier: MIT
4    */
5   package com.qulice.maven;
6   
7   import java.net.URL;
8   import java.net.URLClassLoader;
9   import java.security.PrivilegedAction;
10  import java.util.List;
11  
12  /**
13   * Creates URL ClassLoader in privileged block.
14   * @since 0.1
15   */
16  final class PrivilegedClassLoader implements PrivilegedAction<URLClassLoader> {
17  
18      /**
19       * URLs for class loading.
20       */
21      private final List<URL> urls;
22  
23      /**
24       * Constructor.
25       * @param urls URLs for class loading
26       */
27      PrivilegedClassLoader(final List<URL> urls) {
28          this.urls = urls;
29      }
30  
31      @Override
32      public URLClassLoader run() {
33          return new URLClassLoader(
34              this.urls.toArray(new URL[0]),
35              Thread.currentThread().getContextClassLoader()
36          );
37      }
38  }