| /******************************************************************************* |
| * Copyright (c) 2007, 2009 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM - Initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.equinox.internal.p2.jarprocessor.ant; |
| |
| import java.io.File; |
| import java.io.IOException; |
| import java.util.List; |
| import java.util.Properties; |
| import org.apache.tools.ant.BuildException; |
| import org.apache.tools.ant.Project; |
| import org.apache.tools.ant.taskdefs.SignJar; |
| import org.eclipse.equinox.internal.p2.jarprocessor.SignCommandStep; |
| |
| public class AntSignCommand extends SignCommandStep { |
| private final Project project; |
| private final Properties jarSignerArguments; |
| private final String antTaskName; |
| |
| public AntSignCommand(Properties options, Properties signArguments, Project project, String antTaskName, String command, boolean verbose) { |
| super(options, command, verbose); |
| this.project = project; |
| this.jarSignerArguments = signArguments; |
| this.antTaskName = antTaskName; |
| } |
| |
| public File postProcess(File input, File workingDirectory, List containers) { |
| if (command != null && input != null && shouldSign(input, containers)) { |
| execute(input); |
| } |
| return null; |
| } |
| |
| private void execute(File input) { |
| try { |
| SignJar jarSigner = new SignJar(); |
| jarSigner.setJar(input); |
| jarSigner.setAlias(jarSignerArguments.getProperty(JarProcessorTask.ALIAS)); |
| jarSigner.setKeystore(jarSignerArguments.getProperty(JarProcessorTask.KEYSTORE)); |
| jarSigner.setStorepass(jarSignerArguments.getProperty(JarProcessorTask.STOREPASS)); |
| jarSigner.setKeypass(jarSignerArguments.getProperty(JarProcessorTask.KEYPASS)); |
| jarSigner.setProject(project); |
| jarSigner.setTaskName(antTaskName); |
| jarSigner.execute(); |
| } catch (BuildException e) { |
| if (e.getCause() instanceof IOException) { |
| throw new BuildException("The jarsigner could not be found. Make sure to run with the build with a JDK.", e); //$NON-NLS-1$ |
| } |
| throw e; |
| } |
| } |
| } |