1
0
mirror of https://github.com/kataras/iris.git synced 2025-12-18 10:27:06 +00:00

add a warning on mvc if someone didn't read the examples or the godocs and .Register dependencies after .Handle

a developer sent a direct question message from our facebook page: https://www.facebook.com/iris.framework/


Former-commit-id: ebd7b4bc9078d4952799b4498ce4dfb0ed4c8072
This commit is contained in:
Gerasimos (Makis) Maropoulos
2019-01-20 14:06:06 +02:00
parent d451335aa2
commit 443776c423

View File

@@ -1,10 +1,14 @@
package mvc package mvc
import ( import (
"strings"
"github.com/kataras/iris/context" "github.com/kataras/iris/context"
"github.com/kataras/iris/core/router" "github.com/kataras/iris/core/router"
"github.com/kataras/iris/hero" "github.com/kataras/iris/hero"
"github.com/kataras/iris/hero/di" "github.com/kataras/iris/hero/di"
"github.com/kataras/golog"
) )
var ( var (
@@ -37,6 +41,7 @@ var (
type Application struct { type Application struct {
Dependencies di.Values Dependencies di.Values
Router router.Party Router router.Party
Controllers []*ControllerActivator
} }
func newApp(subRouter router.Party, values di.Values) *Application { func newApp(subRouter router.Party, values di.Values) *Application {
@@ -105,7 +110,19 @@ func (app *Application) Configure(configurators ...func(*Application)) *Applicat
// //
// Example: `.Register(loggerService{prefix: "dev"}, func(ctx iris.Context) User {...})`. // Example: `.Register(loggerService{prefix: "dev"}, func(ctx iris.Context) User {...})`.
func (app *Application) Register(values ...interface{}) *Application { func (app *Application) Register(values ...interface{}) *Application {
if len(values) > 0 && app.Dependencies.Len() == 0 && len(app.Controllers) > 0 {
allControllerNamesSoFar := make([]string, len(app.Controllers))
for i := range app.Controllers {
allControllerNamesSoFar[i] = app.Controllers[i].Name()
}
golog.Warnf(`mvc.Application#Register called after mvc.Application#Handle.
The controllers[%s] may miss required dependencies.
Set the Logger's Level to "debug" to view the active dependencies per controller.`, strings.Join(allControllerNamesSoFar, ","))
}
app.Dependencies.Add(values...) app.Dependencies.Add(values...)
return app return app
} }
@@ -173,6 +190,8 @@ func (app *Application) Handle(controller interface{}) *Application {
}); okAfter { }); okAfter {
after.AfterActivation(c) after.AfterActivation(c)
} }
app.Controllers = append(app.Controllers, c)
return app return app
} }