This is an automated email from the ASF dual-hosted git repository. aharui pushed a commit to branch release_practice in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
commit bed4ac55ea08f7f8ab36721fe7f10ffdf465db83 Author: Alex Harui <[email protected]> AuthorDate: Tue May 28 09:38:11 2019 -0700 use STORED instead of DEFLATE for all SWC entries. NO_COMPRESSION was being used on the stream so size apparently isn't an issue and STORED is actually smaller than DEFLATE with NO_COMPRESSION.DEFLAT would still inject block size markers differently on Mac vs Windows --- .../apache/royale/compiler/clients/COMPJSC.java | 48 ++++++++++++++++++++-- .../royale/compiler/clients/COMPJSCRoyale.java | 44 ++++++++++++++++++-- .../java/org/apache/royale/swc/io/SWCWriter.java | 32 +++++++++++++-- 3 files changed, 113 insertions(+), 11 deletions(-) diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/COMPJSC.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/COMPJSC.java index f81e790..1096235 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/COMPJSC.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/COMPJSC.java @@ -33,6 +33,7 @@ import java.util.Collection; import java.util.Enumeration; import java.util.List; import java.util.Set; +import java.util.zip.CRC32; import java.util.zip.Deflater; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -345,7 +346,13 @@ public class COMPJSC extends MXMLJSC { System.out.println("Copy " + entry.getName()); InputStream input = zipFile.getInputStream(entry); - zipOutputStream.putNextEntry(new ZipEntry(entry.getName())); + ZipEntry ze = new ZipEntry(entry.getName()); + ze.setMethod(ZipEntry.STORED); + ze.setTime(entry.getTime()); + ze.setSize(entry.getSize()); + ze.setCompressedSize(entry.getCompressedSize()); + ze.setCrc(entry.getCrc()); + zipOutputStream.putNextEntry(ze); IOUtils.copy(input, zipOutputStream); zipOutputStream.flush(); zipOutputStream.closeEntry(); @@ -509,8 +516,19 @@ public class COMPJSC extends MXMLJSC } ZipEntry ze = new ZipEntry(outputClassFile); ze.setTime(zipFileDate); + ze.setMethod(ZipEntry.STORED); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + temp.writeTo(baos); + ze.setSize(baos.size()); + ze.setCompressedSize(baos.size()); + CRC32 crc = new CRC32(); + crc.reset(); + crc.update(baos.toByteArray()); + ze.setCrc(crc.getValue()); + zipOutputStream.putNextEntry(ze); - temp.writeTo(zipOutputStream); + baos.writeTo(zipOutputStream); zipOutputStream.flush(); zipOutputStream.closeEntry(); fileList.append(" <file path=\"" + outputClassFile + "\" mod=\"" + fileDate + "\"/>\n"); @@ -523,8 +541,19 @@ public class COMPJSC extends MXMLJSC System.out.println("Writing file: " + sourceMapFile); ze = new ZipEntry(sourceMapFile); ze.setTime(zipFileDate); + ze.setMethod(ZipEntry.STORED); + + baos = new ByteArrayOutputStream(); + sourceMapTemp.writeTo(baos); + ze.setSize(baos.size()); + ze.setCompressedSize(baos.size()); + crc = new CRC32(); + crc.reset(); + crc.update(baos.toByteArray()); + ze.setCrc(crc.getValue()); + zipOutputStream.putNextEntry(ze); - sourceMapTemp.writeTo(zipOutputStream); + baos.writeTo(zipOutputStream); zipOutputStream.flush(); zipOutputStream.closeEntry(); fileList.append(" <file path=\"" + sourceMapFile + "\" mod=\"" + fileDate + "\"/>\n"); @@ -574,8 +603,19 @@ public class COMPJSC extends MXMLJSC catalog.substring(libraryIndex + 13); ZipEntry ze = new ZipEntry(SWCReader.CATALOG_XML); ze.setTime(zipFileDate); + ze.setMethod(ZipEntry.STORED); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + baos.write(catalog.getBytes()); + ze.setSize(baos.size()); + ze.setCompressedSize(baos.size()); + CRC32 crc = new CRC32(); + crc.reset(); + crc.update(baos.toByteArray()); + ze.setCrc(crc.getValue()); + zipOutputStream.putNextEntry(ze); - zipOutputStream.write(catalog.getBytes()); + baos.writeTo(zipOutputStream); zipOutputStream.flush(); zipOutputStream.closeEntry(); zipOutputStream.flush(); diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/COMPJSCRoyale.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/COMPJSCRoyale.java index 43a885f..f2fa62e 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/COMPJSCRoyale.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/COMPJSCRoyale.java @@ -33,6 +33,7 @@ import java.util.Collection; import java.util.Enumeration; import java.util.List; import java.util.Set; +import java.util.zip.CRC32; import java.util.zip.Deflater; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -209,6 +210,10 @@ public class COMPJSCRoyale extends MXMLJSCRoyale System.out.println("Copy " + entry.getName()); InputStream input = zipFile.getInputStream(entry); ZipEntry ze = new ZipEntry(entry.getName()); + ze.setMethod(ZipEntry.STORED); + ze.setSize(entry.getSize()); + ze.setCompressedSize(entry.getCompressedSize()); + ze.setCrc(entry.getCrc()); long fileDate = System.currentTimeMillis(); long zipFileDate = fileDate; String metadataDate = targetSettings.getSWFMetadataDate(); @@ -405,8 +410,19 @@ public class COMPJSCRoyale extends MXMLJSCRoyale } ZipEntry ze = new ZipEntry(outputClassFile); ze.setTime(zipFileDate); + ze.setMethod(ZipEntry.STORED); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + temp.writeTo(baos); + ze.setSize(baos.size()); + ze.setCompressedSize(baos.size()); + CRC32 crc = new CRC32(); + crc.reset(); + crc.update(baos.toByteArray()); + ze.setCrc(crc.getValue()); + zipOutputStream.putNextEntry(ze); - temp.writeTo(zipOutputStream); + baos.writeTo(zipOutputStream); zipOutputStream.flush(); zipOutputStream.closeEntry(); fileList.append(" <file path=\"" + outputClassFile + "\" mod=\"" + fileDate + "\"/>\n"); @@ -419,8 +435,19 @@ public class COMPJSCRoyale extends MXMLJSCRoyale System.out.println("Writing file: " + sourceMapFile); ze = new ZipEntry(sourceMapFile); ze.setTime(zipFileDate); + ze.setMethod(ZipEntry.STORED); + + baos = new ByteArrayOutputStream(); + sourceMapTemp.writeTo(baos); + ze.setSize(baos.size()); + ze.setCompressedSize(baos.size()); + crc = new CRC32(); + crc.reset(); + crc.update(baos.toByteArray()); + ze.setCrc(crc.getValue()); + zipOutputStream.putNextEntry(ze); - sourceMapTemp.writeTo(zipOutputStream); + baos.writeTo(zipOutputStream); zipOutputStream.flush(); zipOutputStream.closeEntry(); fileList.append(" <file path=\"" + sourceMapFile + "\" mod=\"" + fileDate + "\"/>\n"); @@ -478,8 +505,19 @@ public class COMPJSCRoyale extends MXMLJSCRoyale catalog.substring(libraryIndex + 13); ZipEntry ze = new ZipEntry(SWCReader.CATALOG_XML); ze.setTime(zipFileDate); + ze.setMethod(ZipEntry.STORED); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + baos.write(catalog.getBytes()); + ze.setSize(baos.size()); + ze.setCompressedSize(baos.size()); + CRC32 crc = new CRC32(); + crc.reset(); + crc.update(baos.toByteArray()); + ze.setCrc(crc.getValue()); + zipOutputStream.putNextEntry(ze); - zipOutputStream.write(catalog.getBytes()); + baos.writeTo(zipOutputStream); zipOutputStream.flush(); zipOutputStream.closeEntry(); zipOutputStream.flush(); diff --git a/compiler/src/main/java/org/apache/royale/swc/io/SWCWriter.java b/compiler/src/main/java/org/apache/royale/swc/io/SWCWriter.java index ab5b769..095e321 100644 --- a/compiler/src/main/java/org/apache/royale/swc/io/SWCWriter.java +++ b/compiler/src/main/java/org/apache/royale/swc/io/SWCWriter.java @@ -121,10 +121,22 @@ public class SWCWriter extends SWCWriterBase { ZipEntry ze = new ZipEntry(CATALOG_XML); ze.setTime(fileDate); - zipOutputStream.putNextEntry(ze); - final Writer catalogXMLWriter = new OutputStreamWriter(zipOutputStream); + ze.setMethod(ZipEntry.STORED); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + final Writer catalogXMLWriter = new OutputStreamWriter(baos); writeCatalogXML(swc, catalogXMLWriter); catalogXMLWriter.flush(); + ze.setSize(baos.size()); + ze.setCompressedSize(baos.size()); + CRC32 crc = new CRC32(); + crc.reset(); + crc.update(baos.toByteArray()); + ze.setCrc(crc.getValue()); + zipOutputStream.putNextEntry(ze); + + baos.writeTo(zipOutputStream); + zipOutputStream.closeEntry(); } @@ -168,10 +180,22 @@ public class SWCWriter extends SWCWriterBase { ZipEntry ze = new ZipEntry(fileEntry.getPath()); ze.setTime(fileDate); - zipOutputStream.putNextEntry(ze); + ze.setMethod(ZipEntry.STORED); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); final InputStream fileInputStream = fileEntry.createInputStream(); - IOUtils.copy(fileInputStream, zipOutputStream); + IOUtils.copy(fileInputStream, baos); fileInputStream.close(); + + ze.setSize(baos.size()); + ze.setCompressedSize(baos.size()); + CRC32 crc = new CRC32(); + crc.reset(); + crc.update(baos.toByteArray()); + ze.setCrc(crc.getValue()); + zipOutputStream.putNextEntry(ze); + + baos.writeTo(zipOutputStream); zipOutputStream.closeEntry(); }
