summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorMuga Nishizawa <muga@f11vm.(none)>2010-08-26 17:53:29 +0900
committerMuga Nishizawa <muga@f11vm.(none)>2010-08-26 17:53:29 +0900
commitff0e1bbbc070e95be3631459815b0f765c3aab8d (patch)
treef563af5b7765ab1842f67209876f41c6dc033481 /java
parent18c712cd99d1317d69f628fe58fd6ff9d10865c5 (diff)
downloadmsgpack-python-ff0e1bbbc070e95be3631459815b0f765c3aab8d.tar.gz
change the part for creating a new constructor within DynamicCodeGenerator
Diffstat (limited to 'java')
-rw-r--r--java/src/main/java/org/msgpack/tmp/DynamicCodeGenerator.java43
1 files changed, 20 insertions, 23 deletions
diff --git a/java/src/main/java/org/msgpack/tmp/DynamicCodeGenerator.java b/java/src/main/java/org/msgpack/tmp/DynamicCodeGenerator.java
index 9e4336d..78238b4 100644
--- a/java/src/main/java/org/msgpack/tmp/DynamicCodeGenerator.java
+++ b/java/src/main/java/org/msgpack/tmp/DynamicCodeGenerator.java
@@ -29,6 +29,8 @@ public class DynamicCodeGenerator {
private static final String PACKER_CLASS_TYPE_NAME = Packer.class.getName();
+ private static final String VOID_TYPE_NAME = "void";
+
private static final String PACKER_OBJECT_NAME = "pk";
private static final String UNPACKER_CLASS_TYPE_NAME = Unpacker.class
@@ -37,7 +39,7 @@ public class DynamicCodeGenerator {
private static final String UNPACKER_OBJECT_NAME = "pk";
private HashMap<String, Class<?>> classMap;
-
+
private HashMap<String, Object> objectCacheMap;
private ClassPool pool;
@@ -50,23 +52,23 @@ public class DynamicCodeGenerator {
public Object newEnhancedInstance(Class<?> targetClass) throws Exception {
String targetClassName = targetClass.getName();
- //Class<?> enhancedClass = classMap.get(targetClassName);
+ // Class<?> enhancedClass = classMap.get(targetClassName);
Object enhancedObject = objectCacheMap.get(targetClassName);
- //if (enhancedClass == null) {
+ // if (enhancedClass == null) {
if (enhancedObject == null) {
CtClass enhancedCtClass = createEnhancedCtClass(targetClassName);
-// System.out.println("enhanced class name: "
-// + enhancedCtClass.getName());
+ // System.out.println("enhanced class name: "
+ // + enhancedCtClass.getName());
addSuperclass(enhancedCtClass, targetClassName);
addConstructor(enhancedCtClass);
createMessagePackMethod(enhancedCtClass, targetClass);
createMessageUnpackMethod(enhancedCtClass, targetClass);
Class enhancedClass = loadEnhancedClass(enhancedCtClass);
- //classMap.put(targetClassName, enhancedClass);
+ // classMap.put(targetClassName, enhancedClass);
enhancedObject = enhancedClass.newInstance();
objectCacheMap.put(targetClassName, enhancedObject);
}
- //return newEnhancedInstance0(enhancedClass);
+ // return newEnhancedInstance0(enhancedClass);
return enhancedObject;
}
@@ -82,24 +84,18 @@ public class DynamicCodeGenerator {
}
private void addConstructor(CtClass enhancedCtClass) throws Exception {
- StringBuilder sb = new StringBuilder();
- sb.append(MODIFIER_PUBLIC).append(SPACE).append(
- // enhancedCtClass.getName()).append("(").append(")")
- "Image3_$$_Enhanced").append("(").append(")").append(SPACE)
- .append("{ super(); }"); // TODO
-// System.out.println("cons: " + sb.toString());
- CtConstructor newCtConstructor = CtNewConstructor.make(sb.toString(),
- enhancedCtClass);
+ CtConstructor newCtConstructor = CtNewConstructor
+ .defaultConstructor(enhancedCtClass);
enhancedCtClass.addConstructor(newCtConstructor);
}
private void createMessagePackMethod(CtClass enhancedCtClass,
Class<?> targetClass) throws Exception {
StringBuilder sb = new StringBuilder();
- sb.append(MODIFIER_PUBLIC).append(SPACE).append("void").append(SPACE)
- .append(METHOD_NAME_MESSAGEPACK).append("(").append(
- PACKER_CLASS_TYPE_NAME).append(SPACE).append(
- PACKER_OBJECT_NAME).append(")").append(SPACE).append(
+ sb.append(MODIFIER_PUBLIC).append(SPACE).append(VOID_TYPE_NAME).append(
+ SPACE).append(METHOD_NAME_MESSAGEPACK).append("(").append(
+ PACKER_CLASS_TYPE_NAME).append(SPACE)
+ .append(PACKER_OBJECT_NAME).append(")").append(SPACE).append(
"throws").append(SPACE).append("java.io.IOException")
.append(SPACE).append("{");
Field[] fields = targetClass.getFields();
@@ -109,7 +105,7 @@ public class DynamicCodeGenerator {
insertCodeOfMessagePack(field, sb);
}
sb.append("}");
-// System.out.println("messagePack method: " + sb.toString());
+ // System.out.println("messagePack method: " + sb.toString());
CtMethod newCtMethod = CtNewMethod.make(sb.toString(), enhancedCtClass);
enhancedCtClass.addMethod(newCtMethod);
}
@@ -135,7 +131,7 @@ public class DynamicCodeGenerator {
sb
.append(MODIFIER_PUBLIC)
.append(SPACE)
- .append("void")
+ .append(VOID_TYPE_NAME)
.append(SPACE)
.append(METHOD_NAME_MESSAGEUNPACK)
.append("(")
@@ -149,13 +145,14 @@ public class DynamicCodeGenerator {
.append("org.msgpack.MessageTypeException, java.io.IOException")
.append(SPACE).append("{");
Field[] fields = targetClass.getFields();
- sb.append(UNPACKER_OBJECT_NAME).append(".").append("unpackArray()").append(";");
+ sb.append(UNPACKER_OBJECT_NAME).append(".").append("unpackArray()")
+ .append(";");
// TODO
for (Field field : fields) {
insertCodeOfMessageUnpack(field, sb);
}
sb.append("}");
-// System.out.println("messageUnpack method: " + sb.toString());
+ // System.out.println("messageUnpack method: " + sb.toString());
CtMethod newCtMethod = CtNewMethod.make(sb.toString(), enhancedCtClass);
enhancedCtClass.addMethod(newCtMethod);
}