You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2014/09/05 15:15:33 UTC

[17/28] git commit: [flex-utilities] [refs/heads/develop] - Added a feature to zip up the Air runtime directories to the AirConverter.

Added a feature to zip up the Air runtime directories to the AirConverter.


Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/4eb49a5e
Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/4eb49a5e
Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/4eb49a5e

Branch: refs/heads/develop
Commit: 4eb49a5e8d688c9366bacf6e05d21b4e42bf83eb
Parents: 7d6c9f6
Author: cdutz <ch...@c-ware.de>
Authored: Thu Jun 26 16:13:21 2014 +0200
Committer: cdutz <ch...@c-ware.de>
Committed: Thu Jun 26 16:13:21 2014 +0200

----------------------------------------------------------------------
 .../utilities/converter/air/AirConverter.java   |  41 ++++-
 .../flex/utilities/converter/BaseConverter.java | 162 +++++++------------
 2 files changed, 95 insertions(+), 108 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4eb49a5e/mavenizer/converters/air/src/main/java/org/apache/flex/utilities/converter/air/AirConverter.java
----------------------------------------------------------------------
diff --git a/mavenizer/converters/air/src/main/java/org/apache/flex/utilities/converter/air/AirConverter.java b/mavenizer/converters/air/src/main/java/org/apache/flex/utilities/converter/air/AirConverter.java
index 596ff5c..c655df5 100644
--- a/mavenizer/converters/air/src/main/java/org/apache/flex/utilities/converter/air/AirConverter.java
+++ b/mavenizer/converters/air/src/main/java/org/apache/flex/utilities/converter/air/AirConverter.java
@@ -113,12 +113,18 @@ public class AirConverter extends BaseConverter implements Converter {
         final List<File> files = new ArrayList<File>();
         files.addAll(Arrays.asList(directory.listFiles(new AirRuntimeFilter())));
 
-        // Generate artifacts for every jar in the input directories.
+        // Generate artifacts for every jar in the input directories (Actually this is only one file).
         for(final File sourceFile : files) {
             final MavenArtifact artifact = resolveArtifact(sourceFile, "com.adobe.air.runtime", airSdkVersion);
             runtime.addDependency(artifact);
         }
 
+        // Zip up the AIR runtime directory.
+        final MavenArtifact airRuntimeArtifact = generateAirRuntimeArtifact(rootSourceDirectory);
+        if(airRuntimeArtifact != null) {
+            runtime.addDependency(airRuntimeArtifact);
+        }
+
         // Write this artifact to file.
         writeArtifact(runtime);
     }
