< prev index next >

src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImagePluginStack.java

Print this page




 150                     Comparator.reverseOrder())).filter((e) -> {
 151                         return e.getValue() > 1;
 152                     }).map(java.util.Map.Entry::getKey).
 153                     collect(Collectors.toList());
 154             return result;
 155         }
 156 
 157         @Override
 158         public String getString(int id) {
 159             return reverseMap.get(id);
 160         }
 161     }
 162 
 163     private final Plugin lastSorter;
 164     private final List<TransformerPlugin> contentPlugins = new ArrayList<>();
 165     private final List<PostProcessorPlugin> postProcessingPlugins = new ArrayList<>();
 166     private final List<ResourcePrevisitor> resourcePrevisitors = new ArrayList<>();
 167 
 168     private final ImageBuilder imageBuilder;
 169     private final Properties release;
 170     private final String bom;
 171 
 172     public ImagePluginStack(String bom) {
 173         this(null, Collections.emptyList(), null,
 174                 Collections.emptyList(), null, bom);
 175     }
 176 
 177     public ImagePluginStack(ImageBuilder imageBuilder,
 178             List<TransformerPlugin> contentPlugins,
 179             Plugin lastSorter,
 180             List<PostProcessorPlugin> postprocessingPlugins,
 181             String bom) {
 182         this(imageBuilder, contentPlugins, lastSorter,
 183             postprocessingPlugins, null, bom);
 184     }
 185 
 186     public ImagePluginStack(ImageBuilder imageBuilder,
 187             List<TransformerPlugin> contentPlugins,
 188             Plugin lastSorter,
 189             List<PostProcessorPlugin> postprocessingPlugins,
 190             PluginContext ctxt,
 191             String bom) {
 192         Objects.requireNonNull(contentPlugins);
 193         this.lastSorter = lastSorter;
 194         for (TransformerPlugin p : contentPlugins) {
 195             Objects.requireNonNull(p);
 196             if (p instanceof ResourcePrevisitor) {
 197                 resourcePrevisitors.add((ResourcePrevisitor) p);
 198             }
 199             this.contentPlugins.add(p);
 200         }
 201         for (PostProcessorPlugin p : postprocessingPlugins) {
 202             Objects.requireNonNull(p);
 203             this.postProcessingPlugins.add(p);
 204         }
 205         this.imageBuilder = imageBuilder;
 206         this.release = ctxt != null? ctxt.getReleaseProperties() : new Properties();
 207         this.bom = bom;
 208     }
 209 
 210     public void operate(ImageProvider provider) throws Exception {
 211         ExecutableImage img = provider.retrieve(this);
 212         List<String> arguments = new ArrayList<>();
 213         for (PostProcessorPlugin plugin : postProcessingPlugins) {
 214             List<String> lst = plugin.process(img);
 215             if (lst != null) {
 216                 arguments.addAll(lst);
 217             }
 218         }
 219         img.storeLaunchArgs(arguments);
 220     }
 221 
 222     public DataOutputStream getJImageFileOutputStream() throws IOException {
 223         return imageBuilder.getJImageOutputStream();
 224     }
 225 
 226     public ImageBuilder getImageBuilder() {
 227         return imageBuilder;


 462      * Make the imageBuilder to store files.
 463      *
 464      * @param original
 465      * @param transformed
 466      * @param writer
 467      * @throws java.lang.Exception
 468      */
 469     public void storeFiles(PoolImpl original, PoolImpl transformed,
 470             BasicImageWriter writer)
 471             throws Exception {
 472         Objects.requireNonNull(original);
 473         try {
 474             // fill release information available from transformed "java.base" module!
 475             ModuleDescriptor desc = transformed.getModule("java.base").getDescriptor();
 476             desc.osName().ifPresent(s -> release.put("OS_NAME", s));
 477             desc.osVersion().ifPresent(s -> release.put("OS_VERSION", s));
 478             desc.osArch().ifPresent(s -> release.put("OS_ARCH", s));
 479         } catch (Exception ignored) {
 480         }
 481 
 482         imageBuilder.storeFiles(new LastPool(transformed), bom, release);
 483     }
 484 
 485     public ExecutableImage getExecutableImage() throws IOException {
 486         return imageBuilder.getExecutableImage();
 487     }
 488 }


 150                     Comparator.reverseOrder())).filter((e) -> {
 151                         return e.getValue() > 1;
 152                     }).map(java.util.Map.Entry::getKey).
 153                     collect(Collectors.toList());
 154             return result;
 155         }
 156 
 157         @Override
 158         public String getString(int id) {
 159             return reverseMap.get(id);
 160         }
 161     }
 162 
 163     private final Plugin lastSorter;
 164     private final List<TransformerPlugin> contentPlugins = new ArrayList<>();
 165     private final List<PostProcessorPlugin> postProcessingPlugins = new ArrayList<>();
 166     private final List<ResourcePrevisitor> resourcePrevisitors = new ArrayList<>();
 167 
 168     private final ImageBuilder imageBuilder;
 169     private final Properties release;

 170 
 171     public ImagePluginStack() {
 172         this(null, Collections.emptyList(), null,
 173                 Collections.emptyList(), null);
 174     }
 175 
 176     public ImagePluginStack(ImageBuilder imageBuilder,
 177             List<TransformerPlugin> contentPlugins,
 178             Plugin lastSorter,
 179             List<PostProcessorPlugin> postprocessingPlugins) {

 180         this(imageBuilder, contentPlugins, lastSorter,
 181             postprocessingPlugins, null);
 182     }
 183 
 184     public ImagePluginStack(ImageBuilder imageBuilder,
 185             List<TransformerPlugin> contentPlugins,
 186             Plugin lastSorter,
 187             List<PostProcessorPlugin> postprocessingPlugins,
 188             PluginContext ctxt) {

 189         Objects.requireNonNull(contentPlugins);
 190         this.lastSorter = lastSorter;
 191         for (TransformerPlugin p : contentPlugins) {
 192             Objects.requireNonNull(p);
 193             if (p instanceof ResourcePrevisitor) {
 194                 resourcePrevisitors.add((ResourcePrevisitor) p);
 195             }
 196             this.contentPlugins.add(p);
 197         }
 198         for (PostProcessorPlugin p : postprocessingPlugins) {
 199             Objects.requireNonNull(p);
 200             this.postProcessingPlugins.add(p);
 201         }
 202         this.imageBuilder = imageBuilder;
 203         this.release = ctxt != null? ctxt.getReleaseProperties() : new Properties();

 204     }
 205 
 206     public void operate(ImageProvider provider) throws Exception {
 207         ExecutableImage img = provider.retrieve(this);
 208         List<String> arguments = new ArrayList<>();
 209         for (PostProcessorPlugin plugin : postProcessingPlugins) {
 210             List<String> lst = plugin.process(img);
 211             if (lst != null) {
 212                 arguments.addAll(lst);
 213             }
 214         }
 215         img.storeLaunchArgs(arguments);
 216     }
 217 
 218     public DataOutputStream getJImageFileOutputStream() throws IOException {
 219         return imageBuilder.getJImageOutputStream();
 220     }
 221 
 222     public ImageBuilder getImageBuilder() {
 223         return imageBuilder;


 458      * Make the imageBuilder to store files.
 459      *
 460      * @param original
 461      * @param transformed
 462      * @param writer
 463      * @throws java.lang.Exception
 464      */
 465     public void storeFiles(PoolImpl original, PoolImpl transformed,
 466             BasicImageWriter writer)
 467             throws Exception {
 468         Objects.requireNonNull(original);
 469         try {
 470             // fill release information available from transformed "java.base" module!
 471             ModuleDescriptor desc = transformed.getModule("java.base").getDescriptor();
 472             desc.osName().ifPresent(s -> release.put("OS_NAME", s));
 473             desc.osVersion().ifPresent(s -> release.put("OS_VERSION", s));
 474             desc.osArch().ifPresent(s -> release.put("OS_ARCH", s));
 475         } catch (Exception ignored) {
 476         }
 477 
 478         imageBuilder.storeFiles(new LastPool(transformed), release);
 479     }
 480 
 481     public ExecutableImage getExecutableImage() throws IOException {
 482         return imageBuilder.getExecutableImage();
 483     }
 484 }
< prev index next >