-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
8u45
-
x86_64
-
windows_7
FULL PRODUCT VERSION :
NOTE THAT ECLIPSE IS USING 1.8.0_05, but here is the output requested:
C:\>java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Windows 7 Enterprise
Service Pack 1
EXTRA RELEVANT SYSTEM CONFIGURATION :
Error occurred in Eclipse IDE:
Spring Tool Suite
Version: 3.6.3.SR1
Build Id: 201501121239
Platform: Eclipse Luna SR1 (4.4.1)
A DESCRIPTION OF THE PROBLEM :
I am entering this bug report because the compiler error message asked me to.
When I replaced an anonymous inner class:
protected static final String SELECT_RDR_COLUMNS = "SELECT " + getColumnList(new IColumnFormatter() {
@Override
public String formatColumn(final RdrEntryColumn column) {
return "e." + column.name();
}
});
with (an attempt at) a lambda expression:
protected static final String SELECT_RDR_COLUMNS = "SELECT " + getColumnList(
(RdrEntryColumn column) -> "e." + column.name()
);
the compiler gave me this:
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
An exception has occurred in the compiler (1.8.0_05). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError: java.lang.NullPointerException
at com.sun.tools.javac.code.Symbol$VarSymbol.getConstValue(Symbol.java:1261)
at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1061)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:846)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:665)
at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4305)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4215)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4149)
at com.sun.tools.javac.comp.Attr.attrib(Attr.java:4124)
at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1251)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:904)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:863)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:554)
at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:161)
at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:605)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: java.lang.NullPointerException
at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1051)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:846)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:665)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:681)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2300)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:372)
at com.sun.tools.javac.comp.DeferredAttr$2.complete(DeferredAttr.java:265)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:231)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:218)
at com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:976)
at com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:822)
at com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:733)
at com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:831)
at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:578)
at com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1418)
at com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1597)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1668)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1641)
at com.sun.tools.javac.comp.Resolve.findFun(Resolve.java:1804)
at com.sun.tools.javac.comp.Resolve$8.doLookup(Resolve.java:2365)
at com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3056)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3307)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3292)
at com.sun.tools.javac.comp.Resolve.resolveMethod(Resolve.java:2361)
at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:3151)
at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2005)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1828)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1459)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:645)
at com.sun.tools.javac.comp.Attr.visitBinary(Attr.java:3030)
at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1779)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:638)
at com.sun.tools.javac.comp.Attr.attribLazyConstantValue(Attr.java:780)
at com.sun.tools.javac.code.Symbol$VarSymbol$2.call(Symbol.java:1227)
at com.sun.tools.javac.code.Symbol$VarSymbol.getConstValue(Symbol.java:1259)
... 43 more
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
Failure executing javac, but could not parse the error:
An exception has occurred in the compiler (1.8.0_05). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError: java.lang.NullPointerException
at com.sun.tools.javac.code.Symbol$VarSymbol.getConstValue(Symbol.java:1261)
at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1061)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:846)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:665)
at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4305)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4215)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4149)
at com.sun.tools.javac.comp.Attr.attrib(Attr.java:4124)
at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1251)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:904)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:863)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:554)
at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:161)
at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:605)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: java.lang.NullPointerException
at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1051)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:846)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:665)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:681)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2300)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:372)
at com.sun.tools.javac.comp.DeferredAttr$2.complete(DeferredAttr.java:265)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:231)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:218)
at com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:976)
at com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:822)
at com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:733)
at com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:831)
at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:578)
at com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1418)
at com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1597)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1668)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1641)
at com.sun.tools.javac.comp.Resolve.findFun(Resolve.java:1804)
at com.sun.tools.javac.comp.Resolve$8.doLookup(Resolve.java:2365)
at com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3056)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3307)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3292)
at com.sun.tools.javac.comp.Resolve.resolveMethod(Resolve.java:2361)
at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:3151)
at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2005)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1828)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1459)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:645)
at com.sun.tools.javac.comp.Attr.visitBinary(Attr.java:3030)
at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1779)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:638)
at com.sun.tools.javac.comp.Attr.attribLazyConstantValue(Attr.java:780)
at com.sun.tools.javac.code.Symbol$VarSymbol$2.call(Symbol.java:1227)
at com.sun.tools.javac.code.Symbol$VarSymbol.getConstValue(Symbol.java:1259)
... 43 more
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 41 seconds
[INFO] Finished at: Mon May 04 14:51:06 EDT 2015
[INFO] Final Memory: 108M/721M
[INFO] ------------------------------------------------------------------------
When i simplified the lambda expression to this:
*/
protected static final String SELECT_RDR_COLUMNS = "SELECT " +
getColumnList(column -> "e." + column.name());
the compiler went into a loop:
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError
at com.sun.tools.javac.comp.Attr.lambdaEnv(Attr.java:2622)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2292)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.
etc. until StackOverflowError
ADDITIONAL REGRESSION INFORMATION:
NOTE THAT ECLIPSE IS USING 1.8.0_05, but here is the output requested:
C:\>java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Just run a build in Eclipse.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Either a clean build or an error message telling me what is wrong with the attempt at a lambda expression
ACTUAL -
The javac choke show under Description.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
See Description
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
It is not possible to include compilable Java source code because the bug is in javac which failed while trying to compile it.
THE PARENT CLASS, RdrEntryDao, CONTAINS THE FOLLOWING:
protected static String getColumnList(final IColumnFormatter formatter) {
StringBuilder builder = new StringBuilder();
boolean first = true;
for (RdrEntryColumn column : RdrEntryColumn.values()) {
if (first) {
first = false;
} else {
builder.append(", ");
}
builder.append(formatter.formatColumn(column));
}
return builder.toString();
}
protected interface IColumnFormatter {
String formatColumn(RdrEntryColumn column);
}
The RdrEntryColumn class is as follows:
public enum RdrEntryColumn {
/** The GUID. */
C_GUID(1),
/** The PROCESSED TIME. */
C_PROCESSED_TIME(2),
/** The VERB. */
C_VERB(3),
/** The NOUN. */
C_NOUN(4),
/** The SOURCE_FILTER_VALUE. */
C_SOURCE_FILTER_VALUE(5),
/** The MESSAGE_ID. */
C_MESSAGE_ID(6),
/**
* The column's position.
*/
private final int position;
/**
* Constructor for the enums.
*
* @param position the position
*/
RdrEntryColumn(final int position) {
this.position = position;
}
/**
* Returns column's position.
* @return column's position.
*/
public int getPosition() {
return position;
}
}
The child class, RdrEntryX7Dao, contains the following:
protected static final String SELECT_RDR_COLUMNS = "SELECT " + getColumnList(
(RdrEntryColumn column) -> "e." + column.name()
);
private static final String SELECT_ENTRY_BY_MESSAGE_ID_S3 = SELECT_RDR_COLUMNS
+ " FROM RDR_ENTRY e "
+ " WHERE e." + RdrEntryColumn.C_MESSAGE_ID + " = ?";
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
I went back to using the anonymous inner class and gave up on trying to use the lambda expression instead.
NOTE THAT ECLIPSE IS USING 1.8.0_05, but here is the output requested:
C:\>java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Windows 7 Enterprise
Service Pack 1
EXTRA RELEVANT SYSTEM CONFIGURATION :
Error occurred in Eclipse IDE:
Spring Tool Suite
Version: 3.6.3.SR1
Build Id: 201501121239
Platform: Eclipse Luna SR1 (4.4.1)
A DESCRIPTION OF THE PROBLEM :
I am entering this bug report because the compiler error message asked me to.
When I replaced an anonymous inner class:
protected static final String SELECT_RDR_COLUMNS = "SELECT " + getColumnList(new IColumnFormatter() {
@Override
public String formatColumn(final RdrEntryColumn column) {
return "e." + column.name();
}
});
with (an attempt at) a lambda expression:
protected static final String SELECT_RDR_COLUMNS = "SELECT " + getColumnList(
(RdrEntryColumn column) -> "e." + column.name()
);
the compiler gave me this:
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
An exception has occurred in the compiler (1.8.0_05). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError: java.lang.NullPointerException
at com.sun.tools.javac.code.Symbol$VarSymbol.getConstValue(Symbol.java:1261)
at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1061)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:846)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:665)
at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4305)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4215)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4149)
at com.sun.tools.javac.comp.Attr.attrib(Attr.java:4124)
at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1251)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:904)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:863)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:554)
at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:161)
at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:605)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: java.lang.NullPointerException
at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1051)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:846)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:665)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:681)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2300)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:372)
at com.sun.tools.javac.comp.DeferredAttr$2.complete(DeferredAttr.java:265)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:231)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:218)
at com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:976)
at com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:822)
at com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:733)
at com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:831)
at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:578)
at com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1418)
at com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1597)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1668)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1641)
at com.sun.tools.javac.comp.Resolve.findFun(Resolve.java:1804)
at com.sun.tools.javac.comp.Resolve$8.doLookup(Resolve.java:2365)
at com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3056)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3307)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3292)
at com.sun.tools.javac.comp.Resolve.resolveMethod(Resolve.java:2361)
at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:3151)
at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2005)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1828)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1459)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:645)
at com.sun.tools.javac.comp.Attr.visitBinary(Attr.java:3030)
at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1779)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:638)
at com.sun.tools.javac.comp.Attr.attribLazyConstantValue(Attr.java:780)
at com.sun.tools.javac.code.Symbol$VarSymbol$2.call(Symbol.java:1227)
at com.sun.tools.javac.code.Symbol$VarSymbol.getConstValue(Symbol.java:1259)
... 43 more
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
Failure executing javac, but could not parse the error:
An exception has occurred in the compiler (1.8.0_05). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError: java.lang.NullPointerException
at com.sun.tools.javac.code.Symbol$VarSymbol.getConstValue(Symbol.java:1261)
at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1061)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:846)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:665)
at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:4305)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4215)
at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4149)
at com.sun.tools.javac.comp.Attr.attrib(Attr.java:4124)
at com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1251)
at com.sun.tools.javac.main.JavaCompiler.compile2(JavaCompiler.java:904)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:863)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:554)
at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:161)
at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:605)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: java.lang.NullPointerException
at com.sun.tools.javac.comp.Attr.visitVarDef(Attr.java:1051)
at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:846)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribStat(Attr.java:665)
at com.sun.tools.javac.comp.Attr.attribStats(Attr.java:681)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2300)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:372)
at com.sun.tools.javac.comp.DeferredAttr$2.complete(DeferredAttr.java:265)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:231)
at com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:218)
at com.sun.tools.javac.comp.Resolve$MethodResultInfo.check(Resolve.java:976)
at com.sun.tools.javac.comp.Resolve$4.checkArg(Resolve.java:822)
at com.sun.tools.javac.comp.Resolve$AbstractMethodCheck.argumentsAcceptable(Resolve.java:733)
at com.sun.tools.javac.comp.Resolve$4.argumentsAcceptable(Resolve.java:831)
at com.sun.tools.javac.comp.Resolve.rawInstantiate(Resolve.java:578)
at com.sun.tools.javac.comp.Resolve.selectBest(Resolve.java:1418)
at com.sun.tools.javac.comp.Resolve.findMethodInScope(Resolve.java:1597)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1668)
at com.sun.tools.javac.comp.Resolve.findMethod(Resolve.java:1641)
at com.sun.tools.javac.comp.Resolve.findFun(Resolve.java:1804)
at com.sun.tools.javac.comp.Resolve$8.doLookup(Resolve.java:2365)
at com.sun.tools.javac.comp.Resolve$BasicLookupHelper.lookup(Resolve.java:3056)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3307)
at com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3292)
at com.sun.tools.javac.comp.Resolve.resolveMethod(Resolve.java:2361)
at com.sun.tools.javac.comp.Attr.visitIdent(Attr.java:3151)
at com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2005)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1828)
at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1459)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:645)
at com.sun.tools.javac.comp.Attr.visitBinary(Attr.java:3030)
at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1779)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:638)
at com.sun.tools.javac.comp.Attr.attribLazyConstantValue(Attr.java:780)
at com.sun.tools.javac.code.Symbol$VarSymbol$2.call(Symbol.java:1227)
at com.sun.tools.javac.code.Symbol$VarSymbol.getConstValue(Symbol.java:1259)
... 43 more
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 41 seconds
[INFO] Finished at: Mon May 04 14:51:06 EDT 2015
[INFO] Final Memory: 108M/721M
[INFO] ------------------------------------------------------------------------
When i simplified the lambda expression to this:
*/
protected static final String SELECT_RDR_COLUMNS = "SELECT " +
getColumnList(column -> "e." + column.name());
the compiler went into a loop:
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError
at com.sun.tools.javac.comp.Attr.lambdaEnv(Attr.java:2622)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2292)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1618)
at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:596)
at com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2417)
at com.sun.tools.javac.tree.
etc. until StackOverflowError
ADDITIONAL REGRESSION INFORMATION:
NOTE THAT ECLIPSE IS USING 1.8.0_05, but here is the output requested:
C:\>java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Just run a build in Eclipse.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Either a clean build or an error message telling me what is wrong with the attempt at a lambda expression
ACTUAL -
The javac choke show under Description.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
See Description
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
It is not possible to include compilable Java source code because the bug is in javac which failed while trying to compile it.
THE PARENT CLASS, RdrEntryDao, CONTAINS THE FOLLOWING:
protected static String getColumnList(final IColumnFormatter formatter) {
StringBuilder builder = new StringBuilder();
boolean first = true;
for (RdrEntryColumn column : RdrEntryColumn.values()) {
if (first) {
first = false;
} else {
builder.append(", ");
}
builder.append(formatter.formatColumn(column));
}
return builder.toString();
}
protected interface IColumnFormatter {
String formatColumn(RdrEntryColumn column);
}
The RdrEntryColumn class is as follows:
public enum RdrEntryColumn {
/** The GUID. */
C_GUID(1),
/** The PROCESSED TIME. */
C_PROCESSED_TIME(2),
/** The VERB. */
C_VERB(3),
/** The NOUN. */
C_NOUN(4),
/** The SOURCE_FILTER_VALUE. */
C_SOURCE_FILTER_VALUE(5),
/** The MESSAGE_ID. */
C_MESSAGE_ID(6),
/**
* The column's position.
*/
private final int position;
/**
* Constructor for the enums.
*
* @param position the position
*/
RdrEntryColumn(final int position) {
this.position = position;
}
/**
* Returns column's position.
* @return column's position.
*/
public int getPosition() {
return position;
}
}
The child class, RdrEntryX7Dao, contains the following:
protected static final String SELECT_RDR_COLUMNS = "SELECT " + getColumnList(
(RdrEntryColumn column) -> "e." + column.name()
);
private static final String SELECT_ENTRY_BY_MESSAGE_ID_S3 = SELECT_RDR_COLUMNS
+ " FROM RDR_ENTRY e "
+ " WHERE e." + RdrEntryColumn.C_MESSAGE_ID + " = ?";
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
I went back to using the anonymous inner class and gave up on trying to use the lambda expression instead.
- duplicates
-
JDK-8145181 Compile Failure with Stream processing and String Concatenation
-
- Closed
-