From 47bcefd50497864994df1ed499600be04fc2eaf1 Mon Sep 17 00:00:00 2001 From: evenisse Date: Fri, 21 Feb 2003 15:20:47 +0000 Subject: [PATCH] Correction of java web start bug defines here : o http://forum.java.sun.com/thread.jsp?thread=275890&forum=38&message=1336773 o http://developer.java.sun.com/developer/bugParade/bugs/4739089.html git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@112964 13f79535-47bb-0310-9956-ffa450edef68 --- jnlp/plugin.jelly | 87 +++++++++-- jnlp/plugin.properties | 1 + .../org/apache/maven/jnlp/UpdateManifest.java | 145 ++++++++++++++++++ jnlp/src/plugin-resources/jnlp.manifest | 3 + 4 files changed, 226 insertions(+), 10 deletions(-) create mode 100644 jnlp/src/main/org/apache/maven/jnlp/UpdateManifest.java create mode 100644 jnlp/src/plugin-resources/jnlp.manifest diff --git a/jnlp/plugin.jelly b/jnlp/plugin.jelly index c7055dbb..ee1e98c9 100644 --- a/jnlp/plugin.jelly +++ b/jnlp/plugin.jelly @@ -1,8 +1,19 @@ - + + + + + @@ -17,6 +28,9 @@ Creating ${maven.jnlp.dir}/${pom.artifactId}.jnlp ... + + + - + + + + - + + + + + + + + + + + + + + + + + + + + + Found a store...signing jars Signing jar files ... - + - - + + + + + + + + + + + + + + + + + + + + diff --git a/jnlp/plugin.properties b/jnlp/plugin.properties index e8434231..2c2a1cba 100644 --- a/jnlp/plugin.properties +++ b/jnlp/plugin.properties @@ -2,6 +2,7 @@ # P L U G I N P R O P E R T I E S # ------------------------------------------------------------------- maven.jnlp.dir=${maven.build.dir}/jnlp +maven.jnlp.tmpdir=${maven.build.dir}/jnlp_temp maven.jnlp.spec=1.0+ maven.jnlp.http.codebase=${pom.url} diff --git a/jnlp/src/main/org/apache/maven/jnlp/UpdateManifest.java b/jnlp/src/main/org/apache/maven/jnlp/UpdateManifest.java new file mode 100644 index 00000000..81b24bea --- /dev/null +++ b/jnlp/src/main/org/apache/maven/jnlp/UpdateManifest.java @@ -0,0 +1,145 @@ +package org.apache.maven.jnlp; + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache Maven" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache Maven", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + * ==================================================================== + */ + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.util.Enumeration; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; +import java.util.jar.JarOutputStream; + +/** + * Updates manifest for correcting java webstart bug + * + * @author Emmanuel Venisse + * @version $Id: UpdateManifest.java,v 1.1 2003/02/21 15:20:46 evenisse Exp $ + */ +public class UpdateManifest +{ + private File inputJar; + private File manifest; + private File outputDir; + + public void process() throws Exception + { + System.out.println("Update Manifest in " + inputJar.getName()); + JarFile jarFile = new JarFile(inputJar); + Enumeration enum = jarFile.entries(); + File outputJar = new File(outputDir, inputJar.getName()); + FileOutputStream fos = new FileOutputStream(outputJar); + JarOutputStream jos = new JarOutputStream(fos); + while (enum.hasMoreElements()) { + process(jarFile, jos, (JarEntry)enum.nextElement()); + } + jos.close(); + jarFile.close(); + outputJar.setLastModified(inputJar.lastModified()); + } + + private void process(JarFile jarFile, JarOutputStream jos, JarEntry entry) + throws Exception + { + InputStream is = jarFile.getInputStream(entry); + JarEntry je = entry; + if (entry.getName().equalsIgnoreCase("META-INF/MANIFEST.MF")) + { + je = new JarEntry("META-INF/MANIFEST.MF"); + is = new FileInputStream(manifest); + } + jos.putNextEntry(je); + byte[] buffer = new byte[2048]; + int read = 0; + while((read = is.read(buffer)) > 0) + { + jos.write(buffer, 0, read); + } + jos.closeEntry(); + } + + public void setInputJar(File input) + { + this.inputJar = input; + } + + public File getInputJar() + { + return inputJar; + } + + public void setManifest(File manifest) + { + this.manifest = manifest; + } + + public File getManifest() + { + return manifest; + } + + public void setOutputDir(File outputDir) + { + this.outputDir = outputDir; + } + + public File getOutputDir() + { + return outputDir; + } +} \ No newline at end of file diff --git a/jnlp/src/plugin-resources/jnlp.manifest b/jnlp/src/plugin-resources/jnlp.manifest new file mode 100644 index 00000000..39cc9ae5 --- /dev/null +++ b/jnlp/src/plugin-resources/jnlp.manifest @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Created-By: Apache Jakarta Maven +