From e9ec0536dc0d700a6a6f4f6e8268d4a0739824dd Mon Sep 17 00:00:00 2001 From: pazi146 Date: Tue, 7 Jan 2025 13:35:55 +0100 Subject: [PATCH] Convert projects without dependencies now also converts old projects without dependencies avoid potential override of existing manifest --- .../ide/library/model/util/ManifestHelper.java | 12 +++++++----- .../eclipse/fordiac/ide/library/LibraryManager.java | 8 ++++++-- .../fordiac/ide/systemmanagement/SystemManager.java | 4 ++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/ManifestHelper.java b/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/ManifestHelper.java index 5cafe4d98c..fd12e1a2a7 100644 --- a/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/ManifestHelper.java +++ b/plugins/org.eclipse.fordiac.ide.library.model/src/org/eclipse/fordiac/ide/library/model/util/ManifestHelper.java @@ -154,7 +154,7 @@ public static Manifest getFolderManifest(final java.nio.file.Path path) { * @return the manifest, or {@code null} if it couldn't be loaded */ public static Manifest getManifest(final IFile manifest) { - if (manifest == null || !manifest.exists()) { + if (manifest == null) {// don't use manifest.exists() as internal eclipse cache might be inconsistent return null; } return getManifest(URI.createURI(manifest.getLocationURI().toString())); @@ -472,10 +472,12 @@ public static boolean saveManifest(final Manifest manifest) { * @return {@code true} if it was saved successfully, else {@code false} */ public static boolean sortAndSaveManifest(final Manifest manifest) { - // ensure dependencies are sorted (can't use EList.sort()) - final var dependencies = new LinkedList<>(manifest.getDependencies().getRequired()); - manifest.getDependencies().getRequired().clear(); - dependencies.forEach(d -> ManifestHelper.addDependency(manifest, d)); + if (manifest.getDependencies() != null) { + // ensure dependencies are sorted (can't use EList.sort()) + final var dependencies = new LinkedList<>(manifest.getDependencies().getRequired()); + manifest.getDependencies().getRequired().clear(); + dependencies.forEach(d -> ManifestHelper.addDependency(manifest, d)); + } return saveManifest(manifest); } diff --git a/plugins/org.eclipse.fordiac.ide.library/src/org/eclipse/fordiac/ide/library/LibraryManager.java b/plugins/org.eclipse.fordiac.ide.library/src/org/eclipse/fordiac/ide/library/LibraryManager.java index dbcbbb8150..bcecff51e0 100644 --- a/plugins/org.eclipse.fordiac.ide.library/src/org/eclipse/fordiac/ide/library/LibraryManager.java +++ b/plugins/org.eclipse.fordiac.ide.library/src/org/eclipse/fordiac/ide/library/LibraryManager.java @@ -620,7 +620,7 @@ public void checkManifestFile(final IProject project, final TypeLibrary typeLibr init(project); } final Manifest manifest = ManifestHelper.getOrCreateProjectManifest(project); - if (manifest == null || !ManifestHelper.isProject(manifest) || manifest.getDependencies() == null) { + if (manifest == null || !ManifestHelper.isProject(manifest)) { return; } @@ -762,7 +762,7 @@ public void resolveDependencies(final IProject project, final TypeLibrary typeLi final Manifest projectManifest = ManifestHelper.getContainerManifest(project); - if (projectManifest == null || projectManifest.getDependencies() == null) { + if (projectManifest == null) { return; } @@ -771,6 +771,10 @@ public void resolveDependencies(final IProject project, final TypeLibrary typeLi // remove when no longer needed moveLinksToVirtualFolders(project, typeLibrary); + if (projectManifest.getDependencies() == null) { + return; + } + findPreferred(project, preferred, linked); projectManifest.getDependencies().getRequired().forEach(req -> { diff --git a/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java b/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java index 701c4b4701..a25569e589 100644 --- a/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java +++ b/plugins/org.eclipse.fordiac.ide.systemmanagement/src/org/eclipse/fordiac/ide/systemmanagement/SystemManager.java @@ -118,8 +118,6 @@ public IProject createNew4diacProject(final String projectName, final IPath loca project.create(description, monitor); project.open(monitor); - TypeLibraryManager.INSTANCE.getTypeLibrary(project); // insert the project into the project list - ManifestHelper.createProjectManifest(project, includedLibraries.keySet()); project.getFolder(TypeLibraryTags.TYPE_LIB_FOLDER_NAME).create(true, true, monitor); @@ -128,6 +126,8 @@ public IProject createNew4diacProject(final String projectName, final IPath loca project.getFolder(TypeLibraryTags.EXTERNAL_LIB_FOLDER_NAME).create(IResource.VIRTUAL | IResource.FORCE, true, monitor); + TypeLibraryManager.INSTANCE.getTypeLibrary(project); // insert the project into the project list + return project; }