Skip to content

Commit f6d8755

Browse files
committed
Merge branch 'master' of github.com:msgpack/msgpack-java
2 parents fd0920e + dd3ed07 commit f6d8755

File tree

4 files changed

+48
-18
lines changed

4 files changed

+48
-18
lines changed

src/main/java/org/msgpack/template/builder/AbstractTemplateBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public <T> Template<T> buildTemplate(final Class<T> targetClass, final FieldList
7272
protected abstract <T> Template<T> buildTemplate(Class<T> targetClass, FieldEntry[] entries);
7373

7474
protected void checkClassValidation(final Class<?> targetClass) {
75-
if (javassist.Modifier.isAbstract(targetClass.getModifiers())) {
75+
if (Modifier.isAbstract(targetClass.getModifiers())) {
7676
throw new TemplateBuildException(
7777
"Cannot build template for abstract class: " + targetClass.getName());
7878
}

src/main/java/org/msgpack/template/builder/ReflectionBeansTemplateBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public Object read(Unpacker unpacker, Object to, boolean required) throws IOExce
6969
}
7070

7171
public ReflectionBeansTemplateBuilder(TemplateRegistry registry) {
72-
super(registry);
72+
super(registry, null);
7373
}
7474

7575
@Override

src/main/java/org/msgpack/template/builder/ReflectionTemplateBuilder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,10 @@ public T read(Unpacker unpacker, T to, boolean required)
155155
}
156156

157157
public ReflectionTemplateBuilder(TemplateRegistry registry) {
158+
this(registry, null);
159+
}
160+
161+
public ReflectionTemplateBuilder(TemplateRegistry registry, ClassLoader cl) {
158162
super(registry);
159163
}
160164

src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java

Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
//
1818
package org.msgpack.template.builder;
1919

20+
import java.lang.reflect.Constructor;
21+
import java.lang.reflect.InvocationTargetException;
2022
import java.lang.reflect.Type;
2123
import java.util.ArrayList;
2224
import java.util.List;
@@ -25,6 +27,10 @@
2527
import org.msgpack.util.android.DalvikVmChecker;
2628

2729
public class TemplateBuilderChain {
30+
private static final String JAVASSIST_TEMPLATE_BUILDER_CLASS_NAME =
31+
"org.msgpack.template.builder.JavassistTemplateBuilder";
32+
private static final String REFLECTION_TEMPLATE_BUILDER_CLASS_NAME =
33+
"org.msgpack.template.builder.ReflectionTemplateBuilder";
2834

2935
private static boolean enableDynamicCodeGeneration() {
3036
return !DalvikVmChecker.isDalvikVm();
@@ -51,25 +57,45 @@ protected void reset(final TemplateRegistry registry, final ClassLoader cl) {
5157
// FIXME
5258
// Javassist{,Beans}TemplateBuilder should be created with reflection for android.
5359

54-
// forceBuilder
55-
forceBuilder = new JavassistTemplateBuilder(registry, cl);
60+
String forceBuilderClassName = null;
61+
if (enableDynamicCodeGeneration()) { // use dynamic code generation
62+
forceBuilderClassName = JAVASSIST_TEMPLATE_BUILDER_CLASS_NAME;
63+
} else {
64+
forceBuilderClassName = REFLECTION_TEMPLATE_BUILDER_CLASS_NAME;
65+
}
5666

57-
// builder
58-
TemplateBuilder builder;
67+
// create builder chain
68+
forceBuilder = createForceTemplateBuilder(forceBuilderClassName, registry, cl);
69+
TemplateBuilder builder = forceBuilder;
5970
templateBuilders.add(new ArrayTemplateBuilder(registry));
6071
templateBuilders.add(new OrdinalEnumTemplateBuilder(registry));
61-
if (enableDynamicCodeGeneration()) { // use dynamic code generation
62-
builder = forceBuilder;
63-
templateBuilders.add(builder);
64-
// FIXME #MN next version
65-
// templateBuilders.add(new
66-
// JavassistBeansTemplateBuilder(registry));
67-
templateBuilders.add(new ReflectionBeansTemplateBuilder(registry));
68-
} else { // use reflection
69-
builder = new ReflectionTemplateBuilder(registry);
70-
templateBuilders.add(builder);
71-
templateBuilders.add(new ReflectionBeansTemplateBuilder(registry));
72-
}
72+
templateBuilders.add(builder);
73+
templateBuilders.add(new ReflectionBeansTemplateBuilder(registry));
74+
}
75+
76+
private static TemplateBuilder createForceTemplateBuilder(String className,
77+
TemplateRegistry registry, ClassLoader cl) {
78+
try {
79+
Class<?> c = (Class<?>) Class.forName(className); // TODO
80+
Constructor<?> cons = c.getConstructor(TemplateRegistry.class,
81+
ClassLoader.class);
82+
return (TemplateBuilder) cons.newInstance(registry, cl);
83+
} catch (ClassNotFoundException e) {
84+
e.printStackTrace(); // TODO
85+
} catch (SecurityException e) {
86+
e.printStackTrace(); // TODO
87+
} catch (NoSuchMethodException e) {
88+
e.printStackTrace(); // TODO
89+
} catch (IllegalArgumentException e) {
90+
e.printStackTrace(); // TODO
91+
} catch (InstantiationException e) {
92+
e.printStackTrace(); // TODO
93+
} catch (IllegalAccessException e) {
94+
e.printStackTrace(); // TODO
95+
} catch (InvocationTargetException e) {
96+
e.printStackTrace(); // TODO
97+
}
98+
return new ReflectionTemplateBuilder(registry, cl);
7399
}
74100

75101
public TemplateBuilder getForceBuilder() {

0 commit comments

Comments
 (0)