1/* 2 * Copyright (c) 2015, 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. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23import java.util.ArrayList; 24import java.util.List; 25import java.util.Map; 26import java.util.Set; 27import jdk.tools.jlink.plugin.ResourcePool; 28import jdk.tools.jlink.plugin.ResourcePoolBuilder; 29import jdk.tools.jlink.internal.PluginRepository; 30import jdk.tools.jlink.plugin.Plugin; 31 32import tests.Helper; 33 34/* 35 * @test 36 * @summary Test jlink options 37 * @author Jean-Francois Denise 38 * @library ../lib 39 * @modules java.base/jdk.internal.jimage 40 * jdk.jdeps/com.sun.tools.classfile 41 * jdk.jlink/jdk.tools.jlink.internal 42 * jdk.jlink/jdk.tools.jlink.plugin 43 * jdk.jlink/jdk.tools.jmod 44 * jdk.jlink/jdk.tools.jimage 45 * jdk.compiler 46 * @build tests.* 47 * @run main JLinkOptionsTest 48 */ 49public class JLinkOptionsTest { 50 51 private static class TestPlugin implements Plugin { 52 private final String name; 53 private final String option; 54 55 private TestPlugin(String name, String option) { 56 this.name = name; 57 this.option = option; 58 } 59 60 61 @Override 62 public String getOption() { 63 return option; 64 } 65 66 @Override 67 public ResourcePool transform(ResourcePool in, ResourcePoolBuilder out) { 68 return out.build(); 69 } 70 71 @Override 72 public String getName() { 73 return name; 74 } 75 76 @Override 77 public String getDescription() { 78 return name; 79 } 80 } 81 82 public static void main(String[] args) throws Exception { 83 Helper helper = Helper.newHelper(); 84 if (helper == null) { 85 System.err.println("Test not run"); 86 return; 87 } 88 helper.generateDefaultModules(); 89 { 90 // multiple plugins with same option 91 92 PluginRepository. 93 registerPlugin(new TestPlugin("test1", "test1")); 94 PluginRepository. 95 registerPlugin(new TestPlugin("test2", "test1")); 96 helper.generateDefaultImage("composite2").assertFailure("Error: More than one plugin enabled by test1 option"); 97 PluginRepository.unregisterPlugin("test1"); 98 PluginRepository.unregisterPlugin("test2"); 99 } 100 } 101} 102