[148901] web modules inside ear packed in correct
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java
index 07b8f77..b053568 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java
@@ -15,9 +15,10 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.jar.JarOutputStream;
import java.util.zip.CRC32;
import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
+
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
@@ -26,7 +27,7 @@
* Packages resources to a .zip file
*/
public class ModulePackager {
- private ZipOutputStream outputStream;
+ private JarOutputStream outputStream;
// private StringBuffer manifestContents;
private boolean useCompression = true;
@@ -43,7 +44,7 @@
directoryPath = (Path) directoryPath.removeLastSegments(1);
File newZipFile = new File(directoryPath.toString());
newZipFile.mkdirs();
- outputStream = new ZipOutputStream(new FileOutputStream(filename));
+ outputStream = new JarOutputStream(new FileOutputStream(filename));
useCompression = compress;
}
@@ -88,8 +89,8 @@
* @throws IOException
*/
public void writeFolder(String destinationPath) throws IOException {
- if (!destinationPath.endsWith("/")) //$NON-NLS-1$
- destinationPath = destinationPath + '/';
+// if (!destinationPath.endsWith(File.separator ))
+// destinationPath = destinationPath + File.separator;
ZipEntry newEntry = new ZipEntry(destinationPath);
outputStream.putNextEntry(newEntry);
outputStream.closeEntry();
@@ -173,27 +174,24 @@
*/
public void pack(File directory, String root) throws CoreException, IOException
{
- File[] files = directory.listFiles();
- for(int i=0; i<files.length;i++)
- {
- if(files[i].isDirectory())
- {
- String relativeFolder=makeRelative(files[i].getAbsolutePath(), root);
- if(relativeFolder!=null){//should always be true
- writeFolder(relativeFolder);
- }
- pack(files[i], root);
- }
- else{
- String relativeFolder=makeRelative(files[i].getAbsolutePath(), root);
- if(relativeFolder!=null){//should always be true
- write(files[i],relativeFolder);
- }
- }
- }
-
-
- }
+ File[] files = directory.listFiles();
+ for( int i = 0; i < files.length; i++ )
+ {
+ if( files[i].isDirectory() )
+ {
+ pack( files[i], root );
+ } else
+ {
+ String relativeFolder = makeRelative( files[i]
+ .getAbsolutePath(), root );
+ if( relativeFolder != null )
+ {// should always be true
+ write( files[i], relativeFolder );
+ }
+ }
+ }
+
+ }
/**
* Make directoryname relative to root
* @param fileName
@@ -207,8 +205,10 @@
{
folder=fileName.substring(root.length());
}
- return folder;
-
+ folder = folder.replaceAll("\\\\", "/"); //$NON-NLS-1$ //$NON-NLS-2$
+ if (folder.length() > 0 && folder.charAt(0) == '/')
+ folder = folder.substring(1);
+ return folder;
}
}