22 */
23
24 package sun.hotspot.tools.ctw;
25
26 import jdk.internal.misc.Unsafe;
27
28 import java.nio.file.Files;
29 import java.nio.file.Path;
30 import java.nio.file.Paths;
31 import java.util.Objects;
32 import java.util.concurrent.Executor;
33 import java.util.concurrent.atomic.AtomicLong;
34 import java.util.regex.Matcher;
35 import java.util.regex.Pattern;
36
37 /**
38 * Abstract handler for path.
39 * Concrete subclasses should implement method {@link #process()}.
40 */
41 public abstract class PathHandler {
42 private static final Unsafe UNSAFE = jdk.test.lib.unsafe.UnsafeHelper.getUnsafe();
43 private static final AtomicLong CLASS_COUNT = new AtomicLong(0L);
44 private static volatile boolean CLASSES_LIMIT_REACHED = false;
45 private static final Pattern JAR_IN_DIR_PATTERN
46 = Pattern.compile("^(.*[/\\\\])?\\*$");
47 protected final Path root;
48 protected final Executor executor;
49 private ClassLoader loader;
50
51 /**
52 * @param root root path to process
53 * @param executor executor used for process task invocation
54 * @throws NullPointerException if {@code root} or {@code executor} is
55 * {@code null}
56 */
57 protected PathHandler(Path root, Executor executor) {
58 Objects.requireNonNull(root);
59 Objects.requireNonNull(executor);
60 this.root = root.normalize();
61 this.executor = executor;
62 this.loader = ClassLoader.getSystemClassLoader();
|
22 */
23
24 package sun.hotspot.tools.ctw;
25
26 import jdk.internal.misc.Unsafe;
27
28 import java.nio.file.Files;
29 import java.nio.file.Path;
30 import java.nio.file.Paths;
31 import java.util.Objects;
32 import java.util.concurrent.Executor;
33 import java.util.concurrent.atomic.AtomicLong;
34 import java.util.regex.Matcher;
35 import java.util.regex.Pattern;
36
37 /**
38 * Abstract handler for path.
39 * Concrete subclasses should implement method {@link #process()}.
40 */
41 public abstract class PathHandler {
42 private static final Unsafe UNSAFE = Unsafe.getUnsafe();
43 private static final AtomicLong CLASS_COUNT = new AtomicLong(0L);
44 private static volatile boolean CLASSES_LIMIT_REACHED = false;
45 private static final Pattern JAR_IN_DIR_PATTERN
46 = Pattern.compile("^(.*[/\\\\])?\\*$");
47 protected final Path root;
48 protected final Executor executor;
49 private ClassLoader loader;
50
51 /**
52 * @param root root path to process
53 * @param executor executor used for process task invocation
54 * @throws NullPointerException if {@code root} or {@code executor} is
55 * {@code null}
56 */
57 protected PathHandler(Path root, Executor executor) {
58 Objects.requireNonNull(root);
59 Objects.requireNonNull(executor);
60 this.root = root.normalize();
61 this.executor = executor;
62 this.loader = ClassLoader.getSystemClassLoader();
|