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 2015/07/23 11:30:28 UTC
[03/13] git commit: [flex-utilities] [refs/heads/develop] - - Renamed
the root directory - Renamed the artifact of the maven-extension to
flex-sdk-converter-maven-extension
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/8bc0350d/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/BaseConverter.java
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/BaseConverter.java b/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/BaseConverter.java
deleted file mode 100644
index 65e5bd7..0000000
--- a/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/BaseConverter.java
+++ /dev/null
@@ -1,426 +0,0 @@
-/*
- * 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;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateExceptionHandler;
-import org.apache.flex.utilities.converter.exceptions.ConverterException;
-import org.apache.flex.utilities.converter.model.MavenArtifact;
-import org.codehaus.jettison.json.JSONArray;
-import org.codehaus.jettison.json.JSONException;
-import org.codehaus.jettison.json.JSONObject;
-import org.codehaus.jettison.json.JSONTokener;
-
-import java.io.*;
-import java.math.BigInteger;
-import java.net.URL;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-/**
- * Created by cdutz on 11.05.2012.
- */
-public abstract class BaseConverter {
-
- protected final Map<String, MavenArtifact> checksums = new HashMap<String, MavenArtifact>();
-
- protected static final String MAVEN_CENTRAL_SHA_1_QUERY_URL = "http://search.maven.org/solrsearch/select?rows=20&wt=json&q=1:";
- // Artifactory: "http://server:port/artifactory/api/search/checksum?repos=libs-release-local&md5=04040c7c184620af0a0a8a3682a75eb7
- // Nexus: "http://repository.sonatype.org/service/local/data_index?a=04040c7c184620af0a0a8a3682a75eb7"
-
- protected File rootSourceDirectory;
- protected File rootTargetDirectory;
-
- protected Configuration freemarkerConfig;
-
- protected BaseConverter(File rootSourceDirectory, File rootTargetDirectory) throws ConverterException {
- if(rootSourceDirectory == null) {
- throw new ConverterException("Air SDK directory is null.");
- }
- if(rootTargetDirectory == null) {
- throw new ConverterException("Target directory is null.");
- }
-
- this.rootSourceDirectory = rootSourceDirectory;
- this.rootTargetDirectory = rootTargetDirectory;
-
- this.freemarkerConfig = new Configuration(Configuration.VERSION_2_3_22);
- this.freemarkerConfig.setDefaultEncoding("UTF-8");
- this.freemarkerConfig.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
- this.freemarkerConfig.setClassForTemplateLoading(this.getClass(), "/");
- }
-
- public void convert() throws ConverterException {
- if(rootSourceDirectory.isFile()) {
- processArchive();
- } else {
- processDirectory();
- }
- }
-
- abstract protected void processDirectory() throws ConverterException;
-
- protected void processArchive() throws ConverterException {
-
- }
-
- protected String calculateChecksum(File jarFile) throws ConverterException {
- // Implement the calculation of checksums for a given jar.
- final MessageDigest digest;
- try {
- digest = MessageDigest.getInstance("SHA-1");
-
- final InputStream is = new FileInputStream(jarFile);
- final byte[] buffer = new byte[8192];
- int read;
- try {
- while( (read = is.read(buffer)) > 0) {
- digest.update(buffer, 0, read);
- }
- final byte[] md5sum = digest.digest();
- final BigInteger bigInt = new BigInteger(1, md5sum);
- return bigInt.toString(16);
- }
- catch(IOException e) {
- throw new RuntimeException("Unable to process file for MD5", e);
- }
- finally {
- try {
- is.close();
- }
- catch(IOException e) {
- //noinspection ThrowFromFinallyBlock
- throw new RuntimeException("Unable to close input stream for MD5 calculation", e);
- }
- }
- } catch (NoSuchAlgorithmException e) {
- throw new ConverterException("Error calculating checksum of file '" + jarFile.getPath() + "'", e);
- } catch (FileNotFoundException e) {
- throw new ConverterException("Error calculating checksum of file '" + jarFile.getPath() + "'", e);
- }
- }
-
- protected MavenArtifact lookupMetadataForChecksum(String checksum) throws ConverterException {
- final String queryUrl = MAVEN_CENTRAL_SHA_1_QUERY_URL + checksum;
-
- final Client client = Client.create();
- final WebResource webResource = client.resource(queryUrl);
- final ClientResponse response = webResource.accept("application/json").get(ClientResponse.class);
-
- if (response.getStatus() != 200) {
- throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
- }
-
- final String output = response.getEntity(String.class);
-
- final BufferedReader reader = new BufferedReader(new StringReader(output));
- final StringBuilder builder = new StringBuilder();
- try {
- for (String line; (line = reader.readLine()) != null; ) {
- builder.append(line).append("\n");
- }
- final JSONTokener tokener = new JSONTokener(builder.toString());
- final JSONObject rootObject = new JSONObject(tokener);
-
- final JSONObject responseObject = (JSONObject) rootObject.get("response");
- final int numFound = (Integer) responseObject.get("numFound");
- if(numFound == 0) {
- return null;
- }
- else if(numFound == 1) {
- final JSONArray docs = (JSONArray) responseObject.get("docs");
- final JSONObject firstHit = (JSONObject) docs.get(0);
-
- final MavenArtifact artifactMetadata = new MavenArtifact();
- artifactMetadata.setGroupId((String) firstHit.get("g"));
- artifactMetadata.setArtifactId((String) firstHit.get("a"));
- artifactMetadata.setVersion((String) firstHit.get("v"));
- artifactMetadata.setPackaging((String) firstHit.get("p"));
-
- return artifactMetadata;
- } else {
- long newestTimestamp = 0;
- JSONObject newestVersion = null;
-
- JSONArray options = (JSONArray) responseObject.get("docs");
- // if the "groupId" is "batik" then use the newer version.
- for(int i = 0; i < numFound; i++) {
- final JSONObject option = (JSONObject) options.get(0);
- if("batik".equals(option.get("g")) && "batik-dom".equals(option.get("a")) && "jar".equals(option.get("p"))) {
- final long timestamp = (Long) option.get("timestamp");
- if(timestamp > newestTimestamp) {
- newestTimestamp = timestamp;
- newestVersion = option;
- }
- }
- }
-
- if(newestVersion != null) {
- final MavenArtifact artifactMetadata = new MavenArtifact();
- artifactMetadata.setGroupId((String) newestVersion.get("g"));
- artifactMetadata.setArtifactId((String) newestVersion.get("a"));
- artifactMetadata.setVersion((String) newestVersion.get("v"));
- artifactMetadata.setPackaging((String) newestVersion.get("p"));
-
- return artifactMetadata;
- } else {
- System.out.println("For jar-file with checksum: " + checksum +
- " more than one result was returned by query: " + queryUrl);
- }
- }
- return null;
- } catch(IOException e) {
- throw new ConverterException("Error processing Metadata for checksum: '" + checksum + "'", e);
- } catch (JSONException e) {
- throw new ConverterException("Error processing Metadata for checksum: '" + checksum + "'", e);
- }
- }
-
- protected void copyFile(File source, File target) throws ConverterException {
- try {
- final File outputDirectory = target.getParentFile();
- if(!outputDirectory.exists()) {
- if(!outputDirectory.mkdirs()) {
- throw new RuntimeException("Could not create directory: " + outputDirectory.getAbsolutePath());
- }
- }
-
- final InputStream in = new FileInputStream(source);
- final OutputStream out = new FileOutputStream(target);
-
- final byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0){
- out.write(buf, 0, len);
- }
-
- in.close();
- out.close();
- } catch(IOException e) {
- throw new ConverterException("Error copying file from '" + source.getPath() +
- "' to '" + target.getPath() + "'", e);
- }
- }
-
- protected void writePomArtifact(MavenArtifact pomData) throws ConverterException {
- final File outputFile = pomData.getPomTargetFile(rootTargetDirectory);
- createPomDocument(pomData, outputFile);
- }
-
- protected void createPomDocument(final MavenArtifact metadata, File outputFile) throws ConverterException {
- try {
- // Build a context to hold the model
- Map freemarkerContext = new HashMap();
- freemarkerContext.put("artifact", metadata);
-
- // Try to get a template "templates/{type}.vm".
- Template template;
- URL check = this.getClass().getClassLoader().getResource("templates/" + metadata.getPackaging() + ".ftl");
- if(check != null) {
- template = freemarkerConfig.getTemplate("templates/" + metadata.getPackaging() + ".ftl");
- } else {
- template = freemarkerConfig.getTemplate("templates/default.ftl");
- }
-
- // Prepare an output stream to which the output can be generated.
- FileWriter writer = null;
- try {
- if(!outputFile.getParentFile().exists()) {
- if(!outputFile.getParentFile().mkdirs()) {
- throw new ConverterException("Could not create template output directory.");
- }
- }
-
- writer = new FileWriter(outputFile);
-
- // Have Freemarker generate the output for the template.
- template.process(freemarkerContext, writer);
- } finally {
- if(writer != null) {
- writer.close();
- }
- }
- } catch (Exception e) {
- throw new ConverterException("Error generating template output.", e);
- }
- }
-
- protected void writeDummy(final File targetFile) throws ConverterException {
- try {
- final ZipOutputStream out = new ZipOutputStream(new FileOutputStream(targetFile));
- out.putNextEntry(new ZipEntry("dummy"));
- out.closeEntry();
- out.close();
- } catch (IOException e) {
- throw new ConverterException("Error generating dummy resouce bundle.");
- }
- }
-
- protected static File findDirectory(File directory, String directoryToFind) {
- File[] entries = directory.listFiles();
- File founded = null;
-
- // Go over entries
- if(entries != null) {
- for (File entry : entries) {
- if (entry.isDirectory() && directoryToFind.equalsIgnoreCase(entry.getName())) {
- founded = entry;
- break;
- }
- if (entry.isDirectory()) {
- founded = findDirectory(entry, directoryToFind);
- if (founded != null)
- break;
- }
- }
- }
- return founded;
- }
-
- protected MavenArtifact resolveArtifact(File sourceFile, String defaultGroupId, String defaultVersion)
- throws ConverterException {
- // Calculate a checksum for the current file. We will use this checksum to query maven central
- // in order to find out if this lib has already been published. If it has, there is no need to
- // publish it again under a new name. In case a matching artifact is found the generated FDK
- // will use the already deployed version. Additionally the checksum will be saved and if a
- // fdk generated after this one uses the same version of a lib, the version of the older fdk is
- // used also reducing the amount of jars that have to be re-deployed.
- final String checksum = calculateChecksum(sourceFile);
-
- // Try to get artifact metadata based upon the checksum by looking up the internal cache.
- MavenArtifact artifact = checksums.get(checksum);
-
- // Reusing artifact from other sdk version.
- if(artifact != null) {
- System.out.println("Reusing artifact (" + checksum + ") : " + artifact.getGroupId() + ":" +
- artifact.getArtifactId() + ":" + artifact.getVersion());
- return artifact;
- }
- // Id no artifact was found in the local cache, continue processing.
- else {
- // Do a lookup in maven central.
- artifact = lookupMetadataForChecksum(checksum);
-
- // The file was available on maven central, so use that version instead of the one coming with the sdk.
- if(artifact != null) {
- System.out.println("Using artifact from Maven Central (" + checksum + ") : " +
- artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion());
- }
- // The file was not available on maven central, so we have to add it manually.
- else {
- // The artifact name is the name of the jar.
- final String artifactFileName = sourceFile.getName();
- final String dependencyArtifactId = artifactFileName.substring(0, artifactFileName.lastIndexOf("."));
- final String dependencyArtifactPackaging =
- artifactFileName.substring(artifactFileName.lastIndexOf(".") + 1);
-
- // Generate a new metadata object
- artifact = new MavenArtifact();
- artifact.setGroupId(defaultGroupId);
- artifact.setArtifactId(dependencyArtifactId);
- artifact.setVersion(defaultVersion);
- artifact.setPackaging(dependencyArtifactPackaging);
- artifact.addDefaultBinaryArtifact(sourceFile);
-
- // Create the pom document that will reside next to the artifact lib.
- writeArtifact(artifact);
- }
-
- // Remember the checksum for later re-usage.
- checksums.put(checksum, artifact);
-
- return artifact;
- }
- }
-
- protected void writeArtifact(MavenArtifact artifact) throws ConverterException {
- // Write the pom itself.
- writePomArtifact(artifact);
- final List<String> binaryClassifiers = artifact.getBinaryFilesClassifiers();
- for(final String classifier : binaryClassifiers) {
- final File binarySourceFile = artifact.getBinarySourceFile(classifier);
- final File binaryTargetFile = artifact.getBinaryTargetFile(rootTargetDirectory, classifier);
- copyFile(binarySourceFile, binaryTargetFile);
- }
- }
-
- 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);
- }
- }
-
- protected 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);
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/8bc0350d/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/Converter.java
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/Converter.java b/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/Converter.java
deleted file mode 100644
index 54f4e18..0000000
--- a/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/Converter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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;
-
-import org.apache.flex.utilities.converter.exceptions.ConverterException;
-
-/**
- * Created by cdutz on 18.04.2014.
- */
-public interface Converter {
-
- void convert() throws ConverterException;
-
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/8bc0350d/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/exceptions/ConverterException.java
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/exceptions/ConverterException.java b/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/exceptions/ConverterException.java
deleted file mode 100644
index 384f2fe..0000000
--- a/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/exceptions/ConverterException.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.exceptions;
-
-/**
- * Created by cdutz on 07.05.2014.
- */
-public class ConverterException extends Exception {
-
- public ConverterException(String message) {
- super(message);
- }
-
- public ConverterException(String message, Throwable cause) {
- super(message, cause);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/8bc0350d/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/model/MavenArtifact.java
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/model/MavenArtifact.java b/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/model/MavenArtifact.java
deleted file mode 100644
index 018542a..0000000
--- a/flex-maven-tools/mavenizer/converters/base/src/main/java/org/apache/flex/utilities/converter/model/MavenArtifact.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * 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.model;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created by cdutz on 01.07.2012.
- */
-public class MavenArtifact {
-
- public static final String DEFAULT_CLASSIFIER = "default";
-
- protected String groupId;
- protected String artifactId;
- protected String version;
- protected String packaging = "pom";
- protected String classifier;
- protected List<String> librariesWithResourceBundles;
-
- protected List<MavenArtifact> dependencies;
-
- protected Map<String, File> binaryArtifacts;
-
- public String getGroupId() {
- return groupId;
- }
-
- public void setGroupId(String groupId) {
- this.groupId = groupId;
- }
-
- public String getArtifactId() {
- return artifactId;
- }
-
- public void setArtifactId(String artifactId) {
- this.artifactId = artifactId;
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public String getPackaging() {
- return packaging;
- }
-
- public void setPackaging(String packaging) {
- this.packaging = packaging;
- }
-
- public String getClassifier() {
- return classifier;
- }
-
- public void setClassifier(String classifier) {
- this.classifier = classifier;
- }
-
- public List<String> getLibrariesWithResourceBundles() {
- return librariesWithResourceBundles;
- }
-
- public void setLibrariesWithResourceBundles(List<String> librariesWithResourceBundles) {
- this.librariesWithResourceBundles = librariesWithResourceBundles;
- }
-
- public List<MavenArtifact> getDependencies() {
- return dependencies;
- }
-
- public void setDependencies(List<MavenArtifact> dependencies) {
- this.dependencies = dependencies;
- }
-
- public void addDependency(MavenArtifact dependency) {
- if(dependencies == null) {
- dependencies = new ArrayList<MavenArtifact>();
- }
- dependencies.add(dependency);
- }
-
- public void addDefaultBinaryArtifact(File binaryArtifact) {
- addBinaryArtifact(DEFAULT_CLASSIFIER, binaryArtifact);
- }
-
- public void addBinaryArtifact(String classifier, File binaryArtifact) {
- if(binaryArtifacts == null) {
- binaryArtifacts = new HashMap<String, File>();
- }
- binaryArtifacts.put(classifier, binaryArtifact);
- }
-
- public boolean hasBinaryArtifact(String classifier) {
- return binaryArtifacts != null && binaryArtifacts.containsKey(classifier);
- }
-
- public File getPomTargetFile(File targetRootDirectory) {
- final String fileName = groupId.replace(".", File.separator) + File.separator + artifactId + File.separator +
- version + File.separator + artifactId + "-" + version + ((classifier != null) ? "-" + classifier : "") +
- ".pom";
- return new File(targetRootDirectory, fileName);
- }
-
- public List<String> getBinaryFilesClassifiers() {
- final List<String> classifiers = new ArrayList<String>();
- if(binaryArtifacts != null) {
- classifiers.addAll(binaryArtifacts.keySet());
- }
- return classifiers;
- }
-
- public File getBinarySourceFile(String classifier) {
- if((binaryArtifacts != null) && (binaryArtifacts.containsKey(classifier))) {
- return binaryArtifacts.get(classifier);
- }
- return null;
- }
-
- public File getBinaryTargetFile(File targetRootDirectory, String classifier) {
- if((binaryArtifacts != null) && (binaryArtifacts.containsKey(classifier))) {
- final String fileName = groupId.replace(".", File.separator) + File.separator + artifactId + File.separator +
- version + File.separator + artifactId + "-" + version +
- (DEFAULT_CLASSIFIER.equals(classifier) ? "" : "-" + classifier) + "." + packaging;
- return new File(targetRootDirectory, fileName);
- }
- return null;
- }
-
- public boolean hasDependencies() {
- return (dependencies != null) && (!dependencies.isEmpty());
- }
-
- public boolean isAtLeastOneDependencyRsl() {
- if(dependencies != null) {
- for(final MavenArtifact dependency : dependencies) {
- if(dependency.hasBinaryArtifact("rsl")) {
- return true;
- }
- }
- }
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/8bc0350d/flex-maven-tools/mavenizer/converters/base/src/main/resources/templates/default.ftl
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/base/src/main/resources/templates/default.ftl b/flex-maven-tools/mavenizer/converters/base/src/main/resources/templates/default.ftl
deleted file mode 100644
index e4a200b..0000000
--- a/flex-maven-tools/mavenizer/converters/base/src/main/resources/templates/default.ftl
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-
- 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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>${artifact.groupId}</groupId>
- <artifactId>${artifact.artifactId}</artifactId>
- <version>${artifact.version}</version>
- <packaging>${artifact.packaging}</packaging>
-
-<#if artifact.hasDependencies()>
- <dependencies>
-<#list artifact.dependencies as dependency>
- <dependency>
- <groupId>${dependency.groupId}</groupId>
- <artifactId>${dependency.artifactId}</artifactId>
- <version>${dependency.version}</version>
- <type>${dependency.packaging}</type>
- </dependency>
-</#list>
- </dependencies>
-</#if>
-
-</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/8bc0350d/flex-maven-tools/mavenizer/converters/base/src/main/resources/templates/pom.ftl
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/base/src/main/resources/templates/pom.ftl b/flex-maven-tools/mavenizer/converters/base/src/main/resources/templates/pom.ftl
deleted file mode 100644
index 1242fb7..0000000
--- a/flex-maven-tools/mavenizer/converters/base/src/main/resources/templates/pom.ftl
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-
- 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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>${artifact.groupId}</groupId>
- <artifactId>${artifact.artifactId}</artifactId>
- <version>${artifact.version}</version>
- <packaging>${artifact.packaging}</packaging>
-
-<#if artifact.hasDependencies()>
- <dependencies>
-<#list artifact.dependencies as dependency>
- <dependency>
- <groupId>${dependency.groupId}</groupId>
- <artifactId>${dependency.artifactId}</artifactId>
- <version>${dependency.version}</version>
-<#if dependency.packaging != "jar">
- <type>${dependency.packaging}</type>
-</#if>
- </dependency>
-</#list>
- </dependencies>
-
- <dependencyManagement>
- <dependencies>
-<#list artifact.dependencies as dependency>
- <dependency>
- <groupId>${dependency.groupId}</groupId>
- <artifactId>${dependency.artifactId}</artifactId>
- <version>${dependency.version}</version>
- </dependency>
-</#list>
- </dependencies>
- </dependencyManagement>
-</#if>
-
-</project>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/8bc0350d/flex-maven-tools/mavenizer/converters/flash/pom.xml
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/flash/pom.xml b/flex-maven-tools/mavenizer/converters/flash/pom.xml
deleted file mode 100644
index 6afc519..0000000
--- a/flex-maven-tools/mavenizer/converters/flash/pom.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- 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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.flex.utilities.converter</groupId>
- <artifactId>converters</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>flash-converter</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.flex.utilities.converter</groupId>
- <artifactId>base-converter</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-compress</artifactId>
- <version>1.4</version>
- </dependency>
- </dependencies>
-
-</project>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/8bc0350d/flex-maven-tools/mavenizer/converters/flash/src/main/java/org/apache/flex/utilities/converter/flash/FlashConverter.java
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/flash/src/main/java/org/apache/flex/utilities/converter/flash/FlashConverter.java b/flex-maven-tools/mavenizer/converters/flash/src/main/java/org/apache/flex/utilities/converter/flash/FlashConverter.java
deleted file mode 100644
index 776e0c6..0000000
--- a/flex-maven-tools/mavenizer/converters/flash/src/main/java/org/apache/flex/utilities/converter/flash/FlashConverter.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * 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.flash;
-
-import org.apache.commons.compress.archivers.ArchiveEntry;
-import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
-import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
-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.*;
-import java.text.NumberFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Locale;
-
-/**
- * Created by cdutz on 22.04.2014.
- */
-public class FlashConverter extends BaseConverter implements Converter {
-
- /**
- * @param rootSourceDirectory Path to the root of the original Flash SDK.
- * @param rootTargetDirectory Path to the root of the directory where the Maven artifacts should be generated to.
- * @throws org.apache.flex.utilities.converter.exceptions.ConverterException
- */
- public FlashConverter(File rootSourceDirectory, File rootTargetDirectory) throws ConverterException {
- super(rootSourceDirectory, rootTargetDirectory);
- }
-
- /**
- * Entry point for generating the Maven artifacts for an Flash SDK.
- *
- * @throws ConverterException
- */
- @Override
- protected void processDirectory() throws ConverterException {
- if(!rootSourceDirectory.exists() || !rootSourceDirectory.isDirectory()) {
- System.out.println("Skipping Flash SDK generation.");
- return;
- }
-
- generateRuntimeArtifacts();
- generateFrameworkArtifacts();
- }
-
- /**
- * This method generates those artifacts that resemble the runtime part of the Flash SDK.
- *
- * @throws ConverterException
- */
- protected void generateRuntimeArtifacts() throws ConverterException {
- // 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()) {
- System.out.println("Skipping Flash runtime generation.");
- return;
- }
- final List<File> playerVersions = new ArrayList<File>();
- playerVersions.addAll(Arrays.asList(directory.listFiles(new FlashRuntimeFilter())));
-
- // In really old SDKs the flash-player was installed in the players directory directly.
- if(new File(directory, "win").exists()) {
- playerVersions.add(directory);
- }
-
- // Generate artifacts for every jar in the input directories.
- for(final File versionDir : playerVersions) {
- // The flash-player 9 is installed directly in the player directory.
- String playerVersionString;
- if(versionDir == directory) {
- playerVersionString = "9.0";
- } else {
- playerVersionString = versionDir.getName();
- }
-
- final double playerVersion = Double.valueOf(playerVersionString);
- final NumberFormat doubleFormat = NumberFormat.getInstance(Locale.US);
- doubleFormat.setMinimumFractionDigits(1);
- doubleFormat.setMaximumFractionDigits(1);
- final String version = doubleFormat.format(playerVersion);
-
- final MavenArtifact playerArtifact = new MavenArtifact();
- playerArtifact.setGroupId("com.adobe.flash");
- playerArtifact.setArtifactId("runtime");
- playerArtifact.setVersion(version);
- playerArtifact.setPackaging("exe");
-
- // Deploy Windows binaries.
- final File windowsDirectory = new File(versionDir, "win");
- if(windowsDirectory.exists()) {
- // Find out if a flash-player binary exists.
- File flashPlayerBinary = null;
- if(new File(windowsDirectory, "FlashPlayerDebugger.exe").exists()) {
- flashPlayerBinary = new File(windowsDirectory, "FlashPlayerDebugger.exe");
- } else if(new File(windowsDirectory, "FlashPlayer.exe").exists()) {
- flashPlayerBinary = new File(windowsDirectory, "FlashPlayer.exe");
- }
-
- // If a binary exists, copy it to the target and create a pom for it.
- if (flashPlayerBinary != null) {
- playerArtifact.addBinaryArtifact("win", flashPlayerBinary);
- }
- }
-
- // Deploy Mac binaries.
- final File macDirectory = new File(versionDir, "mac");
- if(macDirectory.exists()) {
- // Find out if a flash-player binary exists.
- File flashPlayerBinary = null;
- if(new File(macDirectory, "Flash Player.app.zip").exists()) {
- flashPlayerBinary = new File(macDirectory, "Flash Player.app.zip");
- } else if(new File(macDirectory, "Flash Player Debugger.app.zip").exists()) {
- flashPlayerBinary = new File(macDirectory, "Flash Player Debugger.app.zip");
- }
-
- // If a binary exists, copy it to the target and create a pom for it.
- if (flashPlayerBinary != null) {
- playerArtifact.addBinaryArtifact("mac", flashPlayerBinary);
- }
- }
-
- // Deploy Linux binaries.
- final File lnxDirectory = new File(versionDir, "lnx");
- if(lnxDirectory.exists()) {
- // Find out if a flash-player binary exists.
- File flashPlayerBinary;
- if(new File(lnxDirectory, "flashplayer.tar.gz").exists()) {
- flashPlayerBinary = new File(lnxDirectory, "flashplayer.tar.gz");
- } else if(new File(lnxDirectory, "flashplayerdebugger.tar.gz").exists()) {
- flashPlayerBinary = new File(lnxDirectory, "flashplayerdebugger.tar.gz");
- } else {
- throw new ConverterException("Couldn't find player archive.");
- }
-
- // Decompress the archive.
- // First unzip it.
- final FileInputStream fin;
- try {
- fin = new FileInputStream(flashPlayerBinary);
- final BufferedInputStream in = new BufferedInputStream(fin);
- final File tempTarFile = File.createTempFile("flex-sdk-linux-flashplayer-binary-" + version, ".tar");
- final FileOutputStream out = new FileOutputStream(tempTarFile);
- final GzipCompressorInputStream gzIn = new GzipCompressorInputStream(in);
- final byte[] buffer = new byte[1024];
- int n;
- while (-1 != (n = gzIn.read(buffer))) {
- out.write(buffer, 0, n);
- }
- out.close();
- gzIn.close();
-
- // Then untar it.
- File uncompressedBinary = null;
- final FileInputStream tarFileInputStream = new FileInputStream(tempTarFile);
- final TarArchiveInputStream tarArchiveInputStream = new TarArchiveInputStream(tarFileInputStream);
- ArchiveEntry entry;
- while((entry = tarArchiveInputStream.getNextEntry()) != null) {
- if("flashplayer".equals(entry.getName())) {
- uncompressedBinary = File.createTempFile("flex-sdk-linux-flashplayer-binary-" + version, ".uexe");
- final FileOutputStream uncompressedBinaryOutputStream = new FileOutputStream(uncompressedBinary);
- while(-1 != (n = tarArchiveInputStream.read(buffer))) {
- uncompressedBinaryOutputStream.write(buffer, 0, n);
- }
- uncompressedBinaryOutputStream.close();
- } else if("flashplayerdebugger".equals(entry.getName())) {
- uncompressedBinary = File.createTempFile("flex-sdk-linux-flashplayer-binary-" + version, ".uexe");
- final FileOutputStream uncompressedBinaryOutputStream = new FileOutputStream(uncompressedBinary);
- while(-1 != (n = tarArchiveInputStream.read(buffer))) {
- uncompressedBinaryOutputStream.write(buffer, 0, n);
- }
- uncompressedBinaryOutputStream.close();
- }
- }
- tarFileInputStream.close();
-
- // If a binary exists, copy it to the target and create a pom for it.
- if (uncompressedBinary != null) {
- playerArtifact.addBinaryArtifact("linux", flashPlayerBinary);
- }
- } catch (FileNotFoundException e) {
- throw new ConverterException("Error processing the linux player tar file", e);
- } catch (IOException e) {
- throw new ConverterException("Error processing the linux player tar file", e);
- }
- }
-
- // Write this artifact to file.
- writeArtifact(playerArtifact);
- }
- }
-
- /**
- * This method generates those artifacts that resemble the framework part of the Flash SDK.
- *
- * @throws ConverterException
- */
- protected void generateFrameworkArtifacts() throws ConverterException {
- // Create a list of all libs that should belong to the Flash SDK runtime.
- final File directory = new File(rootSourceDirectory, "frameworks.libs.player".replace(".", File.separator));
- // It seems the fdk directory doesn't contain any flash resources.
- if (!directory.exists() || !directory.isDirectory()) {
- System.out.println("Skipping Flash framework generation.");
- return;
- }
- final List<File> playerVersions = new ArrayList<File>();
- final File[] versions = directory.listFiles();
- if((versions != null) && (versions.length > 0)) {
- playerVersions.addAll(Arrays.asList(versions));
-
- // Generate artifacts for every jar in the input directories.
- for (final File versionDir : playerVersions) {
- final File playerglobalSwc = new File(versionDir, "playerglobal.swc");
-
- // Convert any version into a two-segment version number.
- final double playerVersion = Double.valueOf(versionDir.getName());
- final NumberFormat doubleFormat = NumberFormat.getInstance(Locale.US);
- doubleFormat.setMinimumFractionDigits(1);
- doubleFormat.setMaximumFractionDigits(1);
- final String version = doubleFormat.format(playerVersion);
-
- // Create an artifact for the player-global.
- final MavenArtifact playerglobal = new MavenArtifact();
- playerglobal.setGroupId("com.adobe.flash.framework");
- playerglobal.setArtifactId("playerglobal");
- playerglobal.setVersion(version);
- playerglobal.setPackaging("swc");
- playerglobal.addDefaultBinaryArtifact(playerglobalSwc);
- writeArtifact(playerglobal);
-
- // Create a dummy pom artifact that references the playerglobal
- // in order to consequently have a framework artifact for every
- // part of flex.
- final MavenArtifact framework = new MavenArtifact();
- framework.setGroupId("com.adobe.flash");
- framework.setArtifactId("framework");
- framework.setVersion(version);
- framework.setPackaging("pom");
- framework.addDependency(playerglobal);
- writePomArtifact(framework);
- }
- }
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- //
- // Utility methods
- //
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- public static class FlashRuntimeFilter implements FileFilter {
- public boolean accept(File pathname) {
- return pathname.isDirectory() && !"win".equalsIgnoreCase(pathname.getName()) &&
- !"lnx".equalsIgnoreCase(pathname.getName()) && !"mac".equalsIgnoreCase(pathname.getName());
- }
- }
-
- public static class FlashFrameworkFilter implements FilenameFilter {
- public boolean accept(File dir, String name) {
- return name.equals("playerglobal.swc");
- }
- }
-
- public static void main(String[] args) throws Exception {
- FlashConverter converter = new FlashConverter(new File(args[0]), new File(args[1]));
- converter.convert();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/8bc0350d/flex-maven-tools/mavenizer/converters/flex/pom.xml
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/flex/pom.xml b/flex-maven-tools/mavenizer/converters/flex/pom.xml
deleted file mode 100644
index 480bc83..0000000
--- a/flex-maven-tools/mavenizer/converters/flex/pom.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- 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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.flex.utilities.converter</groupId>
- <artifactId>converters</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>flex-converter</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.flex.utilities.converter</groupId>
- <artifactId>base-converter</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </dependency>
- <!--
- Flex usually contains Air and Flash artifacts, so we need to reference them.
- -->
- <dependency>
- <groupId>org.apache.flex.utilities.converter</groupId>
- <artifactId>air-converter</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.flex.utilities.converter</groupId>
- <artifactId>flash-converter</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.flex.utilities.converter</groupId>
- <artifactId>fontkit-converter</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.flex.utilities.converter</groupId>
- <artifactId>wrapper-converter</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </dependency>
- </dependencies>
-
-</project>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/8bc0350d/flex-maven-tools/mavenizer/converters/flex/src/main/java/org/apache/flex/utilities/converter/flex/FlexConverter.java
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/flex/src/main/java/org/apache/flex/utilities/converter/flex/FlexConverter.java b/flex-maven-tools/mavenizer/converters/flex/src/main/java/org/apache/flex/utilities/converter/flex/FlexConverter.java
deleted file mode 100644
index 9fda04f..0000000
--- a/flex-maven-tools/mavenizer/converters/flex/src/main/java/org/apache/flex/utilities/converter/flex/FlexConverter.java
+++ /dev/null
@@ -1,735 +0,0 @@
-/*
- * 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.flex;
-
-import org.apache.flex.utilities.converter.BaseConverter;
-import org.apache.flex.utilities.converter.Converter;
-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.model.MavenArtifact;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.*;
-import java.util.*;
-import java.util.jar.JarOutputStream;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-/**
- * Created by cdutz on 22.04.2014.
- */
-public class FlexConverter extends BaseConverter implements Converter {
-
- protected String flexSdkVersion;
- protected String flexBuild;
-
- /**
- * @param rootSourceDirectory Path to the root of the original Flex SDK.
- * @param rootTargetDirectory Path to the root of the directory where the Maven artifacts should be generated to.
- * @throws org.apache.flex.utilities.converter.exceptions.ConverterException
- */
- public FlexConverter(File rootSourceDirectory, File rootTargetDirectory) throws ConverterException {
- super(rootSourceDirectory, rootTargetDirectory);
-
- // Get the version of the current Flex SDK.
- this.flexSdkVersion = getFlexVersion(rootSourceDirectory);
- this.flexBuild = getFlexBuild(rootSourceDirectory);
- }
-
- /**
- * Entry point for generating the Maven artifacts for an Flex SDK.
- *
- * @throws ConverterException
- */
- @Override
- protected void processDirectory() throws ConverterException {
- if((flexSdkVersion == null) || !rootSourceDirectory.exists() || !rootSourceDirectory.isDirectory()) {
- System.out.println("Skipping Flex SDK generation.");
- return;
- }
-
- generateCompilerArtifacts();
- generateFrameworkArtifacts();
- }
-
- /**
- * This method generates those artifacts that resemble the compiler part of the Flex SDK.
- *
- * @throws ConverterException
- */
- protected void generateCompilerArtifacts() throws ConverterException {
- // Create the root artifact.
- final MavenArtifact compiler = new MavenArtifact();
- compiler.setGroupId("org.apache.flex");
- compiler.setArtifactId("compiler");
- compiler.setVersion(flexSdkVersion);
- compiler.setPackaging("pom");
-
- // Create a list of all libs that should belong to the Flex SDK compiler.
- final File directory = new File(rootSourceDirectory, "lib");
- if(!directory.exists() || !directory.isDirectory()) {
- throw new ConverterException("Compiler directory does not exist.");
- }
- final List<File> files = new ArrayList<File>();
- files.addAll(Arrays.asList(directory.listFiles(new FlexCompilerFilter())));
-
- // Add all jars in the "external" directory.
- final File externalDirectory = new File(directory, "external");
- if(externalDirectory.exists() && externalDirectory.isDirectory()) {
- files.addAll(Arrays.asList(externalDirectory.listFiles(new FlexCompilerFilter())));
- }
-
- // Generate artifacts for every jar in the input directories.
- for(final File sourceFile : files) {
- final MavenArtifact artifact = resolveArtifact(sourceFile, "org.apache.flex.compiler", flexSdkVersion);
- compiler.addDependency(artifact);
- }
-
- // Write this artifact to file.
- writeArtifact(compiler);
- }
-
- /**
- * This method generates those artifacts that resemble the framework part of the Flex SDK.
- *
- * @throws ConverterException
- */
- protected void generateFrameworkArtifacts() throws ConverterException {
- final File directory = new File(rootSourceDirectory, "frameworks" + File.separator + "libs");
- generateFrameworkArtifacts(directory, "org.apache.flex");
- generateThemeArtifacts();
- generateFrameworkConfigurationArtifact();
- }
-
- protected void generateFrameworkArtifacts(File directory, String curGroupId) throws ConverterException {
- // Create the root artifact.
- final MavenArtifact framework = new MavenArtifact();
- framework.setGroupId(curGroupId);
- framework.setArtifactId("libs".equals(directory.getName()) ? "framework" : directory.getName());
- framework.setVersion(flexSdkVersion);
- framework.setPackaging("pom");
-
- final String artifactGroupId = framework.getGroupId() + "." + framework.getArtifactId();
-
- // Create a list of all libs that should belong to the Flex SDK framework.
- if(!directory.exists() || !directory.isDirectory()) {
- throw new ConverterException("Framework directory does not exist.");
- }
- final List<File> files = new ArrayList<File>();
- files.addAll(Arrays.asList(directory.listFiles(new FlexFrameworkFilter())));
-
- // Generate artifacts for every jar in the input directories.
- for(final File sourceFile : files) {
- // I think the experimental_mobile.swc belongs in the "mobile" package.
- if(!"libs".equals(directory.getName()) || !"experimental_mobile.swc".equals(sourceFile.getName())) {
- final MavenArtifact artifact = resolveArtifact(sourceFile, artifactGroupId, flexSdkVersion);
- 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())) {
- final File mobileExperimental = new File(directory.getParent(), "experimental_mobile.swc");
- if(mobileExperimental.exists()) {
- final MavenArtifact artifact = resolveArtifact(mobileExperimental, artifactGroupId, flexSdkVersion);
- framework.addDependency(artifact);
- }
- }
- // Write this artifact to file.
- writeArtifact(framework);
-
- // 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() {
- public boolean accept(File pathname) {
- return pathname.isDirectory() && !"player".equals(pathname.getName()) &&
- !"mx".equals(pathname.getName());
- }
- })));
- for(final File childDirectory : children) {
- generateFrameworkArtifacts(childDirectory, artifactGroupId);
- }
- }
-
- protected void generateThemeArtifacts() throws ConverterException {
- final File frameworksDirectory = new File(rootSourceDirectory, "frameworks");
-
- // Deploy all the swcs in the themes directory.
- final File themesSrcDirectory = new File(frameworksDirectory, "themes");
- if(themesSrcDirectory.exists()) {
- generateDefaultThemeArtifacts(themesSrcDirectory);
- }
-
- // Deploy MXFTEText theme
- final File mxfteThemeCss = new File(frameworksDirectory, "projects" + File.separator + "spark" +
- File.separator + "MXFTEText.css");
- if(mxfteThemeCss.exists()){
- generateMxFteThemeArtifact(mxfteThemeCss);
- }
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- //
- // Utility methods
- //
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- protected void writeArtifact(MavenArtifact artifact) throws ConverterException {
- if(!"pom".equals(artifact.getPackaging())) {
- // Copy the rsls.
- final File rslSourceFile = getRsl(artifact.getArtifactId());
- if(rslSourceFile != null) {
- final File rslTargetFile = new File(
- artifact.getBinaryTargetFile(rootTargetDirectory, MavenArtifact.DEFAULT_CLASSIFIER).getParent(),
- artifact.getArtifactId() + "-" + artifact.getVersion() + ".swf");
- copyFile(rslSourceFile, rslTargetFile);
- artifact.addBinaryArtifact("rsl", rslSourceFile);
- }
-
- // Copy the swzc.
- final File signedRslSourceFile = getSignedRsl(artifact.getArtifactId());
- if(signedRslSourceFile != null) {
- final File signedRslTargetFile = new File(
- artifact.getBinaryTargetFile(rootTargetDirectory, MavenArtifact.DEFAULT_CLASSIFIER).getParent(),
- artifact.getArtifactId() + "-" + artifact.getVersion() + ".swz");
- copyFile(signedRslSourceFile, signedRslTargetFile);
- artifact.addBinaryArtifact("caching", rslSourceFile);
- }
-
- // Copy the language resources.
- final Map<String, File> resourceBundles = getResourceBundles(artifact.getArtifactId());
- if(!resourceBundles.isEmpty() &&
- artifact.getBinaryTargetFile(rootTargetDirectory, MavenArtifact.DEFAULT_CLASSIFIER) != null) {
- boolean foundResources = false;
- for(final String resource : resourceBundles.keySet()) {
- final File resourceSourceFile = resourceBundles.get(resource);
- final File resourceTargetFile = new File(
- artifact.getBinaryTargetFile(rootTargetDirectory, MavenArtifact.DEFAULT_CLASSIFIER).getParent(),
- artifact.getArtifactId() + "-" + artifact.getVersion() + "-" + resource + ".rb.swc");
- copyFile(resourceSourceFile, resourceTargetFile);
- foundResources = true;
- }
-
- // If the library had at least one resource bundle, generate a dummy rb.swc and add that as dependency.
- if(foundResources) {
- final File resourceDummyTargetFile = new File(
- artifact.getBinaryTargetFile(rootTargetDirectory, MavenArtifact.DEFAULT_CLASSIFIER).getParent(),
- artifact.getArtifactId() + "-" + artifact.getVersion() + ".rb.swc");
- writeDummy(resourceDummyTargetFile);
-
- final MavenArtifact resourceBundleDependency = new MavenArtifact();
- resourceBundleDependency.setGroupId(artifact.getGroupId());
- resourceBundleDependency.setArtifactId(artifact.getArtifactId());
- resourceBundleDependency.setVersion(artifact.getVersion());
- resourceBundleDependency.setPackaging("rb.swc");
- artifact.addDependency(resourceBundleDependency);
- }
- }
-
- // Add source zips.
- final File sourceArtifactSourceFile = generateSourceArtifact(artifact.getArtifactId());
- if(sourceArtifactSourceFile != null) {
- final File sourceArtifactTargetFile = new File(
- artifact.getBinaryTargetFile(rootTargetDirectory, MavenArtifact.DEFAULT_CLASSIFIER).getParent(),
- 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);
- }
-
- protected File generateSourceArtifact(String artifactId) throws ConverterException {
- final File frameworksDirectory = new File(rootSourceDirectory, "frameworks");
- final File librarySrcRootPath = new File(frameworksDirectory, "projects/" + artifactId);
- final File librarySourcePath = new File(librarySrcRootPath, "src");
-
- if (librarySourcePath.listFiles() != null) {
- final File sourceFiles[] = librarySourcePath.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-" + artifactId, "zip");
-
- JarOutputStream jar = new JarOutputStream(new FileOutputStream(targetFile));
- for (final File file : zipInputFiles) {
- addFileToZip(jar, file, librarySourcePath);
- }
- jar.close();
-
- return targetFile;
- } catch(IOException e) {
- throw new ConverterException("Error creating source archive.", e);
- }
- }
- }
- 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");
- final File sourceFiles[] = frameworksDirectory.listFiles(new FileFilter() {
- public boolean accept(File pathname) {
- return pathname.isFile();
- }
- });
- final File zipInputFiles[] = new File[sourceFiles.length];
- System.arraycopy(sourceFiles, 0, zipInputFiles, 0, sourceFiles.length);
-
- try {
- final File targetFile = new File(rootTargetDirectory,
- "org.apache.flex.framework.framework.".replace(".", File.separator) + flexSdkVersion +
- File.separator + "framework-" + flexSdkVersion + "-configs.zip");
-
- // Add all the content to a zip-file.
- final ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(targetFile));
- for (final File file : zipInputFiles) {
- addFileToZip(zipOutputStream, file, frameworksDirectory);
- }
- zipOutputStream.close();
- } catch(IOException e) {
- throw new ConverterException("Error generating configuration zip.", e);
- }
- }
-
- protected void generateDefaultThemeArtifacts(File themesDirectory) throws ConverterException {
- final File[] themes = themesDirectory.listFiles();
- if(themes != null) {
- for(final File themeDirectory : themes) {
- if(themeDirectory.isDirectory()) {
- final String themeName = themeDirectory.getName().toLowerCase();
- final File themeFile = new File(themeDirectory, themeName + ".swc");
-
- final File targetSwcFile;
- if(themeFile.exists()) {
- targetSwcFile = themeFile;
- } else {
- targetSwcFile = generateThemeSwc(themeDirectory);
- }
-
- if(targetSwcFile != null) {
- // Generate the pom file.
- final MavenArtifact themeArtifact = new MavenArtifact();
- themeArtifact.setGroupId("org.apache.flex.framework.themes");
- themeArtifact.setArtifactId(themeName);
- themeArtifact.setVersion(flexSdkVersion);
- themeArtifact.setPackaging("swc");
- themeArtifact.addDefaultBinaryArtifact(targetSwcFile);
-
- // In this case we don't want the resources to be copied.
- super.writeArtifact(themeArtifact);
- }
- }
- }
- }
- }
-
- protected void generateMxFteThemeArtifact(File themeCssFile) throws ConverterException {
- final String themeName = "mxfte";
-
- // Generate and Copy the SWC.
- final File targetSwcFile = generateThemeSwc(themeCssFile);
-
- if(targetSwcFile != null) {
- // Generate the pom file.
- final MavenArtifact themeArtifact = new MavenArtifact();
- themeArtifact.setGroupId("org.apache.flex.framework.themes");
- themeArtifact.setArtifactId(themeName);
- themeArtifact.setVersion(flexSdkVersion);
- themeArtifact.setPackaging("swc");
- themeArtifact.addDefaultBinaryArtifact(targetSwcFile);
-
- // In this case we don't want the resources to be copied.
- super.writeArtifact(themeArtifact);
- }
- }
-
- protected File generateThemeSwc(File themeDirectory) throws ConverterException {
- final File fdkLibDir = new File(rootSourceDirectory, "lib");
-
- List<String> processCmd = new ArrayList<String>(10);
-
- if(fdkLibDir.exists() && fdkLibDir.isDirectory()) {
- try {
- final File compcLibrary = new File(fdkLibDir, "compc.jar");
- final File frameworkDir = new File(rootSourceDirectory, "frameworks");
- final String targetPlayer = getTargetPlayer(new File(frameworkDir, "libs/player"));
- if(targetPlayer == null) {
- System.out.println("Skipping theme compilation due to missing playerglobl.swc");
- return null;
- }
-
- processCmd.add("java");
- processCmd.add("-Xmx384m");
- processCmd.add("-Dsun.io.useCanonCaches=false");
- processCmd.add("-jar");
- processCmd.add(compcLibrary.getCanonicalPath());
- processCmd.add("+flexlib=" + frameworkDir.getCanonicalPath());
- processCmd.add("-target-player=" + targetPlayer);
-
- if (themeDirectory.isDirectory()) {
- // Add all the content files.
- final File contents[] = themeDirectory.listFiles(new FileFilter() {
- public boolean accept(File pathname) {
- return !(pathname.isDirectory() && "src".equals(pathname.getName())) &&
- !"preview.jpg".equals(pathname.getName()) && !pathname.getName().endsWith(".fla");
- }
- });
- if (contents.length == 0) {
- return null;
- }
-
- for (final File resource : contents) {
- processCmd.add("-include-file");
- processCmd.add(resource.getName());
- processCmd.add(resource.getCanonicalPath());
- }
- } else {
- processCmd.add("-include-file");
- processCmd.add(themeDirectory.getName());
- processCmd.add(themeDirectory.getCanonicalPath());
- }
-
- // Create a temp file.
- final File targetFile = File.createTempFile(themeDirectory.getName(), "swc");
-
- // Define the output file.
- processCmd.add("-o");
- processCmd.add(targetFile.getCanonicalPath());
-
- final File targetDirectory = targetFile.getParentFile();
- if (!targetDirectory.exists()) {
- if (!targetDirectory.mkdirs()) {
- throw new RuntimeException("Could not create directory: " + targetDirectory.getCanonicalPath());
- }
- }
-
- // Execute the command.
- try {
- System.out.println("Generating theme '" + themeDirectory.getName() + "'");
-
- //final Process child = Runtime.getRuntime().exec(cmd.toString(), envps);
- ProcessBuilder processBuilder = new ProcessBuilder(processCmd);
- processBuilder.environment().put("PLAYERGLOBAL_HOME",
- new File(new File(frameworkDir, "libs"), "player").getCanonicalPath());
- int exitValue = exec(processBuilder.start());
- if (exitValue != 0) {
- System.out.println("Couldn't create theme swc");
- System.out.println("----------------------------------------------------------------");
- System.out.println("Env: '" + processBuilder.environment().get("PLAYERGLOBAL_HOME") + "'");
- System.out.println(processBuilder.command());
- System.out.println("----------------------------------------------------------------");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- // Return a reference on the theme swc.
- return targetFile;
- } catch(IOException e) {
- throw new ConverterException("Error generating theme swc.", e);
- }
- }
- return null;
- }
-
- protected int exec(Process p) throws InterruptedException, IOException {
- String line;
- BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream()));
- BufferedReader bre = new BufferedReader(new InputStreamReader(p.getErrorStream()));
- while ((line = bri.readLine()) != null) {
- System.out.println(line);
- }
- while ((line = bre.readLine()) != null) {
- System.out.println(line);
- }
- int result = p.waitFor();
- bri.close();
- bre.close();
- System.out.println("Done.");
- return result;
- }
-
- protected 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);
- }
- }
- }
-
- /**
- * Get the version of an Flex SDK from the content of the SDK directory.
- *
- * @return version string for the current Flex SDK
- */
- protected String getFlexVersion(File rootDirectory) throws ConverterException {
- final File sdkDescriptor = new File(rootDirectory, "flex-sdk-description.xml");
-
- // If the descriptor is not present, return null as this FDK directory doesn't
- // seem to contain a Flex SDK.
- if(!sdkDescriptor.exists()) {
- return null;
- }
-
- final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- try {
- // Parse the document
- final DocumentBuilder db = dbf.newDocumentBuilder();
- final Document dom = db.parse(sdkDescriptor);
-
- // Get name, version and build nodes
- final Element root = dom.getDocumentElement();
- final String version = root.getElementsByTagName("version").item(0).getTextContent();
- final String build = root.getElementsByTagName("build").item(0).getTextContent();
-
- // In general the version consists of the content of the version element with an appended build-number.
- return (build.equals("0")) ? version + "-SNAPSHOT" : version;
- } catch (ParserConfigurationException pce) {
- throw new RuntimeException(pce);
- } catch (SAXException se) {
- throw new RuntimeException(se);
- } catch (IOException ioe) {
- throw new RuntimeException(ioe);
- }
- }
-
- /**
- * Get the version of an Flex SDK from the content of the SDK directory.
- *
- * @return version string for the current Flex SDK
- */
- protected String getFlexBuild(File rootDirectory) throws ConverterException {
- final File sdkDescriptor = new File(rootDirectory, "flex-sdk-description.xml");
-
- // If the descriptor is not present, return null as this FDK directory doesn't
- // seem to contain a Flex SDK.
- if(!sdkDescriptor.exists()) {
- return null;
- }
-
- final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- try {
- // Parse the document
- final DocumentBuilder db = dbf.newDocumentBuilder();
- final Document dom = db.parse(sdkDescriptor);
-
- // Get name, version and build nodes
- final Element root = dom.getDocumentElement();
- return root.getElementsByTagName("build").item(0).getTextContent();
- } catch (ParserConfigurationException pce) {
- throw new RuntimeException(pce);
- } catch (SAXException se) {
- throw new RuntimeException(se);
- } catch (IOException ioe) {
- throw new RuntimeException(ioe);
- }
- }
-
- protected File getRsl(String artifactId) {
- final FlexRslFilter filter = new FlexRslFilter(artifactId, flexSdkVersion, flexBuild);
- final File rslDirectory = new File(rootSourceDirectory, "frameworks" + File.separator + "rsls");
- final File[] rsls = rslDirectory.listFiles(filter);
- if ((rsls != null) && (rsls.length == 1)) {
- return rsls[0];
- }
- return null;
- }
-
- protected File getSignedRsl(String artifactId) {
- final FlexSignedRslFilter filter = new FlexSignedRslFilter(artifactId, flexSdkVersion);
- final File rslDirectory = new File(rootSourceDirectory, "frameworks" + File.separator + "rsls");
- final File[] swzs = rslDirectory.listFiles(filter);
- if ((swzs != null) && (swzs.length == 1)) {
- return swzs[0];
- }
- return null;
- }
-
- protected Map<String, File> getResourceBundles(String artifactId) {
- final Map<String, File> bundles = new HashMap<String, File>();
- final FlexResourceBundleFilter filter = new FlexResourceBundleFilter(artifactId);
- final File[] languages = new File(rootSourceDirectory, "frameworks" + File.separator + "locale").listFiles();
- if(languages != null) {
- for (final File language : languages) {
- final File[] resources = language.listFiles(filter);
- if ((resources != null) && (resources.length == 1)) {
- bundles.put(language.getName(), resources[0]);
- }
- }
- }
- return bundles;
- }
-
- protected String getTargetPlayer(File playerDir) {
- if(playerDir.exists() && playerDir.isDirectory()) {
- File[] files = playerDir.listFiles();
- if((files != null) && files.length > 0) {
- return files[0].getName();
- }
- }
- return null;
- }
-
- public static class FlexCompilerFilter implements FilenameFilter {
- private AirConverter.AirCompilerFilter airFilter = new AirConverter.AirCompilerFilter();
-
- public boolean accept(File dir, String name) {
- return name.endsWith(".jar") && !airFilter.accept(dir, name) &&
- // Some old AIR SDKs contained two android libs in the main lib directory,
- // we have to manually exclude them.
- !name.equals("smali.jar") && !name.equals("baksmali.jar");
- }
- }
-
- public static class FlexFrameworkFilter implements FilenameFilter {
- private AirConverter.AirFrameworkFilter airFilter = new AirConverter.AirFrameworkFilter();
- private FlashConverter.FlashFrameworkFilter flashFilter = new FlashConverter.FlashFrameworkFilter();
-
- public boolean accept(File dir, String name) {
- return name.endsWith(".swc") && !airFilter.accept(dir, name) && !flashFilter.accept(dir, name);
- }
- }
-
- public static class FlexRslFilter implements FilenameFilter {
- private String fileName;
-
- public FlexRslFilter(String artifactName, String artifactVersion, String build) {
- this.fileName = artifactName + "_" + artifactVersion + "." + build + ".swf";
- }
-
- public boolean accept(File dir, String name) {
- return name.equals(fileName);
- }
- }
-
- public static class FlexSignedRslFilter implements FilenameFilter {
- private String fileName;
-
- public FlexSignedRslFilter(String artifactName, String artifactVersion) {
- this.fileName = artifactName + "_" + artifactVersion + ".swz";
- }
-
- public boolean accept(File dir, String name) {
- return name.equals(fileName);
- }
- }
-
- public static class FlexResourceBundleFilter implements FilenameFilter {
- private String fileName;
-
- public FlexResourceBundleFilter(String artifactName) {
- this.fileName = artifactName + "_rb.swc";
- }
-
- public boolean accept(File dir, String name) {
- return name.equals(fileName);
- }
- }
-
- public static void main(String[] args) throws Exception {
- FlexConverter converter = new FlexConverter(new File(args[0]), new File(args[1]));
- converter.convert();
- }
-
-}