java.lang.module.ModuleReference#open ( )源码实例Demo

下面列出了java.lang.module.ModuleReference#open ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Bytecoder   文件: BuiltinClassLoader.java
/**
 * Returns the ModuleReader for the given module, creating it if needed.
 */
private ModuleReader moduleReaderFor(ModuleReference mref) {
    ModuleReader reader = moduleToReader.get(mref);
    if (reader == null) {
        // avoid method reference during startup
        Function<ModuleReference, ModuleReader> create = new Function<>() {
            public ModuleReader apply(ModuleReference moduleReference) {
                try {
                    return mref.open();
                } catch (IOException e) {
                    // Return a null module reader to avoid a future class
                    // load attempting to open the module again.
                    return new NullModuleReader();
                }
            }
        };
        reader = moduleToReader.computeIfAbsent(mref, create);
    }
    return reader;
}
 
源代码2 项目: openjdk-jdk9   文件: Main.java
public static void main(String[] args) throws Exception {
    String mn = args[0];

    ModuleReference mref = ModuleLayer.boot()
            .configuration()
            .findModule(mn)
            .map(ResolvedModule::reference)
            .orElseThrow(() -> new RuntimeException(mn + " not resolved!!"));

    try (ModuleReader reader = mref.open()) {
        reader.list().forEach(name -> {
            testFindUnchecked(name);

            // if the resource is a directory then find without trailing slash
            if (name.endsWith("/")) {
                testFindUnchecked(name.substring(0, name.length() - 1));
            }
        });
    }
}
 
源代码3 项目: pro   文件: ModuleFixerPlugin.java
private static void findModuleData(ModuleReference ref, Set<String> requirePackages,
                                   Set<String> exports, Set<String> uses, Map<String, Set<String>> provides,
                                   Map<String, Object> propertyMap) throws IOException {
  try(var reader = ref.open()) {
    try(var resources = reader.list()) {
      resources.forEach(suppress(resource -> {
        if (resource.endsWith(".class")) {
          scanJavaClass(resource, reader, requirePackages, exports, uses);  
        } else {
          if (resource.startsWith("META-INF/services/")) {
            // skip "META-INF/services/" directory resource entry
            if (resource.length() == "META-INF/services/".length()) {
              return;
            }
            scanServiceFile(resource, reader, provides);
          } else {
            if (resource.equals("META-INF/MANIFEST.MF")) {
              scanManifest(resource, reader, propertyMap);
            }
          }
        }
      })); 
    }
  }
  requirePackages.removeAll(exports);
}
 
源代码4 项目: Bytecoder   文件: Loader.java
/**
 * Creates a ModuleReader for the given module.
 */
private ModuleReader createModuleReader(ModuleReference mref) {
    try {
        return mref.open();
    } catch (IOException e) {
        // Return a null module reader to avoid a future class load
        // attempting to open the module again.
        return new NullModuleReader();
    }
}
 
源代码5 项目: openjdk-jdk9   文件: Loader.java
/**
 * Creates a ModuleReader for the given module.
 */
private ModuleReader createModuleReader(ModuleReference mref) {
    try {
        return mref.open();
    } catch (IOException e) {
        // Return a null module reader to avoid a future class load
        // attempting to open the module again.
        return new NullModuleReader();
    }
}
 
源代码6 项目: openjdk-jdk9   文件: BuiltinClassLoader.java
/**
 * Creates a ModuleReader for the given module.
 */
private static ModuleReader createModuleReader(ModuleReference mref) {
    try {
        return mref.open();
    } catch (IOException e) {
        // Return a null module reader to avoid a future class load
        // attempting to open the module again.
        return new NullModuleReader();
    }
}
 
源代码7 项目: openjdk-jdk9   文件: ModulesInCustomFileSystem.java
/**
 * List all modules that the finder finds and the resources in the module.
 */
private void listAllModules(ModuleFinder finder) throws Exception {
    for (ModuleReference mref : finder.findAll()) {
        System.out.println(mref.descriptor());
        try (ModuleReader reader = mref.open()) {
            reader.list().forEach(name -> System.out.format("  %s%n", name));
        }
    }
}
 
源代码8 项目: openjdk-jdk9   文件: ModuleTargetHelper.java
public static ModuleTarget read(ModuleReference modRef) throws IOException {
    ModuleReader reader = modRef.open();
    try (InputStream in = reader.open("module-info.class").get()) {
        return read(in);
    } finally {
        reader.close();
    }
}
 
源代码9 项目: ArchUnit   文件: ModuleLocationFactory.java
private static <T> T doWithModuleReader(ModuleReference moduleReference, ModuleReaderProcessor<T> readerProcessor) {
    try (ModuleReader moduleReader = moduleReference.open()) {
        return readerProcessor.process(moduleReader);
    } catch (IOException e) {
        String message = String.format("Unexpected error while processing module %s", moduleReference);
        throw new RuntimeException(message, e);
    }
}
 
源代码10 项目: openjdk-jdk9   文件: MultiReleaseJarTest.java
/**
 * Exercise ModuleReader on a multi-release JAR
 */
public void testModuleReader() throws Exception {
    String name = "m1";

    ModuleDescriptor descriptor1 = ModuleDescriptor.newModule(name)
            .requires("java.base")
            .build();

    // module descriptor for versioned section
    ModuleDescriptor descriptor2 = ModuleDescriptor.newModule(name)
            .requires("java.base")
            .requires("jdk.unsupported")
            .build();

    Path jar = new JarBuilder(name)
            .moduleInfo(MODULE_INFO, descriptor1)
            .moduleInfo("META-INF/versions/" + VERSION + "/" + MODULE_INFO, descriptor2)
            .build();

    // find the module
    ModuleFinder finder = ModuleFinder.of(jar);
    Optional<ModuleReference> omref = finder.find(name);
    assertTrue((omref.isPresent()));
    ModuleReference mref = omref.get();

    ModuleDescriptor expected;
    if (MULTI_RELEASE) {
        expected = descriptor2;
    } else {
        expected = descriptor1;
    }

    // test ModuleReader by reading module-info.class resource
    try (ModuleReader reader = mref.open()) {

        // open resource
        Optional<InputStream> oin = reader.open(MODULE_INFO);
        assertTrue(oin.isPresent());
        try (InputStream in = oin.get()) {
            checkRequires(ModuleDescriptor.read(in), expected);
        }

        // read resource
        Optional<ByteBuffer> obb = reader.read(MODULE_INFO);
        assertTrue(obb.isPresent());
        ByteBuffer bb = obb.get();
        try {
            checkRequires(ModuleDescriptor.read(bb), expected);
        } finally {
            reader.release(bb);
        }

        // find resource
        Optional<URI> ouri = reader.find(MODULE_INFO);
        assertTrue(ouri.isPresent());
        URI uri = ouri.get();

        String expectedTail = "!/";
        if (MULTI_RELEASE)
            expectedTail += "META-INF/versions/" + VERSION + "/";
        expectedTail += MODULE_INFO;
        assertTrue(uri.toString().endsWith(expectedTail));

        URLConnection uc = uri.toURL().openConnection();
        uc.setUseCaches(false);
        try (InputStream in = uc.getInputStream()) {
            checkRequires(ModuleDescriptor.read(in), expected);
        }

    }
}
 
 同类方法