From 24fbe1ef5b2e76ab0ed4f61763733c89f579bf5b Mon Sep 17 00:00:00 2001
From: FURUHASHI Sadayuki <frsyuki@users.sourceforge.jp>
Date: Wed, 1 Dec 2010 23:27:36 +0900
Subject: [PATCH] java: uses ReflectionTemplateBuilder instead of
 JavassistTempalteBuilder where System.getProperty("java.vm.name") == "Dalvik"

---
 .../java/org/msgpack/template/TemplateBuilder.java | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/java/src/main/java/org/msgpack/template/TemplateBuilder.java b/java/src/main/java/org/msgpack/template/TemplateBuilder.java
index 22a9be8c..b181bc75 100644
--- a/java/src/main/java/org/msgpack/template/TemplateBuilder.java
+++ b/java/src/main/java/org/msgpack/template/TemplateBuilder.java
@@ -135,8 +135,18 @@ public abstract class TemplateBuilder {
 
 	private static TemplateBuilder instance;
 	static {
-		// FIXME TemplateBuilder auto selection
-		instance = JavassistTemplateBuilder.getInstance();
+		instance = selectDefaultTemplateBuilder();
+	}
+
+	private static TemplateBuilder selectDefaultTemplateBuilder() {
+		try {
+			// FIXME JavassistTemplateBuilder doesn't work on DalvikVM
+			if(System.getProperty("java.vm.name").equals("Dalvik")) {
+				return ReflectionTemplateBuilder.getInstance();
+			}
+		} catch (Exception e) {
+		}
+		return JavassistTemplateBuilder.getInstance();
 	}
 
 	synchronized static void setInstance(TemplateBuilder builder) {