1 /* 2 * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.oracle.tools.packager; 27 28 import java.io.File; 29 import java.util.Collection; 30 import java.util.Map; 31 32 /** 33 * @deprecated use {@link ToolProvider} to locate the {@code "javapackager"} tool instead. 34 */ 35 @Deprecated(since="10", forRemoval=true) 36 public interface Bundler { 37 /** 38 * @return User Friendly name of this bundler. 39 */ 40 String getName(); 41 42 /** 43 * @return A more verbose description of the bundler. 44 */ 45 String getDescription(); 46 47 /** 48 * @return Command line identifier of the bundler. Should be unique. 49 */ 50 String getID(); 51 52 /** 53 * @return The bundle type of the bundle that is created by this bundler. 54 */ 55 String getBundleType(); 56 57 /** 58 * The parameters that this bundler uses to generate it's bundle. 59 * @return immutable collection 60 */ 61 Collection<BundlerParamInfo<?>> getBundleParameters(); 62 63 /** 64 * Determines if this bundler will execute with the given parameters. 65 * 66 * @param params The parameters to be validate. Validation may modify 67 * the map, so if you are going to be using the same map 68 * across multiple bundlers you should pass in a deep copy. 69 * @return true if valid 70 * @throws UnsupportedPlatformException If the bundler cannot run on this 71 * platform (i.e. creating mac apps on windows) 72 * @throws ConfigException If the configuration params are incorrect. The 73 * exception may contain advice on how to modify the params map 74 * to make it valid. 75 */ 76 boolean validate(Map<String, ? super Object> params) throws UnsupportedPlatformException, ConfigException; 77 78 /** 79 * Creates a bundle from existing content. 80 * 81 * If a call to {@link #validate(java.util.Map)} date} returns true with the 82 * parameters map, then you can expect a valid output. However if an exception 83 * was thrown out of validate or it returned false then you should not 84 * expect sensible results from this call. It may or may not return a value, 85 * and it may or may not throw an exception. But any output should not 86 * be considered valid or sane. 87 * 88 * @param params The parameters as specified by getBundleParameters. 89 * Keyed by the id from the ParamInfo. Execution may 90 * modify the map, so if you are going to be using the 91 * same map across multiple bundlers you should pass 92 * in a deep copy. 93 * @param outputParentDir 94 * The parent dir that the returned bundle will be placed in. 95 * @return The resulting bundled file 96 * 97 * For a bundler that produces a single artifact file this will be the 98 * location of that artifact (.exe file, .deb file, etc) 99 * 100 * For a bundler that produces a specific directory format output this will 101 * be the location of that specific directory (.app file, etc). 102 * 103 * For a bundler that produce multiple files, this will be a parent 104 * directory of those files (linux and windows images), whose name is not 105 * relevant to the result. 106 * 107 * @throws java.lang.IllegalArgumentException for any of the following 108 * reasons: 109 * <ul> 110 * <li>A required parameter is not found in the params list, for 111 * example missing the main class.</li> 112 * <li>A parameter has the wrong type of an object, for example a 113 * String where a File is required</li> 114 * <li>Bundler specific incompatibilities with the parameters, for 115 * example a bad version number format or an application id with 116 * forward slashes.</li> 117 * </ul> 118 */ 119 public File execute(Map<String, ? super Object> params, File outputParentDir); 120 121 /** 122 * Removes temporary files that are used for bundling. 123 */ 124 public void cleanup(Map<String, ? super Object> params); 125 126 }