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   *
15   * @since 0.1
16   */
17  final class PrivilegedClassLoader implements PrivilegedAction<URLClassLoader> {
18  
19      /**
20       * URLs for class loading.
21       */
22      private final List<URL> urls;
23  
24      /**
25       * Constructor.
26       *
27       * @param urls URLs for class loading
28       */
29      PrivilegedClassLoader(final List<URL> urls) {
30          this.urls = urls;
31      }
32  
33      @Override
34      public URLClassLoader run() {
35          return new URLClassLoader(
36              this.urls.toArray(new URL[0]),
37              Thread.currentThread().getContextClassLoader()
38          );
39      }
40  }