SlideShare a Scribd company logo
1 of 37
Magnolia 5.0
     Architecture




            local louisville/Reflecting Pool at Pulitzer/Flickr
Web Browser                AdminCentral
                Web pages,                       Vaadin (GWT)                                CMIS                JCR
                Images, ..                                                                    App                App




                             HTTP                             AJAX/JSON                             REST/Atom




                                                                                     Web Services
                 Rendering Engine                    Vaadin
                                                                                       (CMIS)




                    Templates                                                               Content
                                                     UI Model
                                                                                             Model




              JCR
                                                                                  Node
                        Security           ...                  ...                                     Mixins
                                                                                  Types




2
                                    Magnolia is a registered trademark used by permission
Version 1.0
WebServices (CMIS)
• will use the CMIS API
  • Content Management Interoperability Services
  • standardized
  • fits JCR specification
• REST
  • uses Atom format
• open source implementation exists
  • Apache Chemistry (OpenCMIS)




3
                   Magnolia is a registered trademark used by permission
Version 1.0
IoC/DI (Dependency Injection)
• we gradually introduce IoC
  • for components
  • for the new UI
• we use PicoContainer
  • constructor injection




4
                    Magnolia is a registered trademark used by permission
Version 1.0
Vaadin




5
              Magnolia is a registered trademark used by permission
Version 1.0
Vaadin
• Rich widget framework
• Out-of-the-box theming
• Java developer friendly
  • Close to Swing
  • GWT based (Java -> Javascript)
  • Can integrate any GWT-components
• Rare GWT-compiles (compared to plain GWT)
• Testing with pure JUnit
• Apache License
• Well documented


6
                   Magnolia is a registered trademark used by permission
Version 1.0
UI - Architecture



7
                  Magnolia is a registered trademark used by permission
Version 1.0
Model
                      View

      MVP
          Presenter




               UI - Architecture



  7
                             Magnolia is a registered trademark used by permission
 Version 1.0
Model
                        View

      MVP
           Presenter




                UI - Architecture
           Activities



          GWT
Places
                           Editors




  7
                                     Magnolia is a registered trademark used by permission
  Version 1.0
Model
                        View

      MVP
           Presenter




                UI - Architecture
           Activities
                                                                                       guice

          GWT                                                                                IoC
                                                                                                   pico

Places
                           Editors




  7
                                     Magnolia is a registered trademark used by permission
  Version 1.0
GWT concepts as a blueprint
                  promoter of MVP                    GWT promoted to use the MVP for a
                                                     while.
                   widget oriented                   GWT applications are widget
                                                     oriented. Vaadin too.
              real web applications                  proper history support, separation
                                                     of browser dependent code
                       ready made                    the fundamental framework is
                                                     provided since GWT 2.1




8
                        Magnolia is a registered trademark used by permission
Version 1.0
T.Young/MVP/Flickr
What?
  T.Young/MVP/Flickr
Model - View - Presenter (MVP)


                                  updates the widgets                                  provides the data to
                                 and handles UI events                                the view and interacts
                                    like click events                                   with the application




                                                View                         Presenter



                the view has not
              binding to the model


                                                                 Model                EventBus




10
                                       Magnolia is a registered trademark used by permission
Version 1.0
MVP - Example
                                        TreeView                                                  TreePresenter
                               selectItem(path)                      notifies
                                                                                           onItemSelected(path)
                               expand(path)
                               refresh()




                                                                                                      TreeActivity
              Vaadin specific
                                                            updates
              implementation                                                               start()
                                                                                           onStop()



                                     TreeViewImpl




11
                                   Magnolia is a registered trademark used by permission
Version 1.0
Main Participants
•     Place - Application Navigation
•     Activitiy - The Presenter
•     View - the UI widgets
•     ViewPort - UI region
•     EventBus - Application Events




12
                         Magnolia is a registered trademark used by permission
Version 1.0
Places - Navigation
• the state representing the UI location
  • what is showed (inbox, detail view)
• used for the application navigation
  • PlaceController.goTo(place)
• mapped to activities
  • ActivityMapper.getActivity(place)
• bound to the browser history
  • by the PlaceHistoryHandler




13
                     Magnolia is a registered trademark used by permission
Version 1.0
Places - Navigation
                                                        BrowserHistory


                                   onFragmentChange(event)              setFragment(token)




                                                      PlaceHistoryHandler                             PlaceHistoryMapper

                                                 onFragmentChange(event)                         getPlace(String token): Place
                                                 onPlaceChange(event)                            getToken(Place place): String

                           goTo(place)




                   PlaceController

              goTo(place)
              getWhere(): Place
                                                       onPlaceChange(event)



                fireEvent(placeChanged)




                                         EventBus



14
                                         Magnolia is a registered trademark used by permission
Version 1.0
Activity - ActivityManager
• an activity has the presenter role in the MVP pattern
• AcivityManager
  • bound to a region in the UI (ViewPort)
  • calls start(viewPort, eventBus) to start the activity
  • calls onStop() to stop an activity