@@ -161,7 +167,38 @@ public class AirConverter extends BaseConverter implements Converter {
     //
     ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-    /**
+    protected MavenArtifact generateAirRuntimeArtifact(File rootDirectory) throws ConverterException {
+        final MavenArtifact airRuntimeArtifact = new MavenArtifact();
+        airRuntimeArtifact.setGroupId("com.adobe.air.runtime");
+        airRuntimeArtifact.setArtifactId("air-runtime");
+        airRuntimeArtifact.setVersion(airSdkVersion);
+        airRuntimeArtifact.setPackaging("zip");
+
+        final File runtimeRoot = new File(rootDirectory, "runtimes.air".replace(".", File.separator));
+        final File[] platforms = runtimeRoot.listFiles();
+        if(platforms != null) {
+            for (final File platform : platforms) {
+                if (!platform.isDirectory()) {
+                   continue;
+                }
+                final String platformName = platform.getName();
+                try {
+                   final File zip = File.createTempFile("AirRuntime-" + platformName + "-" + airSdkVersion, "zip");
+                   generateZip(platform.listFiles(), zip);
+                   airRuntimeArtifact.addBinaryArtifact(platformName, zip);
+                } catch (IOException e) {
+                   throw new ConverterException("Error creating runtime zip.", e);
+                }
+            }
+        } else {
+            return null;
+        }
+
+        writeArtifact(airRuntimeArtifact);
+        return airRuntimeArtifact;
+    }
+
+   /**
      * Get the version of an AIR SDK from the content of the SDK directory.
      *
      * @return version string for the current AIR SDK

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4eb49a5e/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/BaseConverter.java
----------------------------------------------------------------------
diff --git a/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/BaseConverter.java b/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/BaseConverter.java
index 499b8e9..9747209 100644
--- a/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/BaseConverter.java
+++ b/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/BaseConverter.java
@@ -277,112 +277,6 @@ public abstract class BaseConverter {
         } catch (Exception e) {
             throw new ConverterException("Error generating template output.", e);
         }
-
-        /*final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        factory.setNamespaceAware(true);
-        final DocumentBuilder builder;
-        try {
-            builder = factory.newDocumentBuilder();
-            DOMImplementation domImpl = builder.getDOMImplementation();
-            final Document pom = domImpl.createDocument(MAVEN_SCHEMA_URI, "project", null);
-
-            final Element root = pom.getDocumentElement();
-            final Element modelVersion = pom.createElementNS(MAVEN_SCHEMA_URI, "modelVersion");
-            modelVersion.setTextContent("4.0.0");
-            root.appendChild(modelVersion);
-            final Element groupId = pom.createElementNS(MAVEN_SCHEMA_URI, "groupId");
-            groupId.setTextContent(metadata.getGroupId());
-            root.appendChild(groupId);
-            final Element artifactId = pom.createElementNS(MAVEN_SCHEMA_URI, "artifactId");
-            artifactId.setTextContent(metadata.getArtifactId());
-            root.appendChild(artifactId);
-            final Element version = pom.createElementNS(MAVEN_SCHEMA_URI, "version");
-            version.setTextContent(metadata.getVersion());
-            root.appendChild(version);
-            final Element packaging = pom.createElementNS(MAVEN_SCHEMA_URI, "packaging");
-            packaging.setTextContent(metadata.getPackaging());
-            root.appendChild(packaging);
-
-            // Output dependency data.
-            if((metadata.getDependencies() != null) && !metadata.getDependencies().isEmpty()) {
-                final Element dependencies = pom.createElementNS(MAVEN_SCHEMA_URI, "dependencies");
-                root.appendChild(dependencies);
-                final Element dependencyManagement = pom.createElementNS(MAVEN_SCHEMA_URI, "dependencyManagement");
-                final Element dependencyManagementDependencies = pom.createElementNS(MAVEN_SCHEMA_URI, "dependencies");
-                dependencyManagement.appendChild(dependencyManagementDependencies);
-                root.appendChild(dependencyManagement);
-
-                final Map<String, MavenArtifact> dependencyIndex = new HashMap<String, MavenArtifact>();
-                for(final MavenArtifact dependencyMetadata : metadata.getDependencies()) {
-                    Element dependency = pom.createElementNS(MAVEN_SCHEMA_URI, "dependency");
-                    dependencies.appendChild(dependency);
-
-                    // Generate the normal dependency.
-                    Element dependencyGroupId = pom.createElementNS(MAVEN_SCHEMA_URI, "groupId");
-                    dependencyGroupId.setTextContent(dependencyMetadata.getGroupId());
-                    dependency.appendChild(dependencyGroupId);
-                    Element dependencyArtifactId = pom.createElementNS(MAVEN_SCHEMA_URI, "artifactId");
-                    dependencyArtifactId.setTextContent(dependencyMetadata.getArtifactId());
-                    dependency.appendChild(dependencyArtifactId);
-                    Element dependencyVersion = pom.createElementNS(MAVEN_SCHEMA_URI, "version");
-                    dependencyVersion.setTextContent(dependencyMetadata.getVersion());
-                    dependency.appendChild(dependencyVersion);
-                    Element dependencyPackaging = pom.createElementNS(MAVEN_SCHEMA_URI, "type");
-                    dependencyPackaging.setTextContent(dependencyMetadata.getPackaging());
-                    dependency.appendChild(dependencyPackaging);
-                    if(dependencyMetadata.getClassifier() != null) {
-                        final Element dependencyClassifier = pom.createElementNS(MAVEN_SCHEMA_URI, "classifier");
-                        dependencyClassifier.setTextContent(dependencyMetadata.getClassifier());
-                        dependency.appendChild(dependencyClassifier);
-                    }
-
-                    // Configure the dependency including version in the dependency management section of the pom.
-                    dependency = pom.createElementNS(MAVEN_SCHEMA_URI, "dependency");
-                    dependencyGroupId = pom.createElementNS(MAVEN_SCHEMA_URI, "groupId");
-                    dependencyGroupId.setTextContent(dependencyMetadata.getGroupId());
-                    dependency.appendChild(dependencyGroupId);
-                    dependencyArtifactId = pom.createElementNS(MAVEN_SCHEMA_URI, "artifactId");
-                    dependencyArtifactId.setTextContent(dependencyMetadata.getArtifactId());
-                    dependency.appendChild(dependencyArtifactId);
-                    Element dependencyVersion = pom.createElementNS(MAVEN_SCHEMA_URI, "version");
-                    dependencyVersion.setTextContent(dependencyMetadata.getVersion());
-                    dependency.appendChild(dependencyVersion);
-                    dependencyPackaging = pom.createElementNS(MAVEN_SCHEMA_URI, "type");
-                    dependencyPackaging.setTextContent(dependencyMetadata.getPackaging());
-                    dependency.appendChild(dependencyPackaging);
-                    dependencyManagementDependencies.appendChild(dependency);
-
-                    dependencyIndex.put(dependencyMetadata.getArtifactId(), dependencyMetadata);
-                }
-
-                // Output the rb.swc dependencies.
-                if(metadata.getLibrariesWithResourceBundles() != null) {
-                    for(final String artifactWithResourceBundle : metadata.getLibrariesWithResourceBundles()) {
-                        final MavenArtifact dependencyMetadata = dependencyIndex.get(artifactWithResourceBundle);
-                        if(dependencyMetadata != null) {
-                            final Element dependency = pom.createElementNS(MAVEN_SCHEMA_URI, "dependency");
-                            dependencies.appendChild(dependency);
-
-                            final Element dependencyGroupId = pom.createElementNS(MAVEN_SCHEMA_URI, "groupId");
-                            dependencyGroupId.setTextContent(dependencyMetadata.getGroupId());
-                            dependency.appendChild(dependencyGroupId);
-                            final Element dependencyArtifactId = pom.createElementNS(MAVEN_SCHEMA_URI, "artifactId");
-                            dependencyArtifactId.setTextContent(dependencyMetadata.getArtifactId());
-                            dependency.appendChild(dependencyArtifactId);
-                            final Element dependencyVersion = pom.createElementNS(MAVEN_SCHEMA_URI, "version");
-                            dependencyVersion.setTextContent(dependencyMetadata.getVersion());
-                            dependency.appendChild(dependencyVersion);
-                            final Element dependencyPackaging = pom.createElementNS(MAVEN_SCHEMA_URI, "type");
-                            dependencyPackaging.setTextContent("rb.swc");
-                            dependency.appendChild(dependencyPackaging);
-                        }
-                    }
-                }
-            }
-            return pom;
-        } catch (ParserConfigurationException e) {
-            throw new ConverterException("Error creating pom document.", e);
-        }*/
     }
 
     protected void writeDummy(final File targetFile) throws ConverterException {
@@ -484,4 +378,60 @@ public abstract class BaseConverter {
         }
     }
 
