Search in sources :

Example 1 with IFileSystemAccess

use of org.eclipse.xtext.generator.IFileSystemAccess in project joynr by bmwcarit.

the class AbstractGeneratorTest method invokeGenerator.

protected void invokeGenerator(IGenerator generator, String fileName, String outputDirectory, String... referencedResources) {
    final IFileSystemAccess fileSystemAccess = createFileSystemAccess(outputDirectory);
    final URI uri = URI.createFileURI(new File(fileName).getAbsolutePath());
    final Set<URI> uris = new HashSet<URI>();
    uris.add(uri);
    for (String refRes : referencedResources) {
        uris.add(URI.createFileURI(new File(refRes).getAbsolutePath()));
    }
    File file = new File(fileName);
    IUriProvider uriProvider = null;
    if (file.isDirectory()) {
        uriProvider = new FolderUriProvider(Sets.newHashSet("fidl"), file);
    } else {
        uriProvider = new IUriProvider() {

            @Override
            public Iterable<URI> allUris() {
                return Lists.newArrayList(uris);
            }
        };
    }
    ModelStore modelStore = ModelStore.modelsIn(uriProvider);
    for (URI foundUri : uriProvider.allUris()) {
        final Resource r = modelStore.getResource(foundUri);
        generator.doGenerate(r, fileSystemAccess);
    }
}
Also used : IFileSystemAccess(org.eclipse.xtext.generator.IFileSystemAccess) Resource(org.eclipse.emf.ecore.resource.Resource) FolderUriProvider(io.joynr.loading.FolderUriProvider) ModelStore(io.joynr.loading.ModelStore) URI(org.eclipse.emf.common.util.URI) File(java.io.File) HashSet(java.util.HashSet) IUriProvider(io.joynr.loading.IUriProvider)

Example 2 with IFileSystemAccess

use of org.eclipse.xtext.generator.IFileSystemAccess in project xtext-eclipse by eclipse.

the class JavaProjectBasedBuilderParticipant method build.

@Override
public void build(IBuildContext context, IProgressMonitor monitor) throws CoreException {
    final IProject builtProject = context.getBuiltProject();
    IJavaProject javaProject = JavaCore.create(builtProject);
    if (!javaProject.exists())
        return;
    final IFolder srcGenFolder = getSrcGenFolder(builtProject);
    if (!srcGenFolder.exists())
        return;
    if (!isValidOutputFolder(javaProject, srcGenFolder))
        return;
    for (IResourceDescription.Delta delta : context.getDeltas()) {
        if (monitor.isCanceled()) {
            throw new OperationCanceledException();
        }
        final Set<String> oldFiles = newHashSet();
        if (sourceTargetMap.containsKey(delta.getUri())) {
            oldFiles.addAll(sourceTargetMap.get(delta.getUri()));
        }
        final Set<String> newFiles = newHashSet();
        IFileSystemAccess fileSystemAccess = getConfiguredFileSystemAccess(srcGenFolder, new IAcceptor<String>() {

            @Override
            public void accept(String fileName) {
                oldFiles.remove(fileName);
                newFiles.add(fileName);
            }
        });
        if (delta.getNew() == null) {
            handleDeletion(delta, context, fileSystemAccess);
        } else {
            try {
                handleChangedContents(delta, context, fileSystemAccess);
            } catch (Exception e) {
                logger.error("Error during compilation of '" + delta.getUri() + "'.", e);
            }
        }
        for (String removeFile : oldFiles) {
            fileSystemAccess.deleteFile(removeFile);
        }
        if (!newFiles.isEmpty()) {
            sourceTargetMap.put(delta.getUri(), newFiles);
        }
    }
}
Also used : IJavaProject(org.eclipse.jdt.core.IJavaProject) IResourceDescription(org.eclipse.xtext.resource.IResourceDescription) Delta(org.eclipse.xtext.resource.IResourceDescription.Delta) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) IFileSystemAccess(org.eclipse.xtext.generator.IFileSystemAccess) IProject(org.eclipse.core.resources.IProject) CoreException(org.eclipse.core.runtime.CoreException) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) WrappedException(org.eclipse.emf.common.util.WrappedException) IFolder(org.eclipse.core.resources.IFolder)

Aggregations

IFileSystemAccess (org.eclipse.xtext.generator.IFileSystemAccess)2 FolderUriProvider (io.joynr.loading.FolderUriProvider)1 IUriProvider (io.joynr.loading.IUriProvider)1 ModelStore (io.joynr.loading.ModelStore)1 File (java.io.File)1 HashSet (java.util.HashSet)1 IFolder (org.eclipse.core.resources.IFolder)1 IProject (org.eclipse.core.resources.IProject)1 CoreException (org.eclipse.core.runtime.CoreException)1 OperationCanceledException (org.eclipse.core.runtime.OperationCanceledException)1 URI (org.eclipse.emf.common.util.URI)1 WrappedException (org.eclipse.emf.common.util.WrappedException)1 Resource (org.eclipse.emf.ecore.resource.Resource)1 IJavaProject (org.eclipse.jdt.core.IJavaProject)1 IResourceDescription (org.eclipse.xtext.resource.IResourceDescription)1 Delta (org.eclipse.xtext.resource.IResourceDescription.Delta)1