Documentation

Overview

    Package app provides abstract layer for cli/web application

    Package app provides hiboot app application interface

    Index

    Constants

    View Source
    const (
    	// ApplicationContextName is the application context instance name
    	ApplicationContextName      = "app.applicationContext"
    	ContextPathFormat           = "server.context_path_format"
    	ContextPathFormatKebab      = "kebab"
    	ContextPathFormatSnake      = "snake"
    	ContextPathFormatCamel      = "camel"
    	ContextPathFormatLowerCamel = "lower-camel"
    )
    View Source
    const (
    	// BannerDisabled is the property that allow use to enable / disable banner display on terminal
    	BannerDisabled = "app.banner.disabled"
    
    	// ProfilesInclude is the property that allow user include profiles at runtime
    	ProfilesInclude = "app.profiles.include"
    
    	// Version is the property key of app.version
    	Version = "app.version"
    )

    Variables

    View Source
    var AutoConfiguration = Register

      AutoConfiguration register auto configuration struct Deprecated: should use app.Register() instead.

      View Source
      var Component = Register

        Component register all component into container Deprecated: should use app.Register() instead.

        View Source
        var (
        
        	// ErrInvalidObjectType indicates that configuration type is invalid
        	ErrInvalidObjectType = errors.New("[app] invalid Configuration type, one of app.Configuration need to be embedded")
        )

        Functions

        func Register

        func Register(params ...interface{})

          Register register a struct instance or constructor (func), so that it will be injectable.

          func RegisterPostProcessor

          func RegisterPostProcessor(p ...interface{})

            RegisterPostProcessor register post processor

            Types

            type Application

            type Application interface {
            	Initialize() error
            	// TODO: remove it from factory as system.build can be injected directly
            	SetProperty(name string, value ...interface{}) Application
            	GetProperty(name string) (value interface{}, ok bool)
            	SetAddCommandLineProperties(enabled bool) Application
            	Run()
            }

              Application is the base application interface

              type ApplicationContext

              type ApplicationContext interface {
              	RegisterController(controller interface{}) error
              	Use(handlers ...context.Handler)
              	GetProperty(name string) (value interface{}, ok bool)
              	GetInstance(params ...interface{}) (instance interface{})
              }

                ApplicationContext is the alias interface of Application

                type BaseApplication

                type BaseApplication struct {
                	WorkDir string
                	// contains filtered or unexported fields
                }

                  BaseApplication is the base application

                  func (*BaseApplication) AfterInitialization

                  func (a *BaseApplication) AfterInitialization(configs ...cmap.ConcurrentMap)

                    AfterInitialization post initialization

                    func (*BaseApplication) Build

                    func (a *BaseApplication) Build()

                      Initialize init application

                      func (*BaseApplication) BuildConfigurations

                      func (a *BaseApplication) BuildConfigurations() (err error)

                        BuildConfigurations get BuildConfigurations

                        func (*BaseApplication) ConfigurableFactory

                        func (a *BaseApplication) ConfigurableFactory() factory.ConfigurableFactory

                          ConfigurableFactory get ConfigurableFactory

                          func (*BaseApplication) GetInstance

                          func (a *BaseApplication) GetInstance(params ...interface{}) (instance interface{})

                            GetInstance get application instance by name

                            func (*BaseApplication) GetProperty

                            func (a *BaseApplication) GetProperty(name string) (value interface{}, ok bool)

                              GetProperty get application property

                              func (*BaseApplication) Initialize

                              func (a *BaseApplication) Initialize() (err error)

                                Initialize init application

                                func (*BaseApplication) PrintStartupMessages

                                func (a *BaseApplication) PrintStartupMessages()

                                  PrintStartupMessages prints startup messages

                                  func (*BaseApplication) RegisterController

                                  func (a *BaseApplication) RegisterController(controller interface{}) error

                                    RegisterController register controller by interface

                                    func (*BaseApplication) Run

                                    func (a *BaseApplication) Run()

                                      Run run the application

                                      func (*BaseApplication) SetAddCommandLineProperties

                                      func (a *BaseApplication) SetAddCommandLineProperties(enabled bool) Application

                                        SetAddCommandLineProperties set add command line properties to be enabled or disabled

                                        func (*BaseApplication) SetProperty

                                        func (a *BaseApplication) SetProperty(name string, value ...interface{}) Application

                                          SetProperty set application property should be able to set property from source code by SetProperty, it can be override by program argument, e.g. myapp --app.profiles.active=dev

                                          func (*BaseApplication) SystemConfig

                                          func (a *BaseApplication) SystemConfig() *system.Configuration

                                            SystemConfig returns application config

                                            func (*BaseApplication) Use

                                            func (a *BaseApplication) Use(handlers ...context.Handler)

                                              Use use middleware handlers

                                              type Configuration

                                              type Configuration struct {
                                              	at.AutoConfiguration
                                              	RuntimeDeps factory.Deps
                                              }

                                                Configuration is the base configuration

                                                type PostProcessor

                                                type PostProcessor interface {
                                                	AfterInitialization()
                                                }

                                                  PostProcessor is the post processor

                                                  Directories

                                                  Path Synopsis
                                                  Package cli provides quick start framework for command line application.
                                                  Package cli provides quick start framework for command line application.
                                                  Package fake provides fake.ApplicationContext for unit testing
                                                  Package fake provides fake.ApplicationContext for unit testing
                                                  web
                                                  Package web provides quick start framework for web application.
                                                  Package web provides quick start framework for web application.
                                                  statik
                                                  Package statik contains static assets.
                                                  Package statik contains static assets.