Skip to content

Commit ea3680f

Browse files
authored
* add workaround to jdk bug https://bugs.openjdk.java.net/browse/JDK-8210649 found via https://issues.apache.org/jira/browse/MCOMPILER-346 add IT test from https://github.com/basil/MCOMPILER-346-mre * bump version as an interface changed a bit but not really someone use it as it was not extensible here... :) Signed-off-by: Olivier Lamy <olamy@apache.org>
1 parent 42c63d0 commit ea3680f

File tree

17 files changed

+53
-34
lines changed

17 files changed

+53
-34
lines changed

plexus-compiler-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.codehaus.plexus</groupId>
77
<artifactId>plexus-compiler</artifactId>
8-
<version>2.10.1-SNAPSHOT</version>
8+
<version>2.11.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>plexus-compiler-api</artifactId>

plexus-compiler-its/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.codehaus.plexus</groupId>
77
<artifactId>plexus-compiler</artifactId>
8-
<version>2.10.1-SNAPSHOT</version>
8+
<version>2.11.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>plexus-compiler-its</artifactId>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit 33fdb68fb6ce2042db7945b873c7b57ee3f65157

plexus-compiler-its/src/main/it/simple-eclipse-compiler/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
<compilerId>eclipse</compilerId>
5656
</configuration>
5757
<dependencies>
58-
<dependency>
58+
<dependency>
5959
<groupId>org.codehaus.plexus</groupId>
6060
<artifactId>plexus-compiler-api</artifactId>
6161
<version>@pom.version@</version>

plexus-compiler-manager/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.codehaus.plexus</groupId>
77
<artifactId>plexus-compiler</artifactId>
8-
<version>2.10.1-SNAPSHOT</version>
8+
<version>2.11.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>plexus-compiler-manager</artifactId>

plexus-compiler-test/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.codehaus.plexus</groupId>
77
<artifactId>plexus-compiler</artifactId>
8-
<version>2.10.1-SNAPSHOT</version>
8+
<version>2.11.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>plexus-compiler-test</artifactId>

plexus-compilers/plexus-compiler-aspectj/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.codehaus.plexus</groupId>
77
<artifactId>plexus-compilers</artifactId>
8-
<version>2.10.1-SNAPSHOT</version>
8+
<version>2.11.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>plexus-compiler-aspectj</artifactId>

plexus-compilers/plexus-compiler-csharp/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.codehaus.plexus</groupId>
77
<artifactId>plexus-compilers</artifactId>
8-
<version>2.10.1-SNAPSHOT</version>
8+
<version>2.11.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>plexus-compiler-csharp</artifactId>

plexus-compilers/plexus-compiler-eclipse/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.codehaus.plexus</groupId>
77
<artifactId>plexus-compilers</artifactId>
8-
<version>2.10.1-SNAPSHOT</version>
8+
<version>2.11.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>plexus-compiler-eclipse</artifactId>

plexus-compilers/plexus-compiler-j2objc/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.codehaus.plexus</groupId>
77
<artifactId>plexus-compilers</artifactId>
8-
<version>2.10.1-SNAPSHOT</version>
8+
<version>2.11.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>plexus-compiler-j2objc</artifactId>

plexus-compilers/plexus-compiler-javac-errorprone/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.codehaus.plexus</groupId>
77
<artifactId>plexus-compilers</artifactId>
8-
<version>2.10.1-SNAPSHOT</version>
8+
<version>2.11.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>plexus-compiler-javac-errorprone</artifactId>

plexus-compilers/plexus-compiler-javac/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.codehaus.plexus</groupId>
77
<artifactId>plexus-compilers</artifactId>
8-
<version>2.10.1-SNAPSHOT</version>
8+
<version>2.11.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>plexus-compiler-javac</artifactId>

plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/InProcessCompiler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
import org.codehaus.plexus.compiler.CompilerConfiguration;
44
import org.codehaus.plexus.compiler.CompilerException;
55
import org.codehaus.plexus.compiler.CompilerResult;
6+
import org.codehaus.plexus.logging.LogEnabled;
67

