use of org.eclipse.xtend.core.macro.FilteringClassLoader in project xtext-xtend by eclipse.
the class ProcessorInstanceForJvmTypeProvider method getClassLoader.
public ClassLoader getClassLoader(final EObject ctx) {
final ResourceSet resourceSet = ctx.eResource().getResourceSet();
final ProcessorInstanceForJvmTypeProvider.ProcessorClassloaderAdapter adapter = IterableExtensions.<ProcessorInstanceForJvmTypeProvider.ProcessorClassloaderAdapter>head(Iterables.<ProcessorInstanceForJvmTypeProvider.ProcessorClassloaderAdapter>filter(resourceSet.eAdapters(), ProcessorInstanceForJvmTypeProvider.ProcessorClassloaderAdapter.class));
if ((adapter != null)) {
return adapter.getClassLoader();
}
boolean _matched = false;
if (resourceSet instanceof XtextResourceSet) {
_matched = true;
final Object classLoaderCtx = ((XtextResourceSet) resourceSet).getClasspathURIContext();
ClassLoader _switchResult_1 = null;
boolean _matched_1 = false;
if (classLoaderCtx instanceof ClassLoader) {
_matched_1 = true;
_switchResult_1 = ((ClassLoader) classLoaderCtx);
}
if (!_matched_1) {
if (classLoaderCtx instanceof Class) {
_matched_1 = true;
_switchResult_1 = ((Class<?>) classLoaderCtx).getClassLoader();
}
}
final ClassLoader jvmTypeLoader = _switchResult_1;
ClassLoader _xifexpression = null;
if ((jvmTypeLoader instanceof URLClassLoader)) {
URLClassLoader _xblockexpression = null;
{
final ArrayList<URL> urls = CollectionLiterals.<URL>newArrayList();
URL[] _uRLs = ((URLClassLoader) jvmTypeLoader).getURLs();
Iterables.<URL>addAll(urls, ((Iterable<? extends URL>) Conversions.doWrapArray(_uRLs)));
final ClassLoader bootClassloader = ((URLClassLoader) jvmTypeLoader).getParent();
if ((bootClassloader instanceof AlternateJdkLoader)) {
URL[] _uRLs_1 = ((AlternateJdkLoader) bootClassloader).getURLs();
Iterables.<URL>addAll(urls, ((Iterable<? extends URL>) Conversions.doWrapArray(_uRLs_1)));
}
ClassLoader _classLoader = TransformationContext.class.getClassLoader();
final FilteringClassLoader filtered = new FilteringClassLoader(_classLoader, Collections.<String>unmodifiableList(CollectionLiterals.<String>newArrayList("org.eclipse.xtext.xbase.lib", "org.eclipse.xtend.lib", "org.eclipse.xtend2.lib", "com.google.common")));
_xblockexpression = new URLClassLoader(((URL[]) Conversions.unwrapArray(urls, URL.class)), filtered);
}
_xifexpression = _xblockexpression;
} else {
_xifexpression = jvmTypeLoader;
}
final ClassLoader processorClassLoader = _xifexpression;
if ((processorClassLoader != null)) {
EList<Adapter> _eAdapters = ((XtextResourceSet) resourceSet).eAdapters();
ProcessorInstanceForJvmTypeProvider.ProcessorClassloaderAdapter _processorClassloaderAdapter = new ProcessorInstanceForJvmTypeProvider.ProcessorClassloaderAdapter(processorClassLoader);
_eAdapters.add(_processorClassloaderAdapter);
return processorClassLoader;
}
}
ProcessorInstanceForJvmTypeProvider.logger.info("No class loader configured. Trying with this class classloader.");
return this.getClass().getClassLoader();
}
Aggregations