4.2. Plugins - Plugin-Parameter

Plugins können initiale Paramter haben, die jeweils für ein Plugin definiert sind und unabhängig von ExtensionPoints etc. sind. 

Definieren von Parametern

Dies müssen durch das Überschreiben der Methode "initializeParamters" in der Plugin-Klasse definiert werden:

public class DeviceSmartwatchPlugin extends Plugin {


    public DeviceSmartwatchPlugin(PluginWrapper wrapper) {
        super(wrapper);
    }

    public void initializeParameters() {
        addParameter(new StringParameterType("API-Key", null, "Der API-Key für Google Firebase Message"));
    }
}

Damit wird es dann unter "Installierte Plugins" im Punkt "Einstellungen" des entsprechenden Plugins verfügbar:

Verwenden von Parametern

Im Plugin

Die Parameter können dann innerhalb des Plugins, z.B. beim Starten verwendet werden:

@Override
public void start() throws PluginException {
    String apikey = getParameterValue("API-Key");
    //...
}

In ExtensionPoints

Wird AbstractDeviceExtension benutzt, können Parameter direkt verwendet werden, indem "getPlugin()" verwendet wird.

@Extension
public class DeviceSmartwatchExtension extends AbstractDeviceExtension<DeviceSmartwatch>{
 
	//... createTemplate()...
 
	@Override
	public DeviceSmartwatch createInstance(ParameterValueContainer parameters) {
    	// the API key is for the whole plugin...
	    String apiKey = getPlugin().getParameterValue("API-key");
    	DeviceSmartwatch device = new DeviceSmartwatch(apiKey);
	    return device;
	}
}

Andere ExtensionPoints müssen explizit das Plugin abfragen. Dazu muss das Interface "PluginAwareExtension" angehängt werden. Diese erfordert das Implementieren von "setPlugin". Das System übergibt dort automatisch das entsprechende Plugin und damit kann dann auf die Parameter zugegriffen werden.

@Extension
public class EndpointExtension implements EndpointExtension, PluginAwareExtension{
 
	public void setPlugin(Plugin plugin){
		String apiKey = plugin.getParameterValue("API-key");
		//...
	}
}