mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
force autogenerating if some generated file was removed
This commit is contained in:
@@ -112,7 +112,6 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
|
||||
|
||||
private final Set<AndroidAutogeneratorMode> myDirtyModes = EnumSet.noneOf(AndroidAutogeneratorMode.class);
|
||||
private final Map<AndroidAutogeneratorMode, Set<String>> myAutogeneratedFiles = new HashMap<AndroidAutogeneratorMode, Set<String>>();
|
||||
private final Set<AndroidAutogeneratorMode> myInitializedModes = EnumSet.noneOf(AndroidAutogeneratorMode.class);
|
||||
|
||||
private volatile boolean myAutogenerationEnabled = false;
|
||||
|
||||
@@ -130,10 +129,18 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
|
||||
alarm.addRequest(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
boolean regenerate;
|
||||
|
||||
synchronized (myDirtyModes) {
|
||||
if (myAutogenerationEnabled && myDirtyModes.contains(mode)) {
|
||||
myDirtyModes.remove(mode);
|
||||
AndroidCompileUtil.doGenerate(getModule(), mode);
|
||||
regenerate = myDirtyModes.contains(mode);
|
||||
}
|
||||
regenerate = regenerate || isGeneratedFileRemoved(mode);
|
||||
|
||||
if (myAutogenerationEnabled && regenerate) {
|
||||
if (AndroidCompileUtil.doGenerate(getModule(), mode)) {
|
||||
synchronized (myDirtyModes) {
|
||||
myDirtyModes.remove(mode);
|
||||
}
|
||||
}
|
||||
}
|
||||
alarm.addRequest(this, 2000);
|
||||
@@ -142,6 +149,23 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
|
||||
return alarm;
|
||||
}
|
||||
|
||||
private boolean isGeneratedFileRemoved(@NotNull AndroidAutogeneratorMode mode) {
|
||||
synchronized (myAutogeneratedFiles) {
|
||||
final Set<String> filePaths = myAutogeneratedFiles.get(mode);
|
||||
|
||||
if (filePaths != null) {
|
||||
for (String path : filePaths) {
|
||||
final VirtualFile file = LocalFileSystem.getInstance().findFileByPath(path);
|
||||
|
||||
if (file == null) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void clearAutogeneratedFiles(@NotNull AndroidAutogeneratorMode mode) {
|
||||
synchronized (myAutogeneratedFiles) {
|
||||
final Set<String> set = myAutogeneratedFiles.get(mode);
|
||||
|
||||
Reference in New Issue
Block a user