• injects the view into the the viewport
• PlaceController
  • calls mayStop() to test if an activity can be leaved
  • shows confirmation dialog if needed




15
                      Magnolia is a registered trademark used by permission
Version 1.0
Activity - ActivityManager


                  ActivityManager             getActivity(place)         ActivityMapper

              onPlaceChange(event)                                 getActivity(place): Activity



                                                                           <<create>>

                                       start(), onStop()
                                                                             Activity

                                                                   start(viewPort, eventBus)
                                                                   mayStop(): String
                                                                   onStop()



                onPlaceChange(event)                                 fires application events




                                                   EventBus




16
                         Magnolia is a registered trademark used by permission
Version 1.0
View
• interface
  • contract with the presenter
• an implementation has the Vaadin specific code
• different device -> different views (mobile, iPad)
• LTR/RTL
• UIBuilders




17
                     Magnolia is a registered trademark used by permission
Version 1.0
Places - Activities - ViewPorts
                       BrowserHistory




         Application

                                                                                  ViewPort
                  PlaceHistoryHandler                                       start, stop
                                                     ActivityManager                           Activity                    View

                         goTo(place)




                       PlaceController
                                                                                                          ViewPort


                                                                                   ActivityManager                   Activity     View



                                                   onPlaceChange(event)
                 fireEvent(placeChanged)




                                                                 EventBus




18
                                          Magnolia is a registered trademark used by permission
Version 1.0
EventBus
• EventBus
  • application level events
  • ItemSelectedEvent, ItemDeletedEvent, ...
• UI events
  • are handled by the view itself
  • OnClickEvent, ...




19
                    Magnolia is a registered trademark used by permission
Version 1.0
Shell
•     encapsulates the browser
•     notify()
•     confirm(message)
•     URI fragment manipulations
     • getURIFragment()
     • setURIFragment()




20
                         Magnolia is a registered trademark used by permission
Version 1.0
Sub MVP Container
• an Activity can be a MVP container on its own
• creates a SubShell to interact with sub-fragments of the URI
      fragment
• creates its own place management (PlaceController, PlaceHandler)
• has its own inner EventBus
• subclasses can access the outer environment




21
                     Magnolia is a registered trademark used by permission
Version 1.0
UI Model
     • POJOs (Definitions)
                                                                                                      UI Builder


        • dialogs, trees, actions
        • Vaadin independent                                                                       UI Model


     • contributed in various ways                                                       Actions                   Trees



                                                                       Module                           Dialogs



        • configuration                                                                                                                  Code




        • annotations                                                       Node Types

                                                                                            Configuration (c2b)            Annotations



        • programmatically
     • UI Builder builds the Vaadin
              components




22
                           Magnolia is a registered trademark used by permission
Version 1.0
UI Builder




                                                         UI Model

                                            Actions                                Trees



              Module                                           Dialogs



                                                                                                         Code


                   Node Types

                                                Configuration (c2b)                        Annotations




23
                                Magnolia is a registered trademark used by permission
Version 1.0
UI Definitions and Builders

                                                                                                       ActionFactory
                              Activity                                  uses
                                                                                               createAction(ActionDefinition<A>): A



                                uses
                                                                                            uses
                                                                                                                    <<creates>>

                               UIModel
                                                                         ActionDefinition<A>                                      Action
              getActionDefinition(name): ActionDefintion

                                                                                                                     perform()




                                                       Potentially built with
                                                                                   could we generate them?
                                                         content2bean




24
                                                   Magnolia is a registered trademark used by permission
Version 1.0
Editors - Drivers
• Editor
     • exposed by the View (HasEditors)
     • to populate the View with data
     • to retrieve the values entered by the user
• Driver
  • injects the values into the editors
  • updates the underlaying model (node, bean)
  • validates the data
• Used in various editable views
  • DialogView, TreeView, ParagraphEditView, ...


25
                    Magnolia is a registered trademark used by permission
Version 1.0
Used by the driver to
                expose values and
              retrieve the new values

                                                                                                                                    Any view exposing
                                                                                                                                    editors. TreeView,
                                            Editor<T>                                        HasEditors                                DialogView,
                                                                                                                                    ParagraphView, ...
                                    setValue(T)                               getEditors()
                                    getValue(): T                             getEditor(name): Editor




                                                                                                              builds            DialogBuilder
                                                                                         DialogView
                                            Driver<T>                                                                    build(definition): DialogView
     Populates the editors.
     Updates and validates
       the edited object.           Driver(HasEditors)
                                    edit(T)
                                    flush(T)                                                                                        uses
                                    hasErrors()
                                    getErrors()
                                                                                        DialogActivity

                                                                                  save()
                                                                                  cancel()                                    DialogDefintion



                                                                                saves                      The presenter, called
                                                                                                          by the view. Delegates
                                                             updates,                                       to the Driver but is
                                                             validates                                    responsible for saving.
                                           NodeDriver                          Node




