Skip to content

Commit 47bb890

Browse files
committed
[bugfix] Fix static initialisation order
1 parent 7f04fc9 commit 47bb890

File tree

4 files changed

+45
-52
lines changed

4 files changed

+45
-52
lines changed

extensions/modules/sql/src/main/java/org/exist/xquery/modules/sql/CloseConnectionFunction.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,15 @@
3535
import org.apache.logging.log4j.LogManager;
3636
import org.apache.logging.log4j.Logger;
3737

38-
import org.exist.xquery.BasicFunction;
39-
import org.exist.xquery.FunctionSignature;
40-
import org.exist.xquery.XPathException;
41-
import org.exist.xquery.XQueryContext;
38+
import org.exist.dom.QName;
39+
import org.exist.xquery.*;
4240
import org.exist.xquery.value.*;
4341

4442
import java.sql.Connection;
4543
import java.sql.SQLException;
4644

4745
import static org.exist.xquery.FunctionDSL.*;
48-
import static org.exist.xquery.modules.sql.SQLModule.functionSignature;
46+
import static org.exist.xquery.modules.sql.SQLModule.*;
4947

5048

5149
/**
@@ -102,4 +100,8 @@ public Sequence eval(final Sequence[] args, final Sequence contextSequence) thro
102100
throw new XPathException(this, "Unable to close connection with handle: " + connectionUid + ". " + e.getMessage());
103101
}
104102
}
103+
104+
private static FunctionSignature functionSignature(final String name, final String description, final FunctionReturnSequenceType returnType, final FunctionParameterSequenceType... paramTypes) {
105+
return FunctionDSL.functionSignature(new QName(name, NAMESPACE_URI, PREFIX), description, returnType, paramTypes);
106+
}
105107
}

extensions/modules/sql/src/main/java/org/exist/xquery/modules/sql/ExecuteFunction.java

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,14 @@
2727
import org.exist.dom.memtree.*;
2828
import org.exist.util.XMLReaderPool;
2929
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
30+
import org.exist.xquery.*;
31+
import org.exist.xquery.value.*;
3032
import org.w3c.dom.Element;
3133
import org.w3c.dom.Node;
3234
import org.w3c.dom.NodeList;
3335

3436
import org.exist.Namespaces;
3537
import org.exist.dom.QName;
36-
import org.exist.xquery.BasicFunction;
37-
import org.exist.xquery.ErrorCodes;
38-
import org.exist.xquery.FunctionSignature;
39-
import org.exist.xquery.XPathException;
40-
import org.exist.xquery.XQueryContext;
41-
import org.exist.xquery.value.BooleanValue;
42-
import org.exist.xquery.value.FunctionParameterSequenceType;
43-
import org.exist.xquery.value.IntegerValue;
44-
import org.exist.xquery.value.Sequence;
45-
import org.exist.xquery.value.Type;
4638

4739
import java.io.IOException;
4840
import java.io.PrintStream;
@@ -59,15 +51,15 @@
5951
import java.sql.Timestamp;
6052
import java.sql.Types;
6153

62-
import org.exist.xquery.value.DateTimeValue;
6354
import org.xml.sax.InputSource;
6455
import org.xml.sax.XMLReader;
6556

6657
import javax.annotation.Nullable;
6758

6859
import static java.nio.charset.StandardCharsets.UTF_8;
6960
import static org.exist.xquery.FunctionDSL.*;
70-
import static org.exist.xquery.modules.sql.SQLModule.functionSignatures;
61+
import static org.exist.xquery.modules.sql.SQLModule.NAMESPACE_URI;
62+
import static org.exist.xquery.modules.sql.SQLModule.PREFIX;
7163

7264

7365
/**
@@ -215,15 +207,15 @@ public Sequence eval(final Sequence[] args, final Sequence contextSequence) thro
215207

216208
private void setParametersOnPreparedStatement(final Statement stmt, final Element parametersElement) throws SQLException, XPathException {
217209
final String ns = parametersElement.getNamespaceURI();
218-
if (ns != null && ns.equals(SQLModule.NAMESPACE_URI) && parametersElement.getLocalName().equals(PARAMETERS_ELEMENT_NAME)) {
219-
final NodeList paramElements = parametersElement.getElementsByTagNameNS(SQLModule.NAMESPACE_URI, PARAM_ELEMENT_NAME);
210+
if (ns != null && ns.equals(NAMESPACE_URI) && parametersElement.getLocalName().equals(PARAMETERS_ELEMENT_NAME)) {
211+
final NodeList paramElements = parametersElement.getElementsByTagNameNS(NAMESPACE_URI, PARAM_ELEMENT_NAME);
220212

221213
for (int i = 0; i < paramElements.getLength(); i++) {
222214
final Element param = ((Element) paramElements.item(i));
223215
Node child = param.getFirstChild();
224216

225217
final int sqlType;
226-
final String type = param.getAttributeNS(SQLModule.NAMESPACE_URI, TYPE_ATTRIBUTE_NAME);
218+
final String type = param.getAttributeNS(NAMESPACE_URI, TYPE_ATTRIBUTE_NAME);
227219
if (type != null) {
228220
sqlType = SQLUtils.sqlTypeFromString(type);
229221
} else {
@@ -239,7 +231,7 @@ private void setParametersOnPreparedStatement(final Statement stmt, final Elemen
239231
if (child instanceof Element) {
240232
// check for <sql:null/>
241233
final Element elem = (Element)child;
242-
if ("null".equals(elem.getLocalName()) && SQLModule.NAMESPACE_URI.equals(elem.getNamespaceURI())) {
234+
if ("null".equals(elem.getLocalName()) && NAMESPACE_URI.equals(elem.getNamespaceURI())) {
243235
value = null;
244236
} else {
245237
value = child.getNodeValue();
@@ -280,7 +272,7 @@ private ElementImpl resultAsElement(final boolean makeNodeFromColumnName,
280272

281273
builder.startDocument();
282274

283-
builder.startElement(new QName("result", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null);
275+
builder.startElement(new QName("result", NAMESPACE_URI, PREFIX), null);
284276
builder.addAttribute(new QName("count", null, null), "-1");
285277
builder.addAttribute(new QName("updateCount", null, null), String.valueOf(stmt.getUpdateCount()));
286278

@@ -309,7 +301,7 @@ private ElementImpl resultAsElement(final boolean makeNodeFromColumnName,
309301
final int iColumns = rsmd.getColumnCount();
310302

311303
while (rs.next()) {
312-
builder.startElement(new QName("row", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null);
304+
builder.startElement(new QName("row", NAMESPACE_URI, PREFIX), null);
313305
builder.addAttribute(new QName("index", null, null), String.valueOf(rs.getRow()));
314306

315307
// get each tuple in the row
@@ -330,7 +322,7 @@ private ElementImpl resultAsElement(final boolean makeNodeFromColumnName,
330322
colElement = SQLUtils.escapeXmlAttr(columnName.replace(' ', '_'));
331323
}
332324

333-
builder.startElement(new QName(colElement, SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null);
325+
builder.startElement(new QName(colElement, NAMESPACE_URI, PREFIX), null);
334326

335327
if (!makeNodeFromColumnName || columnName.length() <= 0) {
336328
final String name;
@@ -343,7 +335,7 @@ private ElementImpl resultAsElement(final boolean makeNodeFromColumnName,
343335
builder.addAttribute(new QName("name", null, null), name);
344336
}
345337

346-
builder.addAttribute(new QName(TYPE_ATTRIBUTE_NAME, SQLModule.NAMESPACE_URI, SQLModule.PREFIX), rsmd.getColumnTypeName(i + 1));
338+
builder.addAttribute(new QName(TYPE_ATTRIBUTE_NAME, NAMESPACE_URI, PREFIX), rsmd.getColumnTypeName(i + 1));
347339
builder.addAttribute(new QName(TYPE_ATTRIBUTE_NAME, Namespaces.SCHEMA_NS, "xs"), Type.getTypeName(SQLUtils.sqlTypeToXMLType(rsmd.getColumnType(i + 1))));
348340

349341
//get the content
@@ -354,7 +346,7 @@ private ElementImpl resultAsElement(final boolean makeNodeFromColumnName,
354346

355347
if (rs.wasNull()) {
356348
// Add a null indicator attribute if the value was SQL Null
357-
builder.addAttribute(new QName("null", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), "true");
349+
builder.addAttribute(new QName("null", NAMESPACE_URI, PREFIX), "true");
358350
} else {
359351
try (final Reader charStream = sqlXml.getCharacterStream()) {
360352
final InputSource src = new InputSource(charStream);
@@ -383,7 +375,7 @@ private ElementImpl resultAsElement(final boolean makeNodeFromColumnName,
383375

384376
if (rs.wasNull()) {
385377
// Add a null indicator attribute if the value was SQL Null
386-
builder.addAttribute(new QName("null", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), "true");
378+
builder.addAttribute(new QName("null", NAMESPACE_URI, PREFIX), "true");
387379
} else {
388380
if (colValue != null) {
389381
builder.characters(colValue);
@@ -435,23 +427,23 @@ private ElementImpl sqlExceptionAsElement(final SQLException sqle, final String
435427
final MemTreeBuilder builder = context.getDocumentBuilder();
436428

437429
builder.startDocument();
438-
builder.startElement(new QName("exception", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null);
430+
builder.startElement(new QName("exception", NAMESPACE_URI, PREFIX), null);
439431

440432
final boolean recoverable = sqle instanceof SQLRecoverableException;
441433
builder.addAttribute(new QName("recoverable", null, null), String.valueOf(recoverable));
442434

443-
builder.startElement(new QName("state", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null);
435+
builder.startElement(new QName("state", NAMESPACE_URI, PREFIX), null);
444436
builder.characters(sqle.getSQLState());
445437
builder.endElement();
446438

447-
builder.startElement(new QName("message", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null);
439+
builder.startElement(new QName("message", NAMESPACE_URI, PREFIX), null);
448440
final String state = sqle.getMessage();
449441
if (state != null) {
450442
builder.characters(state);
451443
}
452444
builder.endElement();
453445

454-
builder.startElement(new QName("stack-trace", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null);
446+
builder.startElement(new QName("stack-trace", NAMESPACE_URI, PREFIX), null);
455447
try (final UnsynchronizedByteArrayOutputStream bufStackTrace = new UnsynchronizedByteArrayOutputStream();
456448
final PrintStream ps = new PrintStream(bufStackTrace)) {
457449
sqle.printStackTrace(ps);
@@ -461,25 +453,25 @@ private ElementImpl sqlExceptionAsElement(final SQLException sqle, final String
461453
}
462454
builder.endElement();
463455

464-
builder.startElement(new QName("sql", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null);
456+
builder.startElement(new QName("sql", NAMESPACE_URI, PREFIX), null);
465457
builder.characters(sql);
466458
builder.endElement();
467459

468460
if (parametersElement != null) {
469461
final String ns = parametersElement.getNamespaceURI();
470-
if (ns != null && ns.equals(SQLModule.NAMESPACE_URI) && parametersElement.getLocalName().equals(PARAMETERS_ELEMENT_NAME)) {
471-
final NodeList paramElements = parametersElement.getElementsByTagNameNS(SQLModule.NAMESPACE_URI, PARAM_ELEMENT_NAME);
462+
if (ns != null && ns.equals(NAMESPACE_URI) && parametersElement.getLocalName().equals(PARAMETERS_ELEMENT_NAME)) {
463+
final NodeList paramElements = parametersElement.getElementsByTagNameNS(NAMESPACE_URI, PARAM_ELEMENT_NAME);
472464

473-
builder.startElement(new QName(PARAMETERS_ELEMENT_NAME, SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null);
465+
builder.startElement(new QName(PARAMETERS_ELEMENT_NAME, NAMESPACE_URI, PREFIX), null);
474466

475467
for (int i = 0; i < paramElements.getLength(); i++) {
476468
final Element param = ((Element) paramElements.item(i));
477469
final Node valueNode = param.getFirstChild();
478470
final String value = valueNode != null ? valueNode.getNodeValue() : null;
479-
final String type = param.getAttributeNS(SQLModule.NAMESPACE_URI, TYPE_ATTRIBUTE_NAME);
471+
final String type = param.getAttributeNS(NAMESPACE_URI, TYPE_ATTRIBUTE_NAME);
480472

481-
builder.startElement(new QName(PARAM_ELEMENT_NAME, SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null);
482-
builder.addAttribute(new QName(TYPE_ATTRIBUTE_NAME, SQLModule.NAMESPACE_URI, SQLModule.PREFIX), type);
473+
builder.startElement(new QName(PARAM_ELEMENT_NAME, NAMESPACE_URI, PREFIX), null);
474+
builder.addAttribute(new QName(TYPE_ATTRIBUTE_NAME, NAMESPACE_URI, PREFIX), type);
483475
builder.characters(value);
484476
builder.endElement();
485477
}
@@ -488,7 +480,7 @@ private ElementImpl sqlExceptionAsElement(final SQLException sqle, final String
488480
}
489481
}
490482

491-
builder.startElement(new QName("xquery", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null);
483+
builder.startElement(new QName("xquery", NAMESPACE_URI, PREFIX), null);
492484
builder.addAttribute(new QName("line", null, null), String.valueOf(getLine()));
493485
builder.addAttribute(new QName("column", null, null), String.valueOf(getColumn()));
494486
builder.endElement();
@@ -501,4 +493,8 @@ private ElementImpl sqlExceptionAsElement(final SQLException sqle, final String
501493
context.popDocumentContext();
502494
}
503495
}
496+
497+
private static FunctionSignature[] functionSignatures(final String name, final String description, final FunctionReturnSequenceType returnType, final FunctionParameterSequenceType[][] variableParamTypes) {
498+
return FunctionDSL.functionSignatures(new QName(name, NAMESPACE_URI, PREFIX), description, returnType, variableParamTypes);
499+
}
504500
}

extensions/modules/sql/src/main/java/org/exist/xquery/modules/sql/GetConnectionFunction.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,9 @@
3636
import org.apache.logging.log4j.LogManager;
3737
import org.apache.logging.log4j.Logger;
3838

39+
import org.exist.dom.QName;
3940
import org.exist.util.ParametersExtractor;
40-
import org.exist.xquery.BasicFunction;
41-
import org.exist.xquery.FunctionSignature;
42-
import org.exist.xquery.XPathException;
43-
import org.exist.xquery.XQueryContext;
41+
import org.exist.xquery.*;
4442
import org.exist.xquery.value.FunctionParameterSequenceType;
4543
import org.exist.xquery.value.FunctionReturnSequenceType;
4644
import org.exist.xquery.value.IntegerValue;
@@ -55,7 +53,8 @@
5553
import java.util.Properties;
5654

5755
import static org.exist.xquery.FunctionDSL.*;
58-
import static org.exist.xquery.modules.sql.SQLModule.functionSignatures;
56+
import static org.exist.xquery.modules.sql.SQLModule.NAMESPACE_URI;
57+
import static org.exist.xquery.modules.sql.SQLModule.PREFIX;
5958

6059

6160
/**
@@ -187,4 +186,8 @@ private Connection getConnectionFromPool(final Sequence[] args) throws XPathExce
187186
throw new XPathException(this, "sql:get-connection-from-pool() Cannot retrieve connection from pool: " + poolName, sqle);
188187
}
189188
}
189+
190+
private static FunctionSignature[] functionSignatures(final String name, final String description, final FunctionReturnSequenceType returnType, final FunctionParameterSequenceType[][] variableParamTypes) {
191+
return FunctionDSL.functionSignatures(new QName(name, NAMESPACE_URI, PREFIX), description, returnType, variableParamTypes);
192+
}
190193
}

extensions/modules/sql/src/main/java/org/exist/xquery/modules/sql/SQLModule.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,6 @@ public String getReleaseVersion() {
151151
return RELEASED_IN_VERSION;
152152
}
153153

154-
static FunctionSignature functionSignature(final String name, final String description, final FunctionReturnSequenceType returnType, final FunctionParameterSequenceType... paramTypes) {
155-
return FunctionDSL.functionSignature(new QName(name, NAMESPACE_URI, PREFIX), description, returnType, paramTypes);
156-
}
157-
158-
static FunctionSignature[] functionSignatures(final String name, final String description, final FunctionReturnSequenceType returnType, final FunctionParameterSequenceType[][] variableParamTypes) {
159-
return FunctionDSL.functionSignatures(new QName(name, NAMESPACE_URI, PREFIX), description, returnType, variableParamTypes);
160-
}
161-
162154
/**
163155
* Gets a Connection Pool.
164156
*

0 commit comments

Comments
 (0)