Hi Sajith,

What is our recommendation on data which can be stored in the
component.yaml file? As an example, widget related information can be kept
in the component.yaml or do we need to have separate files for this?

Regards,
Chandana

On Fri, Jan 6, 2017 at 3:23 PM, SajithAR Ariyarathna <[email protected]>
wrote:

> 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
> [email protected]
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>


-- 
*Chandana Napagoda*
Associate Technical Lead
WSO2 Inc. - http://wso2.org

*Email  :  [email protected] <[email protected]>**Mobile : +94718169299*

*Blog  :    http://cnapagoda.blogspot.com <http://cnapagoda.blogspot.com> |
http://chandana.napagoda.com <http://chandana.napagoda.com>*

*Linkedin : http://www.linkedin.com/in/chandananapagoda
<http://www.linkedin.com/in/chandananapagoda>*
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to