...
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 = properties;
this.macros = new HashSet<String>();
}
/**
* return the set of macros used by the plugin
*/
public Set<String> getMacros() {
return macros;
}
/**
* internal method used by platform to add macros used in properties. its not advisable for users to use this.
*/
public void addMacro(String macro) {
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)));
}
}
} |
...