javafx packaging preloader: generate ant

(cherry picked from commit 8fb025325d845d3755f18e61e469befd03bab7b9)
This commit is contained in:
anna
2013-03-21 10:40:41 +01:00
parent 93eda66d10
commit caec968429
2 changed files with 63 additions and 44 deletions
@@ -71,9 +71,6 @@ public class JavaFxArtifactProperties extends ArtifactProperties<JavaFxArtifactP
private String myStorepass;
private String myKeypass;
private String myPreloaderClass;
private String myPreloaderJar;
@Override
public void onBuildFinished(@NotNull final Artifact artifact, @NotNull final CompileContext compileContext) {
if (!(artifact.getArtifactType() instanceof JavaFxApplicationArtifactType)) {
@@ -255,22 +252,38 @@ public class JavaFxArtifactProperties extends ArtifactProperties<JavaFxArtifactP
myKeypass = keypass;
}
public String getPreloaderClass() {
return myPreloaderClass;
public String getPreloaderClass(Artifact rootArtifact, Project project) {
final Artifact artifact = getPreloaderArtifact(rootArtifact, project);
if (artifact != null) {
final JavaFxPreloaderArtifactProperties properties =
(JavaFxPreloaderArtifactProperties)artifact.getProperties(JavaFxPreloaderArtifactPropertiesProvider.getInstance());
return properties.getPreloaderClass();
}
return null;
}
public void setPreloaderClass(String preloaderClass) {
myPreloaderClass = preloaderClass;
public String getPreloaderJar(Artifact rootArtifact, Project project) {
final Artifact artifact = getPreloaderArtifact(rootArtifact, project);
if (artifact != null) {
return ((ArchivePackagingElement)artifact.getRootElement()).getArchiveFileName();
}
return null;
}
public String getPreloaderJar() {
return myPreloaderJar;
}
public void setPreloaderJar(String preloaderJar) {
myPreloaderJar = preloaderJar;
private static Artifact getPreloaderArtifact(Artifact rootArtifact, Project project) {
for (PackagingElement<?> element : rootArtifact.getRootElement().getChildren()) {
if (element instanceof ArtifactPackagingElement) {
final Artifact artifact = ((ArtifactPackagingElement)element)
.findArtifact(ArtifactManager.getInstance(project).getResolvingContext());
if (artifact != null && artifact.getArtifactType() instanceof JavaFxPreloaderArtifactType) {
return artifact;
}
}
}
return null;
}
private static class JavaFxPackager extends AbstractJavaFxPackager {
private final Artifact myArtifact;
private final JavaFxArtifactProperties myProperties;
@@ -334,34 +347,12 @@ public class JavaFxArtifactProperties extends ArtifactProperties<JavaFxArtifactP
@Override
public String getPreloaderClass() {
final Artifact artifact = getPreloaderArtifact();
if (artifact != null) {
final JavaFxPreloaderArtifactProperties properties = (JavaFxPreloaderArtifactProperties)artifact.getProperties(JavaFxPreloaderArtifactPropertiesProvider.getInstance());
return properties.getPreloaderClass();
}
return null;
return myProperties.getPreloaderClass(myArtifact, myCompileContext.getProject());
}
@Override
public String getPreloaderJar() {
final Artifact artifact = getPreloaderArtifact();
if (artifact != null) {
return ((ArchivePackagingElement)artifact.getRootElement()).getArchiveFileName();
}
return null;
}
private Artifact getPreloaderArtifact() {
for (PackagingElement<?> element : myArtifact.getRootElement().getChildren()) {
if (element instanceof ArtifactPackagingElement) {
final Artifact artifact = ((ArtifactPackagingElement)element)
.findArtifact(ArtifactManager.getInstance(myCompileContext.getProject()).getResolvingContext());
if (artifact != null && artifact.getArtifactType() instanceof JavaFxPreloaderArtifactType) {
return artifact;
}
}
}
return null;
return myProperties.getPreloaderJar(myArtifact, myCompileContext.getProject());
}
@Override
@@ -111,15 +111,18 @@ public class JavaFxChunkBuildExtension extends ChunkBuildExtension {
ArtifactAntGenerationContext context,
CompositeGenerator generator) {
if (preprocessing) return;
if (!(artifact.getArtifactType() instanceof JavaFxApplicationArtifactType)) return;
final CompositePackagingElement<?> rootElement = artifact.getRootElement();
List<PackagingElement<?>> children = rootElement.getChildren();
final List<PackagingElement<?>> children = new ArrayList<PackagingElement<?>>();
String artifactFileName = rootElement.getName();
for (PackagingElement<?> child : children) {
for (PackagingElement<?> child : rootElement.getChildren()) {
if (child instanceof ArchivePackagingElement) {
artifactFileName = ((ArchivePackagingElement)child).getArchiveFileName();
children = ((ArchivePackagingElement)child).getChildren();
children.addAll(((ArchivePackagingElement)child).getChildren());
} else {
children.add(child);
}
}
@@ -138,12 +141,28 @@ public class JavaFxChunkBuildExtension extends ChunkBuildExtension {
final JavaFxArtifactProperties properties =
(JavaFxArtifactProperties)artifact.getProperties(JavaFxArtifactPropertiesProvider.getInstance());
String preloaderFiles = null;
final String preloaderJar = properties.getPreloaderJar(artifact, context.getProject());
final String preloaderClass = properties.getPreloaderClass(artifact, context.getProject());
if (!StringUtil.isEmptyOrSpaces(preloaderJar) && !StringUtil.isEmptyOrSpaces(preloaderClass)) {
preloaderFiles = artifactName + "_preloader_files";
generator.add(new Tag("fx:fileset",
new Pair<String, String>("id", preloaderFiles),
new Pair<String, String>("requiredFor", "preloader"),
new Pair<String, String>("dir", tempDirPath),
new Pair<String, String>("includes", preloaderJar)));
}
//register application
final String appId = artifactName + "_id";
final Tag applicationTag = new Tag("fx:application",
new Pair<String, String>("id", appId),
new Pair<String, String>("name", artifactName),
new Pair<String, String>("mainClass", properties.getAppClass()));
Pair[] applicationParams = {new Pair<String, String>("id", appId),
new Pair<String, String>("name", artifactName),
new Pair<String, String>("mainClass", properties.getAppClass())};
if (preloaderFiles != null) {
applicationParams = ArrayUtil.append(applicationParams, new Pair<String, String>("preloaderClass", preloaderClass));
}
final Tag applicationTag = new Tag("fx:application", applicationParams);
appendValuesFromPropertiesFile(applicationTag, properties.getHtmlParamFile(), "fx:htmlParam", false);
//also loads fx:argument values
@@ -156,6 +175,11 @@ public class JavaFxChunkBuildExtension extends ChunkBuildExtension {
new Pair<String, String>("destfile", tempDirPath + "/" + artifactFileName));
createJarTag.add(new Tag("fx:application", new Pair<String, String>("refid", appId)));
createJarTag.add(new Tag("fileset", new Pair<String, String>("dir", tempDirPath)));
if (preloaderFiles != null) {
final Tag createJarResourcesTag = new Tag("fx:resources");
createJarResourcesTag.add(new Tag("fx:fileset", new Pair<String, String>("refid", preloaderFiles)));
createJarTag.add(createJarResourcesTag);
}
generator.add(createJarTag);
//deploy task
@@ -174,6 +198,10 @@ public class JavaFxChunkBuildExtension extends ChunkBuildExtension {
final Tag deployResourcesTag = new Tag("fx:resources");
deployResourcesTag.add(new Tag("fx:fileset", new Pair<String, String>("dir", tempDirPath),
new Pair<String, String>("includes", artifactFileName)));
if (preloaderFiles != null) {
deployResourcesTag.add(new Tag("fx:fileset", new Pair<String, String>("refid", preloaderFiles)));
}
deployTag.add(deployResourcesTag);
generator.add(deployTag);