This commit is contained in:
kamhung
2015-11-09 16:34:02 +08:00
parent 46d3188162
commit 0700c60ac8
2 changed files with 38 additions and 36 deletions

View File

@@ -197,47 +197,50 @@ public final class JsonByteBufferWriter extends JsonWriter {
writeNull();
return;
}
final char[] chs = Utility.charArray(value);
int len = 0;
for (char ch : chs) {
ByteBuffer buffer = this.buffers[index];
expand(1);
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) '"');
for (char ch : Utility.charArray(value)) {
switch (ch) {
case '\n': len += 2;
case '\n': expand(2);
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) '\\');
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) 'n');
break;
case '\r': len += 2;
case '\r': expand(2);
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) '\\');
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) 'r');
break;
case '\t': len += 2;
case '\t': expand(2);
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) '\\');
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) 't');
break;
case '\\': len += 2;
case '\\': expand(2);
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) '\\');
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) '\\');
break;
case '"': len += 2;
case '"': expand(2);
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) '\\');
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) '"');
break;
default: len++;
default: buffer = putChar(buffer, ch);
break;
}
}
if (len == chs.length) {
writeTo(true, chs, 0, len);
} else {
StringBuilder sb = new StringBuilder(value.length() * 2);
for (char ch : chs) {
switch (ch) {
case '\n': sb.append("\\n");
break;
case '\r': sb.append("\\r");
break;
case '\t': sb.append("\\t");
break;
case '\\': sb.append("\\\\");
break;
case '"': sb.append("\\\"");
break;
default: sb.append(ch);
break;
}
}
char[] cs = Utility.charArray(sb);
writeTo(true, cs, 0, sb.length());
}
expand(1);
if (!buffer.hasRemaining()) buffer = nextByteBuffer();
buffer.put((byte) '"');
}
@Override

View File

@@ -85,8 +85,8 @@ final class FilterBeanNode extends FilterNode {
final String jc = joinCol.column().isEmpty() ? secinfo.getPrimary().field() : joinCol.column();
if (first) {
joinsb.append(" ").append(joinCol.type().name()).append(" JOIN ").append(secinfo.getTable())
.append(" ").append(alias).append(" ON a.# = ").append(alias).append(".")
.append(secinfo.getSQLColumn(jc));
.append(" ").append(alias).append(" ON a.").append(secinfo.getSQLColumn(jc)).append(" = ")
.append(alias).append(".").append(secinfo.getSQLColumn(jc));
}
newnode.foreignEntity = secinfo;
newnode.tabalis = alias;
@@ -235,8 +235,7 @@ final class FilterBeanNode extends FilterNode {
if (joinSQL == null || !first) return super.createFilterSQLExpress(first, info, bean);
StringBuilder sb = super.createFilterSQLExpress(first, info, bean);
if (joinSQL == null) return sb;
String jsql = joinSQL.replace("#", info.getSQLColumn(byjoinColumn));
return new StringBuilder(sb.length() + jsql.length()).append(jsql).append(sb);
return new StringBuilder(sb.length() + joinSQL.length()).append(joinSQL).append(sb);
}
@Override