FLEX-34318 - [Mavenizer] Refactor the Mavenizer in preparation of future mavenized releases of Flex - Removed the dependency management section and added the version to the artifacts themselves - Made the mavenizer generate the mx artifact to the main framework - Added the generation of the asdoc template.zip - Added a first version of a batch converter to convert a set of fdks
Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/fac7e6fb Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/fac7e6fb Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/fac7e6fb Branch: refs/heads/develop Commit: fac7e6fb3cf937a3c69b91d2efc588e0eef936a5 Parents: 2e4279b Author: Christofer Dutz <[email protected]> Authored: Thu Jun 5 19:23:41 2014 +0200 Committer: Christofer Dutz <[email protected]> Committed: Thu Jun 5 19:23:41 2014 +0200 ---------------------------------------------------------------------- .../flex/utilities/converter/BaseConverter.java | 15 ++-- .../utilities/converter/flex/FlexConverter.java | 61 ++++++++++++-- .../converter/core/BatchConverter.java | 88 ++++++++++++++++++++ 3 files changed, 152 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/fac7e6fb/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 6f67c6d..47466d1 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 @@ -51,7 +51,7 @@ import java.util.zip.ZipOutputStream; */ public abstract class BaseConverter { - protected static final Map<String, MavenArtifact> checksums = new HashMap<String, MavenArtifact>(); + protected final Map<String, MavenArtifact> checksums = new HashMap<String, MavenArtifact>(); protected static final String MAVEN_SCHEMA_URI = "http://maven.apache.org/POM/4.0.0"; protected static final String MAVEN_CENTRAL_SHA_1_QUERY_URL = "http://search.maven.org/solrsearch/select?rows=20&wt=json&q=1:"; @@ -306,10 +306,10 @@ public abstract class BaseConverter { 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 dependencyManagement = pom.createElementNS(MAVEN_SCHEMA_URI, "dependencyManagement"); final Element dependencyManagementDependencies = pom.createElementNS(MAVEN_SCHEMA_URI, "dependencies"); dependencyManagement.appendChild(dependencyManagementDependencies); - root.appendChild(dependencyManagement); + root.appendChild(dependencyManagement);*/ final Map<String, MavenArtifact> dependencyIndex = new HashMap<String, MavenArtifact>(); for(final MavenArtifact dependencyMetadata : metadata.getDependencies()) { @@ -323,6 +323,9 @@ public abstract class BaseConverter { 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); @@ -333,20 +336,20 @@ public abstract class BaseConverter { } // Configure the dependency including version in the dependency management section of the pom. - dependency = pom.createElementNS(MAVEN_SCHEMA_URI, "dependency"); + /*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 = 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); + dependencyManagementDependencies.appendChild(dependency);*/ dependencyIndex.put(dependencyMetadata.getArtifactId(), dependencyMetadata); } http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/fac7e6fb/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 1d0709a..7d1c671 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 @@ -149,6 +149,14 @@ public class FlexConverter extends BaseConverter implements Converter { framework.addDependency(artifact); } } + + // Forcefully add the mx library to the rest of the framework. + if("libs".equals(directory.getName())) { + final File mxSwc = new File(directory, "mx/mx.swc"); + final MavenArtifact artifact = resolveArtifact(mxSwc, artifactGroupId, flexSdkVersion); + framework.addDependency(artifact); + } + // If we are in the "mobile" directory and the paren contains an "experimental_mobile.swc" file, // add this to the mobile package. if("mobile".equals(directory.getName())) { @@ -166,7 +174,8 @@ public class FlexConverter extends BaseConverter implements Converter { children.addAll(Arrays.asList(directory.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { - return pathname.isDirectory() && !"player".equals(pathname.getName()); + return pathname.isDirectory() && !"player".equals(pathname.getName()) && + !"mx".equals(pathname.getName()); } }))); for(final File childDirectory : children) { @@ -200,7 +209,7 @@ public class FlexConverter extends BaseConverter implements Converter { @Override protected void writeArtifact(MavenArtifact artifact) throws ConverterException { if(!"pom".equals(artifact.getPackaging())) { - // Copy the rsls too. + // Copy the rsls. final File rslSourceFile = getRsl(artifact.getArtifactId()); if(rslSourceFile != null) { final File rslTargetFile = new File( @@ -209,7 +218,7 @@ public class FlexConverter extends BaseConverter implements Converter { copyFile(rslSourceFile, rslTargetFile); } - // Copy the swzc too. + // Copy the swzc. final File signedRslSourceFile = getSignedRsl(artifact.getArtifactId()); if(signedRslSourceFile != null) { final File signedRslTargetFile = new File( @@ -218,7 +227,7 @@ public class FlexConverter extends BaseConverter implements Converter { copyFile(signedRslSourceFile, signedRslTargetFile); } - // Copy the language resources too. + // Copy the language resources. final Map<String, File> resourceBundles = getResourceBundles(artifact.getArtifactId()); if(!resourceBundles.isEmpty() && artifact.getBinaryTargetFile(rootTargetDirectory, MavenArtifact.DEFAULT_CLASSIFIER) != null) { @@ -248,7 +257,7 @@ public class FlexConverter extends BaseConverter implements Converter { } } - // Add source zips ... + // Add source zips. final File sourceArtifactSourceFile = generateSourceArtifact(artifact.getArtifactId()); if(sourceArtifactSourceFile != null) { final File sourceArtifactTargetFile = new File( @@ -256,6 +265,18 @@ public class FlexConverter extends BaseConverter implements Converter { artifact.getArtifactId() + "-" + artifact.getVersion() + "-sources.jar"); copyFile(sourceArtifactSourceFile, sourceArtifactTargetFile); } + + // If this is the asdoc artifact, create the templates.zip for that. + if("asdoc".equals(artifact.getArtifactId())) { + final File asdocTemplatesZipSourceFile = generateAsdocTemplatesZip(); + if (asdocTemplatesZipSourceFile != null) { + final File asdocTemplatesZipTargetFile = new File( + artifact.getBinaryTargetFile( + rootTargetDirectory, MavenArtifact.DEFAULT_CLASSIFIER).getParent(), + artifact.getArtifactId() + "-" + artifact.getVersion() + "-template.zip"); + copyFile(asdocTemplatesZipSourceFile, asdocTemplatesZipTargetFile); + } + } } super.writeArtifact(artifact); @@ -291,6 +312,34 @@ public class FlexConverter extends BaseConverter implements Converter { return null; } + protected File generateAsdocTemplatesZip() throws ConverterException { + final File templatesDirectory = new File(rootSourceDirectory, "asdoc/templates"); + + if (templatesDirectory.listFiles() != null) { + final File sourceFiles[] = templatesDirectory.listFiles(); + if (sourceFiles != null) { + final File zipInputFiles[] = new File[sourceFiles.length + 1]; + System.arraycopy(sourceFiles, 0, zipInputFiles, 0, sourceFiles.length); + + try { + // Create a temp file. + final File targetFile = File.createTempFile("temp-asdoc-templates", "zip"); + + JarOutputStream jar = new JarOutputStream(new FileOutputStream(targetFile)); + for (final File file : zipInputFiles) { + addFileToZip(jar, file, templatesDirectory); + } + jar.close(); + + return targetFile; + } catch(IOException e) { + throw new ConverterException("Error creating asdoc-templates archive.", e); + } + } + } + return null; + } + protected void generateFrameworkConfigurationArtifact() throws ConverterException { // ZIP up every file (not directory) in the framework directory and the entire themes directory. final File frameworksDirectory = new File(rootSourceDirectory, "frameworks"); @@ -326,7 +375,7 @@ public class FlexConverter extends BaseConverter implements Converter { final String themeName = themeDirectory.getName().toLowerCase(); final File themeFile = new File(themeDirectory, themeName + ".swc"); - File targetSwcFile = null; + final File targetSwcFile; if(themeFile.exists()) { targetSwcFile = themeFile; } else { http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/fac7e6fb/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/BatchConverter.java ---------------------------------------------------------------------- diff --git a/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/BatchConverter.java b/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/BatchConverter.java new file mode 100644 index 0000000..e1ed2b1 --- /dev/null +++ b/mavenizer/core/src/main/java/org/apache/flex/utilities/converter/core/BatchConverter.java @@ -0,0 +1,88 @@ +/* + * 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.exceptions.ConverterException; +import org.apache.flex.utilities.converter.flash.FlashConverter; +import org.apache.flex.utilities.converter.flex.FlexConverter; + +import java.io.File; +import java.io.FileFilter; + +/** + * Created by cdutz on 30.05.2014. + */ +public class BatchConverter { + + 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()); + } + } + + for(final File batchDirectory : sourceDirectory.listFiles(new FileFilter() { + @Override + public boolean accept(File pathname) { + return pathname.isDirectory(); + } + })) { + System.out.println("-------------------------------------------------------------------------------------"); + System.out.println("Processing directory: " + batchDirectory.getAbsolutePath()); + + try { + System.out.println("Generating FLEX SDK"); + final FlexConverter flexConverter = new FlexConverter(batchDirectory, targetDirectory); + flexConverter.convert(); + } catch(Exception e) { + System.out.println("Skipping generation of FLEX SDK"); + } + + try { + System.out.println("Generating AIR SDK"); + final AirConverter airConverter = new AirConverter(batchDirectory, targetDirectory); + airConverter.convert(); + } catch(Exception e) { + System.out.println("Skipping generation of AIR SDK"); + } + + try { + System.out.println("Generating Flash SDK"); + final FlashConverter flashConverter = new FlashConverter(batchDirectory, targetDirectory); + flashConverter.convert(); + } catch(Exception e) { + System.out.println("Skipping generation of Flash SDK"); + } + + System.out.println("Finished."); + } + } + +}
