Hi All, We are hoping to do $subject.
*UUF Component:* Currently a UUF component has two configuration files, 'component.yaml' and 'config.yaml'. 'component.yaml' contains APIs entries and bindings (see mail thread [1] for more details); 'config.yaml' contains business-logic related configurations e.g. page size, display name (see sample [2]). What we are hoping to do is to combine these two files into a one, 'component.yaml' file in order to improve the developer experience. So the new 'component.yaml' file will look like following. # Classes of Microservices that implements UI specific REST APIs. # example entry: # - className: "org.wso2.carbon.uuf.sample.pets-store.PetsStoreMicroservice" # uri: "/pets/" apis: - className: "org.wso2.carbon.uuf.sample.api.HelloService" uri: "/hello-service/" # Binding fragments into zones. # Modes: # prepend - pushes the specified fragments into the beginning of the existing pushed fragments of the zone # append - pushes the specified fragments into the end of the existing pushed fragments of the zone # overwrite - removes the existing pushed fragments of the zone and replace with specified fragments # Please note that the configured order of the fragments in here, will be honored when filling the zone bindings: - zoneName: "org.wso2.carbon.uuf.sample.foundation.footer" mode: "append" fragments: - "org.wso2.carbon.uuf.sample.foundation.footer" - zoneName: "org.wso2.carbon.uuf.sample.foundation.menubar" mode: "append" fragments: - "org.wso2.carbon.uuf.sample.foundation.secured-menubar" - zoneName: "org.wso2.carbon.uuf.sample.foundation.usermenu" mode: "append" fragments: - "org.wso2.carbon.uuf.sample.simple-auth.usermenu" *# Business logic related configurations.# In Handlebars templates, these configurations can be access using {{@config}} variable.# e.g. {{@config.appName}} will output "Pets Store"# In server-side JS 'onRequest(env)' function, these configurations cab access via 'env.config' variable.# e.g. env.config['appName'] will give "Pets Store" valueconfig: # No of items should be displayed in a page. pageSize: 10 # User will be redirected to following URI after logging-out successfully. loginRedirectUri: "/pets"* *UUF App:* Currently an UUF app has two configuration files, 'component.yaml' and 'config.yaml'. 'component.yaml' is similar to the one we have in a component and it contains APIs entries and bindings. In the 'config.yaml', it has some business-logic related configurations as well as some other configurations that affects to the whole app and consumes by the UUF Core e.g. theme name, error page URLs (see sample [3]). What we want to do is to separate those app related configurations from business-logic related configurations. Introducing 'app.yaml' helps achieve this goal. It contains app related configurations only. Sample 'app.yaml' will look like following. # Default theme for this app. theme : "org.wso2.carbon.uuf.sample.theme.default" # Menus in this app. menus : - name: "main" items: - text: "Home" link: "#" icon: "fw-home" - text: "Pets" link: "" submenus: - text: "See all our amazing pets" link: "/pets" - text: "Add a new pets" link: "/pets/new" icon: "fw fw-add" - text: "Pet of the month" link: "/pets/snowball" - text: "Order new pets" link: "/pets/order" # Error pages for this app. errorPages: 404: "/foundation/error/404" default: "/foundation/error/default" # URI of the login page in this app. loginPageUri: "/simple-auth/login" # Security related configurations for this app. security: csrfPatterns: accept: [] reject: [] xssPatterns: accept: [] reject: [] responseHeaders: null An app can have a 'component.yaml' as well (since app is the root component). In that 'component.yaml' webapp developer can define APIs, bindings, and business-logic related configurations for the app. Sample 'component.yaml' of a component will look like following. # Classes of Microservices that implements UI specific REST APIs. # example entry: # - className: "org.wso2.carbon.uuf.sample.pets-store.PetsStoreMicroservice" # uri: "/pets/" apis: - className: "org.wso2.carbon.uuf.sample.api.HelloService" uri: "/hello-service/" # Binding fragments into zones. # Modes: # prepend - pushes the specified fragments into the beginning of the existing pushed fragments of the zone # append - pushes the specified fragments into the end of the existing pushed fragments of the zone # overwrite - removes the existing pushed fragments of the zone and replace with specified fragments # Please note that the configured order of the fragments in here, will be honored when filling the zone bindings: - zoneName: "org.wso2.carbon.uuf.sample.foundation.footer" mode: "append" fragments: - "org.wso2.carbon.uuf.sample.foundation.footer" - zoneName: "org.wso2.carbon.uuf.sample.foundation.menubar" mode: "append" fragments: - "org.wso2.carbon.uuf.sample.foundation.secured-menubar" - zoneName: "org.wso2.carbon.uuf.sample.foundation.usermenu" mode: "append" fragments: - "org.wso2.carbon.uuf.sample.simple-auth.usermenu" *# Business logic related configurations.# In Handlebars templates, these configurations can be access using {{@config}} variable.# e.g. {{@config.appName}} will output "Pets Store"# In server-side JS 'onRequest(env)' function, these configurations cab access via 'env.config' variable.# e.g. env.config['appName'] will give "Pets Store" valueconfig: appName: "Pet Store" # Overrrding 'pageSize' configuration from a dependency component. pageSize: 10 # Overriding 'loginRedirectUri' configuration from 'simple-auth' component. loginRedirectUri: "/pets"* So in summery, a component has a 'component.yaml' and an app has an 'app.yaml' and a 'component.yaml'. WDYT? [1] [UUF] Changing 'bindings.yaml' to 'component.yaml' in an UUF Component [2] https://github.com/wso2/carbon-uuf/blob/v1.0.0-m8/samples/components/org.wso2.carbon.uuf.sample.foundation/src/main/config.yaml [3] https://github.com/wso2/carbon-uuf/blob/v1.0.0-m8/samples/apps/org.wso2.carbon.uuf.sample.pets-store/src/main/config.yaml Thanks. -- Sajith Janaprasad Ariyarathna Software Engineer; WSO2, Inc.; http://wso2.com/ <https://wso2.com/signature>
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture