From 4c24bc9b5311e259dfbf7c5ecdca9219d947d133 Mon Sep 17 00:00:00 2001 From: Rodolfo Sanchez Date: Mon, 25 Jul 2022 15:29:26 -0500 Subject: [PATCH 1/7] feat: read func classname from the func.yaml file Signed-off-by: Rodolfo Sanchez --- buildpacks/java/VERSION | 2 +- buildpacks/java/java/build.go | 2 +- buildpacks/java/java/detect.go | 7 +- buildpacks/java/java/func_yaml.go | 22 ++- buildpacks/java/java/function.go | 14 +- buildpacks/java/tests/detect_test.go | 201 ++++++++++++++++++++++++ buildpacks/java/tests/func_yaml_test.go | 12 ++ buildpacks/java/tests/setup.go | 16 ++ 8 files changed, 266 insertions(+), 10 deletions(-) create mode 100644 buildpacks/java/tests/detect_test.go diff --git a/buildpacks/java/VERSION b/buildpacks/java/VERSION index 7d6b3eb3..c5d54ec3 100644 --- a/buildpacks/java/VERSION +++ b/buildpacks/java/VERSION @@ -1 +1 @@ -0.0.8 \ No newline at end of file +0.0.9 diff --git a/buildpacks/java/java/build.go b/buildpacks/java/java/build.go index f8050be1..bdd19cfb 100644 --- a/buildpacks/java/java/build.go +++ b/buildpacks/java/java/build.go @@ -53,7 +53,7 @@ func (b Build) Build(context libcnb.BuildContext) (libcnb.BuildResult, error) { functionLayer := NewFunction(context.Application.Path, WithLogger(b.Logger), - WithFunctionClass(functionClass, isFuncDefDefault), + WithFunctionClass(functionClass, isFuncDefDefault, e.Metadata["func_yaml_function_name"].(string)), WithDefaultFunction(defaultDef, isDefaultFuncDefault), WithFuncYamlEnvs(e.Metadata["func_yaml_envs"].(map[string]interface{})), ) diff --git a/buildpacks/java/java/detect.go b/buildpacks/java/java/detect.go index 26f61020..8f615a98 100644 --- a/buildpacks/java/java/detect.go +++ b/buildpacks/java/java/detect.go @@ -53,9 +53,10 @@ func (d Detect) Detect(context libcnb.DetectContext) (libcnb.DetectResult, error { Name: "java-function", Metadata: map[string]interface{}{ - "launch": true, - "func_yaml_envs": funcYaml.Envs, - "func_yaml_options": funcYaml.Options, + "launch": true, + "func_yaml_envs": funcYaml.Envs, + "func_yaml_function_name": funcYaml.Name, + "func_yaml_options": funcYaml.Options, }, }, { diff --git a/buildpacks/java/java/func_yaml.go b/buildpacks/java/java/func_yaml.go index cd8a7a22..71e1e6b1 100644 --- a/buildpacks/java/java/func_yaml.go +++ b/buildpacks/java/java/func_yaml.go @@ -13,6 +13,7 @@ import ( ) type FuncYaml struct { + Name string Options map[string]string Envs map[string]string Exists bool @@ -34,14 +35,33 @@ func ParseFuncYaml(filedir string, logger bard.Logger) FuncYaml { options := optionsToMap(cfg.Options, logger) envs := envsToMap(cfg.Envs, logger) - + name := getName(cfg.Envs, cfg.Name) return FuncYaml{ + Name: name, Options: options, Envs: envs, Exists: true, } } +func getName(envs knfn.Envs, nameFromYaml string) string { + result := nameFromYaml + + if envs == nil { + return result + } + + for _, e := range envs { + key := *e.Name + if key == "FUNCTION_NAME" { + result = *e.Value + break + } + } + + return result +} + func envsToMap(envs knfn.Envs, logger bard.Logger) map[string]string { result := map[string]string{} if envs == nil { diff --git a/buildpacks/java/java/function.go b/buildpacks/java/java/function.go index 90012b03..b76e81f7 100644 --- a/buildpacks/java/java/function.go +++ b/buildpacks/java/java/function.go @@ -98,12 +98,18 @@ func WithDefaultFunction(defaultFunctionName string, override bool) FunctionOpt } } -func WithFunctionClass(functionClass string, override bool) FunctionOpt { +// TODO test this code +func WithFunctionClass(functionClass string, override bool, funcYamlName string) FunctionOpt { return func(fun *Function, metadata map[string]string) { - fun.functionClass = functionClass - fun.overrideFunctionClass = override + if functionClass == "" { + fun.functionClass = funcYamlName + metadata["bp-function-class"] = funcYamlName + } else { + fun.functionClass = functionClass + metadata["bp-function-class"] = functionClass + } - metadata["bp-function-class"] = functionClass + fun.overrideFunctionClass = override metadata["bp-function-class-override"] = strconv.FormatBool(override) } } diff --git a/buildpacks/java/tests/detect_test.go b/buildpacks/java/tests/detect_test.go new file mode 100644 index 00000000..8e62ae90 --- /dev/null +++ b/buildpacks/java/tests/detect_test.go @@ -0,0 +1,201 @@ +// Copyright 2021-2022 VMware, Inc. +// SPDX-License-Identifier: BSD-2-Clause + +package tests + +import ( + "bytes" + "kn-fn/java-function-buildpack/java" + "reflect" + "testing" + + "github.com/buildpacks/libcnb" + "github.com/paketo-buildpacks/libpak/bard" +) + +type result struct { + plan libcnb.DetectResult + err error +} + +func TestDetectNoEnvironmentWithValidFile(t *testing.T) { + d := getDetector() + appDir, cleanup := SetupTestDirectory( + WithFuncName("my-function"), + ) + defer cleanup() + + plan, err := d.Detect(getContext( + withApplicationPath(appDir), + )) + + expectations := DetectExpectations{ + Result: result{plan, err}, + Pass: true, + Metadata: map[string]interface{}{ + "func_yaml_function_name": "my-function", + "func_yaml_envs": map[string]string{}, + "func_yaml_options": map[string]string{}, + }, + } + expectations.Check(t) +} + +func TestDetectEnvironmentWithValidFile(t *testing.T) { + d := getDetector() + appDir, cleanup := SetupTestDirectory( + WithFuncEnvs(map[string]string{ + "MODULE_NAME": "other", + "FUNCTION_NAME": "handler2", + }), + ) + defer cleanup() + + plan, err := d.Detect(getContext( + withApplicationPath(appDir), + withModuleName("other"), + withFunctionName("handler2"), + )) + + expectations := DetectExpectations{ + Result: result{plan, err}, + Pass: true, + Metadata: map[string]interface{}{ + "func_yaml_function_name": "handler2", + "func_yaml_envs": map[string]string{ + "MODULE_NAME": "other", + "FUNCTION_NAME": "handler2", + }, + "func_yaml_options": map[string]string{}, + }, + } + expectations.Check(t) +} + +func TestDetectNameFromEnvsBeforeFuncYamlFile(t *testing.T) { + d := getDetector() + appDir, cleanup := SetupTestDirectory( + WithFuncName("not-the-best-name"), + WithFuncEnvs(map[string]string{ + "MODULE_NAME": "other", + "FUNCTION_NAME": "goodName", + }), + ) + defer cleanup() + + plan, err := d.Detect(getContext( + withApplicationPath(appDir), + withModuleName("other"), + withFunctionName("goodName"), + )) + + expectations := DetectExpectations{ + Result: result{plan, err}, + Pass: true, + Metadata: map[string]interface{}{ + "func_yaml_function_name": "goodName", + "func_yaml_envs": map[string]string{ + "MODULE_NAME": "other", + "FUNCTION_NAME": "goodName", + }, + "func_yaml_options": map[string]string{}, + }, + } + expectations.Check(t) +} + +func getDetector() java.Detect { + buf := bytes.NewBuffer(nil) + logger := bard.NewLogger(buf) + return java.Detect{ + Logger: logger, + } +} + +func getContext(opts ...func(*libcnb.DetectContext)) libcnb.DetectContext { + ctx := libcnb.DetectContext{ + Application: libcnb.Application{}, + Buildpack: libcnb.Buildpack{}, + Platform: libcnb.Platform{ + Environment: make(map[string]string), + }, + } + + for _, opt := range opts { + opt(&ctx) + } + + return ctx +} + +func withApplicationPath(path string) func(*libcnb.DetectContext) { + return func(dc *libcnb.DetectContext) { + dc.Application.Path = path + } +} + +func withModuleName(value string) func(*libcnb.DetectContext) { + return func(dc *libcnb.DetectContext) { + dc.Platform.Environment["MODULE_NAME"] = value + } +} + +func withFunctionName(value string) func(*libcnb.DetectContext) { + return func(dc *libcnb.DetectContext) { + dc.Platform.Environment["FUNCTION_NAME"] = value + } +} + +func withEnvironmentVariable(key string, value string) func(*libcnb.DetectContext) { + return func(dc *libcnb.DetectContext) { + dc.Platform.Environment[key] = value + } +} + +type DetectExpectations struct { + Result result + + ExpectError bool + Err error + Pass bool + Metadata map[string]interface{} + SkipProvides bool + SkipRequires bool +} + +func (e DetectExpectations) Check(t *testing.T) { + if !e.ExpectError && e.Result.err != nil { + if e.Err != nil && e.Result.err != e.Err { + t.Errorf("expected error %v, but received error %v", e.Err, e.Result.err) + } else { + t.Errorf("unexpected error received: %v", e.Result.err) + } + return + } + + if e.Pass != e.Result.plan.Pass { + t.Errorf("expected detection to pass but it failed") + return + } + + // Find the invoker requires + planName := "java-function" + for _, plan := range e.Result.plan.Plans { + for _, require := range plan.Requires { + if require.Name == planName { + for k, v := range e.Metadata { + val, ok := require.Metadata[k] + if !ok { + t.Errorf("plan requirement '%s' did not find metadata with key %s", planName, k) + return + } + + if !reflect.DeepEqual(v, val) { + t.Errorf("unexpected value in '%s' requires metadata for key %s. Expected %s but got %s", planName, k, v, val) + return + } + } + } + } + } +} diff --git a/buildpacks/java/tests/func_yaml_test.go b/buildpacks/java/tests/func_yaml_test.go index f9b64bbc..b1268e0b 100644 --- a/buildpacks/java/tests/func_yaml_test.go +++ b/buildpacks/java/tests/func_yaml_test.go @@ -32,6 +32,18 @@ func TestParseFuncYaml_FileExistsButEmpty(t *testing.T) { } } +func TestParseFuncYaml_HasFuncClass(t *testing.T) { + expectedFunctionName := "functionName" + appDir, cleanup := SetupTestDirectory(WithFuncName(expectedFunctionName)) + defer cleanup() + result := java.ParseFuncYaml(appDir, NewLogger()) + + if result.Name != "functionName" { + t.Logf("Expected function name to be %s but received %s", expectedFunctionName, result.Name) + t.Fail() + } +} + func TestParseFuncYaml_HasEnvs(t *testing.T) { envs := map[string]string{ "my-env": "my-env-value", diff --git a/buildpacks/java/tests/setup.go b/buildpacks/java/tests/setup.go index 2429e0d6..a0199bb9 100644 --- a/buildpacks/java/tests/setup.go +++ b/buildpacks/java/tests/setup.go @@ -54,6 +54,22 @@ func WithFuncYaml() SetupOpts { } } +func WithFuncName(name string) SetupOpts { + return func(directory string) { + cfg, err := knfn.NewFunction(directory) + if err != nil { + panic(err) + } + + cfg.Name = name + + err = cfg.WriteConfig() + if err != nil { + panic(err) + } + } +} + func WithFuncEnvs(envs map[string]string) SetupOpts { return func(directory string) { cfg, err := knfn.NewFunction(directory) From 5ad84e7691eae42804671afd7f93328f356e26ef Mon Sep 17 00:00:00 2001 From: Rodolfo Sanchez Date: Mon, 25 Jul 2022 15:29:34 -0500 Subject: [PATCH 2/7] revert version change Signed-off-by: Rodolfo Sanchez --- buildpacks/java/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildpacks/java/VERSION b/buildpacks/java/VERSION index c5d54ec3..d169b2f2 100644 --- a/buildpacks/java/VERSION +++ b/buildpacks/java/VERSION @@ -1 +1 @@ -0.0.9 +0.0.8 From 870d3934f4f9eec9b54ec6b40fb5f50f40e6f7bf Mon Sep 17 00:00:00 2001 From: Rodolfo Sanchez Date: Mon, 25 Jul 2022 15:29:39 -0500 Subject: [PATCH 3/7] feat: use overwrite attribute Signed-off-by: Rodolfo Sanchez --- buildpacks/java/java/function.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/buildpacks/java/java/function.go b/buildpacks/java/java/function.go index b76e81f7..0c99c732 100644 --- a/buildpacks/java/java/function.go +++ b/buildpacks/java/java/function.go @@ -101,12 +101,13 @@ func WithDefaultFunction(defaultFunctionName string, override bool) FunctionOpt // TODO test this code func WithFunctionClass(functionClass string, override bool, funcYamlName string) FunctionOpt { return func(fun *Function, metadata map[string]string) { - if functionClass == "" { + + fun.functionClass = functionClass + metadata["bp-function-class"] = functionClass + + if override { fun.functionClass = funcYamlName metadata["bp-function-class"] = funcYamlName - } else { - fun.functionClass = functionClass - metadata["bp-function-class"] = functionClass } fun.overrideFunctionClass = override From 5de1a8ec56552d4463234f3615cc39d13c38cd0f Mon Sep 17 00:00:00 2001 From: Rodolfo Sanchez Date: Mon, 25 Jul 2022 15:29:43 -0500 Subject: [PATCH 4/7] change name to func_yaml_name Signed-off-by: Rodolfo Sanchez --- buildpacks/java/java/build.go | 4 +- buildpacks/java/java/detect.go | 8 ++-- buildpacks/java/java/function.go | 25 +++++++----- buildpacks/java/tests/detect_test.go | 61 ++++------------------------ 4 files changed, 28 insertions(+), 70 deletions(-) diff --git a/buildpacks/java/java/build.go b/buildpacks/java/java/build.go index bdd19cfb..2fff24dc 100644 --- a/buildpacks/java/java/build.go +++ b/buildpacks/java/java/build.go @@ -53,8 +53,8 @@ func (b Build) Build(context libcnb.BuildContext) (libcnb.BuildResult, error) { functionLayer := NewFunction(context.Application.Path, WithLogger(b.Logger), - WithFunctionClass(functionClass, isFuncDefDefault, e.Metadata["func_yaml_function_name"].(string)), - WithDefaultFunction(defaultDef, isDefaultFuncDefault), + WithFunctionClass(functionClass, isFuncDefDefault, e.Metadata["func_yaml_name"].(string)), + WithDefaultFunction(defaultDef, isDefaultFuncDefault, e.Metadata["func_yaml_name"].(string)), WithFuncYamlEnvs(e.Metadata["func_yaml_envs"].(map[string]interface{})), ) result.Layers = append(result.Layers, functionLayer) diff --git a/buildpacks/java/java/detect.go b/buildpacks/java/java/detect.go index 8f615a98..47929c13 100644 --- a/buildpacks/java/java/detect.go +++ b/buildpacks/java/java/detect.go @@ -53,10 +53,10 @@ func (d Detect) Detect(context libcnb.DetectContext) (libcnb.DetectResult, error { Name: "java-function", Metadata: map[string]interface{}{ - "launch": true, - "func_yaml_envs": funcYaml.Envs, - "func_yaml_function_name": funcYaml.Name, - "func_yaml_options": funcYaml.Options, + "launch": true, + "func_yaml_envs": funcYaml.Envs, + "func_yaml_name": funcYaml.Name, + "func_yaml_options": funcYaml.Options, }, }, { diff --git a/buildpacks/java/java/function.go b/buildpacks/java/java/function.go index 0c99c732..6966204b 100644 --- a/buildpacks/java/java/function.go +++ b/buildpacks/java/java/function.go @@ -88,26 +88,31 @@ func WithLogger(logger bard.Logger) FunctionOpt { } } -func WithDefaultFunction(defaultFunctionName string, override bool) FunctionOpt { +// TODO test this code +func WithDefaultFunction(defaultFunctionName string, override bool, funcYamlName string) FunctionOpt { return func(fun *Function, metadata map[string]string) { - fun.defaultFunctionName = defaultFunctionName - fun.overrideDefaultFunctionName = override + fun.defaultFunctionName = funcYamlName + metadata["bp-default-function"] = funcYamlName + + if override { + fun.functionClass = defaultFunctionName + metadata["bp-function-class"] = defaultFunctionName + } - metadata["bp-default-function"] = defaultFunctionName + fun.overrideDefaultFunctionName = override metadata["bp-default-function-override"] = strconv.FormatBool(override) } } -// TODO test this code +//TODO This should not be the way that works func WithFunctionClass(functionClass string, override bool, funcYamlName string) FunctionOpt { return func(fun *Function, metadata map[string]string) { - - fun.functionClass = functionClass - metadata["bp-function-class"] = functionClass + fun.functionClass = funcYamlName + metadata["bp-function-class"] = funcYamlName if override { - fun.functionClass = funcYamlName - metadata["bp-function-class"] = funcYamlName + fun.functionClass = functionClass + metadata["bp-function-class"] = functionClass } fun.overrideFunctionClass = override diff --git a/buildpacks/java/tests/detect_test.go b/buildpacks/java/tests/detect_test.go index 8e62ae90..fd7adb6f 100644 --- a/buildpacks/java/tests/detect_test.go +++ b/buildpacks/java/tests/detect_test.go @@ -33,70 +33,35 @@ func TestDetectNoEnvironmentWithValidFile(t *testing.T) { Result: result{plan, err}, Pass: true, Metadata: map[string]interface{}{ - "func_yaml_function_name": "my-function", - "func_yaml_envs": map[string]string{}, - "func_yaml_options": map[string]string{}, - }, - } - expectations.Check(t) -} - -func TestDetectEnvironmentWithValidFile(t *testing.T) { - d := getDetector() - appDir, cleanup := SetupTestDirectory( - WithFuncEnvs(map[string]string{ - "MODULE_NAME": "other", - "FUNCTION_NAME": "handler2", - }), - ) - defer cleanup() - - plan, err := d.Detect(getContext( - withApplicationPath(appDir), - withModuleName("other"), - withFunctionName("handler2"), - )) - - expectations := DetectExpectations{ - Result: result{plan, err}, - Pass: true, - Metadata: map[string]interface{}{ - "func_yaml_function_name": "handler2", - "func_yaml_envs": map[string]string{ - "MODULE_NAME": "other", - "FUNCTION_NAME": "handler2", - }, + "func_yaml_name": "my-function", + "func_yaml_envs": map[string]string{}, "func_yaml_options": map[string]string{}, }, } expectations.Check(t) } -func TestDetectNameFromEnvsBeforeFuncYamlFile(t *testing.T) { +func TestDetectEnvironmentWithValidFile(t *testing.T) { d := getDetector() appDir, cleanup := SetupTestDirectory( - WithFuncName("not-the-best-name"), + WithFuncName("my-function"), WithFuncEnvs(map[string]string{ - "MODULE_NAME": "other", - "FUNCTION_NAME": "goodName", + "--spring.config.name": "my-project", }), ) defer cleanup() plan, err := d.Detect(getContext( withApplicationPath(appDir), - withModuleName("other"), - withFunctionName("goodName"), )) expectations := DetectExpectations{ Result: result{plan, err}, Pass: true, Metadata: map[string]interface{}{ - "func_yaml_function_name": "goodName", + "func_yaml_name": "my-function", "func_yaml_envs": map[string]string{ - "MODULE_NAME": "other", - "FUNCTION_NAME": "goodName", + "--spring.config.name": "my-project", }, "func_yaml_options": map[string]string{}, }, @@ -134,18 +99,6 @@ func withApplicationPath(path string) func(*libcnb.DetectContext) { } } -func withModuleName(value string) func(*libcnb.DetectContext) { - return func(dc *libcnb.DetectContext) { - dc.Platform.Environment["MODULE_NAME"] = value - } -} - -func withFunctionName(value string) func(*libcnb.DetectContext) { - return func(dc *libcnb.DetectContext) { - dc.Platform.Environment["FUNCTION_NAME"] = value - } -} - func withEnvironmentVariable(key string, value string) func(*libcnb.DetectContext) { return func(dc *libcnb.DetectContext) { dc.Platform.Environment[key] = value From d810ca085f940d01bd3a891ed5feac3a9cb6b3b3 Mon Sep 17 00:00:00 2001 From: Rodolfo Sanchez Date: Mon, 25 Jul 2022 15:29:47 -0500 Subject: [PATCH 5/7] delete check env for function name Signed-off-by: Rodolfo Sanchez --- buildpacks/java/java/func_yaml.go | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/buildpacks/java/java/func_yaml.go b/buildpacks/java/java/func_yaml.go index 71e1e6b1..775a6659 100644 --- a/buildpacks/java/java/func_yaml.go +++ b/buildpacks/java/java/func_yaml.go @@ -35,33 +35,15 @@ func ParseFuncYaml(filedir string, logger bard.Logger) FuncYaml { options := optionsToMap(cfg.Options, logger) envs := envsToMap(cfg.Envs, logger) - name := getName(cfg.Envs, cfg.Name) + return FuncYaml{ - Name: name, + Name: cfg.Name, Options: options, Envs: envs, Exists: true, } } -func getName(envs knfn.Envs, nameFromYaml string) string { - result := nameFromYaml - - if envs == nil { - return result - } - - for _, e := range envs { - key := *e.Name - if key == "FUNCTION_NAME" { - result = *e.Value - break - } - } - - return result -} - func envsToMap(envs knfn.Envs, logger bard.Logger) map[string]string { result := map[string]string{} if envs == nil { From a4c9426a1411357e2a1f9a6bcabe87670139ecaf Mon Sep 17 00:00:00 2001 From: Rodolfo Sanchez Date: Mon, 25 Jul 2022 15:29:51 -0500 Subject: [PATCH 6/7] doc: delete function class Signed-off-by: Rodolfo Sanchez --- buildpacks/java/java/build.go | 2 +- buildpacks/java/java/function.go | 12 +++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/buildpacks/java/java/build.go b/buildpacks/java/java/build.go index 2fff24dc..0de0db36 100644 --- a/buildpacks/java/java/build.go +++ b/buildpacks/java/java/build.go @@ -53,7 +53,7 @@ func (b Build) Build(context libcnb.BuildContext) (libcnb.BuildResult, error) { functionLayer := NewFunction(context.Application.Path, WithLogger(b.Logger), - WithFunctionClass(functionClass, isFuncDefDefault, e.Metadata["func_yaml_name"].(string)), + WithFunctionClass(functionClass, isFuncDefDefault), WithDefaultFunction(defaultDef, isDefaultFuncDefault, e.Metadata["func_yaml_name"].(string)), WithFuncYamlEnvs(e.Metadata["func_yaml_envs"].(map[string]interface{})), ) diff --git a/buildpacks/java/java/function.go b/buildpacks/java/java/function.go index 6966204b..43a81003 100644 --- a/buildpacks/java/java/function.go +++ b/buildpacks/java/java/function.go @@ -104,16 +104,10 @@ func WithDefaultFunction(defaultFunctionName string, override bool, funcYamlName } } -//TODO This should not be the way that works -func WithFunctionClass(functionClass string, override bool, funcYamlName string) FunctionOpt { +func WithFunctionClass(functionClass string, override bool) FunctionOpt { return func(fun *Function, metadata map[string]string) { - fun.functionClass = funcYamlName - metadata["bp-function-class"] = funcYamlName - - if override { - fun.functionClass = functionClass - metadata["bp-function-class"] = functionClass - } + fun.functionClass = functionClass + metadata["bp-function-class"] = functionClass fun.overrideFunctionClass = override metadata["bp-function-class-override"] = strconv.FormatBool(override) From 658bdb40e35a2bb18a4de6878a0b615fb32d305d Mon Sep 17 00:00:00 2001 From: Rodolfo Sanchez Date: Mon, 25 Jul 2022 15:29:55 -0500 Subject: [PATCH 7/7] fix name of the env variable Signed-off-by: Rodolfo Sanchez --- buildpacks/java/java/function.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildpacks/java/java/function.go b/buildpacks/java/java/function.go index 43a81003..e9a1d002 100644 --- a/buildpacks/java/java/function.go +++ b/buildpacks/java/java/function.go @@ -95,8 +95,8 @@ func WithDefaultFunction(defaultFunctionName string, override bool, funcYamlName metadata["bp-default-function"] = funcYamlName if override { - fun.functionClass = defaultFunctionName - metadata["bp-function-class"] = defaultFunctionName + fun.defaultFunctionName = defaultFunctionName + metadata["bp-default-function"] = defaultFunctionName } fun.overrideDefaultFunctionName = override