26
                                              Magnolia is a registered trademark used by permission
Version 1.0
Actions vs. Commands
              UI Model                                                       Content Model




                         invoke

                                           Action                  execute           Command


                             open



                                                navigate                              execute
                                  notify



                                                 PlaceController                    Web Services




27
                         Magnolia is a registered trademark used by permission
Version 1.0
Commands
• atom operation
  • delete item
  • save changes
  • activate content
• undo/redo
• also exposed by the web services




28
                    Magnolia is a registered trademark used by permission
Version 1.0
Content Model
• centralized node type definitions
  • constraints (used in the UI, web                                                                                     Web Services

              services, ..)
                                                                                            Vaadin
                                                                                                                           (CMIS)




     • entities (paragraphs belong to                                                                Content Model
              pages, ..)                                                              Constraints                             Commands




     • versioning                                                                                    Lifecycle
                                                                                                                   Virtual
                                                                                                                 Structures




• use mixins
  • mix:metaData instead of sub node
                                                                                             JCR
                                                                                                       Node
                                                                                                                    Mixins
                                                                                                       Types




  • faster and simpler queries
• lifecycle, workflow, status
• virtual structures


29
                              Magnolia is a registered trademark used by permission
Version 1.0
Web Services
                    Vaadin
                                                              (CMIS)




                             Content Model

              Constraints                                      Commands



                                                    Virtual
                              Lifecycle
                                                  Structures




                     JCR
                                Node
                                                      Mixins
                                Types




30
               Magnolia is a registered trademark used by permission
Version 1.0
Content API/JCR API
• move content security to the JCR
      layer                                                                   New                Legacy
                                                                              Code                Code

• new code uses the JCR API
• profit from other JCR frameworks
      and libraries                                                                            Content API


     • example Vaadin JCR Container
                                                                                                             Security




• keep the Content API alive for legacy                                              JCR API                 Security



      code
• better performance, esp. for queries




31
                      Magnolia is a registered trademark used by permission
Version 1.0
References ...
•     MVP
     •        Model View Presenter (MVP) VS Model View Controller (.Net)
     •        GUI Architectures (Martin Fowler)
•     GWT Activity and Places
     •        GWT 2.1 Activities - tbroyer's posterous
     •        GWT 2.1 Places - tbroyer's posterous
     •        GWT 2.1 Places – Part II - tbroyer's posterous
     •        GWT MVP Development with Activities and Places (GWT Documentation)
•     GWT Editors
     •        GWT 2.1 Editors - tbroyer's posterous
     •        Developer's Guide - Editors - (GWT Documentation)




32
                                   Magnolia is a registered trademark used by permission
Version 1.0
References
•     Commands
     •        Command pattern (Wikipedia)
     •        Undo (Wikipedia)
     •        Memento pattern (Wikipedia)




33
                                 Magnolia is a registered trademark used by permission
Version 1.0

More Related Content

What's hot

AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬Amazon Web Services Korea
 
Spring Boot Observability
Spring Boot ObservabilitySpring Boot Observability
Spring Boot ObservabilityVMware Tanzu
 
ELK, a real case study
ELK,  a real case studyELK,  a real case study
ELK, a real case studyPaolo Tonin
 
Introduction to rest.li
Introduction to rest.liIntroduction to rest.li
Introduction to rest.liJoe Betz
 
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudAmazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudNoritaka Sekiyama
 
Security and Data Governance using Apache Ranger and Apache Atlas
Security and Data Governance using Apache Ranger and Apache AtlasSecurity and Data Governance using Apache Ranger and Apache Atlas
Security and Data Governance using Apache Ranger and Apache AtlasDataWorks Summit/Hadoop Summit
 
Introduction to Amazon Relational Database Service
Introduction to Amazon Relational Database ServiceIntroduction to Amazon Relational Database Service
Introduction to Amazon Relational Database ServiceAmazon Web Services
 
Microservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesMicroservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesAraf Karsh Hamid
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017Amazon Web Services Korea
 
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교Amazon Web Services Korea
 
Introducing Swagger
Introducing SwaggerIntroducing Swagger
Introducing SwaggerTony Tam
 
Getting Started with Serverless Architectures with Microservices_AWSPSSummit_...
Getting Started with Serverless Architectures with Microservices_AWSPSSummit_...Getting Started with Serverless Architectures with Microservices_AWSPSSummit_...
Getting Started with Serverless Architectures with Microservices_AWSPSSummit_...Amazon Web Services
 
Monitoring via Datadog
Monitoring via DatadogMonitoring via Datadog
Monitoring via DatadogKnoldus Inc.
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesAmazon Web Services
 
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red Hat
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red HatSpeed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red Hat
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red HatHostedbyConfluent
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaAraf Karsh Hamid
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
AWS Connectivity, VPC Design and Security Pro Tips
AWS Connectivity, VPC Design and Security Pro TipsAWS Connectivity, VPC Design and Security Pro Tips
AWS Connectivity, VPC Design and Security Pro TipsShiva Narayanaswamy
 
