Repository: flex-utilities
Updated Branches:
  refs/heads/develop 251b8ec12 -> 88930af0b


- Implemented a "fontkit" converter
- Excluded the "optional" lib-dir from the flex-converter
- Extended the DownloadRetriever to download the fontkit dependencies


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

Branch: refs/heads/develop
Commit: 88930af0bd4cd4a5853caead261c1dbbe1a6e24a
Parents: 251b8ec
Author: Christofer Dutz <[email protected]>
Authored: Tue Apr 7 13:15:46 2015 +0200
Committer: Christofer Dutz <[email protected]>
Committed: Tue Apr 7 13:15:46 2015 +0200

----------------------------------------------------------------------
 .../flex/utilities/converter/BaseConverter.java |   1 -
 .../flex/utilities/converter/Converter.java     |   2 -
 mavenizer/converters/flex/pom.xml               |   5 +
 .../utilities/converter/flex/FlexConverter.java |   8 -
 .../converter/fontkit/FontkitConverter.java     |  81 +++++
 mavenizer/converters/pom.xml                    |   1 +
 .../utilities/converter/core/SdkConverter.java  |  13 +-
 .../converter/retrievers/types/SdkType.java     |   3 +-
 mavenizer/retrievers/download/pom.xml           |   6 +
 .../retrievers/download/DownloadRetriever.java  | 315 +++++++++++++------
 .../src/main/resources/message.properties       |   1 +
 11 files changed, 320 insertions(+), 116 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/88930af0/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 9747209..3e1dbf7 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
@@ -19,7 +19,6 @@ package org.apache.flex.utilities.converter;
 import com.sun.jersey.api.client.Client;
 import com.sun.jersey.api.client.ClientResponse;
 import com.sun.jersey.api.client.WebResource;
-
 import org.apache.flex.utilities.converter.exceptions.ConverterException;
 import org.apache.flex.utilities.converter.model.MavenArtifact;
 import org.apache.velocity.VelocityContext;

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/88930af0/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/Converter.java
----------------------------------------------------------------------
diff --git 
a/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/Converter.java
 
b/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/Converter.java
index 5883270..54f4e18 100644
--- 
a/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/Converter.java
+++ 
b/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/Converter.java
@@ -18,8 +18,6 @@ package org.apache.flex.utilities.converter;
 
 import org.apache.flex.utilities.converter.exceptions.ConverterException;
 
-import java.io.File;
-
 /**
  * Created by cdutz on 18.04.2014.
  */

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/88930af0/mavenizer/converters/flex/pom.xml
----------------------------------------------------------------------
diff --git a/mavenizer/converters/flex/pom.xml 
b/mavenizer/converters/flex/pom.xml
index e0a4d1c..4134ea0 100644
--- a/mavenizer/converters/flex/pom.xml
+++ b/mavenizer/converters/flex/pom.xml
@@ -49,6 +49,11 @@
             <artifactId>flash-converter</artifactId>
             <version>1.1.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.flex.utilities.converter</groupId>
+            <artifactId>fontkit-converter</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/88930af0/mavenizer/converters/flex/src/main/java/org/apache/flex/utilities/converter/flex/FlexConverter.java
----------------------------------------------------------------------
diff --git 
a/mavenizer/converters/flex/src/main/java/org/apache/flex/utilities/converter/flex/FlexConverter.java
 
