Skip to content

Commit 436bc79

Browse files
committed
HHH-PENDING build(local plugins): make xjc plugin cache compatible
Description: XjcListenerImpl use Logger directly instead of project.getLogger() XjcTask refactor to make an abstract class and receive inputs and outputs injected
1 parent 5cd8623 commit 436bc79

File tree

2 files changed

+26
-48
lines changed

2 files changed

+26
-48
lines changed

local-build-plugins/src/main/java/org/hibernate/build/xjc/XjcListenerImpl.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
package org.hibernate.build.xjc;
66

77
import com.sun.tools.xjc.XJCListener;
8-
import org.gradle.api.Project;
8+
import org.gradle.api.logging.Logger;
99
import org.xml.sax.SAXParseException;
1010

1111
/**
@@ -15,12 +15,12 @@
1515
*/
1616
public class XjcListenerImpl extends XJCListener {
1717
private final String schemaName;
18-
private final Project project;
18+
private final Logger logger;
1919
private boolean hadErrors;
2020

21-
public XjcListenerImpl(String schemaName, Project project) {
21+
public XjcListenerImpl(String schemaName, Logger logger) {
2222
this.schemaName = schemaName;
23-
this.project = project;
23+
this.logger = logger;
2424
}
2525

2626
public boolean hadErrors() {
@@ -29,33 +29,33 @@ public boolean hadErrors() {
2929

3030
@Override
3131
public void generatedFile(String fileName, int current, int total) {
32-
project.getLogger().info( "XJC generated file ({}) : {}", schemaName, fileName );
32+
logger.info( "XJC generated file ({}) : {}", schemaName, fileName );
3333
}
3434

3535
@Override
3636
public void message(String msg) {
37-
project.getLogger().info( "XJC message ({}) : {}", schemaName, msg );
37+
logger.info( "XJC message ({}) : {}", schemaName, msg );
3838
}
3939

4040
@Override
4141
public void info(SAXParseException exception) {
42-
project.getLogger().info( "XJC info ({})", schemaName, exception );
42+
logger.info( "XJC info ({})", schemaName, exception );
4343
}
4444

4545
@Override
4646
public void warning(SAXParseException exception) {
47-
project.getLogger().warn( "XJC warning ({})",schemaName, exception );
47+
logger.warn( "XJC warning ({})",schemaName, exception );
4848
}
4949

5050
@Override
5151
public void error(SAXParseException exception) {
5252
hadErrors = true;
53-
project.getLogger().error( "XJC error ({})", schemaName, exception );
53+
logger.error( "XJC error ({})", schemaName, exception );
5454
}
5555

5656
@Override
5757
public void fatalError(SAXParseException exception) {
5858
hadErrors = true;
59-
project.getLogger().error( "XJC fatal error ({})", schemaName, exception );
59+
logger.error( "XJC fatal error ({})", schemaName, exception );
6060
}
6161
}

local-build-plugins/src/main/java/org/hibernate/build/xjc/XjcTask.java

Lines changed: 16 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515
import org.gradle.api.tasks.Input;
1616
import org.gradle.api.tasks.InputFile;
1717
import org.gradle.api.tasks.Internal;
18+
import org.gradle.api.tasks.Optional;
1819
import org.gradle.api.tasks.OutputDirectory;
1920
import org.gradle.api.tasks.PathSensitive;
2021
import org.gradle.api.tasks.PathSensitivity;
2122
import org.gradle.api.tasks.TaskAction;
2223

24+
import javax.inject.Inject;
2325
import java.util.ArrayList;
2426
import java.util.Collections;
2527
import java.util.Set;
@@ -30,57 +32,33 @@
3032
* @author Steve Ebersole
3133
*/
3234
@CacheableTask
33-
public class XjcTask extends DefaultTask {
34-
private final Property<String> schemaName;
35-
private final DirectoryProperty outputDirectory;
36-
private final RegularFileProperty xsdFile;
37-
private final RegularFileProperty xjcBindingFile;
38-
private final SetProperty<String> xjcPlugins;
35+
public abstract class XjcTask extends DefaultTask {
3936

37+
@Inject
4038
public XjcTask() {
41-
schemaName = getProject().getObjects().property( String.class );
42-
43-
xsdFile = getProject().getObjects().fileProperty();
44-
xjcBindingFile = getProject().getObjects().fileProperty();
45-
xjcPlugins = getProject().getObjects().setProperty( String.class );
46-
47-
outputDirectory = getProject().getObjects().directoryProperty();
48-
49-
schemaName.convention( xsdFile.map( regularFile -> regularFile.getAsFile().getName() ) );
5039
}
5140

5241
@Internal
53-
public Property<String> getSchemaName() {
54-
return schemaName;
55-
}
42+
public abstract Property<String> getSchemaName();
5643

5744
@InputFile
5845
@PathSensitive(PathSensitivity.RELATIVE)
59-
public RegularFileProperty getXsdFile() {
60-
return xsdFile;
61-
}
46+
public abstract RegularFileProperty getXsdFile();
6247

48+
@Optional
6349
@InputFile
6450
@PathSensitive(PathSensitivity.RELATIVE)
65-
public RegularFileProperty getXjcBindingFile() {
66-
return xjcBindingFile;
67-
}
51+
public abstract RegularFileProperty getXjcBindingFile();
6852

6953
@Input
70-
public SetProperty<String> getXjcPlugins() {
71-
return xjcPlugins;
72-
}
54+
public abstract SetProperty<String> getXjcPlugins();
7355

7456
@OutputDirectory
75-
public DirectoryProperty getOutputDirectory() {
76-
return outputDirectory;
77-
}
57+
public abstract DirectoryProperty getOutputDirectory();
7858

7959
@TaskAction
8060
public void generateJaxbBindings() {
81-
getProject().delete( outputDirectory.get().getAsFileTree() );
82-
83-
final XjcListenerImpl listener = new XjcListenerImpl( schemaName.get(), getProject() );
61+
final XjcListenerImpl listener = new XjcListenerImpl( getSchemaName().get(), getLogger() );
8462
final String[] args = buildXjcArgs();
8563

8664
try {
@@ -94,23 +72,23 @@ public void generateJaxbBindings() {
9472
private String[] buildXjcArgs() {
9573
final ArrayList<String> argsList = new ArrayList<>();
9674

97-
Collections.addAll( argsList, "-d", outputDirectory.get().getAsFile().getAbsolutePath() );
98-
Collections.addAll( argsList, "-b", xjcBindingFile.get().getAsFile().getAbsolutePath());
75+
Collections.addAll( argsList, "-d", getOutputDirectory().get().getAsFile().getAbsolutePath() );
76+
Collections.addAll( argsList, "-b", getXjcBindingFile().get().getAsFile().getAbsolutePath());
9977

10078
argsList.add( "-extension" );
10179
argsList.add( "-no-header" );
10280
argsList.add( "-npa" );
10381

104-
if ( xjcPlugins.isPresent() ) {
105-
final Set<String> xjcPluginsToEnable = xjcPlugins.get();
82+
if ( getXjcPlugins().isPresent() ) {
83+
final Set<String> xjcPluginsToEnable = getXjcPlugins().get();
10684
if ( !xjcPluginsToEnable.isEmpty() ) {
10785
xjcPluginsToEnable.forEach( (ext) -> {
10886
argsList.add( "-X" + ext );
10987
} );
11088
}
11189
}
11290

113-
argsList.add( xsdFile.get().getAsFile().getAbsolutePath() );
91+
argsList.add( getXsdFile().get().getAsFile().getAbsolutePath() );
11492

11593
return argsList.toArray( new String[0] );
11694
}

0 commit comments

Comments
 (0)