AWS初心者向けWebinar AWS上でのDDoS対策
AWS初心者向けWebinar AWS上でのDDoS対策AWS初心者向けWebinar AWS上でのDDoS対策
AWS初心者向けWebinar AWS上でのDDoS対策Amazon Web Services Japan
 

What's hot (20)

AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
 
Spring Boot Observability
Spring Boot ObservabilitySpring Boot Observability
Spring Boot Observability
 
ELK, a real case study
ELK,  a real case studyELK,  a real case study
ELK, a real case study
 
Introduction to rest.li
Introduction to rest.liIntroduction to rest.li
Introduction to rest.li
 
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudAmazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
 
Security and Data Governance using Apache Ranger and Apache Atlas
Security and Data Governance using Apache Ranger and Apache AtlasSecurity and Data Governance using Apache Ranger and Apache Atlas
Security and Data Governance using Apache Ranger and Apache Atlas
 
Introduction to Amazon Relational Database Service
Introduction to Amazon Relational Database ServiceIntroduction to Amazon Relational Database Service
Introduction to Amazon Relational Database Service
 
Microservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesMicroservices Architecture & Testing Strategies
Microservices Architecture & Testing Strategies
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
 
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
 
Introducing Swagger
Introducing SwaggerIntroducing Swagger
Introducing Swagger
 
Getting Started with Serverless Architectures with Microservices_AWSPSSummit_...
Getting Started with Serverless Architectures with Microservices_AWSPSSummit_...Getting Started with Serverless Architectures with Microservices_AWSPSSummit_...
Getting Started with Serverless Architectures with Microservices_AWSPSSummit_...
 
Serverless computing
Serverless computingServerless computing
Serverless computing
 
Monitoring via Datadog
Monitoring via DatadogMonitoring via Datadog
Monitoring via Datadog
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red Hat
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red HatSpeed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red Hat
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red Hat
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
AWS Connectivity, VPC Design and Security Pro Tips
AWS Connectivity, VPC Design and Security Pro TipsAWS Connectivity, VPC Design and Security Pro Tips
AWS Connectivity, VPC Design and Security Pro Tips
 
AWS初心者向けWebinar AWS上でのDDoS対策
AWS初心者向けWebinar AWS上でのDDoS対策AWS初心者向けWebinar AWS上でのDDoS対策
AWS初心者向けWebinar AWS上でのDDoS対策
 

Viewers also liked

Using Magnolia in a Microservices Architecture
Using Magnolia in a Microservices ArchitectureUsing Magnolia in a Microservices Architecture
Using Magnolia in a Microservices ArchitectureMagnolia
 
Spring and Web Content Management
Spring and Web Content ManagementSpring and Web Content Management
Spring and Web Content ManagementZak Greant
 
Magnolia CMS 5.0 - Overview
Magnolia CMS 5.0 - OverviewMagnolia CMS 5.0 - Overview
Magnolia CMS 5.0 - OverviewPhilipp Bärfuss
 
Flexible search in Apache Jackrabbit Oak
Flexible search in Apache Jackrabbit OakFlexible search in Apache Jackrabbit Oak
Flexible search in Apache Jackrabbit OakTommaso Teofili
 
Data replication in Sling
Data replication in SlingData replication in Sling
Data replication in SlingTommaso Teofili
 
Spring first in Magnolia CMS - Spring I/O 2015
Spring first in Magnolia CMS - Spring I/O 2015Spring first in Magnolia CMS - Spring I/O 2015
Spring first in Magnolia CMS - Spring I/O 2015Tobias Mattsson
 
RESTful Web Applications with Apache Sling
RESTful Web Applications with Apache SlingRESTful Web Applications with Apache Sling
RESTful Web Applications with Apache SlingBertrand Delacretaz
 
Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011Jukka Zitting
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache JackrabbitJukka Zitting
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Jukka Zitting
 

Viewers also liked (11)

Using Magnolia in a Microservices Architecture
Using Magnolia in a Microservices ArchitectureUsing Magnolia in a Microservices Architecture
Using Magnolia in a Microservices Architecture
 
Spring and Web Content Management
Spring and Web Content ManagementSpring and Web Content Management
Spring and Web Content Management
 
Magnolia CMS 5.0 - Overview
Magnolia CMS 5.0 - OverviewMagnolia CMS 5.0 - Overview
Magnolia CMS 5.0 - Overview
 
Flexible search in Apache Jackrabbit Oak
Flexible search in Apache Jackrabbit OakFlexible search in Apache Jackrabbit Oak
Flexible search in Apache Jackrabbit Oak
 
Data replication in Sling
Data replication in SlingData replication in Sling
Data replication in Sling
 
Spring first in Magnolia CMS - Spring I/O 2015
Spring first in Magnolia CMS - Spring I/O 2015Spring first in Magnolia CMS - Spring I/O 2015
Spring first in Magnolia CMS - Spring I/O 2015
 