7-
public interface InProcessCompiler {
8+
public interface InProcessCompiler extends LogEnabled {
89

910
CompilerResult compileInProcess(String[] args, final CompilerConfiguration config, String[] sourceFiles)
1011
throws CompilerException;

plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
import org.codehaus.plexus.compiler.CompilerOutputStyle;
7171
import org.codehaus.plexus.compiler.CompilerResult;
7272
import org.codehaus.plexus.component.annotations.Component;
73+
import org.codehaus.plexus.component.annotations.Requirement;
7374
import org.codehaus.plexus.util.FileUtils;
7475
import org.codehaus.plexus.util.Os;
7576
import org.codehaus.plexus.util.StringUtils;
@@ -106,6 +107,9 @@ public class JavacCompiler
106107

107108
private List<Class<?>> javaccClasses = new CopyOnWriteArrayList<>();
108109

110+
@Requirement
111+
private InProcessCompiler inProcessCompiler;
112+
109113
// ----------------------------------------------------------------------
110114
//
111115
// ----------------------------------------------------------------------
@@ -186,10 +190,10 @@ public CompilerResult performCompile( CompilerConfiguration config )
186190
return result;
187191
}
188192

189-
protected InProcessCompiler inProcessCompiler()
190-
{
191-
return new org.codehaus.plexus.compiler.javac.JavaxToolsCompiler();
192-
}
193+
protected InProcessCompiler inProcessCompiler()
194+
{
195+
return inProcessCompiler;
196+
}
193197

194198
protected static boolean isJava16()
195199
{

plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavaxToolsCompiler.java

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
* under the License.
1919
*/
2020

21-
import org.codehaus.plexus.compiler.Compiler;
2221
import org.codehaus.plexus.compiler.CompilerConfiguration;
2322
import org.codehaus.plexus.compiler.CompilerMessage;
2423
import org.codehaus.plexus.compiler.CompilerException;
2524
import org.codehaus.plexus.compiler.CompilerResult;
2625
import org.codehaus.plexus.component.annotations.Component;
26+
import org.codehaus.plexus.logging.AbstractLogEnabled;
2727

2828
import javax.tools.Diagnostic;
2929
import javax.tools.DiagnosticCollector;
@@ -36,15 +36,16 @@
3636
import java.util.Arrays;
3737
import java.util.Collections;
3838
import java.util.List;
39+
import java.util.Locale;
3940
import java.util.concurrent.CopyOnWriteArrayList;
4041

4142
/**
4243
* @author Olivier Lamy
4344
* @author <a href="mailto:david.lloyd@redhat.com">David M. Lloyd</a>
4445
* @since 2.0
4546
*/
46-
@Component( role = Compiler.class )
47-
public class JavaxToolsCompiler implements InProcessCompiler
47+
@Component( role = InProcessCompiler.class )
48+
public class JavaxToolsCompiler extends AbstractLogEnabled implements InProcessCompiler
4849
{
4950
/**
5051
* is that thread safe ???
@@ -57,7 +58,7 @@ protected JavaCompiler newJavaCompiler()
5758
return ToolProvider.getSystemJavaCompiler();
5859
}
5960

60-
private List<JavaCompiler> JAVA_COMPILERS = new CopyOnWriteArrayList<>();
61+
private final List<JavaCompiler> JAVA_COMPILERS = new CopyOnWriteArrayList<>();
6162

6263
private JavaCompiler getJavaCompiler( CompilerConfiguration compilerConfiguration )
6364
{
@@ -111,14 +112,14 @@ public CompilerResult compileInProcess( String[] args, final CompilerConfigurati
111112
CompilerMessage.Kind.ERROR );
112113
return new CompilerResult( false, Collections.singletonList( message ) );
113114
}
114-
final String sourceEncoding = config.getSourceEncoding();
115-
final Charset sourceCharset = sourceEncoding == null ? null : Charset.forName( sourceEncoding );
116-
final DiagnosticCollector<JavaFileObject> collector = new DiagnosticCollector<>();
117-
try ( final StandardJavaFileManager standardFileManager =
115+
String sourceEncoding = config.getSourceEncoding();
116+
Charset sourceCharset = sourceEncoding == null ? null : Charset.forName( sourceEncoding );
117+
DiagnosticCollector<JavaFileObject> collector = new DiagnosticCollector<>();
118+
try ( StandardJavaFileManager standardFileManager =
118119
compiler.getStandardFileManager( collector, null, sourceCharset ) )
119120
{
120121

121-
final Iterable<? extends JavaFileObject> fileObjects =
122+
Iterable<? extends JavaFileObject> fileObjects =
122123
standardFileManager.getJavaFileObjectsFromStrings( Arrays.asList( sourceFiles ) );
123124

124125
/*(Writer out,
@@ -130,14 +131,27 @@ public CompilerResult compileInProcess( String[] args, final CompilerConfigurati
130131

131132
List<String> arguments = Arrays.asList( args );
132133

133-
final JavaCompiler.CompilationTask task =
134+
JavaCompiler.CompilationTask task =
134135
compiler.getTask( null, standardFileManager, collector, arguments, null, fileObjects );
135-
final Boolean result = task.call();
136-
final ArrayList<CompilerMessage> compilerMsgs = new ArrayList<>();
136+
Boolean result = task.call();
137+
List<CompilerMessage> compilerMsgs = new ArrayList<>();
138+
137139
for ( Diagnostic<? extends JavaFileObject> diagnostic : collector.getDiagnostics() )
138140
{
139-
CompilerMessage.Kind kind = convertKind(diagnostic);
140-
String baseMessage = diagnostic.getMessage( null );
141+
CompilerMessage.Kind kind = convertKind( diagnostic );
142+
143+
String baseMessage;
144+
try
145+
{
146+
baseMessage = diagnostic.getMessage( Locale.getDefault() );
147+
}
148+
catch ( AssertionError e )
149+
{
150+
// workaround for https://bugs.openjdk.java.net/browse/JDK-8210649
151+
getLogger().debug( "Ignore Issue get JavaCompiler Diagnostic message (see https://bugs.openjdk.java.net/browse/JDK-8210649):" + e.getMessage(), e );
152+
// in this case we try to replace the baseMessage with toString (hoping this does not throw a new exception..
153+
baseMessage = diagnostic.toString();
154+
}
141155
if ( baseMessage == null )
142156
{
143157
continue;
@@ -185,7 +199,6 @@ public CompilerResult compileInProcess( String[] args, final CompilerConfigurati
185199
finally
186200
{
187201
releaseJavaCompiler( compiler, config );
188-
189202
}
190203
}
191204

plexus-compilers/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.codehaus.plexus</groupId>
77
<artifactId>plexus-compiler</artifactId>
8-
<version>2.10.1-SNAPSHOT</version>
8+
<version>2.11.0-SNAPSHOT</version>
99
</parent>
1010

1111
<artifactId>plexus-compilers</artifactId>

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</parent>
1111

1212
<artifactId>plexus-compiler</artifactId>
13-
<version>2.10.1-SNAPSHOT</version>
13+
<version>2.11.0-SNAPSHOT</version>
1414
<packaging>pom</packaging>
1515

1616
<name>Plexus Compiler</name>
@@ -45,7 +45,7 @@
4545
<scm.url>scm:git:git@github.com:codehaus-plexus/plexus-compiler.git</scm.url>
4646
<javaVersion>11</javaVersion>
4747
<redirectTestOutputToFile>true</redirectTestOutputToFile>
48-
<project.build.outputTimestamp>2022-02-08T11:49:09Z</project.build.outputTimestamp>
48+
<project.build.outputTimestamp>2022-03-06T00:54:21Z</project.build.outputTimestamp>
4949
<jupiter.version>5.8.2</jupiter.version>
5050
<aspectj.version>1.9.7.M3</aspectj.version>
5151
<errorprone.version>2.11.0</errorprone.version>

0 commit comments

Comments
 (0)