Move auto-imports to an ImportCustomizer defined in DefaultWebViewComponentTemplateCompileUnit.

This commit is contained in:
Jesse Brault 2025-01-26 14:46:54 -06:00
parent 1a528465f9
commit bd4dee98fa
2 changed files with 18 additions and 20 deletions

View File

@ -34,19 +34,9 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler {
return SimpleTranspilerConfiguration.withDefaults(); return SimpleTranspilerConfiguration.withDefaults();
} }
protected void addAutomaticImports(WebViewComponentModuleNode moduleNode, TranspilerConfiguration configuration) {
configuration.getImports().forEach(moduleNode::addImport);
configuration.getStaticImports().forEach(staticImport -> moduleNode.addStaticImport(
staticImport.getV1(), staticImport.getV2(), staticImport.getV3()
));
configuration.getStarImports().forEach(moduleNode::addStarImport);
configuration.getStaticStarImports().forEach(moduleNode::addStaticStarImport);
}
protected WebViewComponentModuleNode initModuleNode( protected WebViewComponentModuleNode initModuleNode(
ComponentTemplateCompileUnit compileUnit, ComponentTemplateCompileUnit compileUnit,
WebViewComponentSourceUnit sourceUnit, WebViewComponentSourceUnit sourceUnit
TranspilerConfiguration configuration
) { ) {
final var moduleNode = new WebViewComponentModuleNode(sourceUnit); final var moduleNode = new WebViewComponentModuleNode(sourceUnit);
sourceUnit.setModuleNode(moduleNode); sourceUnit.setModuleNode(moduleNode);
@ -56,7 +46,6 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler {
moduleNode.setPackageName(defaultPackageName); moduleNode.setPackageName(defaultPackageName);
} }
this.addAutomaticImports(moduleNode, configuration);
return moduleNode; return moduleNode;
} }
@ -218,12 +207,6 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler {
CompilationUnitNode compilationUnitNode, CompilationUnitNode compilationUnitNode,
String templateClassSimpleName String templateClassSimpleName
) throws ComponentTemplateCompileException { ) throws ComponentTemplateCompileException {
// resolver, transpilerConfiguration, and positionSetter
final ClassLoaderComponentClassNodeResolver resolver = new ClassLoaderComponentClassNodeResolver(
compileUnit,
compilerConfiguration.getGroovyClassLoader()
);
final var transpilerConfiguration = this.getConfiguration(resolver);
// transpilerConfiguration, and positionSetter // transpilerConfiguration, and positionSetter
final var transpilerConfiguration = this.getConfiguration(); final var transpilerConfiguration = this.getConfiguration();
final PositionSetter positionSetter = transpilerConfiguration.getPositionSetter(); final PositionSetter positionSetter = transpilerConfiguration.getPositionSetter();
@ -241,7 +224,7 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler {
// prepare moduleNode // prepare moduleNode
final WebViewComponentModuleNode moduleNode = this.initModuleNode( final WebViewComponentModuleNode moduleNode = this.initModuleNode(
compileUnit, sourceUnit, transpilerConfiguration compileUnit, sourceUnit
); );
// prepare mainClassNode // prepare mainClassNode

View File

@ -10,7 +10,9 @@ import groowt.view.component.compiler.source.FileSource;
import groowt.view.component.compiler.source.URISource; import groowt.view.component.compiler.source.URISource;
import groowt.view.component.compiler.source.URLSource; import groowt.view.component.compiler.source.URLSource;
import org.codehaus.groovy.control.CompilationUnit; import org.codehaus.groovy.control.CompilationUnit;
import org.codehaus.groovy.control.CompilerConfiguration;
import org.codehaus.groovy.control.Janitor; import org.codehaus.groovy.control.Janitor;
import org.codehaus.groovy.control.customizers.ImportCustomizer;
import org.codehaus.groovy.control.io.ReaderSource; import org.codehaus.groovy.control.io.ReaderSource;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -20,8 +22,20 @@ import java.net.URI;
public class DefaultWebViewComponentTemplateCompileUnit extends AbstractComponentTemplateCompileUnit public class DefaultWebViewComponentTemplateCompileUnit extends AbstractComponentTemplateCompileUnit
implements ReaderSource, WebViewComponentTemplateCompileUnit { implements ReaderSource, WebViewComponentTemplateCompileUnit {
private static CompilationUnit getCompilationUnit() {
final var configuration = new CompilerConfiguration();
final var addGroowtImports = new ImportCustomizer();
addGroowtImports.addStarImports(
"groowt.view.component.web.lib",
"groowt.view.component.web.runtime",
"groowt.view.component.runtime"
);
configuration.addCompilationCustomizers(addGroowtImports);
return new CompilationUnit(configuration);
}
private final String defaultPackageName; private final String defaultPackageName;
private final CompilationUnit groovyCompilationUnit = new CompilationUnit(); private final CompilationUnit groovyCompilationUnit;
public DefaultWebViewComponentTemplateCompileUnit( public DefaultWebViewComponentTemplateCompileUnit(
String descriptiveName, String descriptiveName,
@ -35,6 +49,7 @@ public class DefaultWebViewComponentTemplateCompileUnit extends AbstractComponen
} else { } else {
this.defaultPackageName = defaultPackageName; this.defaultPackageName = defaultPackageName;
} }
this.groovyCompilationUnit = getCompilationUnit();
} }
@Override @Override