Skip to content

Commit 6700d95

Browse files
VladoKurucbeikov
authored andcommitted
HHH-19283: Implementation improvements
1 parent 9dcbd37 commit 6700d95

File tree

4 files changed

+28
-39
lines changed

4 files changed

+28
-39
lines changed

tooling/hibernate-gradle-plugin/src/main/java/org/hibernate/orm/tooling/gradle/HibernateOrmPlugin.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import org.gradle.api.artifacts.Configuration;
1616
import org.gradle.api.file.DirectoryProperty;
1717
import org.gradle.api.file.FileCollection;
18-
import org.gradle.api.logging.Logger;
1918
import org.gradle.api.plugins.JavaPluginExtension;
2019
import org.gradle.api.tasks.SourceSet;
2120

@@ -52,11 +51,10 @@ public void apply(Project project) {
5251

5352
private void prepareEnhancement(HibernateOrmSpec ormDsl, Project project) {
5453
project.getGradle().getTaskGraph().whenReady( (graph) -> {
55-
if ( !ormDsl.isEnhancementEnabled() ) {
54+
if ( !ormDsl.getEnhancement().isPresent() ) {
5655
return;
5756
}
5857

59-
Injected injected = project.getObjects().newInstance(Injected.class);
6058
SourceSet sourceSet = resolveSourceSet( ormDsl.getSourceSet().get(), project );
6159
final Set<String> languages = ormDsl.getLanguages().getOrNull();
6260
if ( languages == null ) {
@@ -75,7 +73,6 @@ private void prepareEnhancement(HibernateOrmSpec ormDsl, Project project) {
7573
.getConfigurations()
7674
.getByName( sourceSet.getCompileClasspathConfigurationName() );
7775
Set<File> dependencyFiles = compileConfig.getFiles();
78-
Logger logger = project.getLogger();
7976
//noinspection Convert2Lambda
8077
languageCompileTask.doLast(new Action<>() {
8178
@Override
@@ -84,7 +81,7 @@ public void execute(Task t) {
8481
final Method getDestinationDirectory = languageCompileTask.getClass().getMethod("getDestinationDirectory");
8582
final DirectoryProperty classesDirectory = (DirectoryProperty) getDestinationDirectory.invoke(languageCompileTask);
8683
final ClassLoader classLoader = Helper.toClassLoader(classesDirs, dependencyFiles);
87-
EnhancementHelper.enhance(classesDirectory, classLoader, ormDsl, logger, injected.getFileOperations());
84+
EnhancementHelper.enhance(classesDirectory, classLoader, ormDsl);
8885
}
8986
catch (Exception e) {
9087
throw new RuntimeException(e);

tooling/hibernate-gradle-plugin/src/main/java/org/hibernate/orm/tooling/gradle/HibernateOrmSpec.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,42 @@
77
import java.util.Arrays;
88

99
import org.gradle.api.Action;
10+
import org.gradle.api.internal.file.FileOperations;
11+
import org.gradle.api.model.ObjectFactory;
1012
import org.gradle.api.provider.Property;
1113
import org.gradle.api.provider.SetProperty;
12-
import org.gradle.api.tasks.Nested;
14+
import org.gradle.api.tasks.Optional;
1315
import org.gradle.api.tasks.SourceSet;
1416

1517
import org.hibernate.orm.tooling.gradle.enhance.EnhancementSpec;
1618

19+
import javax.inject.Inject;
20+
1721
/**
1822
* Main DSL extension for Hibernate ORM. Available as `project.hibernate`
1923
*/
2024
public abstract class HibernateOrmSpec {
2125
public static final String DSL_NAME = "hibernate";
2226

23-
private boolean enhancementConfigured = false;
24-
2527
public HibernateOrmSpec() {
2628
getUseSameVersion().convention( true );
2729
getSourceSet().convention( SourceSet.MAIN_SOURCE_SET_NAME );
2830
getLanguages().convention( Arrays.asList( "java", "kotlin" ) );
2931
}
3032

33+
@Inject
34+
abstract public FileOperations getFileOperations();
35+
36+
@Inject
37+
abstract protected ObjectFactory getObjectFactory();
38+
39+
3140
/**
3241
* DSL extension for configuring bytecode enhancement. Also acts as the trigger for
3342
* opting into bytecode enhancement
3443
*/
35-
@Nested
36-
abstract public EnhancementSpec getEnhancement();
44+
@Optional
45+
abstract public Property<EnhancementSpec> getEnhancement();
3746

3847
/**
3948
* Should the plugin inject a dependency on the same version of `hibernate-core`
@@ -61,12 +70,8 @@ public HibernateOrmSpec() {
6170
*/
6271
@SuppressWarnings("unused")
6372
public void enhancement(Action<EnhancementSpec> action) {
64-
enhancementConfigured = true;
65-
action.execute( getEnhancement() );
66-
}
67-
68-
69-
public boolean isEnhancementEnabled() {
70-
return enhancementConfigured;
73+
EnhancementSpec spec = getObjectFactory().newInstance( EnhancementSpec.class );
74+
action.execute( spec );
75+
getEnhancement().set( spec );
7176
}
7277
}

tooling/hibernate-gradle-plugin/src/main/java/org/hibernate/orm/tooling/gradle/Injected.java

Lines changed: 0 additions & 14 deletions
This file was deleted.

tooling/hibernate-gradle-plugin/src/main/java/org/hibernate/orm/tooling/gradle/enhance/EnhancementHelper.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.gradle.api.internal.file.FileOperations;
1717
import org.gradle.api.logging.Logger;
1818

19+
import org.gradle.api.logging.Logging;
1920
import org.hibernate.bytecode.enhance.spi.DefaultEnhancementContext;
2021
import org.hibernate.bytecode.enhance.spi.EnhancementContext;
2122
import org.hibernate.bytecode.enhance.spi.Enhancer;
@@ -30,15 +31,16 @@
3031
* @author Steve Ebersole
3132
*/
3233
public class EnhancementHelper {
34+
private static final Logger logger = Logging.getLogger( EnhancementHelper.class);
35+
3336
public static void enhance(
3437
DirectoryProperty classesDirectoryProperty,
3538
ClassLoader classLoader,
36-
HibernateOrmSpec ormDsl,
37-
Logger logger, FileOperations fileOperations) {
39+
HibernateOrmSpec ormDsl) {
3840
final Directory classesDirectory = classesDirectoryProperty.get();
3941
final File classesDir = classesDirectory.getAsFile();
4042

41-
final EnhancementSpec enhancementDsl = ormDsl.getEnhancement();
43+
final EnhancementSpec enhancementDsl = ormDsl.getEnhancement().get();
4244

4345
List<String> classesToEnhance = enhancementDsl.getClassNames().get();
4446

@@ -48,10 +50,10 @@ public static void enhance(
4850
if ( !enhancementDsl.getEnableDirtyTracking().get() ) {
4951
logger.warn( "The 'enableDirtyTracking' configuration is deprecated and will be removed. Set the value to 'true' to get rid of this warning" );
5052
}
51-
final Enhancer enhancer = generateEnhancer( classLoader, ormDsl );
53+
final Enhancer enhancer = generateEnhancer( classLoader, enhancementDsl );
5254

53-
discoverTypes( classesDir, classesDir, enhancer, logger, fileOperations );
54-
doEnhancement( classesDir, classesDir, enhancer, logger, fileOperations, classesToEnhance );
55+
discoverTypes( classesDir, classesDir, enhancer, logger, ormDsl.getFileOperations() );
56+
doEnhancement( classesDir, classesDir, enhancer, logger, ormDsl.getFileOperations(), classesToEnhance );
5557
}
5658

5759
private static void discoverTypes(File classesDir, File dir, Enhancer enhancer, Logger logger, FileOperations fileOperations) {
@@ -136,8 +138,7 @@ private static byte[] doEnhancement(File javaClassFile, String className, Enhanc
136138
}
137139
}
138140

139-
public static Enhancer generateEnhancer(ClassLoader classLoader, HibernateOrmSpec ormDsl) {
140-
final EnhancementSpec enhancementDsl = ormDsl.getEnhancement();
141+
public static Enhancer generateEnhancer(ClassLoader classLoader, EnhancementSpec enhancementDsl) {
141142

142143
final EnhancementContext enhancementContext = new DefaultEnhancementContext() {
143144
@Override

0 commit comments

Comments
 (0)