Search in sources :

Example 21 with XtextResourceSet

use of org.eclipse.xtext.resource.XtextResourceSet in project xtext-eclipse by eclipse.

the class ReplAutoEdit method getConfiguredInterpreter.

protected XbaseInterpreter getConfiguredInterpreter(XtextResource resource) {
    XbaseInterpreter interpreter2 = interpreterProvider.get();
    ResourceSet set = resource.getResourceSet();
    ClassLoader cl = getClass().getClassLoader();
    if (set instanceof XtextResourceSet) {
        Object context = ((XtextResourceSet) set).getClasspathURIContext();
        if (context instanceof IJavaProject) {
            try {
                final IJavaProject jp = (IJavaProject) context;
                // String[] runtimeClassPath =
                // JavaRuntime.computeDefaultRuntimeClassPath(jp);
                // URL[] urls = new URL[runtimeClassPath.length];
                // for (int i = 0; i < urls.length; i++) {
                // urls[i] = new URL(runtimeClassPath[i]);
                // }
                // cl = new URLClassLoader(urls);
                IClasspathEntry[] classpath = jp.getResolvedClasspath(true);
                final IWorkspaceRoot root = jp.getProject().getWorkspace().getRoot();
                Set<URL> urls = newHashSet();
                for (int i = 0; i < classpath.length; i++) {
                    final IClasspathEntry entry = classpath[i];
                    if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
                        IPath outputLocation = entry.getOutputLocation();
                        if (outputLocation == null) {
                            outputLocation = jp.getOutputLocation();
                        }
                        IFolder folder = root.getFolder(outputLocation);
                        if (folder.exists()) {
                            urls.add(new URL(folder.getRawLocationURI().toASCIIString() + "/"));
                        }
                    } else if (entry.getEntryKind() == IClasspathEntry.CPE_PROJECT) {
                        IPath outputLocation = entry.getOutputLocation();
                        if (outputLocation == null) {
                            IProject project = (IProject) jp.getProject().getWorkspace().getRoot().getContainerForLocation(entry.getPath());
                            IJavaProject javaProject = JavaCore.create(project);
                            outputLocation = javaProject.getOutputLocation();
                        }
                        IFolder folder = root.getFolder(outputLocation);
                        if (folder.exists()) {
                            urls.add(new URL(folder.getRawLocationURI().toASCIIString() + "/"));
                        }
                    } else {
                        urls.add(entry.getPath().toFile().toURI().toURL());
                    }
                }
                cl = new URLClassLoader(urls.toArray(new URL[urls.size()]));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    interpreter2.setClassLoader(cl);
    return interpreter2;
}
Also used : IPath(org.eclipse.core.runtime.IPath) IClasspathEntry(org.eclipse.jdt.core.IClasspathEntry) XbaseInterpreter(org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet) URL(java.net.URL) IProject(org.eclipse.core.resources.IProject) BadLocationException(org.eclipse.jface.text.BadLocationException) IJavaProject(org.eclipse.jdt.core.IJavaProject) IWorkspaceRoot(org.eclipse.core.resources.IWorkspaceRoot) XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet) URLClassLoader(java.net.URLClassLoader) URLClassLoader(java.net.URLClassLoader) IFolder(org.eclipse.core.resources.IFolder)

Example 22 with XtextResourceSet

use of org.eclipse.xtext.resource.XtextResourceSet in project xtext-eclipse by eclipse.

the class ResourceAccess method registerResourceSet.

public void registerResourceSet(ResourceSet resourceSet) {
    if (resourceSet instanceof XtextResourceSet) {
        Object context = ((XtextResourceSet) resourceSet).getClasspathURIContext();
        if (context instanceof IJavaProject) {
            IProject project = ((IJavaProject) context).getProject();
            resourceSets.put(project, resourceSet);
        }
    }
    this.fallBackResourceSet = resourceSet;
}
Also used : IJavaProject(org.eclipse.jdt.core.IJavaProject) XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet) IProject(org.eclipse.core.resources.IProject)

Example 23 with XtextResourceSet

use of org.eclipse.xtext.resource.XtextResourceSet in project xtext-eclipse by eclipse.

the class SimpleResourceSetProvider method get.

@Override
public ResourceSet get(IProject project) {
    XtextResourceSet xtextResourceSet = resourceSetProvider.get();
    ProjectConfigAdapter.install(xtextResourceSet, projectConfigProvider.createProjectConfig(project));
    return xtextResourceSet;
}
Also used : XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet)

Example 24 with XtextResourceSet

use of org.eclipse.xtext.resource.XtextResourceSet in project xtext-eclipse by eclipse.

the class XtextResourceSetProvider method get.

@Override
public ResourceSet get(IProject project) {
    XtextResourceSet set = resourceSetProvider.get();
    ProjectConfigAdapter.install(set, projectConfigProvider.createProjectConfig(project));
    for (int i = 0; i < initializers.size(); i++) {
        initializers.get(i).initialize(set, project);
    }
    return set;
}
Also used : XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet)

Example 25 with XtextResourceSet

use of org.eclipse.xtext.resource.XtextResourceSet in project xtext-eclipse by eclipse.

the class JavaProjectResourceSetInitializer method initialize.

@Override
public void initialize(ResourceSet resourceSet, IProject project) {
    if (resourceSet instanceof XtextResourceSet) {
        XtextResourceSet casted = (XtextResourceSet) resourceSet;
        IJavaProject javaProject = JavaCore.create(project);
        if (javaProject != null && javaProject.exists()) {
            casted.getURIConverter().getURIMap().putAll(computePlatformURIMap(javaProject));
            casted.setClasspathURIContext(javaProject);
            casted.setClasspathUriResolver(new JdtClasspathUriResolver());
        }
    }
}
Also used : IJavaProject(org.eclipse.jdt.core.IJavaProject) XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet) JdtClasspathUriResolver(org.eclipse.xtext.ui.util.JdtClasspathUriResolver)

Aggregations

XtextResourceSet (org.eclipse.xtext.resource.XtextResourceSet)177 Resource (org.eclipse.emf.ecore.resource.Resource)81 XtextResource (org.eclipse.xtext.resource.XtextResource)77 Test (org.junit.Test)57 StringInputStream (org.eclipse.xtext.util.StringInputStream)42 URI (org.eclipse.emf.common.util.URI)33 EObject (org.eclipse.emf.ecore.EObject)20 ResourceSet (org.eclipse.emf.ecore.resource.ResourceSet)19 XtendFile (org.eclipse.xtend.core.xtend.XtendFile)19 Grammar (org.eclipse.xtext.Grammar)10 Issue (org.eclipse.xtext.validation.Issue)10 IJavaProject (org.eclipse.jdt.core.IJavaProject)8 File (java.io.File)7 ArrayList (java.util.ArrayList)7 EList (org.eclipse.emf.common.util.EList)7 IResourceDescription (org.eclipse.xtext.resource.IResourceDescription)7 Before (org.junit.Before)7 Injector (com.google.inject.Injector)6 IOException (java.io.IOException)6 Diagnostic (org.eclipse.emf.common.util.Diagnostic)5