mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-16 08:48:55 +00:00
[incbuilder] first version
Change-Id: Ib07e2012b7737892eaad24d1d8dd91526f222212
This commit is contained in:
parent
7a8797b111
commit
23247748c8
1 changed files with 26 additions and 5 deletions
|
@ -38,6 +38,18 @@ import com.google.inject.Inject;
|
|||
* @author Moritz Eysholdt
|
||||
*/
|
||||
public class JavaIoFileSystemAccess extends AbstractFileSystemAccess2 {
|
||||
|
||||
/**
|
||||
* @since 2.9
|
||||
* @noextend
|
||||
* @noimplement
|
||||
*/
|
||||
public static interface IFileCallback {
|
||||
void fileAdded(File file);
|
||||
void fileDeleted(File file);
|
||||
}
|
||||
|
||||
private IFileCallback callBack;
|
||||
|
||||
@Inject
|
||||
private IEncodingProvider encodingProvider;
|
||||
|
@ -75,6 +87,13 @@ public class JavaIoFileSystemAccess extends AbstractFileSystemAccess2 {
|
|||
this.traceSerializer = traceRegionSerializer;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 2.9
|
||||
*/
|
||||
public void setCallBack(IFileCallback callBack) {
|
||||
this.callBack = callBack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateFile(String fileName, String outputConfigName, CharSequence contents) throws RuntimeIOException {
|
||||
File file = getFile(fileName, outputConfigName);
|
||||
|
@ -87,6 +106,8 @@ public class JavaIoFileSystemAccess extends AbstractFileSystemAccess2 {
|
|||
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file), encoding);
|
||||
try {
|
||||
writer.append(postProcess(fileName, outputConfigName, contents, encoding));
|
||||
if(callBack != null)
|
||||
callBack.fileAdded(file);
|
||||
if (writeTrace)
|
||||
generateTrace(fileName, outputConfigName, contents);
|
||||
} finally {
|
||||
|
@ -97,11 +118,7 @@ public class JavaIoFileSystemAccess extends AbstractFileSystemAccess2 {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Since 2.4 protected
|
||||
* @since 2.9 public
|
||||
*/
|
||||
public void generateTrace(String generatedFile, String outputConfigName, CharSequence contents) {
|
||||
protected void generateTrace(String generatedFile, String outputConfigName, CharSequence contents) {
|
||||
try {
|
||||
if (contents instanceof ITraceRegionProvider) {
|
||||
String traceFileName = traceFileNameProvider.getTraceFromJava(generatedFile);
|
||||
|
@ -110,6 +127,8 @@ public class JavaIoFileSystemAccess extends AbstractFileSystemAccess2 {
|
|||
try {
|
||||
AbstractTraceRegion traceRegion = ((ITraceRegionProvider) contents).getTraceRegion();
|
||||
traceSerializer.writeTraceRegionTo(traceRegion, out);
|
||||
if(callBack != null)
|
||||
callBack.fileAdded(traceFile);
|
||||
} finally {
|
||||
out.close();
|
||||
}
|
||||
|
@ -199,6 +218,8 @@ public class JavaIoFileSystemAccess extends AbstractFileSystemAccess2 {
|
|||
} finally {
|
||||
try {
|
||||
out.close();
|
||||
if(callBack != null)
|
||||
callBack.fileAdded(file);
|
||||
} finally {
|
||||
content.close();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue