Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fenix 3

Fenix 3

João Carvalho

May 08, 2014
Tweet

More Decks by João Carvalho

Other Decks in Programming

Transcript

  1. FenixEdu 3
    What changed, and why you should care
    João Carvalho
    May 2014

    View Slide

  2. What’s new in FenixEdu 3?

    View Slide

  3. Bennu 3
    Groups
    Portal
    Management/Monitoring goodies
    Bootstrap process standardisation
    Renderers 4
    Extracted Spaces, Parking and ID Cards
    Rewritten CMS
    Cleanup

    View Slide

  4. Great impact in daily
    development

    View Slide

  5. Bennu 3

    View Slide

  6. Groups

    View Slide

  7. In the beginning…

    View Slide

  8. Fenix Groups

    View Slide

  9. POJOs with logic

    View Slide

  10. View Slide

  11. Bennu 2

    View Slide

  12. Persistent Groups

    View Slide

  13. Bennu 3 Groups

    View Slide

  14. Bennu 3 Groups
    Best of both worlds
    POJO logic
    Persistent serialisation
    Feels like a Fenix Group, behaves like a Bennu Group
    POJOs on the API, persistent under the hood
    User oriented

    View Slide

  15. Portal

    View Slide

  16. View Slide

  17. Bennu Portal

    View Slide

  18. Bennu Portal
    UI Integration Framework
    Well-defined functionality model for menu rendering
    Declarative functionalities
    Access Control
    Dynamic theming support
    Both server-side and client-side injection
    Underlying frameworks need only to present the body
    Semantic URLs (Immutable)

    View Slide

  19. MenuContainer
    MenuItem
    MenuFunctionality
    1
    *
    Portal
    Configuration

    View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. Monitoring Tools

    View Slide

  26. Domain Browser

    View Slide

  27. View Slide

  28. View Slide

  29. System Info Panel

    View Slide

  30. View Slide

  31. Health checks

    View Slide

  32. View Slide

  33. View Slide

  34. Loggers

    View Slide

  35. View Slide

  36. Bootstrap

    View Slide

  37. View Slide

  38. View Slide

  39. View Slide

  40. View Slide

  41. Renderers 4

    View Slide

  42. Renderers 4
    No more web.xml servlet declarations!
    Fully compliant Portal Backend
    Removed Contexts and ContextBaseAction
    Declarative functionality detection
    Removed ContextPath injector!
    No need for tiles!
    @Forward can be configured even if tiles is not used

    View Slide

  43. Renderers 4
    Removed hacks to support Faces pages
    Checksum Rewriter Improvements
    Now only runs for Struts pages
    Now accepts empty and tags
    Removed *-mapped filters and request/response wrappers
    Improved logging across the Framework
    Removed RenderersPlugin
    EL is now enabled!

    View Slide

  44. Example

    View Slide

  45. @StrutsFunctionality(app = StudentViewApp.class, path = "time-table", titleKey = "link.my.timetable")
    @Mapping(module = "student", path = "/studentTimeTable")
    @Forwards(@Forward(name = "showTimeTable", path = “(…)/classTimeTable.jsp”))
    public class ViewStudentTimeTable extends FenixDispatchAction {
    !
    @EntryPoint
    public ActionForward prepare(ActionMapping mapping, (…)) {
    return mapping.findForward("showTimeTable");
    }
    !
    public ActionForward forwardToShowTimeTable((…)) {
    PortalLayoutInjector.skipLayoutOn(request);
    return mapping.findForward("showTimeTable");
    }
    !

    View Slide

  46. !
    @StrutsApplication(bundle = "TitlesResources", path = "student", titleKey = "private.student",
    accessGroup = “role(STUDENT)”, hint = “Student")
    @Mapping(module = "student", path = "/showStudentPortal")
    @Forwards(@Forward(name = "studentPortal", path = "/student/main_bd.jsp"))
    public class ShowStudentPortalDA extends Action {
    }
    !
    @Mapping(module = "student", path = "/registration",
    functionality = ViewStudentTimeTable.class)
    public class RegistrationDAForStudent extends RegistrationDA {
    }
    @StrutsApplication(path = "consult", titleKey = "consult", bundle = "StudentResources",
    accessGroup = “role(STUDENT)”, hint = "Student")
    public static class StudentViewApp {
    }

    View Slide

  47. Expression Language + JSTL




    .






    ${LOGGED_USER_ATTRIBUTE.person.homepage.fullPath}



    (…)

    View Slide

  48. Bennu Spring 1.0.0

    View Slide

  49. Small integration layer

    View Slide

  50. FenixEdu 3

    View Slide

  51. FenixEdu 3
    Upgrade to Bennu 3 / Renderers 4
    Tiles removal (except from public pages)
    CMS simplification
    Parking / IDCards / Spaces extraction
    Removal of many deprecated functionalities
    Improved error handling, better error messages

    View Slide

  52. JSF + Portal

    View Slide

  53. JSF + Portal
    @StrutsFunctionality(app = StudentViewApp.class, path = "calendar", titleKey = "link.title.calendar")
    @Mapping(path = "/studentCalendar", module = "student")
    public class ViewStudentCalendar extends FacesEntryPoint {
    !
    }
    /student/studentCalendar.{jsp,faces}

    View Slide

  54. Deletions
    The “Content” superclass and all related domain/controllers
    Support requests, Library Cards, Seminaries, TSD, Micro-Payments,
    Cron, FAQs, New Tests, DSpace, Pending Requests, XFire (SOAP),
    GWT, DomainBrowser
    Unified the several “application url” properties into a single one
    Manager/Operator duplication
    Most of the Research Portal
    Language (!)

    View Slide

  55. FenixEdu 3
    What changed, and why you should care
    João Carvalho
    May 2014

    View Slide