Example usage for org.objectweb.asm ClassWriter visitModule

List of usage examples for org.objectweb.asm ClassWriter visitModule

Introduction

In this page you can find the example usage for org.objectweb.asm ClassWriter visitModule.

Prototype

@Override
    public final ModuleVisitor visitModule(final String name, final int access, final String version) 

Source Link

Usage

From source file:ModuleInfoGenerator.java

License:Open Source License

public static void main(String[] args) throws Exception {
    File dest = new File(args[0]);
    ClassWriter cw = new ClassWriter(0);
    cw.visit(V9, Opcodes.ACC_MODULE, "module-info", null, null, null);
    ModuleVisitor mv = cw.visitModule("org.joml", 0, args[1]);
    mv.visitRequire("java.base", ACC_MANDATED, "9");
    mv.visitRequire("jdk.unsupported", ACC_STATIC_PHASE, null);
    mv.visitExport("org/joml", 0, (String[]) null);
    mv.visitExport("org/joml/sampling", 0, (String[]) null);
    mv.visitEnd();/*from ww  w  .  j a  va  2  s  . co m*/
    cw.visitEnd();
    FileOutputStream fos = new FileOutputStream(new File(dest, "module-info.class"));
    fos.write(cw.toByteArray());
    fos.close();
}

From source file:org.jacoco.core.analysis.AnalyzerTest.java

License:Open Source License

@Test
public void should_ignore_module_info() throws Exception {
    final ClassWriter cw = new ClassWriter(0);
    cw.visit(Opcodes.V9, Opcodes.ACC_MODULE, "module-info", null, null, null);
    cw.visitModule("module", 0, null).visitEnd();
    cw.visitEnd();/* w  w w.j  a  v  a 2 s. c om*/
    final byte[] bytes = cw.toByteArray();

    analyzer.analyzeClass(bytes, "");

    assertTrue(classes.isEmpty());
}

From source file:org.jacoco.core.internal.instr.ProbeArrayStrategyFactoryTest.java

License:Open Source License

private IProbeArrayStrategy createForModule(int version) {
    final ClassWriter writer = new ClassWriter(0);
    writer.visit(version, Opcodes.ACC_MODULE, "module-info", null, null, null);
    writer.visitModule("module", 0, null).visitEnd();
    writer.visitEnd();/*from  ww  w .  jav a  2s .c o m*/
    return ProbeArrayStrategyFactory.createFor(0, new ClassReader(writer.toByteArray()), generator);
}

From source file:org.moditect.internal.compiler.ModuleInfoCompiler.java

License:Apache License

public static byte[] compileModuleInfo(ModuleDeclaration module, String mainClass, String version) {
    ClassWriter classWriter = new ClassWriter(0);
    classWriter.visit(V9, ACC_MODULE, "module-info", null, null, null);

    int moduleAccess = module.isOpen() ? ACC_SYNTHETIC | ACC_OPEN : ACC_SYNTHETIC;
    ModuleVisitor mv = classWriter.visitModule(module.getNameAsString(), moduleAccess, version);

    if (mainClass != null) {
        mv.visitMainClass(getNameForBinary(mainClass));
    }//from  ww  w  .  java2s  .  c o  m

    for (ModuleRequiresStmt requires : module.getNodesByType(ModuleRequiresStmt.class)) {
        mv.visitRequire(requires.getName().asString(), requiresModifiersAsInt(requires.getModifiers()), null);
    }

    for (ModuleExportsStmt export : module.getNodesByType(ModuleExportsStmt.class)) {
        mv.visitExport(getNameForBinary(export.getNameAsString()), 0,
                export.getModuleNames().stream().map(Name::toString).toArray(String[]::new));
    }

    for (ModuleProvidesStmt provides : module.getNodesByType(ModuleProvidesStmt.class)) {
        mv.visitProvide(getNameForBinary(provides.getType()), provides.getWithTypes().stream()
                .map(ModuleInfoCompiler::getNameForBinary).toArray(String[]::new));
    }

    for (ModuleUsesStmt uses : module.getNodesByType(ModuleUsesStmt.class)) {
        mv.visitUse(getNameForBinary(uses.getType()));
    }

    for (ModuleOpensStmt opens : module.getNodesByType(ModuleOpensStmt.class)) {
        mv.visitOpen(getNameForBinary(opens.getNameAsString()), 0,
                opens.getModuleNames().stream().map(Name::toString).toArray(String[]::new));
    }

    mv.visitRequire("java.base", ACC_MANDATED, null);
    mv.visitEnd();

    classWriter.visitEnd();

    return classWriter.toByteArray();
}