b/mavenizer/converters/flex/src/main/java/org/apache/flex/utilities/converter/flex/FlexConverter.java
index 4aa9ba8..d6d3495 100644
--- 
a/mavenizer/converters/flex/src/main/java/org/apache/flex/utilities/converter/flex/FlexConverter.java
+++ 
b/mavenizer/converters/flex/src/main/java/org/apache/flex/utilities/converter/flex/FlexConverter.java
@@ -94,12 +94,6 @@ public class FlexConverter extends BaseConverter implements 
Converter {
         final File externalDirectory = new File(directory, "external");
         if(externalDirectory.exists() && externalDirectory.isDirectory()) {
             files.addAll(Arrays.asList(externalDirectory.listFiles(new 
FlexCompilerFilter())));
-
-            // Add all jars in the "external/optional" directory.
-            final File optionalDirectory = new File(externalDirectory, 
"optional");
-            if(optionalDirectory.exists() && optionalDirectory.isDirectory()) {
-                files.addAll(Arrays.asList(optionalDirectory.listFiles(new 
FlexCompilerFilter())));
-            }
         }
 
         // Generate artifacts for every jar in the input directories.
@@ -172,7 +166,6 @@ public class FlexConverter extends BaseConverter implements 
Converter {
         // After processing the current directory, process any eventually 
existing child directories.
         final List<File> children = new ArrayList<File>();
         children.addAll(Arrays.asList(directory.listFiles(new FileFilter() {
-            @Override
             public boolean accept(File pathname) {
                 return pathname.isDirectory() && 
!"player".equals(pathname.getName()) &&
                         !"mx".equals(pathname.getName());
@@ -441,7 +434,6 @@ public class FlexConverter extends BaseConverter implements 
Converter {
                 if (themeDirectory.isDirectory()) {
                     // Add all the content files.
                     final File contents[] = themeDirectory.listFiles(new 
FileFilter() {
-                        @Override
                         public boolean accept(File pathname) {
                             return !(pathname.isDirectory() && 
"src".equals(pathname.getName())) &&
                                     !"preview.jpg".equals(pathname.getName()) 
&& !pathname.getName().endsWith(".fla");

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/88930af0/mavenizer/converters/fontkit/src/main/java/org/apache/flex/utilities/converter/fontkit/FontkitConverter.java
----------------------------------------------------------------------
diff --git 
a/mavenizer/converters/fontkit/src/main/java/org/apache/flex/utilities/converter/fontkit/FontkitConverter.java
 
b/mavenizer/converters/fontkit/src/main/java/org/apache/flex/utilities/converter/fontkit/FontkitConverter.java
new file mode 100644
index 0000000..bfe27b5
--- /dev/null
+++ 
b/mavenizer/converters/fontkit/src/main/java/org/apache/flex/utilities/converter/fontkit/FontkitConverter.java
@@ -0,0 +1,81 @@
+package org.apache.flex.utilities.converter.fontkit;
+
+import org.apache.flex.utilities.converter.BaseConverter;
+import org.apache.flex.utilities.converter.Converter;
+import org.apache.flex.utilities.converter.exceptions.ConverterException;
+import org.apache.flex.utilities.converter.model.MavenArtifact;
+
+import java.io.File;
+
+/**
+ * Created by christoferdutz on 06.04.15.
+ */
+public class FontkitConverter extends BaseConverter implements Converter {
+
+    public FontkitConverter(File rootSourceDirectory, File 
rootTargetDirectory) throws ConverterException {
+        super(rootSourceDirectory, rootTargetDirectory);
+    }
+
+    @Override
+    protected void processDirectory() throws ConverterException {
+        File fontkitRootDir = new File(rootSourceDirectory, 
"lib/external/optional");
+        if(!fontkitRootDir.exists() || !fontkitRootDir.isDirectory()) {
+            throw new ConverterException("Fontkit directory '" + 
fontkitRootDir.getPath() + "' is invalid.");
+        }
+
+        File afeJar = new File(fontkitRootDir, "afe.jar");
+        File aglj40Jar = new File(fontkitRootDir, "aglj40.jar");
+        File rideauJar = new File(fontkitRootDir, "rideau.jar");
+        File flexFontkitJar = new File(fontkitRootDir, "flex-fontkit.jar");
+
+        if(!afeJar.exists() || !aglj40Jar.exists() || !rideauJar.exists() || 
!flexFontkitJar.exists()) {
+            throw new ConverterException("Fontkit directory '" + 
fontkitRootDir.getPath() + "' must contain the jar " +
+                    "files afe.jar, aglj40.jar, rideau.jar and 
flex-fontkit.jar.");
+        }
+
+        final MavenArtifact fontkit = new MavenArtifact();
+        fontkit.setGroupId("com.adobe");
+        fontkit.setArtifactId("fontkit");
+        fontkit.setVersion("1.0");
+        fontkit.setPackaging("pom");
+
+        final MavenArtifact afe = new MavenArtifact();
+        afe.setGroupId("com.adobe.fontkit");
+        afe.setArtifactId("afe");
+        afe.setVersion("1.0");
+        afe.setPackaging("jar");
+        afe.addDefaultBinaryArtifact(afeJar);
+        fontkit.addDependency(afe);
+
+        final MavenArtifact aglj40 = new MavenArtifact();
+        aglj40.setGroupId("com.adobe.fontkit");
+        aglj40.setArtifactId("aglj40");
+        aglj40.setVersion("1.0");
+        aglj40.setPackaging("jar");
+        aglj40.addDefaultBinaryArtifact(aglj40Jar);
+        fontkit.addDependency(aglj40);
+
+        final MavenArtifact rideau = new MavenArtifact();
+        rideau.setGroupId("com.adobe.fontkit");
+        rideau.setArtifactId("rideau");
+        rideau.setVersion("1.0");
+        rideau.setPackaging("jar");
+        rideau.addDefaultBinaryArtifact(rideauJar);
+        fontkit.addDependency(rideau);
+
+        final MavenArtifact flexFontkit = new MavenArtifact();
+        flexFontkit.setGroupId("com.adobe.fontkit");
+        flexFontkit.setArtifactId("flex-fontkit");
+        flexFontkit.setVersion("1.0");
+        flexFontkit.setPackaging("jar");
+        flexFontkit.addDefaultBinaryArtifact(flexFontkitJar);
+        fontkit.addDependency(flexFontkit);
+
+        writeArtifact(afe);
+        writeArtifact(aglj40);
+        writeArtifact(rideau);
+        writeArtifact(flexFontkit);
+        writeArtifact(fontkit);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/88930af0/mavenizer/converters/pom.xml
----------------------------------------------------------------------
diff --git a/mavenizer/converters/pom.xml b/mavenizer/converters/pom.xml
index aae0080..40db6e5 100644
--- a/mavenizer/converters/pom.xml
+++ b/mavenizer/converters/pom.xml
@@ -38,6 +38,7 @@
         <module>air</module>
         <module>flash</module>
         <module>flex</module>
+        <module>fontkit</module>
     </modules>
 
 </project>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/88930af0/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/SdkConverter.java
----------------------------------------------------------------------
diff --git 
a/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/SdkConverter.java
 
b/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/SdkConverter.java
index e98cf5f..ca8e0df 100644
--- 
a/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/SdkConverter.java
+++ 
b/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/SdkConverter.java
@@ -20,6 +20,7 @@ import org.apache.flex.utilities.converter.air.AirConverter;
 import org.apache.flex.utilities.converter.exceptions.ConverterException;
 import org.apache.flex.utilities.converter.flash.FlashConverter;
 import org.apache.flex.utilities.converter.flex.FlexConverter;
+import org.apache.flex.utilities.converter.fontkit.FontkitConverter;
 
 import java.io.File;
 
@@ -51,19 +52,25 @@ public class SdkConverter {
             final FlexConverter flexConverter = new 
FlexConverter(sourceDirectory, targetDirectory);
             flexConverter.convert();
         } catch(ConverterException e) {
-            System.out.println("Skipping generation of FLEX SDK");
+            System.out.println("Error during FLEX SDK generation: " + 
e.getMessage());
         }
         try {
             final AirConverter airConverter = new 
AirConverter(sourceDirectory, targetDirectory);
             airConverter.convert();
         } catch(ConverterException e) {
-            System.out.println("Skipping generation of AIR SDK");
+            System.out.println("Error during AIR SDK generation: " + 
e.getMessage());
         }
         try {
             final FlashConverter flashConverter = new 
FlashConverter(sourceDirectory, targetDirectory);
             flashConverter.convert();
         } catch(ConverterException e) {
-            System.out.println("Skipping generation of Flash SDK");
+            System.out.println("Error during Flash SDK generation: " + 
e.getMessage());
+        }
+        try {
+            final FontkitConverter fontkitConverter = new 
FontkitConverter(sourceDirectory, targetDirectory);
+            fontkitConverter.convert();
+        } catch(ConverterException e) {
+            System.out.println("Error during Fontkit artifacts generation: " + 
e.getMessage());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/88930af0/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/types/SdkType.java
----------------------------------------------------------------------
diff --git 
a/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/types/SdkType.java
 
b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/types/SdkType.java
index da0b527..c6c1986 100644
--- 
a/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/types/SdkType.java
+++ 
b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/types/SdkType.java
@@ -23,6 +23,7 @@ public enum SdkType {
 
     FLASH,
     AIR,
-    FLEX
+    FLEX,
+    FONTKIT
 
 }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/88930af0/mavenizer/retrievers/download/pom.xml
----------------------------------------------------------------------
diff --git a/mavenizer/retrievers/download/pom.xml 
b/mavenizer/retrievers/download/pom.xml
index 219cbfd..dbaf098 100644
--- a/mavenizer/retrievers/download/pom.xml
+++ b/mavenizer/retrievers/download/pom.xml
@@ -36,6 +36,12 @@
             <artifactId>base-retriever</artifactId>
             <version>1.1.0-SNAPSHOT</version>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.2.3</version>
+        </dependency>
     </dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/88930af0/mavenizer/retrievers/download/src/main/java/org/apache/flex/utilities/converter/retrievers/download/DownloadRetriever.java
----------------------------------------------------------------------
diff --git 
a/mavenizer/retrievers/download/src/main/java/org/apache/flex/utilities/converter/retrievers/download/DownloadRetriever.java
 
b/mavenizer/retrievers/download/src/main/java/org/apache/flex/utilities/converter/retrievers/download/DownloadRetriever.java
index ff0a05e..3eb3bbe 100644
--- 
a/mavenizer/retrievers/download/src/main/java/org/apache/flex/utilities/converter/retrievers/download/DownloadRetriever.java
+++ 
b/mavenizer/retrievers/download/src/main/java/org/apache/flex/utilities/converter/retrievers/download/DownloadRetriever.java
@@ -16,11 +16,17 @@
  */
 package org.apache.flex.utilities.converter.retrievers.download;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.flex.utilities.converter.retrievers.BaseRetriever;
 import 
org.apache.flex.utilities.converter.retrievers.exceptions.RetrieverException;
 import org.apache.flex.utilities.converter.retrievers.types.PlatformType;
 import org.apache.flex.utilities.converter.retrievers.types.SdkType;
 import org.apache.flex.utilities.converter.retrievers.utils.ProgressBar;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
@@ -33,14 +39,12 @@ import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
-
 import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
+import java.net.*;
 import java.nio.channels.Channels;
 import java.nio.channels.ReadableByteChannel;
 import java.util.Properties;
+import java.util.UUID;
 
 /**
  * Created by cdutz on 18.05.2014.
@@ -50,40 +54,154 @@ public class DownloadRetriever extends BaseRetriever {
     public static final String FLEX_INSTALLER_CONFIG_URL =
             "http://flex.apache.org/installer/sdk-installer-config-4.0.xml";;
 
+    public File retrieve(SdkType type) throws RetrieverException {
+        return retrieve(type, null, null);
+    }
+
     public File retrieve(SdkType type, String version) throws 
RetrieverException {
         return retrieve(type, version, null);
     }
 
     public File retrieve(SdkType type, String version, PlatformType 
platformType) throws RetrieverException {
         try {
-            if (type.equals(SdkType.FLASH) || type.equals(SdkType.AIR)) {
+            if (type.equals(SdkType.FLASH) || type.equals(SdkType.AIR) || 
type.equals(SdkType.FONTKIT)) {
                 confirmLicenseAcceptance(type);
             }
 
-            // Define the source.
-            final URL sourceUrl = new URL(getBinaryUrl(type, version, 
platformType));
-            final URLConnection connection = sourceUrl.openConnection();
-            final ReadableByteChannel rbc = 
Channels.newChannel(connection.getInputStream());
+            if(type.equals(SdkType.FONTKIT)) {
+                File tmpTargetFile = 
File.createTempFile(UUID.randomUUID().toString(), "tmp");
+                if(!(tmpTargetFile.delete()))
+                {
+                    throw new IOException("Could not delete temp file: " + 
tmpTargetFile.getAbsolutePath());
+                }
+
+                File targetRootDir = new File(tmpTargetFile.getParentFile(), 
type.toString());
+                File targetDir = new File(targetRootDir, 
"/lib/external/optional");
+                if(!(targetDir.mkdirs()))
+                {
+                    throw new IOException("Could not create temp directory: " 
+ targetDir.getAbsolutePath());
+                }
+
+                final URI afeUri = new 
URI("http://sourceforge.net/adobe/flexsdk/code/HEAD/tree/trunk/lib/afe.jar?format=raw";);
+                final File afeFile = new File(targetDir, "afe.jar");
+                performSafeDownload(afeUri, afeFile);
+
+                final URI aglj40Uri = new 
URI("http://sourceforge.net/adobe/flexsdk/code/HEAD/tree/trunk/lib/aglj40.jar?format=raw";);
+                final File aglj40File = new File(targetDir, "aglj40.jar");
+                performSafeDownload(aglj40Uri, aglj40File);
+
+                final URI rideauUri = new 
URI("http://sourceforge.net/adobe/flexsdk/code/HEAD/tree/trunk/lib/rideau.jar?format=raw";);
+                final File rideauFile = new File(targetDir, "rideau.jar");
+                performSafeDownload(rideauUri, rideauFile);
+
+                final URI flexFontkitUri = new 
URI("http://sourceforge.net/adobe/flexsdk/code/HEAD/tree/trunk/lib/flex-fontkit.jar?format=raw";);
+                final File flexFontkitFile = new File(targetDir, 
"flex-fontkit.jar");
+                performSafeDownload(flexFontkitUri, flexFontkitFile);
+
+                return targetRootDir;
+            } else {
+                final URL sourceUrl = new URL(getBinaryUrl(type, version, 
platformType));
+                final File targetFile = File.createTempFile(type.toString() + 
"-" + version +
+                                ((platformType != null) ? "-" + platformType : 
"") + "-",
+                        
sourceUrl.getFile().substring(sourceUrl.getFile().lastIndexOf(".")));
+                performFastDownload(sourceUrl, targetFile);
+
+                
////////////////////////////////////////////////////////////////////////////////
+                // Do the extracting.
+                
////////////////////////////////////////////////////////////////////////////////
+
+                if (type.equals(SdkType.FLASH)) {
+                    return targetFile;
+                } else {
+                    System.out.println("Extracting archive to temp 
directory.");
+                    final File targetDirectory = new 
File(targetFile.getParent(),
+                            targetFile.getName().substring(0, 
targetFile.getName().lastIndexOf(".") - 1));
+                    unpack(targetFile, targetDirectory);
+                    System.out.println();
+                    System.out.println("Finished extracting.");
+                    
System.out.println("===========================================================");
+
+                    return targetDirectory;
+                }
+            }
+        } catch (MalformedURLException e) {
+            throw new RetrieverException("Error downloading archive.", e);
+        } catch (FileNotFoundException e) {
+            throw new RetrieverException("Error downloading archive.", e);
+        } catch (IOException e) {
+            throw new RetrieverException("Error downloading archive.", e);
+        } catch (URISyntaxException e) {
+            throw new RetrieverException("Error downloading archive.", e);
+        }
+    }
 
-            // Create a temp target file.
-            final File targetFile = File.createTempFile(type.toString() + "-" 
+ version +
-                    ((platformType != null) ? "-" + platformType : "") + "-",
-                    
sourceUrl.getFile().substring(sourceUrl.getFile().lastIndexOf(".")));
-            final FileOutputStream fos = new FileOutputStream(targetFile);
+    protected void performFastDownload(URL sourceUrl, File targetFile) throws 
IOException {
+        final URLConnection connection = sourceUrl.openConnection();
+        final ReadableByteChannel rbc = 
Channels.newChannel(connection.getInputStream());
+        final FileOutputStream fos = new FileOutputStream(targetFile);
 
-            
////////////////////////////////////////////////////////////////////////////////
-            // Do the downloading.
-            
////////////////////////////////////////////////////////////////////////////////
+        
////////////////////////////////////////////////////////////////////////////////
+        // Do the downloading.
+        
////////////////////////////////////////////////////////////////////////////////
 
-            final long expectedSize = connection.getContentLength();
+        final long expectedSize = connection.getContentLength();
+        long transferedSize = 0L;
+
+        
System.out.println("===========================================================");
+        System.out.println("Downloading " + sourceUrl.toString());
+        if(expectedSize > 1014 * 1024) {
+            System.out.println("Expected size: " + (expectedSize / 1024 / 
1024) + "MB");
+        } else {
+            System.out.println("Expected size: " + (expectedSize / 1024 ) + 
"KB");
+        }
+        final ProgressBar progressBar = new ProgressBar(expectedSize);
+        while (transferedSize < expectedSize) {
+            transferedSize += fos.getChannel().transferFrom(rbc, 
transferedSize, 1 << 20);
+            progressBar.updateProgress(transferedSize);
+        }
+        fos.close();
+        System.out.println();
+        System.out.println("Finished downloading.");
+        
System.out.println("===========================================================");
+    }
+
+    protected void performSafeDownload(URI sourceUri, File targetFile) throws 
IOException {
+        HttpGet httpget = new HttpGet(sourceUri);
+        HttpClient httpclient = new DefaultHttpClient();
+        HttpResponse response = httpclient.execute(httpget);
+
+        String reasonPhrase = response.getStatusLine().getReasonPhrase();
+        int statusCode = response.getStatusLine().getStatusCode();
+        System.out.println(String.format("statusCode: %d", statusCode));
+        System.out.println(String.format("reasonPhrase: %s", reasonPhrase));
+
+        HttpEntity entity = response.getEntity();
+        InputStream content = entity.getContent();
+
+        final ReadableByteChannel rbc = Channels.newChannel(content);
+        final FileOutputStream fos = new FileOutputStream(targetFile);
+
+        
////////////////////////////////////////////////////////////////////////////////
+        // Do the downloading.
+        
////////////////////////////////////////////////////////////////////////////////
+
+        final long expectedSize = entity.getContentLength();
+        
System.out.println("===========================================================");
+        System.out.println("Downloading " + sourceUri.toString());
+        if(expectedSize < 0) {
+            try {
+                System.out.println("Unknown size.");
+                IOUtils.copy(content, fos);
+            } finally {
+                // close http network connection
+                content.close();
+            }
+        } else {
             long transferedSize = 0L;
-            
System.out.println("===========================================================");
-            System.out.println("Downloading " + type + " version " + version +
-                    ((platformType != null) ? " for platform " + platformType 
: ""));
-            if(expectedSize > 1014 * 1024) {
+            if (expectedSize > 1014 * 1024) {
                 System.out.println("Expected size: " + (expectedSize / 1024 / 
1024) + "MB");
             } else {
-                System.out.println("Expected size: " + (expectedSize / 1024 ) 
+ "KB");
+                System.out.println("Expected size: " + (expectedSize / 1024) + 
"KB");
             }
             final ProgressBar progressBar = new ProgressBar(expectedSize);
             while (transferedSize < expectedSize) {
@@ -92,33 +210,9 @@ public class DownloadRetriever extends BaseRetriever {
             }
             fos.close();
             System.out.println();
-            System.out.println("Finished downloading.");
-            
System.out.println("===========================================================");
-
-            
////////////////////////////////////////////////////////////////////////////////
-            // Do the extracting.
-            
////////////////////////////////////////////////////////////////////////////////
-
-            if(type.equals(SdkType.FLASH)) {
-                return targetFile;
-            } else {
-                System.out.println("Extracting archive to temp directory.");
-                final File targetDirectory = new File(targetFile.getParent(),
-                        targetFile.getName().substring(0, 
targetFile.getName().lastIndexOf(".") - 1));
-                unpack(targetFile, targetDirectory);
-                System.out.println();
-                System.out.println("Finished extracting.");
-                
System.out.println("===========================================================");
-
-                return targetDirectory;
-            }
-        } catch (MalformedURLException e) {
-            throw new RetrieverException("Error downloading archive.", e);
-        } catch (FileNotFoundException e) {
-            throw new RetrieverException("Error downloading archive.", e);
-        } catch (IOException e) {
-            throw new RetrieverException("Error downloading archive.", e);
         }
+        System.out.println("Finished downloading.");
+        
System.out.println("===========================================================");
     }
 
     protected String getBinaryUrl(SdkType sdkType, String version, 
PlatformType platformType)
@@ -204,6 +298,9 @@ public class DownloadRetriever extends BaseRetriever {
             case FLASH:
                 
stringBuilder.append("//*[@id='flash.sdk.version.").append(version).append("']");
                 break;
+            case FONTKIT:
+                stringBuilder.append("//fontswf");
+
         }
         return stringBuilder.toString();
     }
@@ -221,8 +318,10 @@ public class DownloadRetriever extends BaseRetriever {
             question = 
questionProps.getProperty("ASK_ADOBE_FLASH_PLAYER_GLOBAL_SWC");
         } else if(type.equals(SdkType.AIR)) {
             question = questionProps.getProperty("ASK_ADOBE_AIR_SDK");
+        } else if(type.equals(SdkType.FONTKIT)) {
+            question = questionProps.getProperty("ASK_ADOBE_FONTKIT");
         } else {
-            throw new RetrieverException("Unknown SDKType");
+            throw new RetrieverException("Unknown SdkType");
         }
         System.out.println(question);
         System.out.print(questionProps.getProperty("DO_YOU_ACCEPT_QUESTION") + 
" ");
@@ -244,62 +343,76 @@ public class DownloadRetriever extends BaseRetriever {
         final DownloadRetriever retriever = new DownloadRetriever();
 
         // Test the retrieval of Flex SDKs
-        /*retriever.retrieve(SDKType.FLEX, "4.9.1");
-        retriever.retrieve(SDKType.FLEX, "4.10.0");
-        retriever.retrieve(SDKType.FLEX, "4.11.0");
-        retriever.retrieve(SDKType.FLEX, "4.12.0");
-        retriever.retrieve(SDKType.FLEX, "4.12.1");
-        retriever.retrieve(SDKType.FLEX, "Nightly");*/
+        /*retriever.retrieve(SdkType.FLEX, "4.9.1");
+        retriever.retrieve(SdkType.FLEX, "4.10.0");
+        retriever.retrieve(SdkType.FLEX, "4.11.0");
+        retriever.retrieve(SdkType.FLEX, "4.12.0");
+        retriever.retrieve(SdkType.FLEX, "4.12.1");
+        retriever.retrieve(SdkType.FLEX, "4.13.0");*/
+        retriever.retrieve(SdkType.FLEX, "4.14.1");
+        //retriever.retrieve(SdkType.FLEX, "Nightly");
+
+        // Test the retrieval of Fontkit libraries
+        retriever.retrieve(SdkType.FONTKIT);
 
         // Test the retrieval of AIR SDKs
-        /*retriever.retrieve(SDKType.AIR, "2.6", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "2.6", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "2.6", PlatformType.LINUX);
-        retriever.retrieve(SDKType.AIR, "2.7", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "2.7", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "3.0", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "3.0", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "3.1", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "3.1", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "3.2", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "3.2", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "3.3", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "3.3", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "3.4", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "3.4", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "3.5", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "3.5", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "3.6", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "3.6", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "3.7", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "3.7", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "3.8", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "3.8", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "3.9", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "3.9", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "4.0", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "4.0", PlatformType.MAC);
-        retriever.retrieve(SDKType.AIR, "13.0", PlatformType.WINDOWS);
-        retriever.retrieve(SDKType.AIR, "13.0", PlatformType.MAC);*/
-        //retriever.retrieve(SDKType.AIR, "14.0", PlatformType.WINDOWS);
+        /*retriever.retrieve(SdkType.AIR, "2.6", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "2.6", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "2.6", PlatformType.LINUX);
+        retriever.retrieve(SdkType.AIR, "2.7", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "2.7", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "3.0", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "3.0", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "3.1", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "3.1", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "3.2", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "3.2", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "3.3", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "3.3", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "3.4", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "3.4", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "3.5", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "3.5", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "3.6", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "3.6", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "3.7", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "3.7", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "3.8", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "3.8", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "3.9", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "3.9", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "4.0", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "4.0", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "13.0", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "13.0", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "14.0", PlatformType.WINDOWS);
         retriever.retrieve(SdkType.AIR, "14.0", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "15.0", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "15.0", PlatformType.MAC);
+        retriever.retrieve(SdkType.AIR, "16.0", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "16.0", PlatformType.MAC);*/
+        retriever.retrieve(SdkType.AIR, "17.0", PlatformType.WINDOWS);
+        retriever.retrieve(SdkType.AIR, "17.0", PlatformType.MAC);
 
         // Test the retrieval of Flash SDKs
-        /*retriever.retrieve(SDKType.FLASH, "10.2");
-        retriever.retrieve(SDKType.FLASH, "10.3");
-        retriever.retrieve(SDKType.FLASH, "11.0");
-        retriever.retrieve(SDKType.FLASH, "11.1");
-        retriever.retrieve(SDKType.FLASH, "11.2");
-        retriever.retrieve(SDKType.FLASH, "11.3");
-        retriever.retrieve(SDKType.FLASH, "11.4");
-        retriever.retrieve(SDKType.FLASH, "11.5");
-        retriever.retrieve(SDKType.FLASH, "11.6");
-        retriever.retrieve(SDKType.FLASH, "11.7");
-        retriever.retrieve(SDKType.FLASH, "11.8");
-        retriever.retrieve(SDKType.FLASH, "11.9");
-        retriever.retrieve(SDKType.FLASH, "12.0");
-        retriever.retrieve(SDKType.FLASH, "13.0");
-        retriever.retrieve(SDKType.FLASH, "14.0");*/
+        /*retriever.retrieve(SdkType.FLASH, "10.2");
+        retriever.retrieve(SdkType.FLASH, "10.3");
+        retriever.retrieve(SdkType.FLASH, "11.0");
+        retriever.retrieve(SdkType.FLASH, "11.1");
+        retriever.retrieve(SdkType.FLASH, "11.2");
+        retriever.retrieve(SdkType.FLASH, "11.3");
+        retriever.retrieve(SdkType.FLASH, "11.4");
+        retriever.retrieve(SdkType.FLASH, "11.5");
+        retriever.retrieve(SdkType.FLASH, "11.6");
+        retriever.retrieve(SdkType.FLASH, "11.7");
+        retriever.retrieve(SdkType.FLASH, "11.8");
+        retriever.retrieve(SdkType.FLASH, "11.9");
+        retriever.retrieve(SdkType.FLASH, "12.0");
+        retriever.retrieve(SdkType.FLASH, "13.0");
+        retriever.retrieve(SdkType.FLASH, "14.0");
+        retriever.retrieve(SdkType.FLASH, "15.0");
+        retriever.retrieve(SdkType.FLASH, "16.0");*/
+        retriever.retrieve(SdkType.FLASH, "17.0");
 
     }
 

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/88930af0/mavenizer/retrievers/download/src/main/resources/message.properties
----------------------------------------------------------------------
diff --git 
a/mavenizer/retrievers/download/src/main/resources/message.properties 
b/mavenizer/retrievers/download/src/main/resources/message.properties
index b799623..9552436 100644
--- a/mavenizer/retrievers/download/src/main/resources/message.properties
+++ b/mavenizer/retrievers/download/src/main/resources/message.properties
@@ -18,4 +18,5 @@
 
################################################################################
 ASK_ADOBE_AIR_SDK=The Adobe SDK license agreement applies to the Adobe AIR 
SDK. Do you want to install the Adobe AIR SDK? Adobe AIR SDK License: 
http://www.adobe.com/products/air/sdk-eula.html
 ASK_ADOBE_FLASH_PLAYER_GLOBAL_SWC=The Adobe SDK license agreement applies to 
the Adobe Flash Player playerglobal.swc. Do you want to install the Adobe Flash 
Player playerglobal.swc?
+ASK_ADOBE_FONTKIT=Apache Flex can optionally integrate with Adobe's embedded 
font support. This feature requires a few font jars from the Adobe Flex SDK. 
The Adobe SDK license agreement for Adobe Flex 4.6 applies to these jars. This 
license is not compatible with the Apache V2 license. Do you want to install 
these jars from the Adobe Flex SDK?
 DO_YOU_ACCEPT_QUESTION=Do you accept (Yes/No)?
\ No newline at end of file

Reply via email to