Disentangle various dependencies.

This commit is contained in:
Jesse Brault 2026-01-04 17:13:33 -06:00
parent c7ec02a901
commit e462c60646
8 changed files with 21 additions and 6 deletions

View File

@ -53,6 +53,10 @@ public class DefaultObjectFactoryConfigurator implements ObjectFactoryConfigurat
new SsgException("the baseUrl Property in " + buildSpec.getName() + " must be set.") new SsgException("the baseUrl Property in " + buildSpec.getName() + " must be set.")
))); )));
registry.bind(WvcCompilerFactory.class, toSingleton(buildSpec.getWvcCompilerFactory().get(() ->
new SsgException("the wvcCompilerFactory Property in " + buildSpec.getName() + " must be set.")
)));
// self binding // self binding
registry.bind(ObjectFactory.class, toSingleton(registryObjectFactory)); registry.bind(ObjectFactory.class, toSingleton(registryObjectFactory));
}); });

View File

@ -47,7 +47,9 @@ class DefaultPageContextFactory implements PageContextFactory {
// set the template // set the template
if (component.componentTemplate == null && !wvcClass.isAnnotationPresent(SkipTemplate)) { if (component.componentTemplate == null && !wvcClass.isAnnotationPresent(SkipTemplate)) {
def compileResult = buildObjectFactory.createInstance(WvcCompiler).compileTemplate( def wvcCompilerFactory = buildObjectFactory.createInstance(WvcCompilerFactory)
def wvcCompiler = wvcCompilerFactory.getWvcCompiler()
def compileResult = wvcCompiler.compileTemplate(
wvcClass, wvcClass,
wvcClass.simpleName + 'Template.wvc' wvcClass.simpleName + 'Template.wvc'
) )

View File

@ -1,6 +1,5 @@
package com.jessebrault.ssg.buildscript package com.jessebrault.ssg.buildscript
import com.jessebrault.di.ObjectFactory
import com.jessebrault.ssg.buildscript.delegates.BuildDelegate import com.jessebrault.ssg.buildscript.delegates.BuildDelegate
import org.jetbrains.annotations.ApiStatus import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.Nullable import org.jetbrains.annotations.Nullable

View File

@ -2,6 +2,7 @@ package com.jessebrault.ssg.buildscript
import com.jessebrault.di.RegistryObjectFactory import com.jessebrault.di.RegistryObjectFactory
import com.jessebrault.fp.provider.Provider import com.jessebrault.fp.provider.Provider
import com.jessebrault.ssg.WvcCompilerFactory
import com.jessebrault.ssg.model.Model import com.jessebrault.ssg.model.Model
import com.jessebrault.ssg.text.TextSupplier import com.jessebrault.ssg.text.TextSupplier
import groovy.transform.EqualsAndHashCode import groovy.transform.EqualsAndHashCode
@ -23,6 +24,7 @@ final class BuildSpec {
final Provider<Set<Model>> models final Provider<Set<Model>> models
final Provider<Set<TextSupplier>> textSuppliers final Provider<Set<TextSupplier>> textSuppliers
final Provider<RegistryObjectFactory> objectFactory final Provider<RegistryObjectFactory> objectFactory
final Provider<WvcCompilerFactory> wvcCompilerFactory
@SuppressWarnings('GroovyAssignabilityCheck') @SuppressWarnings('GroovyAssignabilityCheck')
BuildSpec(Map args) { BuildSpec(Map args) {
@ -35,6 +37,7 @@ final class BuildSpec {
this.models = requireProvider(args.models) this.models = requireProvider(args.models)
this.textSuppliers = requireProvider(args.textSuppliers) this.textSuppliers = requireProvider(args.textSuppliers)
this.objectFactory = requireProvider(args.objectFactory) this.objectFactory = requireProvider(args.objectFactory)
this.wvcCompilerFactory = requireProvider(args.wvcCompilerFactory)
} }
@Override @Override

View File

@ -5,6 +5,7 @@ import com.jessebrault.fp.property.DefaultProperty
import com.jessebrault.fp.property.Property import com.jessebrault.fp.property.Property
import com.jessebrault.fp.provider.NamedProvider import com.jessebrault.fp.provider.NamedProvider
import com.jessebrault.fp.provider.Provider import com.jessebrault.fp.provider.Provider
import com.jessebrault.ssg.WvcCompilerFactory
import com.jessebrault.ssg.model.Model import com.jessebrault.ssg.model.Model
import com.jessebrault.ssg.model.Models import com.jessebrault.ssg.model.Models
import com.jessebrault.ssg.text.TextSupplier import com.jessebrault.ssg.text.TextSupplier
@ -23,6 +24,7 @@ final class BuildDelegate {
final Property<Set<Model>> models = DefaultProperty.<Set<Model>>empty(Set) final Property<Set<Model>> models = DefaultProperty.<Set<Model>>empty(Set)
final Property<Set<TextSupplier>> textSuppliers = DefaultProperty.<Set<TextSupplier>>empty(Set) final Property<Set<TextSupplier>> textSuppliers = DefaultProperty.<Set<TextSupplier>>empty(Set)
final Property<RegistryObjectFactory> objectFactory = DefaultProperty.empty(RegistryObjectFactory) final Property<RegistryObjectFactory> objectFactory = DefaultProperty.empty(RegistryObjectFactory)
final Property<WvcCompilerFactory> wvcCompilerFactory = DefaultProperty.empty(WvcCompilerFactory)
BuildDelegate(File projectDir) { BuildDelegate(File projectDir) {
this.projectDir = projectDir this.projectDir = projectDir

View File

@ -1,6 +1,7 @@
package com.jessebrault.ssg.buildscript.delegates package com.jessebrault.ssg.buildscript.delegates
import com.jessebrault.di.DefaultRegistryObjectFactory import com.jessebrault.di.DefaultRegistryObjectFactory
import com.jessebrault.ssg.WvcCompilerFactory
import com.jessebrault.ssg.model.Model import com.jessebrault.ssg.model.Model
import com.jessebrault.ssg.text.TextSupplier import com.jessebrault.ssg.text.TextSupplier
import com.jessebrault.ssg.text.TextsDirMarkdownTextSupplier import com.jessebrault.ssg.text.TextsDirMarkdownTextSupplier
@ -14,14 +15,17 @@ class DefaultBuildDelegateConfigurator implements BuildDelegateConfigurator {
private final File projectDir private final File projectDir
private final TextsDirMarkdownTextSupplier textsDirMarkdownTextSupplier private final TextsDirMarkdownTextSupplier textsDirMarkdownTextSupplier
private final WvcCompilerFactory wvcCompilerFactory
@Inject @Inject
DefaultBuildDelegateConfigurator( DefaultBuildDelegateConfigurator(
@Named('projectDir') File projectDir, @Named('projectDir') File projectDir,
TextsDirMarkdownTextSupplier textsDirMarkdownTextSupplier TextsDirMarkdownTextSupplier textsDirMarkdownTextSupplier,
WvcCompilerFactory wvcCompilerFactory
) { ) {
this.projectDir = projectDir this.projectDir = projectDir
this.textsDirMarkdownTextSupplier = textsDirMarkdownTextSupplier this.textsDirMarkdownTextSupplier = textsDirMarkdownTextSupplier
this.wvcCompilerFactory = wvcCompilerFactory
} }
@Override @Override
@ -33,6 +37,7 @@ class DefaultBuildDelegateConfigurator implements BuildDelegateConfigurator {
models.convention = [] as Set<Model> models.convention = [] as Set<Model>
textSuppliers.convention = [this.textsDirMarkdownTextSupplier] as Set<TextSupplier> textSuppliers.convention = [this.textsDirMarkdownTextSupplier] as Set<TextSupplier>
objectFactory.convention = DefaultRegistryObjectFactory.Builder.withDefaults().build() objectFactory.convention = DefaultRegistryObjectFactory.Builder.withDefaults().build()
wvcCompilerFactory.convention = this.wvcCompilerFactory
} }
} }

View File

@ -15,7 +15,8 @@ class DefaultBuildDelegateConverter implements BuildDelegateConverter {
globals: delegate.globals, globals: delegate.globals,
models: delegate.models, models: delegate.models,
textSuppliers: delegate.textSuppliers, textSuppliers: delegate.textSuppliers,
objectFactory: delegate.objectFactory objectFactory: delegate.objectFactory,
wvcCompilerFactory: delegate.wvcCompilerFactory
) )
} }

View File

@ -1,7 +1,6 @@
package com.jessebrault.ssg.text; package com.jessebrault.ssg.text;
import jakarta.inject.Inject; import jakarta.inject.Inject;
import jakarta.inject.Named;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -23,7 +22,7 @@ public class TextsDirMarkdownTextSupplier implements TextSupplier {
@Inject @Inject
public TextsDirMarkdownTextSupplier( public TextsDirMarkdownTextSupplier(
@Named("projectDir") File projectDir, File projectDir,
ExecutorService executorService, ExecutorService executorService,
MarkdownTextConverter markdownTextConverter MarkdownTextConverter markdownTextConverter
) { ) {