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);
}
}
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);
}
}
}
Aggregations