Minors.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7694fbe7 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7694fbe7 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7694fbe7 Branch: refs/heads/ignite-3716 Commit: 7694fbe72c6edca9d1e0dedbf285ed0065a86eaf Parents: cc8f1e9 Author: vozerov-gridgain <[email protected]> Authored: Tue Aug 23 12:13:36 2016 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Tue Aug 23 12:13:36 2016 +0300 ---------------------------------------------------------------------- .../processors/odbc/escape/OdbcParser.java | 109 ++++++++++--------- .../OdbcScalarFunctionEscapeSequenceTest.java | 5 +- 2 files changed, 59 insertions(+), 55 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/7694fbe7/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcParser.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcParser.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcParser.java index 3d5eff61..f4d822a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcParser.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/escape/OdbcParser.java @@ -116,6 +116,9 @@ public class OdbcParser { curPos++; } + if (openPos != -1) + throw new IgniteException("Malformed escape sequence (closing curly brace missing): " + text); + if (curPos > plainPos) res.append(text, plainPos, curPos); @@ -123,37 +126,6 @@ public class OdbcParser { } /** - * Append nested results. - * - * @param text Original text. - * @param startPos Start position. - * @param endPos End position. - * @param nestedRess Nested results. - * @return Result. - */ - private static String appendNested(String text, int startPos, int endPos, LinkedList<ParseResult> nestedRess) { - StringBuilder res = new StringBuilder(); - - int curPos = startPos; - - for (ParseResult nestedRes : nestedRess) { - // Append text between current position and replace. - res.append(text, curPos, nestedRes.originalStart); - - // Append replaced text. - res.append(nestedRes.res); - - // Advance position. - curPos = nestedRes.originalStart + nestedRes.originalLen; - } - - // Append remainder. - res.append(text, curPos, endPos); - - return res.toString(); - } - - /** * Parse concrete expression. * * @param text Text. @@ -196,43 +168,48 @@ public class OdbcParser { } /** - * Perform "substring" using start position and length. + * Parse concrete expression. * * @param text Text. * @param startPos Start position. * @param len Length. - * @return Substring. + * @return Parsed expression. */ - private static String substring(String text, int startPos, int len) { + private static String parseScalarExpression(String text, int startPos, int len) { assert validSubstring(text, startPos, len); - return text.substring(startPos, startPos + len); + return substring(text, startPos + 3, len - 3).trim(); } /** - * Check whether substring is valid. + * Append nested results. * - * @param text Substring. + * @param text Original text. * @param startPos Start position. - * @param len Length. - * @return {@code True} if valid. + * @param endPos End position. + * @param nestedRess Nested results. + * @return Result. */ - private static boolean validSubstring(String text, int startPos, int len) { - return text != null && startPos + len <= text.length(); - } + private static String appendNested(String text, int startPos, int endPos, LinkedList<ParseResult> nestedRess) { + StringBuilder res = new StringBuilder(); - /** - * Parse concrete expression. - * - * @param text Text. - * @param startPos Start position. - * @param len Length. - * @return Parsed expression. - */ - private static String parseScalarExpression(String text, int startPos, int len) { - assert validSubstring(text, startPos, len); + int curPos = startPos; - return substring(text, startPos + 3, len - 3).trim(); + for (ParseResult nestedRes : nestedRess) { + // Append text between current position and replace. + res.append(text, curPos, nestedRes.originalStart); + + // Append replaced text. + res.append(nestedRes.res); + + // Advance position. + curPos = nestedRes.originalStart + nestedRes.originalLen; + } + + // Append remainder. + res.append(text, curPos, endPos); + + return res.toString(); } /** @@ -253,6 +230,32 @@ public class OdbcParser { } /** + * Perform "substring" using start position and length. + * + * @param text Text. + * @param startPos Start position. + * @param len Length. + * @return Substring. + */ + private static String substring(String text, int startPos, int len) { + assert validSubstring(text, startPos, len); + + return text.substring(startPos, startPos + len); + } + + /** + * Check whether substring is valid. + * + * @param text Substring. + * @param startPos Start position. + * @param len Length. + * @return {@code True} if valid. + */ + private static boolean validSubstring(String text, int startPos, int len) { + return text != null && startPos + len <= text.length(); + } + + /** * Escape sequence type. */ private enum SequenceType { http://git-wip-us.apache.org/repos/asf/ignite/blob/7694fbe7/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcScalarFunctionEscapeSequenceTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcScalarFunctionEscapeSequenceTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcScalarFunctionEscapeSequenceTest.java index 4aa62c4..19e8bf1 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcScalarFunctionEscapeSequenceTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/odbc/OdbcScalarFunctionEscapeSequenceTest.java @@ -19,6 +19,7 @@ package org.apache.ignite.internal.processors.odbc; import java.util.concurrent.Callable; import junit.framework.TestCase; +import org.apache.ignite.IgniteException; import org.apache.ignite.internal.processors.odbc.escape.OdbcEscapeSequenceUtils; import org.apache.ignite.internal.processors.odbc.escape.OdbcParser; import org.apache.ignite.testframework.GridTestUtils; @@ -171,7 +172,7 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { return null; } - }, IllegalStateException.class, null); + }, IgniteException.class, null); } /** */ @@ -186,6 +187,6 @@ public class OdbcScalarFunctionEscapeSequenceTest extends TestCase { return null; } - }, IllegalStateException.class, null); + }, IgniteException.class, null); } }
