...
Code Block |
---|
// No changes to existing Plugin class in CDAP-API. public final class Plugin { private final ArtifactId artifactId; private final PluginClass pluginClass; private final PluginProperties properties; Plugin(ArtifactId artifactId, PluginClass pluginClass, PluginProperties) { ... } ... } |
Code Block |
---|
/** * Plugin instance properties. */ @Beta public class PluginProperties implements Serializable { private static final long serialVersionUID = -7396484717511717753L; // Currently only support String->String map. private final Map<String, String> properties; // new addition in PluginProperties to add macro private final Set<String> macros; public static Builder builder() { return new Builder(); } private PluginProperties(Map<String, String> properties) { this(properties, null); } private PluginProperties(Map<String, String> properties, @Nullable Set<String> macros) { this.properties = properties; this.macros = new HashSet<String>()macros; } /** * return the set of macros used by the plugin */ @Nullable public Set<String> getMacros() { return macros; } /** * internal method used by platform to addset macros used in properties. its not advisable for users to use this. * returns new PluginProperties instance with macros set */ public voidPluginProperties addMacrosetMacros(StringSet<String> macromacros) { return new PluginProperties(getProperties(), macros.add(macro); } // no changes to existing methods or Builder public Map<String, String> getProperties() { return properties; } /** * A builder to create {@link PluginProperties} instance. */ public static final class Builder { private final Map<String, String> properties; private Builder() { this.properties = new HashMap<>(); } /** * Adds multiple properties. * * @param properties map of properties to add. * @return this builder */ public Builder addAll(Map<String, String> properties) { this.properties.putAll(properties); return this; } /** * Adds a property * @param key the name of the property * @param value the value of the property * @return this builder */ public Builder add(String key, String value) { this.properties.put(key, value); return this; } /** * Creates a new instance of {@link PluginProperties} with the properties added to this builder prior to this call. */ public PluginProperties build() { return new PluginProperties(Collections.unmodifiableMap(new HashMap<>(properties))); } } } |
...