com.github.eladb.jsiilibrarytemplate.$Module Maven / Gradle / Ivy
package com.github.eladb.jsiilibrarytemplate;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.Reader;
import java.io.UncheckedIOException;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import software.amazon.jsii.JsiiModule;
public final class $Module extends JsiiModule {
private static final Map MODULE_TYPES = load();
private static Map load() {
final Map result = new HashMap<>();
final ClassLoader cl = $Module.class.getClassLoader();
try (final InputStream is = cl.getResourceAsStream("com/github/eladb/jsiilibrarytemplate/$Module.txt");
final Reader rd = new InputStreamReader(is, StandardCharsets.UTF_8);
final BufferedReader br = new BufferedReader(rd)) {
br.lines()
.filter(line -> !line.trim().isEmpty())
.forEach(line -> {
final String[] parts = line.split("=", 2);
final String fqn = parts[0];
final String className = parts[1];
result.put(fqn, className);
});
}
catch (final IOException exception) {
throw new UncheckedIOException(exception);
}
return result;
}
private final Map> cache = new HashMap<>();
public $Module() {
super("jsii-library-template", "1.0.0", $Module.class, "[email protected]");
}
@Override
protected Class> resolveClass(final String fqn) throws ClassNotFoundException {
if (!MODULE_TYPES.containsKey(fqn)) {
throw new ClassNotFoundException("Unknown JSII type: " + fqn);
}
return this.cache.computeIfAbsent(MODULE_TYPES.get(fqn), this::findClass);
}
private Class> findClass(final String binaryName) {
try {
return Class.forName(binaryName);
}
catch (final ClassNotFoundException exception) {
throw new RuntimeException(exception);
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy