summaryrefslogtreecommitdiffstats
path: root/plugin/client.go
diff options
context:
space:
mode:
authorJesse Hallam <jesse.hallam@gmail.com>2018-10-03 13:13:19 -0400
committerGitHub <noreply@github.com>2018-10-03 13:13:19 -0400
commit580b546862860ca389305d0d4614471095ec67fe (patch)
tree0af3d83f4c5a44f5c7b4d9379238afb7c1573330 /plugin/client.go
parentb6835ab984aece679cb0d6bea548d3f2ed1c9af2 (diff)
downloadchat-580b546862860ca389305d0d4614471095ec67fe.tar.gz
chat-580b546862860ca389305d0d4614471095ec67fe.tar.bz2
chat-580b546862860ca389305d0d4614471095ec67fe.zip
MM-12193: remove auto unmarshalling (#9519)
* MM-12193: remove auto configuration unmarshalling Since plugin hook events are called concurrently, there's no way for the plugin framework to coordinate safe access to the automatically unmarshalled configuration fields. Remove this functionality, and update documentation to illustrate a safe way to do this. * better Fprint example * fix unit tests * log when OnConfigurationChange fails through OnActivate * clarify lifecycle when OnConfigurationChange returns an error * call SetAPI even if OnConfigurationChange not implemented
Diffstat (limited to 'plugin/client.go')
-rw-r--r--plugin/client.go22
1 files changed, 0 insertions, 22 deletions
diff --git a/plugin/client.go b/plugin/client.go
index 457a16cf4..63cedfbce 100644
--- a/plugin/client.go
+++ b/plugin/client.go
@@ -13,12 +13,10 @@ import (
func ClientMain(pluginImplementation interface{}) {
if impl, ok := pluginImplementation.(interface {
SetAPI(api API)
- SetSelfRef(ref interface{})
}); !ok {
panic("Plugin implementation given must embed plugin.MattermostPlugin")
} else {
impl.SetAPI(nil)
- impl.SetSelfRef(pluginImplementation)
}
pluginMap := map[string]plugin.Plugin{
@@ -34,8 +32,6 @@ func ClientMain(pluginImplementation interface{}) {
type MattermostPlugin struct {
// API exposes the plugin api, and becomes available just prior to the OnActive hook.
API API
-
- selfRef interface{} // This is so we can unmarshal into our parent
}
// SetAPI persists the given API interface to the plugin. It is invoked just prior to the
@@ -43,21 +39,3 @@ type MattermostPlugin struct {
func (p *MattermostPlugin) SetAPI(api API) {
p.API = api
}
-
-// SetSelfRef is called by ClientMain to maintain a pointer to the plugin interface originally
-// registered. This allows for the default implementation of OnConfigurationChange.
-func (p *MattermostPlugin) SetSelfRef(ref interface{}) {
- p.selfRef = ref
-}
-
-// OnConfigurationChange provides a default implementation of this hook event that unmarshals the
-// plugin configuration directly onto the plugin struct.
-//
-// Feel free to implement your own version of OnConfigurationChange if you need more advanced
-// configuration handling.
-func (p *MattermostPlugin) OnConfigurationChange() error {
- if p.selfRef != nil {
- return p.API.LoadPluginConfiguration(p.selfRef)
- }
- return nil
-}