src/jdk.jlink/share/classes/jdk/tools/jlink/plugin/Plugin.java
author mr
Tue, 29 Oct 2019 08:26:55 -0700
changeset 58842 6c255334120d
parent 47216 71c04702a3d5
permissions -rw-r--r--
8232080: jlink plugins for vendor information and run-time options Reviewed-by: ihse, alanb, kvn, bobv, mchung
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
     1
/*
58842
6c255334120d 8232080: jlink plugins for vendor information and run-time options
mr
parents: 47216
diff changeset
     2
 * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
     4
 *
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    10
 *
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    15
 * accompanied this code).
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    16
 *
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    20
 *
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    23
 * questions.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    24
 */
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    25
package jdk.tools.jlink.plugin;
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    26
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    27
import java.util.Collections;
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    28
import java.util.EnumSet;
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    29
import java.util.Map;
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    30
import java.util.Set;
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    31
import jdk.tools.jlink.internal.plugins.PluginsResourceBundle;
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    32
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    33
/**
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    34
 * Base interface that jlink plugins should implement.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    35
 */
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    36
public interface Plugin {
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    37
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    38
    /**
42471
86b1da05a4b0 8168925: MODULES property should be topologically ordered and space-separated list
sundar
parents: 39834
diff changeset
    39
     * Order of categories matches the plugin sort order.
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    40
     * <ol>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    41
     * <li>FILTER: Filter in/out resources or files.</li>
58842
6c255334120d 8232080: jlink plugins for vendor information and run-time options
mr
parents: 47216
diff changeset
    42
     * <li>ADDER: Add resources or files.</li>
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    43
     * <li>TRANSFORMER: Transform resources or files(eg: refactoring, bytecode
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    44
     * manipulation).</li>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    45
     * <li>MODULEINFO_TRANSFORMER: Transform only module-info.class</li>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    46
     * <li>SORTER: Sort resources within the resource container.</li>
42471
86b1da05a4b0 8168925: MODULES property should be topologically ordered and space-separated list
sundar
parents: 39834
diff changeset
    47
     * <li>METAINFO_ADDER: Added meta info (like release, copyright etc.)</li>
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    48
     * <li>COMPRESSOR: Compress resource within the resouce containers.</li>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    49
     * <li>VERIFIER: Does some image verification.</li>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    50
     * <li>PROCESSOR: Does some post processing on image.</li>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    51
     * <li>PACKAGER: Final processing</li>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    52
     * </ol>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    53
     */
38320
e24c7029e8ba 8156914: jlink API minor cleanups
sundar
parents: 37779
diff changeset
    54
    public enum Category {
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    55
        FILTER("FILTER"),
58842
6c255334120d 8232080: jlink plugins for vendor information and run-time options
mr
parents: 47216
diff changeset
    56
        ADDER("ADDER"),
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    57
        TRANSFORMER("TRANSFORMER"),
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    58
        MODULEINFO_TRANSFORMER("MODULEINFO_TRANSFORMER"),
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    59
        SORTER("SORTER"),
42471
86b1da05a4b0 8168925: MODULES property should be topologically ordered and space-separated list
sundar
parents: 39834
diff changeset
    60
        METAINFO_ADDER("METAINFO_ADDER"),
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    61
        COMPRESSOR("COMPRESSOR"),
39321
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
    62
        VERIFIER("VERIFIER"),
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
    63
        PROCESSOR("PROCESSOR"),
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
    64
        PACKAGER("PACKAGER");
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    65
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    66
        private final String name;
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    67
38320
e24c7029e8ba 8156914: jlink API minor cleanups
sundar
parents: 37779
diff changeset
    68
        Category(String name) {
39321
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
    69
            this.name = name;
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    70
        }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    71
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    72
        public String getName() {
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    73
            return name;
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    74
        }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    75
    }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    76
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    77
    /**
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    78
     * Plugin state:
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    79
     * <ul>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    80
     * <li>DISABLED: The plugin is not exposed in help and will be not called.</li>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    81
     * <li>AUTO_ENABLED: The plugin is enabled by default. It doesn't require its
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    82
     * option to be present to be called.<li>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    83
     * <li>FUNCTIONAL: The plugin is properly configured and can operate.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    84
     * Non functional plugin must advertise their status in the
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    85
     * {@link #getStateDescription() getStateDescription} method</li>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    86
     * </ul>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    87
     */
38320
e24c7029e8ba 8156914: jlink API minor cleanups
sundar
parents: 37779
diff changeset
    88
    public enum State {
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    89
        DISABLED,
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    90
        AUTO_ENABLED,
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    91
        FUNCTIONAL
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    92
    }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    93
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    94
    /**
39129
4b2086305b68 8159593: Plugin Set<Category> getType() should return a Category
sundar
parents: 38320
diff changeset
    95
     * The type of this plugin.
4b2086305b68 8159593: Plugin Set<Category> getType() should return a Category
sundar
parents: 38320
diff changeset
    96
     *
4b2086305b68 8159593: Plugin Set<Category> getType() should return a Category
sundar
parents: 38320
diff changeset
    97
     * @return The type of this plugin
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
    98
     */
39129
4b2086305b68 8159593: Plugin Set<Category> getType() should return a Category
sundar
parents: 38320
diff changeset
    99
    public default Category getType() {
4b2086305b68 8159593: Plugin Set<Category> getType() should return a Category
sundar
parents: 38320
diff changeset
   100
        return Category.TRANSFORMER;
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   101
    }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   102
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   103
    /**
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   104
     * The Plugin set of states.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   105
     * @return The set of states.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   106
     */
38320
e24c7029e8ba 8156914: jlink API minor cleanups
sundar
parents: 37779
diff changeset
   107
    public default Set<State> getState() {
e24c7029e8ba 8156914: jlink API minor cleanups
sundar
parents: 37779
diff changeset
   108
        return EnumSet.of(State.FUNCTIONAL);
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   109
    }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   110
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   111
    /**
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   112
     * The plugin name.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   113
     * @return The name.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   114
     */
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   115
    public default String getName() {
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   116
        return getClass().getName().replace('.', '-');
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   117
    }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   118
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   119
    /**
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   120
     * The plugin description.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   121
     * @return  The description.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   122
     */
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   123
    public default String getDescription() {
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   124
        return "";
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   125
    }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   126
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   127
    /**
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   128
     * The option that identifies this plugin. This may be null.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   129
     * "--" is prefixed to the String (when non-null) when invoking
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   130
     * this plugin from jlink command line.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   131
     *
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   132
     * @return The plugin option.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   133
     */
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   134
    public default String getOption() {
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   135
        return getName();
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   136
    }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   137
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   138
    /**
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   139
     * Has this plugin require one or more arguments?
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   140
     * A plugin can have one or more optional arguments.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   141
     * <br>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   142
     * A plugin option with a single argument is specified as follows:
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   143
     * <pre>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   144
     *     --plugin-option=arg_value
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   145
     * </pre>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   146
     * If there are more than arguments, command line option looks like:
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   147
     * <pre>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   148
     *     --plugin-option=arg_value:arg2=value2:arg3=value3...
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   149
     *</pre>
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   150
     *
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   151
     * @return true if arguments are needed.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   152
     */
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   153
    public default boolean hasArguments() {
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   154
        return false;
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   155
    }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   156
58842
6c255334120d 8232080: jlink plugins for vendor information and run-time options
mr
parents: 47216
diff changeset
   157
    public default boolean hasRawArgument() {
6c255334120d 8232080: jlink plugins for vendor information and run-time options
mr
parents: 47216
diff changeset
   158
        return false;
6c255334120d 8232080: jlink plugins for vendor information and run-time options
mr
parents: 47216
diff changeset
   159
    }
6c255334120d 8232080: jlink plugins for vendor information and run-time options
mr
parents: 47216
diff changeset
   160
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   161
    /**
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   162
     * The plugin argument(s) description.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   163
     * @return  The argument(s) description.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   164
     */
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   165
    public default String getArgumentsDescription() {
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   166
        return "";
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   167
    }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   168
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   169
    /**
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   170
     * Return a message indicating the status of the provider.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   171
     *
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   172
     * @return A status description.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   173
     */
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   174
    public default String getStateDescription() {
38320
e24c7029e8ba 8156914: jlink API minor cleanups
sundar
parents: 37779
diff changeset
   175
        return getState().contains(State.FUNCTIONAL)
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   176
                ? PluginsResourceBundle.getMessage("main.status.ok")
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   177
                : PluginsResourceBundle.getMessage("main.status.not.ok");
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   178
    }
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   179
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   180
    /**
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   181
     * Configure the plugin based on the passed configuration.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   182
     * This method is called prior to invoke the plugin.
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   183
     *
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   184
     * @param config The plugin configuration.
37779
7c84df693837 8154956: Module system implementation refresh (4/2016)
alanb
parents: 36511
diff changeset
   185
     * @throws IllegalArgumentException if a mandatory argument is missing or
7c84df693837 8154956: Module system implementation refresh (4/2016)
alanb
parents: 36511
diff changeset
   186
     * if an argument has invalid value.
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   187
     */
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   188
    public default void configure(Map<String, String> config) {
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   189
    }
39321
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
   190
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
   191
    /**
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
   192
     * Visit the content of the modules that are composing the image.
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
   193
     *
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
   194
     * @param in Read only content.
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
   195
     * @param out The pool to fill with content. This pool must contain
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
   196
     * the result of the visit.
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
   197
     *
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
   198
     * @throws PluginException
c60f34e8c057 8160641: PostProcessingPlugin and ExecutableImage should not be part of plugin API
sundar
parents: 39129
diff changeset
   199
     */
39834
53a6fb443c20 8162538: plugin API should avoid read only pool, have module view separated from resource view and have pool builder to modify
sundar
parents: 39505
diff changeset
   200
    public ResourcePool transform(ResourcePool in, ResourcePoolBuilder out);
36511
9d0388c6b336 8142968: Module System implementation
alanb
parents:
diff changeset
   201
}