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 }
|