Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
public final class OgnlCache {

private static final OgnlMemberAccess MEMBER_ACCESS = new OgnlMemberAccess();
private static final OgnlClassResolver CLASS_RESOLVER = new OgnlClassResolver();
private static final Map<String, Object> expressionCache = new ConcurrentHashMap<String, Object>();

private OgnlCache() {
Expand All @@ -41,7 +42,7 @@ private OgnlCache() {

public static Object getValue(String expression, Object root) {
try {
Map context = Ognl.createDefaultContext(root, MEMBER_ACCESS, new OgnlClassResolver(), null);
Map context = Ognl.createDefaultContext(root, MEMBER_ACCESS, CLASS_RESOLVER, null);
return Ognl.getValue(parseExpression(expression), context, root);
} catch (OgnlException e) {
throw new BuilderException("Error evaluating expression '" + expression + "'. Cause: " + e, e);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright 2009-2017 the original author or authors.
* Copyright 2009-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -15,11 +15,7 @@
*/
package org.apache.ibatis.scripting.xmltags;

import java.util.HashMap;
import java.util.Map;

import ognl.ClassResolver;

import ognl.DefaultClassResolver;
import org.apache.ibatis.io.Resources;

/**
Expand All @@ -31,25 +27,11 @@
*
* @see <a href='https://github.com/mybatis/mybatis-3/issues/161'>Issue 161</a>
*/
public class OgnlClassResolver implements ClassResolver {

private final Map<String, Class<?>> classes = new HashMap<String, Class<?>>(101);
public class OgnlClassResolver extends DefaultClassResolver {

@Override
public Class classForName(String className, Map context) throws ClassNotFoundException {
Class<?> result = null;
if ((result = classes.get(className)) == null) {
try {
result = Resources.classForName(className);
} catch (ClassNotFoundException e1) {
if (className.indexOf('.') == -1) {
result = Resources.classForName("java.lang." + className);
classes.put("java.lang." + className, result);
}
}
classes.put(className, result);
}
return result;
protected Class toClassForName(String className) throws ClassNotFoundException {
return Resources.classForName(className);
}

}