Skip to content

Commit 517faa3

Browse files
authored
Merge pull request #106 from domaframework/refactor/all-classes
Refactor compile module for better code organization
2 parents c581868 + 91aa616 commit 517faa3

File tree

7 files changed

+116
-56
lines changed

7 files changed

+116
-56
lines changed

CLAUDE.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,10 @@ The Doma Compile Plugin is a Gradle plugin that allows annotation processors to
4444

4545
### Project Structure
4646
- **compile/**: Main plugin implementation
47-
- `CompilePlugin.java`: Entry point that applies configurations
48-
- `ConfigureJava.java`: Configures Java compilation to include resource directories in sourcepath
49-
- `ConfigureKotlin.groovy`: Configures Kotlin/KAPT to include resource directories
47+
- `CompilePlugin.java`: Entry point that delegates to CompileConfigurator
48+
- `CompileConfigurator.java`: Central configuration manager that coordinates Java and Kotlin configuration
49+
- `JavaCompileConfigurator.java`: Configures Java compilation tasks to include resource directories in sourcepath
50+
- `KotlinCompileConfigurator.groovy`: Configures Kotlin/KAPT tasks to include resource directories
5051

5152
- **Test Projects**: Three separate Gradle projects for testing different scenarios
5253
- `compile-java-test/`: Tests plugin with pure Java

compile/src/main/groovy/org/seasar/doma/gradle/compile/ConfigureKotlin.groovy

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.seasar.doma.gradle.compile
2+
3+
import org.gradle.api.Project
4+
import org.gradle.api.tasks.SourceSet
5+
6+
/**
7+
* Configures Kotlin/KAPT compilation tasks for Doma annotation processing.
8+
*/
9+
class KotlinCompileConfigurator {
10+
11+
private static final String KOTLIN_KAPT_PLUGIN_ID = 'kotlin-kapt'
12+
private static final String KAPT_EXTENSION_NAME = 'kapt'
13+
private static final String SOURCE_PATH_OPTION = '--source-path'
14+
private static final String PARAMETERS_OPTION = '-parameters'
15+
16+
private final Project project
17+
18+
KotlinCompileConfigurator(Project project) {
19+
this.project = Objects.requireNonNull(project)
20+
}
21+
22+
void configure(SourceSet sourceSet) {
23+
project.plugins.withId(KOTLIN_KAPT_PLUGIN_ID) {
24+
configureKapt(sourceSet)
25+
}
26+
}
27+
28+
private void configureKapt(SourceSet sourceSet) {
29+
def kapt = project.extensions.getByName(KAPT_EXTENSION_NAME)
30+
def resourceDirs = sourceSet.resources.srcDirs
31+
def sourcePath = resourceDirs.join(File.pathSeparator)
32+
33+
kapt.javacOptions {
34+
option SOURCE_PATH_OPTION, sourcePath
35+
option PARAMETERS_OPTION, ''
36+
}
37+
}
38+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.seasar.doma.gradle.compile;
2+
3+
import java.util.Objects;
4+
import org.gradle.api.Project;
5+
import org.gradle.api.plugins.JavaPluginExtension;
6+
import org.gradle.api.tasks.SourceSet;
7+
8+
/** Configures compilation tasks for Doma annotation processing. */
9+
class CompileConfigurator {
10+
11+
private final Project project;
12+
private final JavaCompileConfigurator javaConfigurator;
13+
private final KotlinCompileConfigurator kotlinConfigurator;
14+
15+
CompileConfigurator(Project project) {
16+
this.project = Objects.requireNonNull(project);
17+
this.javaConfigurator = new JavaCompileConfigurator(project);
18+
this.kotlinConfigurator = new KotlinCompileConfigurator(project);
19+
}
20+
21+
void configure() {
22+
var javaExtension = project.getExtensions().getByType(JavaPluginExtension.class);
23+
var mainSourceSet = javaExtension.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);
24+
25+
configureSourceSet(mainSourceSet);
26+
}
27+
28+
private void configureSourceSet(SourceSet sourceSet) {
29+
javaConfigurator.configure(sourceSet);
30+
kotlinConfigurator.configure(sourceSet);
31+
}
32+
}

compile/src/main/java/org/seasar/doma/gradle/compile/CompilePlugin.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,20 @@
33
import org.gradle.api.Plugin;
44
import org.gradle.api.Project;
55
import org.gradle.api.plugins.JavaPlugin;
6-
import org.gradle.api.plugins.JavaPluginExtension;
7-
import org.gradle.api.tasks.SourceSet;
86

7+
/**
8+
* Gradle plugin that configures annotation processors to read Doma resources at compile-time. This
9+
* plugin automatically configures both Java and Kotlin compilation tasks.
10+
*/
911
public class CompilePlugin implements Plugin<Project> {
1012

1113
@Override
1214
public void apply(Project project) {
13-
project
14-
.getPlugins()
15-
.withType(
16-
JavaPlugin.class,
17-
javaPlugin -> {
18-
JavaPluginExtension javaPluginExtension =
19-
project.getExtensions().getByType(JavaPluginExtension.class);
20-
SourceSet mainSourceSet =
21-
javaPluginExtension.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);
22-
ConfigureJava.configure(project, mainSourceSet);
23-
ConfigureKotlin.configure(project, mainSourceSet);
24-
});
15+
project.getPlugins().withType(JavaPlugin.class, javaPlugin -> configureProject(project));
16+
}
17+
18+
private void configureProject(Project project) {
19+
var configurator = new CompileConfigurator(project);
20+
configurator.configure();
2521
}
2622
}

compile/src/main/java/org/seasar/doma/gradle/compile/ConfigureJava.java

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.seasar.doma.gradle.compile;
2+
3+
import java.util.Objects;
4+
import org.gradle.api.Project;
5+
import org.gradle.api.tasks.SourceSet;
6+
import org.gradle.api.tasks.compile.JavaCompile;
7+
8+
/** Configures Java compilation tasks for Doma annotation processing. */
9+
class JavaCompileConfigurator {
10+
11+
private static final String PARAMETERS_COMPILER_ARG = "-parameters";
12+
13+
private final Project project;
14+
15+
JavaCompileConfigurator(Project project) {
16+
this.project = Objects.requireNonNull(project);
17+
}
18+
19+
void configure(SourceSet sourceSet) {
20+
var resourceDirs = sourceSet.getResources().getSrcDirs();
21+
var compileTaskName = sourceSet.getCompileJavaTaskName();
22+
23+
project
24+
.getTasks()
25+
.named(compileTaskName, JavaCompile.class)
26+
.configure(
27+
javaCompile -> {
28+
javaCompile.getOptions().setSourcepath(project.files(resourceDirs));
29+
javaCompile.getOptions().getCompilerArgs().add(PARAMETERS_COMPILER_ARG);
30+
});
31+
}
32+
}

0 commit comments

Comments
 (0)