Apache Jackrabbit
Apache JackrabbitApache Jackrabbit
Apache Jackrabbit
 
RESTful Web Applications with Apache Sling
RESTful Web Applications with Apache SlingRESTful Web Applications with Apache Sling
RESTful Web Applications with Apache Sling
 
Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache Jackrabbit
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3
 

Similar to Magnolia CMS 5.0 - Architecture

Abap web dynpro
Abap   web dynproAbap   web dynpro
Abap web dynpromanojdhir
 
Abap web dynpro
Abap   web dynproAbap   web dynpro
Abap web dynpromanojdhir
 
Webinar The App Lifecycle Platform
Webinar The App Lifecycle PlatformWebinar The App Lifecycle Platform
Webinar The App Lifecycle PlatformService2Media
 
Java one brazil_keynote_dochez
Java one brazil_keynote_dochezJava one brazil_keynote_dochez
Java one brazil_keynote_dochezJerome Dochez
 
SPEC INDIA Java Case Study
SPEC INDIA Java Case StudySPEC INDIA Java Case Study
SPEC INDIA Java Case StudySPEC INDIA
 
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
The Java EE 7 Platform: Developing for the Cloud  (FISL 12)The Java EE 7 Platform: Developing for the Cloud  (FISL 12)
The Java EE 7 Platform: Developing for the Cloud (FISL 12)Arun Gupta
 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudArun Gupta
 
N(i)2 technical architecture 2.0 (v1 1)
N(i)2 technical architecture 2.0 (v1 1)N(i)2 technical architecture 2.0 (v1 1)
N(i)2 technical architecture 2.0 (v1 1)kvz
 
Framework Engineering
Framework EngineeringFramework Engineering
Framework EngineeringYoungSu Son
 
Leadership Symposium on Digital Media in Healthcare
Leadership Symposium on Digital Media in HealthcareLeadership Symposium on Digital Media in Healthcare
Leadership Symposium on Digital Media in Healthcaresetstanford
 
Pure Ejb Within An Agile Context
Pure Ejb Within An Agile ContextPure Ejb Within An Agile Context
Pure Ejb Within An Agile ContextNoam Bunder
 
Summer training java
Summer training javaSummer training java
Summer training javaArshit Rai
 
ITECH Kenya presentation on OpenMRS Developers Forum
ITECH Kenya presentation on OpenMRS Developers ForumITECH Kenya presentation on OpenMRS Developers Forum
ITECH Kenya presentation on OpenMRS Developers Forumdjazayeri
 
Accessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile DeviceAccessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile DeviceSAP Portal
 
UI innovation with SAP NetWeaver Gateway
UI innovation with SAP NetWeaver GatewayUI innovation with SAP NetWeaver Gateway
UI innovation with SAP NetWeaver GatewayJohn Moy
 
Summer training java
Summer training javaSummer training java
Summer training javaArshit Rai
 
Junos Space SDK - Imagination, Ideas, Innovation
Junos Space SDK - Imagination, Ideas, InnovationJunos Space SDK - Imagination, Ideas, Innovation
Junos Space SDK - Imagination, Ideas, InnovationJuniper Networks
 
DashMash: a Mashup Environment for End User Development
DashMash: a Mashup Environment for End User DevelopmentDashMash: a Mashup Environment for End User Development
DashMash: a Mashup Environment for End User DevelopmentMatteo Picozzi
 
Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3
Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3
Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3SAP Portal
 

Similar to Magnolia CMS 5.0 - Architecture (20)

Abap web dynpro
Abap   web dynproAbap   web dynpro
Abap web dynpro
 
Abap web dynpro
Abap   web dynproAbap   web dynpro
Abap web dynpro
 
Sotona
SotonaSotona
Sotona
 
Webinar The App Lifecycle Platform
Webinar The App Lifecycle PlatformWebinar The App Lifecycle Platform
Webinar The App Lifecycle Platform
 
Java one brazil_keynote_dochez
Java one brazil_keynote_dochezJava one brazil_keynote_dochez
Java one brazil_keynote_dochez
 
SPEC INDIA Java Case Study
SPEC INDIA Java Case StudySPEC INDIA Java Case Study
SPEC INDIA Java Case Study
 
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
The Java EE 7 Platform: Developing for the Cloud  (FISL 12)The Java EE 7 Platform: Developing for the Cloud  (FISL 12)
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
 
N(i)2 technical architecture 2.0 (v1 1)
N(i)2 technical architecture 2.0 (v1 1)N(i)2 technical architecture 2.0 (v1 1)
N(i)2 technical architecture 2.0 (v1 1)
 
Framework Engineering
Framework EngineeringFramework Engineering
Framework Engineering
 
Leadership Symposium on Digital Media in Healthcare
Leadership Symposium on Digital Media in HealthcareLeadership Symposium on Digital Media in Healthcare
Leadership Symposium on Digital Media in Healthcare
 
