From 78d096a8b9d0a7e4e21597ebd533717c62271e79 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Wed, 6 Jan 2021 20:17:15 -0800 Subject: [PATCH] One lgtm.com suggestion --- .../jackson/dataformat/smile/SmileParser.java | 18 +++++++-------- .../smile/gen/TestGeneratorSymbols.java | 22 +++++++++++++------ .../smile/parse/TestParserNames.java | 4 ++-- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/smile/src/main/java/com/fasterxml/jackson/dataformat/smile/SmileParser.java b/smile/src/main/java/com/fasterxml/jackson/dataformat/smile/SmileParser.java index 334c4dbec..13323bf4b 100644 --- a/smile/src/main/java/com/fasterxml/jackson/dataformat/smile/SmileParser.java +++ b/smile/src/main/java/com/fasterxml/jackson/dataformat/smile/SmileParser.java @@ -1516,14 +1516,14 @@ private final String _decodeLongUnicodeName(int[] quads, int byteLen, int quadLe { int lastQuadBytes = byteLen & 3; // Ok: must decode UTF-8 chars. No other validation SHOULD be needed (except bounds checks?) - /* Note: last quad is not correctly aligned (leading zero bytes instead - * need to shift a bit, instead of trailing). Only need to shift it - * for UTF-8 decoding; need revert for storage (since key will not - * be aligned, to optimize lookup speed) - */ + + // Note: last quad is not correctly aligned (leading zero bytes instead + // need to shift a bit, instead of trailing). Only need to shift it + // for UTF-8 decoding; need revert for storage (since key will not + // be aligned, to optimize lookup speed) + // int lastQuad; - - if (lastQuadBytes < 4) { + if (lastQuadBytes > 0) { lastQuad = quads[quadLen-1]; // 8/16/24 bit left shift quads[quadLen-1] = (lastQuad << ((4 - lastQuadBytes) << 3)); @@ -1574,7 +1574,7 @@ private final String _decodeLongUnicodeName(int[] quads, int byteLen, int quadLe byteIx = (ix & 3); ch2 = (ch2 >> ((3 - byteIx) << 3)); ++ix; - + if ((ch2 & 0xC0) != 0x080) { _reportInvalidOther(ch2); } @@ -1608,7 +1608,7 @@ private final String _decodeLongUnicodeName(int[] quads, int byteLen, int quadLe // Ok. Now we have the character array, and can construct the String String baseName = new String(cbuf, 0, cix); // And finally, un-align if necessary - if (lastQuadBytes < 4) { + if (lastQuadBytes > 0) { quads[quadLen-1] = lastQuad; } return _symbols.addName(baseName, quads, quadLen); diff --git a/smile/src/test/java/com/fasterxml/jackson/dataformat/smile/gen/TestGeneratorSymbols.java b/smile/src/test/java/com/fasterxml/jackson/dataformat/smile/gen/TestGeneratorSymbols.java index de2e94cfe..9079474b7 100644 --- a/smile/src/test/java/com/fasterxml/jackson/dataformat/smile/gen/TestGeneratorSymbols.java +++ b/smile/src/test/java/com/fasterxml/jackson/dataformat/smile/gen/TestGeneratorSymbols.java @@ -33,13 +33,21 @@ public void testSharedNameSimple() throws Exception // same as above, but with name >= 64 characters public void testSharedNameSimpleLong() throws Exception + { + _testSharedNameSimpleLong("ABCD"); + _testSharedNameSimpleLong("ABCY"); + _testSharedNameSimpleLong("XBCD"); + _testSharedNameSimpleLong("ACCD"); + } + + private void _testSharedNameSimpleLong(String suffix) throws Exception { String digits = "01234567899"; // Base is 76 chars; loop over couple of shorter ones too - final String LONG_NAME = "a"+digits+"b"+digits+"c"+digits+"d"+digits+"e"+digits+"f"+digits+"ABCD"; - + final String LONG_NAME = "a"+digits+"b"+digits+"c"+digits+"d"+digits+"e"+digits+"f"+digits+suffix; + for (int i = 0; i < 4; ++i) { int strLen = LONG_NAME.length() - i; String field = LONG_NAME.substring(0, strLen); @@ -64,14 +72,14 @@ public void testSharedNameSimpleLong() throws Exception assertToken(JsonToken.START_OBJECT, parser.nextToken()); assertToken(JsonToken.FIELD_NAME, parser.nextToken()); - assertEquals(field, parser.getCurrentName()); + assertEquals(field, parser.currentName()); assertToken(JsonToken.VALUE_NUMBER_INT, parser.nextToken()); assertEquals(1, parser.getIntValue()); assertToken(JsonToken.END_OBJECT, parser.nextToken()); assertToken(JsonToken.START_OBJECT, parser.nextToken()); assertToken(JsonToken.FIELD_NAME, parser.nextToken()); - assertEquals(field, parser.getCurrentName()); + assertEquals(field, parser.currentName()); assertToken(JsonToken.VALUE_NUMBER_INT, parser.nextToken()); assertEquals(2, parser.getIntValue()); assertToken(JsonToken.END_OBJECT, parser.nextToken()); @@ -217,13 +225,13 @@ public void _testLongNames(boolean shareNames) throws Exception gen.close(); JsonParser parser = factory.createParser(os.toByteArray()); - assertNull(parser.getCurrentToken()); + assertNull(parser.currentToken()); assertToken(JsonToken.START_OBJECT, parser.nextToken()); assertToken(JsonToken.FIELD_NAME, parser.nextToken()); - assertEquals("query", parser.getCurrentName()); + assertEquals("query", parser.currentName()); assertToken(JsonToken.START_OBJECT, parser.nextToken()); assertToken(JsonToken.FIELD_NAME, parser.nextToken()); - assertEquals(FIELD_NAME, parser.getCurrentName()); + assertEquals(FIELD_NAME, parser.currentName()); assertToken(JsonToken.VALUE_STRING, parser.nextToken()); assertEquals(VALUE, parser.getText()); assertToken(JsonToken.END_OBJECT, parser.nextToken()); diff --git a/smile/src/test/java/com/fasterxml/jackson/dataformat/smile/parse/TestParserNames.java b/smile/src/test/java/com/fasterxml/jackson/dataformat/smile/parse/TestParserNames.java index 2a107f76e..c0f865934 100644 --- a/smile/src/test/java/com/fasterxml/jackson/dataformat/smile/parse/TestParserNames.java +++ b/smile/src/test/java/com/fasterxml/jackson/dataformat/smile/parse/TestParserNames.java @@ -13,7 +13,7 @@ public void testLongNames() throws IOException { _testWithName(generateName(5000)); } - + public void testJsonBinForLargeObjects() throws Exception { StringBuilder nameBuf = new StringBuilder("longString"); @@ -30,7 +30,7 @@ public void testJsonBinForLargeObjects() throws Exception /* Helper methods /********************************************************** */ - + private void _testWithName(String name) throws IOException { byte[] data = _smileDoc("{"+quote(name)+":13}");