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

Reply via email to