Pure Ejb Within An Agile Context
Pure Ejb Within An Agile ContextPure Ejb Within An Agile Context
Pure Ejb Within An Agile Context
 
Summer training java
Summer training javaSummer training java
Summer training java
 
ITECH Kenya presentation on OpenMRS Developers Forum
ITECH Kenya presentation on OpenMRS Developers ForumITECH Kenya presentation on OpenMRS Developers Forum
ITECH Kenya presentation on OpenMRS Developers Forum
 
Accessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile DeviceAccessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile Device
 
UI innovation with SAP NetWeaver Gateway
UI innovation with SAP NetWeaver GatewayUI innovation with SAP NetWeaver Gateway
UI innovation with SAP NetWeaver Gateway
 
Summer training java
Summer training javaSummer training java
Summer training java
 
Junos Space SDK - Imagination, Ideas, Innovation
Junos Space SDK - Imagination, Ideas, InnovationJunos Space SDK - Imagination, Ideas, Innovation
Junos Space SDK - Imagination, Ideas, Innovation
 
DashMash: a Mashup Environment for End User Development
DashMash: a Mashup Environment for End User DevelopmentDashMash: a Mashup Environment for End User Development
DashMash: a Mashup Environment for End User Development
 
Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3
Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3
Best Practices for Upgrading Your Portal to SAP NetWeaver 7.3
 

More from Philipp Bärfuss

NoCMS - from monolithic CMS to dissolved CMS
NoCMS - from monolithic CMS to dissolved CMSNoCMS - from monolithic CMS to dissolved CMS
NoCMS - from monolithic CMS to dissolved CMSPhilipp Bärfuss
 
Magnolia Personalization Keynote Amplify 2014
Magnolia Personalization Keynote Amplify 2014Magnolia Personalization Keynote Amplify 2014
Magnolia Personalization Keynote Amplify 2014Philipp Bärfuss
 
Magnolia 5 - Under the Hood
Magnolia 5 - Under the HoodMagnolia 5 - Under the Hood
Magnolia 5 - Under the HoodPhilipp Bärfuss
 
Magnolia CMS 5.0 - UI Architecture
Magnolia CMS 5.0 - UI ArchitectureMagnolia CMS 5.0 - UI Architecture
Magnolia CMS 5.0 - UI ArchitecturePhilipp Bärfuss
 
Magnolia CMS 5.0 - JCR 2.0 and Content API
Magnolia CMS 5.0 - JCR 2.0 and Content APIMagnolia CMS 5.0 - JCR 2.0 and Content API
Magnolia CMS 5.0 - JCR 2.0 and Content APIPhilipp Bärfuss
 
Magnolia CMS Roadmap - Beyond 5.0
Magnolia CMS Roadmap - Beyond 5.0Magnolia CMS Roadmap - Beyond 5.0
Magnolia CMS Roadmap - Beyond 5.0Philipp Bärfuss
 
Magnolia CMS 5.0 - Three perspectives
Magnolia CMS 5.0   - Three perspectivesMagnolia CMS 5.0   - Three perspectives
Magnolia CMS 5.0 - Three perspectivesPhilipp Bärfuss
 

More from Philipp Bärfuss (8)

NoCMS - from monolithic CMS to dissolved CMS
NoCMS - from monolithic CMS to dissolved CMSNoCMS - from monolithic CMS to dissolved CMS
NoCMS - from monolithic CMS to dissolved CMS
 
Magnolia Personalization Keynote Amplify 2014
Magnolia Personalization Keynote Amplify 2014Magnolia Personalization Keynote Amplify 2014
Magnolia Personalization Keynote Amplify 2014
 
Magnolia 5 - Under the Hood
Magnolia 5 - Under the HoodMagnolia 5 - Under the Hood
Magnolia 5 - Under the Hood
 
Magnolia CMS 5.0 - UI Architecture
Magnolia CMS 5.0 - UI ArchitectureMagnolia CMS 5.0 - UI Architecture
Magnolia CMS 5.0 - UI Architecture
 
Magnolia CMS 5.0 - JCR 2.0 and Content API
Magnolia CMS 5.0 - JCR 2.0 and Content APIMagnolia CMS 5.0 - JCR 2.0 and Content API
Magnolia CMS 5.0 - JCR 2.0 and Content API
 
Magnolia CMS Roadmap - Beyond 5.0
Magnolia CMS Roadmap - Beyond 5.0Magnolia CMS Roadmap - Beyond 5.0
Magnolia CMS Roadmap - Beyond 5.0
 
Magnolia CMS 5.0 - Three perspectives
Magnolia CMS 5.0   - Three perspectivesMagnolia CMS 5.0   - Three perspectives
Magnolia CMS 5.0 - Three perspectives
 
Magnolia 5.0 'GenUIne'
Magnolia 5.0 'GenUIne'Magnolia 5.0 'GenUIne'
Magnolia 5.0 'GenUIne'
 

