diff --git a/org.moreunit.core/src/org/moreunit/core/resources/Resources.java b/org.moreunit.core/src/org/moreunit/core/resources/Resources.java index bc4f2856..2a0a3432 100644 --- a/org.moreunit.core/src/org/moreunit/core/resources/Resources.java +++ b/org.moreunit.core/src/org/moreunit/core/resources/Resources.java @@ -2,6 +2,12 @@ import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; @@ -27,36 +33,38 @@ public static CreatedFolder createFolder(IProject project, IPath folderPath) return new CreatedFolder(srcFolder); } - IFolder folder = null; - CreatedFolderPath createdFolderPath = null; + List foldersToCreate = new ArrayList(); + IFolder current = srcFolder; - for (String segment : folderPath.segments()) + while (!current.exists()) { - if(folder == null) + foldersToCreate.add(current); + IContainer parent = current.getParent(); + if(parent == null || parent.getType() != IResource.FOLDER) { - folder = project.getFolder(segment); + break; } - else + current = (IFolder) parent; + } + + Collections.reverse(foldersToCreate); + + CreatedFolderPath createdFolderPath = null; + for (IFolder folder : foldersToCreate) + { + try { - folder = folder.getFolder(segment); + folder.create(false, true, null); } - - if(! folder.exists()) + catch (CoreException e) { - try - { - folder.create(false, true, null); - } - catch (CoreException e) - { - throw new FolderCreationException(e, folder); - } - - createdFolderPath = new CreatedFolderPath(createdFolderPath, folder); + throw new FolderCreationException(e, folder); } + + createdFolderPath = new CreatedFolderPath(createdFolderPath, folder); } - return new CreatedFolder(folder, createdFolderPath); + return new CreatedFolder(srcFolder, createdFolderPath); } public static class CreatedFolder