From 45abdbfae02ed092b9cd0d0afff9d81d6a799435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 26 Apr 2010 11:52:43 +0000 Subject: [PATCH] extracted MethodEvaluator --- .../com/mysema/codegen/EvaluatorFactory.java | 20 +-------- .../com/mysema/codegen/MethodEvaluator.java | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+), 19 deletions(-) create mode 100644 src/main/java/com/mysema/codegen/MethodEvaluator.java diff --git a/src/main/java/com/mysema/codegen/EvaluatorFactory.java b/src/main/java/com/mysema/codegen/EvaluatorFactory.java index a3130d5da..bf5cb51c1 100644 --- a/src/main/java/com/mysema/codegen/EvaluatorFactory.java +++ b/src/main/java/com/mysema/codegen/EvaluatorFactory.java @@ -10,7 +10,6 @@ import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.io.Writer; import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URLClassLoader; import java.util.Arrays; @@ -133,24 +132,7 @@ public class EvaluatorFactory { } final Method method = clazz.getMethod("eval", types); - return new Evaluator() { - @SuppressWarnings("unchecked") - @Override - public T evaluate(Object... args) { - try { - return (T) method.invoke(object, args); - } catch (IllegalAccessException e) { - throw new IllegalArgumentException(e); - } catch (InvocationTargetException e) { - throw new IllegalArgumentException(e); - } - } - - @Override - public Class getType() { - return projectionType; - } - }; + return new MethodEvaluator(method, object, projectionType); } catch (ClassNotFoundException e) { throw new CodegenException(e); } catch (SecurityException e) { diff --git a/src/main/java/com/mysema/codegen/MethodEvaluator.java b/src/main/java/com/mysema/codegen/MethodEvaluator.java new file mode 100644 index 000000000..dff31b482 --- /dev/null +++ b/src/main/java/com/mysema/codegen/MethodEvaluator.java @@ -0,0 +1,44 @@ +/** + * + */ +package com.mysema.codegen; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * @author tiwe + * + * @param + */ +public final class MethodEvaluator implements Evaluator { + + private final Method method; + + private final Object object; + + private final Class projectionType; + + MethodEvaluator(Method method, Object object, Class projectionType) { + this.method = method; + this.object = object; + this.projectionType = projectionType; + } + + @SuppressWarnings("unchecked") + @Override + public T evaluate(Object... args) { + try { + return (T) method.invoke(object, args); + } catch (IllegalAccessException e) { + throw new IllegalArgumentException(e); + } catch (InvocationTargetException e) { + throw new IllegalArgumentException(e); + } + } + + @Override + public Class getType() { + return projectionType; + } +} \ No newline at end of file