+    protected void generateZip(File[] sourceFiles, File targetFile) throws ConverterException {
+        if((sourceFiles == null) || (sourceFiles.length == 0)) {
+            return;
+        }
+        final File rootDir = sourceFiles[0].getParentFile();
+        final File zipInputFiles[] = new File[sourceFiles.length];
+        System.arraycopy(sourceFiles, 0, zipInputFiles, 0, sourceFiles.length);
+
+        try {
+            // Add all the content to a zip-file.
+            final ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(targetFile));
+            for (final File file : zipInputFiles) {
+                addFileToZip(zipOutputStream, file, rootDir);
+            }
+            zipOutputStream.close();
+        } catch(IOException e) {
+            throw new ConverterException("Error generating " + targetFile.getName() + " zip.", e);
+        }
+    }
+
+    private void addFileToZip(ZipOutputStream zipOutputStream, File inputFile, File rootDirectory)
+          throws ConverterException {
+
+        if (inputFile == null) {
+            return;
+        }
+
+        // If this is a directory, add all it's children.
+        if (inputFile.isDirectory()) {
+            final File directoryContent[] = inputFile.listFiles();
+            if (directoryContent != null) {
+                for (final File file : directoryContent) {
+                    addFileToZip(zipOutputStream, file, rootDirectory);
+                }
+            }
+        }
+        // If this is a file, add it to the zips output.
+        else {
+            byte[] buf = new byte[1024];
+            try {
+                final FileInputStream in = new FileInputStream(inputFile);
+                final String zipPath = inputFile.getAbsolutePath().substring(
+                      rootDirectory.getAbsolutePath().length() + 1).replace("\\", "/");
+                zipOutputStream.putNextEntry(new ZipEntry(zipPath));
+                int len;
+                while ((len = in.read(buf)) > 0) {
+                    zipOutputStream.write(buf, 0, len);
+                }
+                zipOutputStream.closeEntry();
+                in.close();
+            } catch(IOException e) {
+                throw new ConverterException("Error adding files to zip.", e);
+            }
+        }
+    }
+
 }