Browse Source

Load declarative classes using thread context class loader (#8532)

* Load declarative classes using thread context class loader

Fixes #8528
tags/8.1.0.alpha1
Artur 7 years ago
parent
commit
e6eb43f9ac

+ 2
- 2
server/src/main/java/com/vaadin/server/VaadinServiceClassLoaderUtil.java View File

@@ -24,7 +24,7 @@ import java.security.PrivilegedAction;
* @since 7.4
* @author Vaadin Ltd
*/
class VaadinServiceClassLoaderUtil {
public class VaadinServiceClassLoaderUtil {

private static class GetClassLoaderPrivilegedAction
implements PrivilegedAction<ClassLoader> {
@@ -48,7 +48,7 @@ class VaadinServiceClassLoaderUtil {
* if current security policy doesn't allow acquiring current
* thread's context class loader
*/
static protected ClassLoader findDefaultClassLoader()
public static ClassLoader findDefaultClassLoader()
throws SecurityException {
return AccessController.doPrivileged(
new VaadinServiceClassLoaderUtil.GetClassLoaderPrivilegedAction());

+ 4
- 1
server/src/main/java/com/vaadin/ui/declarative/Design.java View File

@@ -36,6 +36,7 @@ import org.jsoup.parser.Parser;
import org.jsoup.select.Elements;

import com.vaadin.annotations.DesignRoot;
import com.vaadin.server.VaadinServiceClassLoaderUtil;
import com.vaadin.shared.util.SharedUtil;
import com.vaadin.ui.Component;
import com.vaadin.ui.declarative.DesignContext.ComponentCreatedEvent;
@@ -192,7 +193,9 @@ public class Design implements Serializable {
protected Class<? extends Component> resolveComponentClass(
String qualifiedClassName, DesignContext context) {
try {
Class<?> componentClass = Class.forName(qualifiedClassName);
Class<?> componentClass = Class.forName(qualifiedClassName,
true,
VaadinServiceClassLoaderUtil.findDefaultClassLoader());
return componentClass.asSubclass(Component.class);
} catch (ClassNotFoundException e) {
throw new DesignException("Unable to load component for design",

Loading…
Cancel
Save