/*
* The JabaJaba class library
* Copyright (C) 1997-2003 ASAMI, Tomoharu (asami@AsamiOffice.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package com.AsamiOffice.jaba2.j2fw.generator.packager;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringBufferInputStream;
import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
import java.util.zip.ZipEntry;
import com.AsamiOffice.jaba2.j2fw.generator.GeneratorArtifact;
import com.AsamiOffice.jaba2.j2fw.generator.GeneratorResult;
import com.AsamiOffice.jaba2.j2fw.generator.IPackager;
/**
* JarPackager
*
* @since May. 10, 1999
* @version Oct. 15, 2003
* @author ASAMI, Tomoharu (asami@AsamiOffice.com)
*/
public class JarPackager implements IPackager {
public void pack(
GeneratorArtifact[] artifacts,
GeneratorResult result,
String id,
Object arg,
File dest)
throws IOException {
String jarfile = (String)arg;
if (!jarfile.endsWith(".jar")) {
jarfile = jarfile + ".jar";
}
String manifestContent = (String)result.getProperty("manifest");
Manifest manifest;
if (manifestContent != null) {
InputStream in = new StringBufferInputStream(manifestContent);
manifest = new Manifest(in);
in.close();
} else {
manifest = new Manifest();
}
JarOutputStream jarout =
new JarOutputStream(
new BufferedOutputStream(
new FileOutputStream(new File(dest, jarfile))),
manifest);
for (int i = 0; i < artifacts.length; i++) {
GeneratorArtifact artifact = artifacts[i];
ZipEntry entry = new ZipEntry(artifact.getName());
byte[] content = artifact.getBytes();
entry.setSize(content.length);
jarout.putNextEntry(entry);
jarout.write(content, 0, content.length);
}
jarout.close();
}
}