Author: tveronezi
Date: Tue May  6 01:54:42 2014
New Revision: 1592648

URL: http://svn.apache.org/r1592648
Log:
better way to mask codeless jars

Modified:
    
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageBuilder.groovy

Modified: 
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageBuilder.groovy
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageBuilder.groovy?rev=1592648&r1=1592647&r2=1592648&view=diff
==============================================================================
--- 
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageBuilder.groovy
 (original)
+++ 
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageBuilder.groovy
 Tue May  6 01:54:42 2014
@@ -29,6 +29,8 @@ import org.apache.maven.project.MavenPro
 import org.apache.tomee.deb.jira.ChangeLogBuilder
 
 import java.text.SimpleDateFormat
+import java.util.jar.JarEntry
+import java.util.jar.JarFile
 import java.util.zip.Deflater
 
 class PackageBuilder {
@@ -297,47 +299,39 @@ class PackageBuilder {
         dataDir.absolutePath
     }
 
-    void maskCodelessJars(String classifier, String dataDirPath) {
-        def jars = []
-        new File(dataDirPath).eachFileRecurse(FileType.FILES) {
-            if (it.name.endsWith('.jar')) {
-                jars << it
-            }
-        }
-        def codelessJars = jars.findAll { jar ->
-            def explodedJar = new File(
-                    project.properties['distribution.workdir'] as String,
-                    "unjar/${classifier}/${jar.name}"
-            )
-            ant.unjar(src: jar, dest: explodedJar)
-            def dotClassFiles = []
-            explodedJar.eachFileRecurse(FileType.FILES) {
-                if (it.name.endsWith('.class')) {
-                    dotClassFiles << it
-                }
-            }
-            explodedJar.listFiles(
-                    { dir, file -> file ==~ /.*?\.class/ } as FilenameFilter
-            )
-            def result = dotClassFiles.size() == 0
-            if (!result) {
-                ant.delete(dir: explodedJar)
-            }
-            result
-        }
-        codelessJars.each { jar ->
-            ant.echo(message: "Masking codeless jar: ${jar.absolutePath}")
-            def explodedJar = new File(
-                    project.properties['distribution.workdir'] as String,
-                    "unjar/${classifier}/${jar.name}"
-            )
-            jar.delete()
-            ant.zip(destfile: jar.absolutePath) {
-                fileset(dir: explodedJar.absolutePath) {
-                    exclude(name: '**/META-INF/MANIFEST.MF')
+    private boolean hasClasses(File jarFile) {
+        def entriesEnumerator = new JarFile(jarFile).entries()
+        while (entriesEnumerator.hasMoreElements()) {
+            def jarEntry = entriesEnumerator.nextElement() as JarEntry
+            if (jarEntry.name.endsWith('.class')) {
+                return true
+            }
+        }
+        false
+    }
+
+    void maskCodelessJars(String classifier, String dataDir) {
+        def unjarDir = new File(project.properties['distribution.workdir'] as 
String, 'unjar')
+        unjarDir.mkdirs()
+        new File(dataDir).eachFileRecurse(FileType.FILES) { File jarFile ->
+            if (jarFile.name.endsWith('.jar')) {
+                if (!hasClasses(jarFile)) {
+                    ant.echo(message: "Masking codeless jar: 
${jarFile.absolutePath}")
+                    def explodedJar = new File(
+                            project.properties['distribution.workdir'] as 
String,
+                            "unjar/${classifier}/${jarFile.name}"
+                    )
+                    ant.unjar(src: jarFile, dest: explodedJar)
+                    jarFile.delete()
+                    ant.zip(destfile: jarFile.absolutePath) {
+                        fileset(dir: explodedJar.absolutePath) {
+                            exclude(name: '**/META-INF/MANIFEST.MF')
+                        }
+                    }
                 }
             }
         }
+        ant.delete(dir: unjarDir)
     }
 
     private File createTarGz(String classifier, String path) {


Reply via email to