Recently uploaded

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 

Recently uploaded (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 

Magnolia CMS 5.0 - Architecture

  • 1. Magnolia 5.0 Architecture local louisville/Reflecting Pool at Pulitzer/Flickr
  • 2. Web Browser AdminCentral Web pages, Vaadin (GWT) CMIS JCR Images, .. App App HTTP AJAX/JSON REST/Atom Web Services Rendering Engine Vaadin (CMIS) Templates Content UI Model Model JCR Node Security ... ... Mixins Types 2 Magnolia is a registered trademark used by permission Version 1.0
  • 3. WebServices (CMIS) • will use the CMIS API • Content Management Interoperability Services • standardized • fits JCR specification • REST • uses Atom format • open source implementation exists • Apache Chemistry (OpenCMIS) 3 Magnolia is a registered trademark used by permission Version 1.0
  • 4. IoC/DI (Dependency Injection) • we gradually introduce IoC • for components • for the new UI • we use PicoContainer • constructor injection 4 Magnolia is a registered trademark used by permission Version 1.0
  • 5. Vaadin 5 Magnolia is a registered trademark used by permission Version 1.0
  • 6. Vaadin • Rich widget framework • Out-of-the-box theming • Java developer friendly • Close to Swing • GWT based (Java -> Javascript) • Can integrate any GWT-components • Rare GWT-compiles (compared to plain GWT) • Testing with pure JUnit • Apache License • Well documented 6 Magnolia is a registered trademark used by permission Version 1.0
  • 7. UI - Architecture 7 Magnolia is a registered trademark used by permission Version 1.0
  • 8. Model View MVP Presenter UI - Architecture 7 Magnolia is a registered trademark used by permission Version 1.0
  • 9. Model View MVP Presenter UI - Architecture Activities GWT Places Editors 7 Magnolia is a registered trademark used by permission Version 1.0
  • 10. Model View MVP Presenter UI - Architecture Activities guice GWT IoC pico Places Editors 7 Magnolia is a registered trademark used by permission Version 1.0
  • 11. GWT concepts as a blueprint promoter of MVP GWT promoted to use the MVP for a while. widget oriented GWT applications are widget oriented. Vaadin too. real web applications proper history support, separation of browser dependent code ready made the fundamental framework is provided since GWT 2.1 8 Magnolia is a registered trademark used by permission Version 1.0
  • 14. Model - View - Presenter (MVP) updates the widgets provides the data to and handles UI events the view and interacts like click events with the application View Presenter the view has not binding to the model Model EventBus 10 Magnolia is a registered trademark used by permission Version 1.0
  • 15. MVP - Example TreeView TreePresenter selectItem(path) notifies onItemSelected(path) expand(path) refresh() TreeActivity Vaadin specific updates implementation start() onStop() TreeViewImpl 11 Magnolia is a registered trademark used by permission Version 1.0
  • 16. Main Participants • Place - Application Navigation • Activitiy - The Presenter • View - the UI widgets • ViewPort - UI region • EventBus - Application Events 12 Magnolia is a registered trademark used by permission Version 1.0
  • 17. Places - Navigation • the state representing the UI location • what is showed (inbox, detail view) • used for the application navigation • PlaceController.goTo(place) • mapped to activities • ActivityMapper.getActivity(place) • bound to the browser history • by the PlaceHistoryHandler 13 Magnolia is a registered trademark used by permission Version 1.0
  • 18. Places - Navigation BrowserHistory onFragmentChange(event) setFragment(token) PlaceHistoryHandler PlaceHistoryMapper onFragmentChange(event) getPlace(String token): Place onPlaceChange(event) getToken(Place place): String goTo(place) PlaceController goTo(place) getWhere(): Place onPlaceChange(event) fireEvent(placeChanged) EventBus 14 Magnolia is a registered trademark used by permission Version 1.0
  • 19. Activity - ActivityManager • an activity has the presenter role in the MVP pattern • AcivityManager • bound to a region in the UI (ViewPort) • calls start(viewPort, eventBus) to start the activity • calls onStop() to stop an activity • injects the view into the the viewport • PlaceController • calls mayStop() to test if an activity can be leaved • shows confirmation dialog if needed 15 Magnolia is a registered trademark used by permission Version 1.0
  • 20. Activity - ActivityManager ActivityManager getActivity(place) ActivityMapper onPlaceChange(event) getActivity(place): Activity <<create>> start(), onStop() Activity start(viewPort, eventBus) mayStop(): String onStop() onPlaceChange(event) fires application events EventBus 16 Magnolia is a registered trademark used by permission Version 1.0
  • 21. View • interface • contract with the presenter • an implementation has the Vaadin specific code • different device -> different views (mobile, iPad) • LTR/RTL • UIBuilders 17 Magnolia is a registered trademark used by permission Version 1.0
  • 22. Places - Activities - ViewPorts BrowserHistory Application ViewPort PlaceHistoryHandler start, stop ActivityManager Activity View goTo(place) PlaceController ViewPort ActivityManager Activity View onPlaceChange(event) fireEvent(placeChanged) EventBus 18 Magnolia is a registered trademark used by permission Version 1.0
  • 23. EventBus • EventBus • application level events • ItemSelectedEvent, ItemDeletedEvent, ... • UI events • are handled by the view itself • OnClickEvent, ... 19 Magnolia is a registered trademark used by permission Version 1.0
  • 24. Shell • encapsulates the browser • notify() • confirm(message) • URI fragment manipulations • getURIFragment() • setURIFragment() 20 Magnolia is a registered trademark used by permission Version 1.0
  • 25. Sub MVP Container • an Activity can be a MVP container on its own • creates a SubShell to interact with sub-fragments of the URI fragment • creates its own place management (PlaceController, PlaceHandler) • has its own inner EventBus • subclasses can access the outer environment 21 Magnolia is a registered trademark used by permission Version 1.0
  • 26. UI Model • POJOs (Definitions) UI Builder • dialogs, trees, actions • Vaadin independent UI Model • contributed in various ways Actions Trees Module Dialogs • configuration Code • annotations Node Types Configuration (c2b) Annotations • programmatically • UI Builder builds the Vaadin components 22 Magnolia is a registered trademark used by permission Version 1.0
  • 27. UI Builder UI Model Actions Trees Module Dialogs Code Node Types Configuration (c2b) Annotations 23 Magnolia is a registered trademark used by permission Version 1.0
  • 28. UI Definitions and Builders ActionFactory Activity uses createAction(ActionDefinition<A>): A uses uses <<creates>> UIModel ActionDefinition<A> Action getActionDefinition(name): ActionDefintion perform() Potentially built with could we generate them? content2bean 24 Magnolia is a registered trademark used by permission Version 1.0
  • 29. Editors - Drivers • Editor • exposed by the View (HasEditors) • to populate the View with data • to retrieve the values entered by the user • Driver • injects the values into the editors • updates the underlaying model (node, bean) • validates the data • Used in various editable views • DialogView, TreeView, ParagraphEditView, ... 25 Magnolia is a registered trademark used by permission Version 1.0
  • 30. Used by the driver to expose values and retrieve the new values Any view exposing editors. TreeView, Editor<T> HasEditors DialogView, ParagraphView, ... setValue(T) getEditors() getValue(): T getEditor(name): Editor builds DialogBuilder DialogView Driver<T> build(definition): DialogView Populates the editors. Updates and validates the edited object. Driver(HasEditors) edit(T) flush(T) uses hasErrors() getErrors() DialogActivity save() cancel() DialogDefintion saves The presenter, called by the view. Delegates updates, to the Driver but is validates responsible for saving. NodeDriver Node 26 Magnolia is a registered trademark used by permission Version 1.0
  • 31. Actions vs. Commands UI Model Content Model invoke Action execute Command open navigate execute notify PlaceController Web Services 27 Magnolia is a registered trademark used by permission Version 1.0
  • 32. Commands • atom operation • delete item • save changes • activate content • undo/redo • also exposed by the web services 28 Magnolia is a registered trademark used by permission Version 1.0
  • 33. Content Model • centralized node type definitions • constraints (used in the UI, web Web Services services, ..) Vaadin (CMIS) • entities (paragraphs belong to Content Model pages, ..) Constraints Commands • versioning Lifecycle Virtual Structures • use mixins • mix:metaData instead of sub node JCR Node Mixins Types • faster and simpler queries • lifecycle, workflow, status • virtual structures 29 Magnolia is a registered trademark used by permission Version 1.0
  • 34. Web Services Vaadin (CMIS) Content Model Constraints Commands Virtual Lifecycle Structures JCR Node Mixins Types 30 Magnolia is a registered trademark used by permission Version 1.0
  • 35. Content API/JCR API • move content security to the JCR layer New Legacy Code Code • new code uses the JCR API • profit from other JCR frameworks and libraries Content API • example Vaadin JCR Container Security • keep the Content API alive for legacy JCR API Security code • better performance, esp. for queries 31 Magnolia is a registered trademark used by permission Version 1.0
  • 36. References ... • MVP • Model View Presenter (MVP) VS Model View Controller (.Net) • GUI Architectures (Martin Fowler) • GWT Activity and Places • GWT 2.1 Activities - tbroyer's posterous • GWT 2.1 Places - tbroyer's posterous • GWT 2.1 Places – Part II - tbroyer's posterous • GWT MVP Development with Activities and Places (GWT Documentation) • GWT Editors • GWT 2.1 Editors - tbroyer's posterous • Developer's Guide - Editors - (GWT Documentation) 32 Magnolia is a registered trademark used by permission Version 1.0
  • 37. References • Commands • Command pattern (Wikipedia) • Undo (Wikipedia) • Memento pattern (Wikipedia) 33 Magnolia is a registered trademark used by permission Version 1.0

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n