Skip to content

Commit 623cc80

Browse files
author
jantje
committed
getting the upgrade test back to work (on windows)
1 parent 8fad44a commit 623cc80

File tree

4 files changed

+43
-22
lines changed

4 files changed

+43
-22
lines changed

io.sloeber.core/src/io/sloeber/core/api/SloeberProject.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ public void run(IProgressMonitor internalMonitor) throws CoreException {
191191
Common.log(new Status(IStatus.INFO, io.sloeber.core.Activator.getId(),
192192
"Project conversion failed: ", e)); //$NON-NLS-1$
193193
}
194-
IndexerController.Index(project);
194+
IndexerController.index(project);
195195
}
196196

197197
};
@@ -325,7 +325,7 @@ public void run(IProgressMonitor internalMonitor) throws CoreException {
325325
}
326326
Common.log(new Status(Const.SLOEBER_STATUS_DEBUG, Activator.getId(),
327327
"internal creation of project is done: " + realProjectName)); //$NON-NLS-1$
328-
IndexerController.Index(newProjectHandle);
328+
IndexerController.index(newProjectHandle);
329329
}
330330
};
331331

@@ -575,18 +575,11 @@ private boolean readConfig(ICProjectDescription prjCDesc, boolean prjDescWritabl
575575

576576
} else {
577577

578-
// no config files exist. try to save the day
579-
if (IndexerController.isPosponed(myProject)) {
580-
Common.log(new Status(IStatus.ERROR, io.sloeber.core.Activator.getId(),
581-
"Trying to get the configuration during project creation? This should not happen!!")); //$NON-NLS-1$
582-
} else {
583-
// Maybe this is a old Sloeber project with the data in the eclipse build
584-
// environment variables
585-
readConfigFromCDT(prjCDesc, prjDescWritable);
586-
578+
// Maybe this is a old Sloeber project with the data in the eclipse build
579+
// environment variables
580+
if (readConfigFromCDT(prjCDesc, prjDescWritable)) {
587581
myNeedToPersist = true;
588582
myNeedsClean = true;
589-
590583
}
591584
}
592585
isInMemory = true;

io.sloeber.core/src/io/sloeber/core/listeners/IndexerController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public static void doNotIndex(IProject project) {
3838
fProjects.add(project);
3939
getIndexController();
4040
}
41-
public static void Index(IProject project) {
41+
public static void index(IProject project) {
4242
Common.log(new Status(Const.SLOEBER_STATUS_DEBUG, Activator.getId(),"index "+project.getName())); //$NON-NLS-1$
4343
fProjects.remove(project);
4444
ICProject cProject = CoreModel.getDefault().getCModel().getCProject(project.getName());

io.sloeber.core/src/io/sloeber/core/listeners/resourceChangeListener.java

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,29 @@ public void resourceChanged(IResourceChangeEvent event) {
3131
IResourceDelta rootDelta = event.getDelta();
3232
for (IResourceDelta projectDelta : rootDelta.getAffectedChildren()) {
3333
IResourceDelta sloeberCfgDelta = projectDelta.findMember(new Path("sloeber.cfg"));
34-
if (sloeberCfgDelta != null)
34+
if (sloeberCfgDelta != null) {
3535
if (sloeberCfgDelta.getKind() != IResourceDelta.REMOVED) {
36-
changedSloeberCfgFiles.add(sloeberCfgDelta.getResource().getProject());
36+
IProject iProject = sloeberCfgDelta.getResource().getProject();
37+
// stop the indexer
38+
IndexerController.doNotIndex(iProject);
39+
// log to process later
40+
changedSloeberCfgFiles.add(iProject);
3741
}
42+
} else {
43+
// it is not a new type sloeber project check wether it is an old type sloeber
44+
// project
45+
IResourceDelta cProjectDelta = projectDelta.findMember(new Path(".cproject"));
46+
if (cProjectDelta != null)
47+
if (projectDelta.getFlags() == IResourceDelta.OPEN) {
48+
// as it is a open of a cdt project assume it is a sloeber project.
49+
// We will find out later if not
50+
IProject iProject = cProjectDelta.getResource().getProject();
51+
// stop the indexer
52+
IndexerController.doNotIndex(iProject);
53+
// log to process later
54+
changedSloeberCfgFiles.add(iProject);
55+
}
56+
}
3857
}
3958

4059
// no sloeber.cfg files have been modified
@@ -51,14 +70,16 @@ protected IStatus run(IProgressMonitor monitor) {
5170
@Override
5271
public void run(IProgressMonitor monitor) throws CoreException {
5372
for (IProject curProject : changedSloeberCfgFiles) {
54-
SloeberProject curSloeberProject = SloeberProject.getSloeberProject(curProject, false);
55-
if (curSloeberProject == null) {
56-
// this is not a sloeber project;
57-
//make it one?
58-
}
59-
else{
60-
curSloeberProject.sloeberCfgChanged();
73+
if (curProject.isOpen()) {
74+
SloeberProject curSloeberProject = SloeberProject.getSloeberProject(curProject, false);
75+
if (curSloeberProject == null) {
76+
// this is not a sloeber project;
77+
// make it one?
78+
} else {
79+
curSloeberProject.sloeberCfgChanged();
80+
}
6181
}
82+
IndexerController.index(curProject);
6283
}
6384
}
6485
};

io.sloeber.core/src/io/sloeber/core/toolchain/SloeberConfigurationVariableSupplier.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
public class SloeberConfigurationVariableSupplier implements IConfigurationEnvironmentVariableSupplier {
2020
// variables per configuration
2121
private Map<String, Map<String, String>> myConfigValues = new HashMap<>();
22+
private boolean myIsConfigurationBussy = false;
2223

2324
@Override
2425
public IBuildEnvironmentVariable getVariable(String variableName, IConfiguration configuration,
@@ -74,10 +75,16 @@ private void initializeIfNotYetDone(IConfiguration configuration) {
7475
// we have some data; asume it is correct
7576
return;
7677
}
78+
if (myIsConfigurationBussy) {
79+
// We are already configurating. Don't go in an endless loop
80+
return;
81+
}
82+
myIsConfigurationBussy = true;
7783
ICConfigurationDescription confDesc = ManagedBuildManager.getDescriptionForConfiguration(configuration);
7884
ICProjectDescription projDesc = confDesc.getProjectDescription();
7985
IProject project = projDesc.getProject();
8086
SloeberProject sloeberProject = SloeberProject.getSloeberProject(project, false);
8187
sloeberProject.configure(projDesc, false);
88+
myIsConfigurationBussy = false;
8289
}
8390
}

0 commit comments

Comments
 (0)