diff --git a/src/org/redkale/convert/AnyEncoder.java b/src/org/redkale/convert/AnyEncoder.java
index 344e232e0..1bba9b1b4 100644
--- a/src/org/redkale/convert/AnyEncoder.java
+++ b/src/org/redkale/convert/AnyEncoder.java
@@ -9,8 +9,10 @@ import java.lang.reflect.Type;
/**
* 对不明类型的对象进行序列化; BSON序列化时将对象的类名写入Writer,JSON则不写入。
+ *
+ *
+ * 详情见: http://redkale.org
*
- *
详情见: http://redkale.org
* @author zhangjx
* @param 序列化的泛型类型
*/
@@ -26,10 +28,10 @@ public final class AnyEncoder implements Encodeable {
@SuppressWarnings("unchecked")
public void convertTo(final Writer out, final T value) {
if (value == null) {
- out.wirteClassName(null);
+ out.writeClassName(null);
out.writeNull();
} else {
- out.wirteClassName(factory.getEntity(value.getClass()));
+ if (out.needWriteClassName()) out.writeClassName(factory.getEntityAlias(value.getClass()));
factory.loadEncoder(value.getClass()).convertTo(out, value);
}
}
diff --git a/src/org/redkale/convert/ConvertEntity.java b/src/org/redkale/convert/ConvertEntity.java
index 51ba2cf3a..cc0f2bc85 100644
--- a/src/org/redkale/convert/ConvertEntity.java
+++ b/src/org/redkale/convert/ConvertEntity.java
@@ -5,14 +5,14 @@
*/
package org.redkale.convert;
-import java.lang.annotation.*;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
/**
* 用于类名的别名, 类似javax.persistence.Table
* 该值必须是全局唯一
- * 使用场景: 当BSON序列化为了不指定class可以使用@ConvertEntity来取个别名。关联方法: Reader.readClassName() 和 Writer.wirteClassName(String value) 。
+ * 使用场景: 当BSON序列化为了不指定class可以使用@ConvertEntity来取个别名。关联方法: Reader.readClassName() 和 Writer.writeClassName(String value) 。
*
* 详情见: http://redkale.org
* @author zhangjx
diff --git a/src/org/redkale/convert/ConvertFactory.java b/src/org/redkale/convert/ConvertFactory.java
index c83ebb163..dc55dea10 100644
--- a/src/org/redkale/convert/ConvertFactory.java
+++ b/src/org/redkale/convert/ConvertFactory.java
@@ -5,17 +5,14 @@
*/
package org.redkale.convert;
-import java.lang.reflect.Type;
-import java.util.Collection;
-import java.util.Map;
import java.lang.reflect.*;
import java.math.BigInteger;
import java.net.*;
-import java.nio.channels.*;
-import static org.redkale.convert.ext.InetAddressSimpledCoder.*;
+import java.nio.channels.CompletionHandler;
import java.util.*;
-import java.util.concurrent.*;
-import java.util.regex.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.regex.Pattern;
+import org.redkale.convert.ext.InetAddressSimpledCoder.InetSocketAddressSimpledCoder;
import org.redkale.convert.ext.*;
import org.redkale.util.*;
@@ -175,19 +172,14 @@ public abstract class ConvertFactory {
return fname;
}
- final String getEntity(Class clazz) {
+ final String getEntityAlias(Class clazz) {
ConvertEntity ce = (ConvertEntity) clazz.getAnnotation(ConvertEntity.class);
- if (ce != null && findEntity(ce.value()) == null) entitys.put(ce.value(), clazz);
+ if (ce != null && findEntityAlias(ce.value()) == null) entitys.put(ce.value(), clazz);
return ce == null ? clazz.getName() : ce.value();
}
- private Class findEntity(String name) {
- Class clazz = entitys.get(name);
- return parent == null ? clazz : parent.findEntity(name);
- }
-
- final Class getEntity(String name) {
- Class clazz = findEntity(name);
+ final Class getEntityAlias(String name) {
+ Class clazz = findEntityAlias(name);
try {
return clazz == null ? Class.forName(name) : clazz;
} catch (Exception ex) {
@@ -195,6 +187,11 @@ public abstract class ConvertFactory {
}
}
+ private Class findEntityAlias(String name) {
+ Class clazz = entitys.get(name);
+ return parent == null ? clazz : parent.findEntityAlias(name);
+ }
+
/**
* 使所有类的所有被声明为ConvertColumn.ignore = true 的字段或方法变为ConvertColumn.ignore = false
*
diff --git a/src/org/redkale/convert/ObjectDecoder.java b/src/org/redkale/convert/ObjectDecoder.java
index a550a4998..baf98ccb9 100644
--- a/src/org/redkale/convert/ObjectDecoder.java
+++ b/src/org/redkale/convert/ObjectDecoder.java
@@ -167,7 +167,7 @@ public final class ObjectDecoder implements Decodeable implements Encodeable> 56), (byte) (value >> 48), (byte) (value >> 40), (byte) (value >> 32),
- (byte) (value >> 24), (byte) (value >> 16), (byte) (value >> 8), (byte) value);
+ (byte) (value >> 24), (byte) (value >> 16), (byte) (value >> 8), (byte) value);
}
@Override
@@ -168,7 +168,12 @@ public class BsonWriter extends Writer {
}
@Override
- public final void wirteClassName(String clazz) {
+ public final boolean needWriteClassName() {
+ return true;
+ }
+
+ @Override
+ public final void writeClassName(String clazz) {
writeSmallString(clazz == null ? "" : clazz);
}
@@ -186,7 +191,7 @@ public class BsonWriter extends Writer {
}
@Override
- public final void writeFieldName( Attribute attribute) {
+ public final void writeFieldName(Attribute attribute) {
writeByte(BsonReader.SIGN_HASNEXT);
writeSmallString(attribute.field());
byte typeval = 127; //字段的类型值
diff --git a/src/org/redkale/convert/json/JsonWriter.java b/src/org/redkale/convert/json/JsonWriter.java
index 957531db2..6fda666e4 100644
--- a/src/org/redkale/convert/json/JsonWriter.java
+++ b/src/org/redkale/convert/json/JsonWriter.java
@@ -5,14 +5,14 @@
*/
package org.redkale.convert.json;
-import java.nio.*;
-import org.redkale.convert.*;
+import java.nio.ByteBuffer;
+import org.redkale.convert.Writer;
import org.redkale.util.*;
/**
*
* writeTo系列的方法输出的字符不能含特殊字符
- *
+ *
*
* 详情见: http://redkale.org
*
@@ -123,22 +123,28 @@ public class JsonWriter extends Writer {
content[count++] = '"';
for (char ch : Utility.charArray(value)) {
switch (ch) {
- case '\n': content[count++] = '\\';
+ case '\n':
+ content[count++] = '\\';
content[count++] = 'n';
break;
- case '\r': content[count++] = '\\';
+ case '\r':
+ content[count++] = '\\';
content[count++] = 'r';
break;
- case '\t': content[count++] = '\\';
+ case '\t':
+ content[count++] = '\\';
content[count++] = 't';
break;
- case '\\': content[count++] = '\\';
+ case '\\':
+ content[count++] = '\\';
content[count++] = ch;
break;
- case '"': content[count++] = '\\';
+ case '"':
+ content[count++] = '\\';
content[count++] = ch;
break;
- default: content[count++] = ch;
+ default:
+ content[count++] = ch;
break;
}
}
@@ -293,7 +299,12 @@ public class JsonWriter extends Writer {
}
@Override
- public final void wirteClassName(String clazz) {
+ public final boolean needWriteClassName() {
+ return false;
+ }
+
+ @Override
+ public final void writeClassName(String clazz) {
}
@Override