FLEX-34318 - [Mavenizer] Refactor the Mavenizer in preparation of future mavenized releases of Flex - Put the pieces together. - Created an AirDownloader and FlashDownloader to automatically download and mavenize a given playerglobal or air sdk - Created a SDKConverter to allow classic mavenization of local Flex SDKs - Cleaned up the visual output
Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/0c4151f5 Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/0c4151f5 Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/0c4151f5 Branch: refs/heads/develop Commit: 0c4151f588ba635913ca9cfd91cca987a8e2b5d6 Parents: f8468ba Author: Christofer Dutz <[email protected]> Authored: Sat May 24 20:25:38 2014 +0200 Committer: Christofer Dutz <[email protected]> Committed: Sat May 24 20:25:38 2014 +0200 ---------------------------------------------------------------------- .../converter/flash/FlashConverter.java | 3 +- mavenizer/core/pom.xml | 13 +++ .../utilities/converter/core/AirDownloader.java | 52 +++++++++++ .../converter/core/FlashDownloader.java | 61 +++++++++++++ .../utilities/converter/core/SdkConverter.java | 57 ++++++++++++ mavenizer/pom.xml | 5 -- mavenizer/retrievers/base/pom.xml | 8 ++ .../converter/retrievers/BaseRetriever.java | 93 ++++++++++++++++++++ .../converter/retrievers/utils/ProgressBar.java | 47 ++++++++++ .../retrievers/download/DownloadRetriever.java | 57 ++++++++---- 10 files changed, 372 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c4151f5/mavenizer/converters/flash/src/main/java/org/apache/flex/utilities/converter/flash/FlashConverter.java ---------------------------------------------------------------------- diff --git a/mavenizer/converters/flash/src/main/java/org/apache/flex/utilities/converter/flash/FlashConverter.java b/mavenizer/converters/flash/src/main/java/org/apache/flex/utilities/converter/flash/FlashConverter.java index 2981109..b24e446 100644 --- a/mavenizer/converters/flash/src/main/java/org/apache/flex/utilities/converter/flash/FlashConverter.java +++ b/mavenizer/converters/flash/src/main/java/org/apache/flex/utilities/converter/flash/FlashConverter.java @@ -69,7 +69,8 @@ public class FlashConverter extends BaseConverter implements Converter { // Create a list of all libs that should belong to the Flash SDK runtime. final File directory = new File(rootSourceDirectory, "runtimes" + File.separator + "player"); if(!directory.exists() || !directory.isDirectory()) { - throw new ConverterException("Runtime directory does not exist."); + System.out.println("Skipping runtime generation."); + return; } final List<File> playerVersions = new ArrayList<File>(); playerVersions.addAll(Arrays.asList(directory.listFiles(new FlashRuntimeFilter()))); http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c4151f5/mavenizer/core/pom.xml ---------------------------------------------------------------------- diff --git a/mavenizer/core/pom.xml b/mavenizer/core/pom.xml index d3cc9bf..21dd31c 100644 --- a/mavenizer/core/pom.xml +++ b/mavenizer/core/pom.xml @@ -32,4 +32,17 @@ <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> + <dependencies> + <dependency> + <groupId>org.apache.flex.utilities.converter</groupId> + <artifactId>flex-converter</artifactId> + <version>1.0.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.flex.utilities.converter</groupId> + <artifactId>download-retriever</artifactId> + <version>1.0.0-SNAPSHOT</version> + </dependency> + </dependencies> + </project> http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c4151f5/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/AirDownloader.java ---------------------------------------------------------------------- diff --git a/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/AirDownloader.java b/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/AirDownloader.java new file mode 100644 index 0000000..cac8244 --- /dev/null +++ b/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/AirDownloader.java @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.flex.utilities.converter.core; + +import org.apache.flex.utilities.converter.air.AirConverter; +import org.apache.flex.utilities.converter.flash.FlashConverter; +import org.apache.flex.utilities.converter.retrievers.download.DownloadRetriever; +import org.apache.flex.utilities.converter.retrievers.types.PlatformType; +import org.apache.flex.utilities.converter.retrievers.types.SDKType; + +import java.io.File; + +/** + * Created by cdutz on 24.05.2014. + */ +public class AirDownloader { + + public static void main(String[] args) throws Exception { + if(args.length != 3) { + System.out.println("Usage: AirDownloader {air-version} {target-directory} {platform-type}"); + return; + } + + final String version = args[0]; + final File targetDirectory = new File(args[1]); + final PlatformType platformType = PlatformType.valueOf(args[2]); + if(platformType == null) { + throw new Exception("Unknown platform type: " + args[2]); + } + + final DownloadRetriever downloadRetriever = new DownloadRetriever(); + final File airSDKSourceDirectory = downloadRetriever.retrieve(SDKType.AIR, version, platformType); + + final AirConverter airConverter = new AirConverter(airSDKSourceDirectory, targetDirectory); + airConverter.convert(); + } + +} http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c4151f5/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/FlashDownloader.java ---------------------------------------------------------------------- diff --git a/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/FlashDownloader.java b/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/FlashDownloader.java new file mode 100644 index 0000000..c75e250 --- /dev/null +++ b/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/FlashDownloader.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.flex.utilities.converter.core; + +import org.apache.flex.utilities.converter.flash.FlashConverter; +import org.apache.flex.utilities.converter.retrievers.download.DownloadRetriever; +import org.apache.flex.utilities.converter.retrievers.types.SDKType; + +import java.io.File; + +/** + * Created by cdutz on 24.05.2014. + */ +public class FlashDownloader { + + public static void main(String[] args) throws Exception { + if(args.length != 2) { + System.out.println("Usage: FlashDownloader {player-version} {target-directory}"); + return; + } + + final String version = args[0]; + final File targetDirectory = new File(args[1]); + + final DownloadRetriever downloadRetriever = new DownloadRetriever(); + final File playerglobalSourceFile = downloadRetriever.retrieve(SDKType.FLASH, version); + + final File tempSdkRoot = new File(playerglobalSourceFile.getParent(), + playerglobalSourceFile.getName().substring(0, playerglobalSourceFile.getName().length() - 4) + + "-temp-dir"); + final File playerGlobalTargetDir = new File(tempSdkRoot, + ("frameworks.libs.player.").replace(".", File.separator) + version); + if(!playerGlobalTargetDir.mkdirs()) { + throw new Exception("Couldn't create playerglobal target dir " + tempSdkRoot.getAbsolutePath()); + } + final File playerGlobalTargetFile = new File(playerGlobalTargetDir, "playerglobal.swc"); + + if(!playerglobalSourceFile.renameTo(playerGlobalTargetFile)) { + throw new Exception("Couldn't move playerglobal file from " + playerglobalSourceFile.getAbsolutePath() + + " to " + playerGlobalTargetFile.getAbsolutePath()); + } + + final FlashConverter flashConverter = new FlashConverter(tempSdkRoot, targetDirectory); + flashConverter.convert(); + } + +} http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c4151f5/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 new file mode 100644 index 0000000..44115cc --- /dev/null +++ b/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/SdkConverter.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.flex.utilities.converter.core; + +import org.apache.flex.utilities.converter.air.AirConverter; +import org.apache.flex.utilities.converter.flash.FlashConverter; +import org.apache.flex.utilities.converter.flex.FlexConverter; + +import java.io.File; + +/** + * Created by cdutz on 24.05.2014. + */ +public class SDKConverter { + + public static void main(String[] args) throws Exception { + if(args.length != 2) { + System.out.println("Usage: SDKConverter {source-directory} {target-directory}"); + return; + } + + final File sourceDirectory = new File(args[0]); + final File targetDirectory = new File(args[1]); + + if(!sourceDirectory.exists()) { + throw new Exception("'source-directory' does not exist: " + sourceDirectory.getAbsolutePath()); + } + + if(!targetDirectory.exists()) { + if(!targetDirectory.mkdirs()) { + throw new Exception("Could not create 'target-directory': " + targetDirectory.getAbsolutePath()); + } + } + + final FlexConverter flexConverter = new FlexConverter(sourceDirectory, targetDirectory); + flexConverter.convert(); + final AirConverter airConverter = new AirConverter(sourceDirectory, targetDirectory); + airConverter.convert(); + final FlashConverter flashConverter = new FlashConverter(sourceDirectory, targetDirectory); + flashConverter.convert(); + } + +} http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c4151f5/mavenizer/pom.xml ---------------------------------------------------------------------- diff --git a/mavenizer/pom.xml b/mavenizer/pom.xml index 83015db..3be7f8f 100644 --- a/mavenizer/pom.xml +++ b/mavenizer/pom.xml @@ -51,11 +51,6 @@ <artifactId>jettison</artifactId> <version>1.3.1</version> </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-compress</artifactId> - <version>1.4</version> - </dependency> <!-- Needed for Aether Repository Client --> <dependency> http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c4151f5/mavenizer/retrievers/base/pom.xml ---------------------------------------------------------------------- diff --git a/mavenizer/retrievers/base/pom.xml b/mavenizer/retrievers/base/pom.xml index 4a8c74d..5663955 100644 --- a/mavenizer/retrievers/base/pom.xml +++ b/mavenizer/retrievers/base/pom.xml @@ -32,4 +32,12 @@ <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> + <dependencies> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-compress</artifactId> + <version>1.8.1</version> + </dependency> + </dependencies> + </project> http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c4151f5/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/BaseRetriever.java ---------------------------------------------------------------------- diff --git a/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/BaseRetriever.java b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/BaseRetriever.java index 8477a0f..4f04363 100644 --- a/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/BaseRetriever.java +++ b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/BaseRetriever.java @@ -16,8 +16,101 @@ */ package org.apache.flex.utilities.converter.retrievers; +import com.google.common.io.CountingInputStream; +import org.apache.commons.compress.archivers.ArchiveEntry; +import org.apache.commons.compress.archivers.ArchiveException; +import org.apache.commons.compress.archivers.ArchiveInputStream; +import org.apache.commons.compress.archivers.ArchiveStreamFactory; +import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; +import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream; +import org.apache.flex.utilities.converter.retrievers.exceptions.RetrieverException; +import org.apache.flex.utilities.converter.retrievers.utils.ProgressBar; + +import java.io.*; + /** * Created by cdutz on 18.05.2014. */ public abstract class BaseRetriever implements Retriever { + + public static final int KILOBYTE = 1024; + public static final int MEGABYTE = KILOBYTE * 1024; + public static final int BUFFER_MAX = MEGABYTE; + + protected void unpack(File inputArchive, File targetDirectory) throws RetrieverException { + if (!targetDirectory.mkdirs()) { + throw new RetrieverException( + "Unable to create extraction directory " + targetDirectory.getAbsolutePath()); + } + + ArchiveInputStream archiveInputStream = null; + ArchiveEntry entry; + try { + + final CountingInputStream inputStream = new CountingInputStream(new FileInputStream(inputArchive)); + + final long inputFileSize = inputArchive.length(); + + if(inputArchive.getName().endsWith(".tbz2")) { + archiveInputStream = new TarArchiveInputStream( + new BZip2CompressorInputStream(inputStream)); + } else { + archiveInputStream = new ArchiveStreamFactory().createArchiveInputStream( + new BufferedInputStream(inputStream)); + } + + final ProgressBar progressBar = new ProgressBar(inputFileSize); + while ((entry = archiveInputStream.getNextEntry()) != null) { + final File outputFile = new File(targetDirectory, entry.getName()); + + // Entry is a directory. + if (entry.isDirectory()) { + if (!outputFile.exists()) { + if(!outputFile.mkdirs()) { + throw new RetrieverException( + "Could not create output directory " + outputFile.getAbsolutePath()); + } + } + } + + // Entry is a file. + else { + final byte[] data = new byte[BUFFER_MAX]; + final FileOutputStream fos = new FileOutputStream(outputFile); + BufferedOutputStream dest = null; + try { + dest = new BufferedOutputStream(fos, BUFFER_MAX); + + int count; + while ((count = archiveInputStream.read(data, 0, BUFFER_MAX)) != -1) { + dest.write(data, 0, count); + progressBar.updateProgress(inputStream.getCount()); + } + } finally { + if(dest != null) { + dest.flush(); + dest.close(); + } + } + } + + progressBar.updateProgress(inputStream.getCount()); + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (ArchiveException e) { + e.printStackTrace(); + } finally { + if(archiveInputStream != null) { + try { + archiveInputStream.close(); + } catch(Exception e) { + // Ignore... + } + } + } + } + } http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c4151f5/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/utils/ProgressBar.java ---------------------------------------------------------------------- diff --git a/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/utils/ProgressBar.java b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/utils/ProgressBar.java new file mode 100644 index 0000000..8e91864 --- /dev/null +++ b/mavenizer/retrievers/base/src/main/java/org/apache/flex/utilities/converter/retrievers/utils/ProgressBar.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.flex.utilities.converter.retrievers.utils; + +import org.codehaus.plexus.util.StringUtils; + +/** + * Created by cdutz on 24.05.2014. + */ +public class ProgressBar { + + protected long total; + + public ProgressBar(long total) { + this.total = total; + drawOutput(0l); + } + + public void updateProgress(long current) { + drawOutput(current); + } + + protected void drawOutput(long current) { + final int transferredPercent = (int) Math.round( + ((double) current / (double) total) * (double) 100); + final int segmentsTransferred = transferredPercent / 2; + final int segmentsRest = 50 - segmentsTransferred; + System.out.print("\r" + String.format(" %3d", transferredPercent) + "% [" + + StringUtils.repeat("=", segmentsTransferred) + + ((segmentsRest > 0) ? ">" + StringUtils.repeat(" ", segmentsRest - 1) : "") + "] "); + } + +} http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c4151f5/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 0bf26b2..6bea87c 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 @@ -20,7 +20,7 @@ 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.codehaus.plexus.util.StringUtils; +import org.apache.flex.utilities.converter.retrievers.utils.ProgressBar; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; @@ -68,12 +68,17 @@ public class DownloadRetriever extends BaseRetriever { // Create a temp target file. final File targetFile = File.createTempFile(type.toString() + "-" + version + - ((platformType != null) ? "-" + platformType : "") + "-", ".bin"); + ((platformType != null) ? "-" + platformType : "") + "-", + sourceUrl.getFile().substring(sourceUrl.getFile().lastIndexOf("."))); final FileOutputStream fos = new FileOutputStream(targetFile); - // Do the copying. + //////////////////////////////////////////////////////////////////////////////// + // Do the downloading. + //////////////////////////////////////////////////////////////////////////////// + final long expectedSize = connection.getContentLength(); long transferedSize = 0L; + System.out.println("==========================================================="); System.out.println("Downloading " + type + " version " + version + ((platformType != null) ? " for platform " + platformType : "")); if(expectedSize > 1014 * 1024) { @@ -81,21 +86,33 @@ public class DownloadRetriever extends BaseRetriever { } 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); - final int transferedPercent = (int) Math.round( - ((double) transferedSize / (double) expectedSize) * (double) 100); - final int segmentsTransferred = transferedPercent / 2; - final int segmentsRest = 50 - segmentsTransferred; - System.out.print("\r" + String.format("%3d", transferedPercent) + "% [" + - StringUtils.repeat("=", segmentsTransferred) + - ((segmentsRest > 0) ? ">" + StringUtils.repeat(" ", segmentsRest - 1) : "") + "]"); + progressBar.updateProgress(transferedSize); } - System.out.println(); - System.out.println("Finished"); fos.close(); + System.out.println(); + System.out.println("Finished downloading."); + System.out.println("==========================================================="); - return 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) { @@ -117,6 +134,10 @@ public class DownloadRetriever extends BaseRetriever { final XPath xPath = XPathFactory.newInstance().newXPath(); final Element artifactElement = (Element) xPath.evaluate( expression, doc.getDocumentElement(), XPathConstants.NODE); + if(artifactElement == null) { + throw new RetrieverException("Could not find " + sdkType.toString() + " SDK with version " + version); + } + final StringBuilder stringBuilder = new StringBuilder(); if (sdkType == SDKType.FLEX) { final String path = artifactElement.getAttribute("path"); @@ -260,13 +281,13 @@ public class DownloadRetriever extends BaseRetriever { 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, "13.0", PlatformType.MAC);*/ + //retriever.retrieve(SDKType.AIR, "14.0", PlatformType.WINDOWS); + retriever.retrieve(SDKType.AIR, "14.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, "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");
