Skip to content

Commit 1d717bf

Browse files
build: more effective Deparser Constructors
Signed-off-by: Andreas Reichel <andreas@manticore-projects.com>
1 parent 8846f67 commit 1d717bf

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/main/java/net/sf/jsqlparser/util/deparser/SelectDeParser.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import net.sf.jsqlparser.statement.select.Values;
4848
import net.sf.jsqlparser.statement.select.WithItem;
4949

50+
import java.lang.reflect.InvocationTargetException;
5051
import java.util.Iterator;
5152
import java.util.List;
5253

@@ -67,6 +68,16 @@ public SelectDeParser(StringBuilder buffer) {
6768
this.expressionVisitor = new ExpressionDeParser(this, buffer);
6869
}
6970

71+
public SelectDeParser(Class<? extends ExpressionDeParser> expressionDeparserClass,
72+
StringBuilder builder) throws NoSuchMethodException, InvocationTargetException,
73+
InstantiationException, IllegalAccessException {
74+
super(builder);
75+
this.expressionVisitor = expressionDeparserClass
76+
.getConstructor(SelectDeParser.class, StringBuilder.class)
77+
.newInstance(this, builder);
78+
}
79+
80+
7081
public SelectDeParser(ExpressionVisitor expressionVisitor, StringBuilder buffer) {
7182
super(buffer);
7283
this.expressionVisitor = expressionVisitor;

src/main/java/net/sf/jsqlparser/util/deparser/StatementDeParser.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010
package net.sf.jsqlparser.util.deparser;
1111

12+
import java.lang.reflect.InvocationTargetException;
1213
import java.util.stream.Collectors;
1314
import net.sf.jsqlparser.statement.Block;
1415
import net.sf.jsqlparser.statement.Commit;
@@ -63,6 +64,22 @@ public class StatementDeParser extends AbstractDeParser<Statement> implements St
6364

6465
private final SelectDeParser selectDeParser;
6566

67+
public StatementDeParser(Class<? extends ExpressionDeParser> expressionDeparserClass,
68+
Class<? extends SelectDeParser> selectDeparserClass, StringBuilder builder)
69+
throws NoSuchMethodException, InvocationTargetException, InstantiationException,
70+
IllegalAccessException {
71+
super(builder);
72+
73+
this.selectDeParser = selectDeparserClass
74+
.getConstructor(Class.class, StringBuilder.class)
75+
.newInstance(expressionDeparserClass, builder);
76+
77+
78+
this.expressionDeParser =
79+
expressionDeparserClass.cast(this.selectDeParser.getExpressionVisitor());
80+
81+
}
82+
6683
public StatementDeParser(StringBuilder buffer) {
6784
this(new ExpressionDeParser(), new SelectDeParser(), buffer);
6885
}

0 commit comments

Comments
 (0)