< prev index next >
test/java/lang/Class/getDeclaredField/FieldSetAccessibleTest.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 26,35 ****
--- 26,36 ----
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
import java.lang.reflect.Module;
import java.lang.reflect.Modifier;
import java.lang.reflect.InaccessibleObjectException;
+ import java.lang.reflect.Layer;
import java.lang.reflect.ReflectPermission;
import java.net.URI;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
*** 45,56 ****
--- 46,59 ----
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.PropertyPermission;
+ import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
+ import java.util.stream.Collectors;
import java.util.stream.Stream;
import jdk.internal.module.Modules;
/**
*** 246,265 ****
--- 249,273 ----
static class ClassNameJrtStreamBuilder implements Iterable<String>{
final FileSystem jrt;
final List<Path> roots = new ArrayList<>();
+ final Set<String> availableModules;
ClassNameJrtStreamBuilder() {
+ availableModules = Layer.boot().modules().stream()
+ .map(Module::getName).collect(Collectors.toSet());
jrt = FileSystems.getFileSystem(URI.create("jrt:/"));
for (Path root : jrt.getRootDirectories()) {
roots.add(root);
}
}
Stream<String> build() {
return roots.stream().flatMap(this::toStream)
.filter(x -> x.getNameCount() > 2)
+ .filter(x -> x.getName(0).toString().equals("modules"))
+ .filter(x -> availableModules.contains(x.getName(1).toString()))
.map( x-> x.subpath(2, x.getNameCount()))
.map( x -> x.toString())
.filter(s -> s.endsWith(".class") && !s.endsWith("module-info.class"));
}
< prev index next >