[206641] WAR source files imported incorrectly
diff --git a/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/archive/AbstractArchiveSaveAdapter.java b/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/archive/AbstractArchiveSaveAdapter.java index d6dcf64..539d838 100644 --- a/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/archive/AbstractArchiveSaveAdapter.java +++ b/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/archive/AbstractArchiveSaveAdapter.java
@@ -36,7 +36,8 @@ Exception caughtException = null; try { monitor.beginTask("Saving resources", TOTAL_TICKS); - List<IArchiveResource> files = getArchive().getArchiveResources(); + + List<IArchiveResource> files = getArchiveResourcesForSave(); monitor.worked(GATHER_RESOURCES_TICKS); IProgressMonitor saveSubMonitor = new SubProgressMonitor(monitor, SAVE_RESOURCES_TICKS); int SUB_SAVE_TICKS = 10; @@ -68,6 +69,11 @@ } } + protected List<IArchiveResource> getArchiveResourcesForSave() { + List<IArchiveResource> files = getArchive().getArchiveResources(); + return files; + } + /** * Subclasses should implement to perform the actual save on the specified * {@link IArchiveResource}.
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/WebComponentArchiveSaveAdapter.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/WebComponentArchiveSaveAdapter.java index 682c7e6..c1531f5 100644 --- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/WebComponentArchiveSaveAdapter.java +++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/WebComponentArchiveSaveAdapter.java
@@ -11,7 +11,9 @@ package org.eclipse.jst.j2ee.internal.archive; import java.io.FileNotFoundException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.eclipse.core.resources.IFile; @@ -112,4 +114,19 @@ return true; } + + @Override + protected List<IArchiveResource> getArchiveResourcesForSave() { + List <IArchiveResource> sortedFiles = new ArrayList <IArchiveResource>(); + int classIndex = 0; + for(IArchiveResource resource : super.getArchiveResourcesForSave()){ + if(resource.getPath().lastSegment().endsWith(DOT_CLASS)){ + sortedFiles.add(classIndex++, resource); + } + else { + sortedFiles.add(resource); + } + } + return sortedFiles; + } }