< prev index next >

src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludeVMPlugin.java

Print this page




  78 
  79     private static final String JVM_CFG = "jvm.cfg";
  80 
  81     public static final String NAME = "vm";
  82     private static final String ALL = "all";
  83     private static final String CLIENT = "client";
  84     private static final String SERVER = "server";
  85     private static final String MINIMAL = "minimal";
  86 
  87     private Predicate<String> predicate;
  88     private Jvm target;
  89     private boolean keepAll;
  90 
  91     @Override
  92     public String getName() {
  93         return NAME;
  94     }
  95 
  96     /**
  97      * VM paths:
  98      * /java.base/native/{architecture}/{server|client|minimal}/{shared lib}
  99      * e.g.: /java.base/native/amd64/server/libjvm.so
 100      * /java.base/native/server/libjvm.dylib
 101      */
 102     private List<ResourcePoolEntry> getVMs(ResourcePoolModule javaBase, String[] jvmlibs) {
 103         List<ResourcePoolEntry> ret = javaBase.entries().filter((t) -> {
 104             String path = t.path();
 105             for (String jvmlib : jvmlibs) {
 106                 if (t.path().endsWith("/" + jvmlib)) {
 107                     return true;
 108                 }
 109             }
 110             return false;
 111         }).collect(Collectors.toList());
 112         return ret;
 113     }
 114 
 115     @Override
 116     public ResourcePool transform(ResourcePool in, ResourcePoolBuilder out) {
 117         ResourcePoolModule javaBase = in.moduleView().findModule("java.base").get();
 118         String[] jvmlibs = jvmlibs(javaBase.descriptor().osName().get());
 119         TreeSet<Jvm> existing = new TreeSet<>(new JvmComparator());
 120         TreeSet<Jvm> removed = new TreeSet<>(new JvmComparator());


 181         return true;
 182     }
 183 
 184     @Override
 185     public String getArgumentsDescription() {
 186        return PluginsResourceBundle.getArgument(NAME);
 187     }
 188 
 189     @Override
 190     public void configure(Map<String, String> config) {
 191         String value = config.get(NAME);
 192         String exclude = "";
 193         switch (value) {
 194             case ALL: {
 195                 // no filter.
 196                 keepAll = true;
 197                 break;
 198             }
 199             case CLIENT: {
 200                 target = Jvm.CLIENT;
 201                 exclude = "/java.base/native**server/**,/java.base/native**minimal/**";
 202                 break;
 203             }
 204             case SERVER: {
 205                 target = Jvm.SERVER;
 206                 exclude = "/java.base/native**client/**,/java.base/native**minimal/**";
 207                 break;
 208             }
 209             case MINIMAL: {
 210                 target = Jvm.MINIMAL;
 211                 exclude = "/java.base/native**server/**,/java.base/native**client/**";
 212                 break;
 213             }
 214             default: {
 215                 throw new IllegalArgumentException("Unknown exclude VM option: " + value);
 216             }
 217         }
 218         predicate = ResourceFilter.excludeFilter(exclude);
 219     }
 220 
 221     private ResourcePoolEntry handleJvmCfgFile(ResourcePoolEntry orig,
 222             TreeSet<Jvm> existing,
 223             TreeSet<Jvm> removed) throws IOException {
 224         if (keepAll) {
 225             return orig;
 226         }
 227         StringBuilder builder = new StringBuilder();
 228         // Keep comments
 229         try (BufferedReader reader
 230                 = new BufferedReader(new InputStreamReader(orig.content(),
 231                         StandardCharsets.UTF_8))) {




  78 
  79     private static final String JVM_CFG = "jvm.cfg";
  80 
  81     public static final String NAME = "vm";
  82     private static final String ALL = "all";
  83     private static final String CLIENT = "client";
  84     private static final String SERVER = "server";
  85     private static final String MINIMAL = "minimal";
  86 
  87     private Predicate<String> predicate;
  88     private Jvm target;
  89     private boolean keepAll;
  90 
  91     @Override
  92     public String getName() {
  93         return NAME;
  94     }
  95 
  96     /**
  97      * VM paths:
  98      * /java.base/lib/{architecture}/{server|client|minimal}/{shared lib}
  99      * e.g.: /java.base/lib/server/libjvm.so
 100      * /java.base/lib/server/libjvm.dylib
 101      */
 102     private List<ResourcePoolEntry> getVMs(ResourcePoolModule javaBase, String[] jvmlibs) {
 103         List<ResourcePoolEntry> ret = javaBase.entries().filter((t) -> {
 104             String path = t.path();
 105             for (String jvmlib : jvmlibs) {
 106                 if (t.path().endsWith("/" + jvmlib)) {
 107                     return true;
 108                 }
 109             }
 110             return false;
 111         }).collect(Collectors.toList());
 112         return ret;
 113     }
 114 
 115     @Override
 116     public ResourcePool transform(ResourcePool in, ResourcePoolBuilder out) {
 117         ResourcePoolModule javaBase = in.moduleView().findModule("java.base").get();
 118         String[] jvmlibs = jvmlibs(javaBase.descriptor().osName().get());
 119         TreeSet<Jvm> existing = new TreeSet<>(new JvmComparator());
 120         TreeSet<Jvm> removed = new TreeSet<>(new JvmComparator());


 181         return true;
 182     }
 183 
 184     @Override
 185     public String getArgumentsDescription() {
 186        return PluginsResourceBundle.getArgument(NAME);
 187     }
 188 
 189     @Override
 190     public void configure(Map<String, String> config) {
 191         String value = config.get(NAME);
 192         String exclude = "";
 193         switch (value) {
 194             case ALL: {
 195                 // no filter.
 196                 keepAll = true;
 197                 break;
 198             }
 199             case CLIENT: {
 200                 target = Jvm.CLIENT;
 201                 exclude = "/java.base/lib**server/**,/java.base/lib**minimal/**";
 202                 break;
 203             }
 204             case SERVER: {
 205                 target = Jvm.SERVER;
 206                 exclude = "/java.base/lib**client/**,/java.base/lib**minimal/**";
 207                 break;
 208             }
 209             case MINIMAL: {
 210                 target = Jvm.MINIMAL;
 211                 exclude = "/java.base/lib**server/**,/java.base/lib**client/**";
 212                 break;
 213             }
 214             default: {
 215                 throw new IllegalArgumentException("Unknown exclude VM option: " + value);
 216             }
 217         }
 218         predicate = ResourceFilter.excludeFilter(exclude);
 219     }
 220 
 221     private ResourcePoolEntry handleJvmCfgFile(ResourcePoolEntry orig,
 222             TreeSet<Jvm> existing,
 223             TreeSet<Jvm> removed) throws IOException {
 224         if (keepAll) {
 225             return orig;
 226         }
 227         StringBuilder builder = new StringBuilder();
 228         // Keep comments
 229         try (BufferedReader reader
 230                 = new BufferedReader(new InputStreamReader(orig.content(),
 231                         StandardCharsets.UTF_8))) {


< prev index next >