This document outlines a presentation on Spring ROO given by Massimiliano Dessì. The agenda includes a 5 minute demo for unbelievers, discussing Roo internals, Maven support, add-on anatomy, Roo domain driven design, AspectJ intertype declarations, and the SpringSurf add-on. The presentation covers how Roo uses an interactive shell and process manager, supports Maven, how add-ons are structured with commands and operations, uses domain driven design principles with entity and web layers, aspects through intertype declarations, and demonstrates the SpringSurf add-on.
Am 3. Dezember 2009 wurde die Lucy-Hillebrand-Straße in Mainz in einem Festakt in der Aula auf dem neuen Campus der Fachhochschule Mainz eingeweiht. Aus diesem Anlass hielt der erste Vorsitzende des Werkbunds Rheinland-Pfalz, Prof. Emil Hädler, einen Festvortrag zu Ehren der Architektin Lucy Hillebrand. Geboren in Mainz, war sie in den 1920er Jahren jüngstes Mitglied des Deutschen Werkbunds.
[HES2014] HackRF A Low Cost Software Defined Radio Platform by Benjamin VernouxHackito Ergo Sum
The HackRF project is developing an open source design for a low cost Software Defined Radio (SDR) transceiver platform. SDR technology allows a single piece of equipment to implement virtually any wireless technology (Bluetooth, GSM, ZigBee, etc.), and we hope the availability of a low cost SDR platform will revolutionize wireless communication security research and development
throughout the information security community.
Official web site: http://greatscottgadgets.com/hackrf/
Official github: https://github.com/mossmann/hackrf
https://www.hackitoergosum.org
Vulnerability Exploitation in Docker Container EnvironmentsFlawCheck
According to Forrester, 53% of IT respondents say their biggest concern about containers is security. Containerization is not only prevalent in browsers (Google Chrome), desktop applications (Adobe Reader X), and mobile operating systems (Apple iOS), but is also invading the data center via Docker. Docker and other LXC-based containerization solutions provide isolation via Linux control groups (cgroups). However, containers can still be exploited and even with kernel-level isolation, critical data can be stolen. In this presentation, the FlawCheck team will exploit real-world Docker implementations and show what can be done to mitigate the risk.
Are we not lucky enough to enjoy a proper software development process in our team? We can try to improve our working environment with a setup on our local machine of a virtualized "software factory in a box" based on opensource tools (Maven/Redmine/Artifactory/Subversion/Jenkins). Following this approach We'll see how we can experiment on ourselves some integration best practices for these tools and easily introduce them into our company later.
Spring boot is a suite, pre-configured, pre-sugared set of frameworks/technologies to reduce boilerplate configuration providing you the shortest way to have a Spring web application up and running with smallest line of code/configuration out-of-the-box.
Am 3. Dezember 2009 wurde die Lucy-Hillebrand-Straße in Mainz in einem Festakt in der Aula auf dem neuen Campus der Fachhochschule Mainz eingeweiht. Aus diesem Anlass hielt der erste Vorsitzende des Werkbunds Rheinland-Pfalz, Prof. Emil Hädler, einen Festvortrag zu Ehren der Architektin Lucy Hillebrand. Geboren in Mainz, war sie in den 1920er Jahren jüngstes Mitglied des Deutschen Werkbunds.
[HES2014] HackRF A Low Cost Software Defined Radio Platform by Benjamin VernouxHackito Ergo Sum
The HackRF project is developing an open source design for a low cost Software Defined Radio (SDR) transceiver platform. SDR technology allows a single piece of equipment to implement virtually any wireless technology (Bluetooth, GSM, ZigBee, etc.), and we hope the availability of a low cost SDR platform will revolutionize wireless communication security research and development
throughout the information security community.
Official web site: http://greatscottgadgets.com/hackrf/
Official github: https://github.com/mossmann/hackrf
https://www.hackitoergosum.org
Vulnerability Exploitation in Docker Container EnvironmentsFlawCheck
According to Forrester, 53% of IT respondents say their biggest concern about containers is security. Containerization is not only prevalent in browsers (Google Chrome), desktop applications (Adobe Reader X), and mobile operating systems (Apple iOS), but is also invading the data center via Docker. Docker and other LXC-based containerization solutions provide isolation via Linux control groups (cgroups). However, containers can still be exploited and even with kernel-level isolation, critical data can be stolen. In this presentation, the FlawCheck team will exploit real-world Docker implementations and show what can be done to mitigate the risk.
Are we not lucky enough to enjoy a proper software development process in our team? We can try to improve our working environment with a setup on our local machine of a virtualized "software factory in a box" based on opensource tools (Maven/Redmine/Artifactory/Subversion/Jenkins). Following this approach We'll see how we can experiment on ourselves some integration best practices for these tools and easily introduce them into our company later.
Spring boot is a suite, pre-configured, pre-sugared set of frameworks/technologies to reduce boilerplate configuration providing you the shortest way to have a Spring web application up and running with smallest line of code/configuration out-of-the-box.
Questa presentazione è una versione aggiornata ad un anno di distanza dell'omonima presentata a Codemotion Milano. Allora descrivevo la mia esperienza di sviluppatore Java passato al frontend e il mio kit di JavaScript Power Tools per affrontare il compito al meglio: Bower per la gestione dipendenze, Grunt per le build ma sopratutto Yeoman per lo scaffolding di un progetto a partire da un modello. In questa occasione vedremo come integrare un progetto Yeoman con il codice backend durante sviluppo e deployment ed anche la creazione di un nostro modello di progetto (generator).
Il monitoraggio delle applicazioni è una parte fondamentale nel rilascio di un prodotto. Spesso però arrivati a fine progetto, il budget per finanziarlo è quasi inesistente. Grazie a prodotti Open e con un'interfaccia user-friendly come Hudson e JMeter, è possibile creare degli efficienti sistemi di monitoring in brevissimo tempo. Dopo una overview su Hudson e JMeter passeremo ad una demo utilizzando lo scheduling e le integrazioni con i plugin Jmeter, Alert Email e mobile monitoring su iPhone
Rammar eru almennar aðgerðir og aðferðir sem nota má til að búa til sértækan hugbúnað. Með römmum má endurnýta kóða sem alltaf er eins eða nánast alltaf er eins. Það sem er sérhæft eru ákveðin viðfangsefni en útfærsla á þeim notar rammann. Við skilgreinum ramma og skoðum kosti og galla.
Við skoðum einnig létta gáma eða lightweight containers sem eru forrit sem sjá um lífshlaup (live-cycle) hluta og umhverfi þeirra (context). Þá skoðum við munstrið Dependency Injection sem er mjög hentugt í römmum.
Einnig skoðum við Template Method og Strategy munstrin.
Lean Engineering. Applying Lean Principles to Building ExperiencesBill Scott
Highlights a couple of principles that we have been applying to our UI engineering teams to move us to applying Lean UX to our products.
This was a 25 minute talk from Lean Day UX in NYC on March 1, 2013.
Technical deep dive covering Spring Roo 1.0.0, which is a Java-based rapid application development framework. This presentation represents an updated version of the session I delivered at SpringOne USA in October 2009.
Razor Agile Development: Shave time off your SPRINTS using Razor for Agile De...Michael Cesino
Razor is a easy to use and very affordable Configuration Management System. Issues Management, Version Control and Release Management are fully integrated. Today Razor also runs in the Cloud, freeing you up to focus on what you do best...configuration management.
This presentation gives you an inside look at how to setup Razor for Agile Development.
Let us show you how to:
1. Setup the Scrum Master, Product Owner and Development Team roles in Razor.
2. Plan and review work before and during each SPRINT using Razor Issues.
3. Manage Product Backlogs between Product Managers and your SCRUM Team.
4. Generate your Release burn-down charts to track progress and provide visibility.
Shave time off your SPRINTS using Razor for Agile Development.
[Ultracode Munich #4] Short introduction to the new Android build system incl...BeMyApp
By Thomas Endres & Andres Würl both Senior Consultant from TNG Technology Consulting https://www.tngtech.com
Join the Ultracode Munich meetup: http://www.meetup.com/Ultracode-Munich/
"Obiettivi e progetti della comunità Eclipse Italiana". Paolo Maresca, prof di sistemi di elaborazione delle informazioni,
DIS-Università di Napoli Federico II.
Slides from my Feature Bits presentation at the 2010 Lean Software and Systems conference in Atlanta. See http://atlanta2010.leanssc.org/home/erik-sowa/ and http://www.leanssc.org/files/201004/videos/20100421_Sowa_EnabilingFlowWithinAndAcrossTeams/20100421_Sowa_EnabilingFlowWithinAndAcrossTeams.html
The presentation supported the speech by Paolo Maresca, Associate professor at the University Federico II of Naples (Italy) at Eclipse Day 2010 in Rome (5th October 2010). http://www.spagoworld.org/openevents/
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...Massimiliano Dessì
Turning Maven into a High Scalable, Resource Efficient, Cloud Ready Microservice
Embracing Microservice Architecture in a new project is something that most of developers want!
But how about the old and gold projects that are not designed and planned for it?
What about refactoring a real legacy piece of software that is stable and used by almost all Java developers out there?
Come to this talk to see how we transformed Maven builds in a Cloud Ready Microservice.
Some covered topics are:
-Live objects extracted from Maven Mojos and shared between different classloaders
-Cloud Native features, Configuration and in memory plugins
-Turn any Maven build into incremental ones
-Concurrent use of the same Maven compiler
-Turn into reusable Maven internal objects to decrease memory footprint and increase speed
-How fits in Drools and jBPM ecosystem
-Trade offs
Questa presentazione è una versione aggiornata ad un anno di distanza dell'omonima presentata a Codemotion Milano. Allora descrivevo la mia esperienza di sviluppatore Java passato al frontend e il mio kit di JavaScript Power Tools per affrontare il compito al meglio: Bower per la gestione dipendenze, Grunt per le build ma sopratutto Yeoman per lo scaffolding di un progetto a partire da un modello. In questa occasione vedremo come integrare un progetto Yeoman con il codice backend durante sviluppo e deployment ed anche la creazione di un nostro modello di progetto (generator).
Il monitoraggio delle applicazioni è una parte fondamentale nel rilascio di un prodotto. Spesso però arrivati a fine progetto, il budget per finanziarlo è quasi inesistente. Grazie a prodotti Open e con un'interfaccia user-friendly come Hudson e JMeter, è possibile creare degli efficienti sistemi di monitoring in brevissimo tempo. Dopo una overview su Hudson e JMeter passeremo ad una demo utilizzando lo scheduling e le integrazioni con i plugin Jmeter, Alert Email e mobile monitoring su iPhone
Rammar eru almennar aðgerðir og aðferðir sem nota má til að búa til sértækan hugbúnað. Með römmum má endurnýta kóða sem alltaf er eins eða nánast alltaf er eins. Það sem er sérhæft eru ákveðin viðfangsefni en útfærsla á þeim notar rammann. Við skilgreinum ramma og skoðum kosti og galla.
Við skoðum einnig létta gáma eða lightweight containers sem eru forrit sem sjá um lífshlaup (live-cycle) hluta og umhverfi þeirra (context). Þá skoðum við munstrið Dependency Injection sem er mjög hentugt í römmum.
Einnig skoðum við Template Method og Strategy munstrin.
Lean Engineering. Applying Lean Principles to Building ExperiencesBill Scott
Highlights a couple of principles that we have been applying to our UI engineering teams to move us to applying Lean UX to our products.
This was a 25 minute talk from Lean Day UX in NYC on March 1, 2013.
Technical deep dive covering Spring Roo 1.0.0, which is a Java-based rapid application development framework. This presentation represents an updated version of the session I delivered at SpringOne USA in October 2009.
Razor Agile Development: Shave time off your SPRINTS using Razor for Agile De...Michael Cesino
Razor is a easy to use and very affordable Configuration Management System. Issues Management, Version Control and Release Management are fully integrated. Today Razor also runs in the Cloud, freeing you up to focus on what you do best...configuration management.
This presentation gives you an inside look at how to setup Razor for Agile Development.
Let us show you how to:
1. Setup the Scrum Master, Product Owner and Development Team roles in Razor.
2. Plan and review work before and during each SPRINT using Razor Issues.
3. Manage Product Backlogs between Product Managers and your SCRUM Team.
4. Generate your Release burn-down charts to track progress and provide visibility.
Shave time off your SPRINTS using Razor for Agile Development.
[Ultracode Munich #4] Short introduction to the new Android build system incl...BeMyApp
By Thomas Endres & Andres Würl both Senior Consultant from TNG Technology Consulting https://www.tngtech.com
Join the Ultracode Munich meetup: http://www.meetup.com/Ultracode-Munich/
"Obiettivi e progetti della comunità Eclipse Italiana". Paolo Maresca, prof di sistemi di elaborazione delle informazioni,
DIS-Università di Napoli Federico II.
Slides from my Feature Bits presentation at the 2010 Lean Software and Systems conference in Atlanta. See http://atlanta2010.leanssc.org/home/erik-sowa/ and http://www.leanssc.org/files/201004/videos/20100421_Sowa_EnabilingFlowWithinAndAcrossTeams/20100421_Sowa_EnabilingFlowWithinAndAcrossTeams.html
The presentation supported the speech by Paolo Maresca, Associate professor at the University Federico II of Naples (Italy) at Eclipse Day 2010 in Rome (5th October 2010). http://www.spagoworld.org/openevents/
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...Massimiliano Dessì
Turning Maven into a High Scalable, Resource Efficient, Cloud Ready Microservice
Embracing Microservice Architecture in a new project is something that most of developers want!
But how about the old and gold projects that are not designed and planned for it?
What about refactoring a real legacy piece of software that is stable and used by almost all Java developers out there?
Come to this talk to see how we transformed Maven builds in a Cloud Ready Microservice.
Some covered topics are:
-Live objects extracted from Maven Mojos and shared between different classloaders
-Cloud Native features, Configuration and in memory plugins
-Turn any Maven build into incremental ones
-Concurrent use of the same Maven compiler
-Turn into reusable Maven internal objects to decrease memory footprint and increase speed
-How fits in Drools and jBPM ecosystem
-Trade offs
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Spring Roo Internals Javaday IV
1. Spring ROO
Internals and add-ons
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
2. Speaker
Software Architect / Developer
ProNetics / Sourcesense
Chairman
JugSardegna Onlus
Founder
SpringFramework Italian User Group
Committer - Contributor
OpenNMS - MongoDB - MagicBox
Author
Spring 2.5 Aspect Oriented Programming
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
3. Agenda
- Demo for unbelievers-
- Roo Internals -
- Maven Roo support -
- Add On Anatomy -
- Roo Domain Driven Design -
- AspectJ Intertype Declaration -
- SpringSurf Add-on -
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
4. 5 Minutes demo for Unbelievers
Demo for unbelievers
Roo Internals
Maven Roo support
Add On Anatomy
Roo Domain Driven Design
AspectJ Intertype Declaration
SpringSurf Add-on
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
5. Roo internals
Demo for unbelievers
Roo Internals
Maven Roo support
Add On Anatomy
Roo Domain Driven Design
AspectJ Intertype Declaration
SpringSurf Add-on
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
6. Core modules
Classpath
ProcessManager
Shell Project
File Undo File Monitor Model Metadata
Support
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
7. Roo in its essence is an interactive shell
and a ProcessManager
The Shell receives the commands
and a ProcessManager
coordinates the operations
required from the user
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
8. - The Shell has a very good usability -
(tab, context awareness, hiding, hints)
- Background monitoring of externally-made changes -
- Full interaction with Spring Tool Suite -
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
9. Shell
The Shell
parses and validates the user input
and publishes the status about current task
STARTING, STARTED, USER_INPUT, PARSING, EXECUTING,
EXECUTION_RESULT_PROCESSING,
EXECUTION_COMPLETE, SHUTTING_DOWN
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
10. ProcessManager
The Shell passes the ParseResult object
to the execute method
of the ProcessManager
(Strategy pattern)
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
11. ProcessManager
ProcessManager delivers:
- State publication model -
- Polling on filesystem resources -
- Execute CommandCallbacks for requested operations -
- "Transaction-like" context for above operations -
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
12. Commands
During the bootstrap ROO
reads all bean classes
of type CommandMarker (Tag interface)
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
13. The Shell stores the metadata information
(@CliAvailabilityIndicator) read from
all CommandMarker beans
In this way the Shell knows all available commands
and MethodTarget related to user input
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
14. The Command class (CommandMarker)
uses the related Operations class.
The Operations class
performs the real work
on Java and AspectJ classes, XML and template files.
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
15. Maven ROO support
sometimes maven is your friend :)
Demo for unbelievers
Roo Internals
Maven Roo support
Add On Anatomy
Roo Domain Driven Design
AspectJ Intertype Declaration
SpringSurf Add-on
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
16. Roo uses Maven under the hood for:
building the entire project and managing dependencies
roo> project --topLevelPackage com.proj.roo.addon
add-on development
roo> project --topLevelPackage com.proj.roo.addon --template ROO_ADDON_SIMPLE
eclipse / STS
roo> perform eclipse
packaging
roo> perform assembly
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
17. Add-On anatomy
Security add-on in the example
Demo for unbelievers
Roo Internals
Maven Roo support
Add On Anatomy
Roo Domain Driven Design
AspectJ Intertype Declaration
SpringSurf Add-on
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
18. @ScopeDevelopmentShell
public class SecurityCommands implements CommandMarker{
private SecurityOperations securityOperations;
public SecurityCommands(SecurityOperations securityOperations) {
Assert.notNull(securityOperations, "Security operations required");
this.securityOperations = securityOperations;
}
@CliAvailabilityIndicator("security setup")
public boolean isInstallSecurityAvailable() {
return securityOperations.isInstallSecurityAvailable();
}
@CliCommand(value = "security setup",
help = "Install Spring Security into your project")
public void installSecurity() {
securityOperations.installSecurity();
}
}
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
19. Security add-on
@ScopeDevelopmentShell
public class SecurityCommands implements CommandMarker
…
public SecurityCommands(SecurityOperations securityOperations) {
Assert.notNull(securityOperations, "Security operations required");
this.securityOperations = securityOperations;
}
@ScopeDevelopmentShell : Indicates a class that should be instantiated when the ROO
development Shell is used.
CommandMarker : Tag Interface, the Command class must implement this interface
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
20. Commands
@CliAvailabilityIndicator("security setup")
public boolean isInstallSecurityAvailable() {
return securityOperations.isInstallSecurityAvailable();
}
@CliAvailabilityIndicator:Annotates a method that can indicate whether a particular
command is currently available or not.
This annotation must only be applied to a public no-argument method that returns primitive boolean.
The method should be inexpensive to evaluate, as this method can be called very frequently. If
expensive operations are necessary to compute command availability, it is suggested the method
return a boolean field that is maintained using the observer pattern.
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
21. Commands
@CliCommand(value = "security setup",
help = "Install Spring Security into your project")
public void installSecurity() {
securityOperations.installSecurity();
}
...
@CliCommand
value: one or more strings which must serve as the start of a particular command in order to match
this method (these must be unique within the entire application)
help: help message for this command (the default is a blank String, which means there is no help)
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
22. Operations
@ScopeDevelopment
public class SecurityOperations
private FileManager fileManager;
private PathResolver pathResolver;
private MetadataService metadataService;
private ProjectOperations projectOperations;
....
The SecurityOperations uses the above convenient Roo API to fulfill its purpose:
- Find/write and read any resources (Java, XML, JSP, Properties, AJ) on filesystem
- Read metadata
- Handle the POM file
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
23. Recap, add-on should:
- Make a “Command” class and implement CommandMaker -
- Delegate methods through to an “Operations” object -
- Annotate methods with @CliCommand -
- Annotate method parameters with @CliOption -
- Optionally use @CliAvailabilityIndicator if desired -
- Throw any exceptions to abort and rollback changes -
- Use JDK logging or return objects for console output -
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
24. 1.0.1 Base Add-Ons
• Backup • Logging
• Bean Info • Maven
• Configurable • Pluralization
• Data On Demand • Property Editor
• Email • Property File
• Entity • Security
• Dynamic Finder • Integration Test
• Java Bean • ToString
• JMS • Web (various)
• JPA
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
25. Roo Domain Driven Design
Demo for unbelievers
Roo Internals
Maven Roo support
Add On Anatomy
Roo Domain Driven Design
AspectJ Intertype Declaration
SpringSurf Add-on
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
26. Roo uses a pragmatic design approach.
Following the Domain Driven Design principles,
Roo avoids
Anemic Objects and prefers Rich Domain Objects
that follows Object Oriented principles.
This means encapsulation, immutability and
proper role of domain objects
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
27. Do you
remember the
controller-entities
interaction
of this slide ?
Roo works in a
similar way
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
28. Roo by default uses two layers:
An entity layer (similar to domain layer)
and a web layer (REST).
Roo achieves separation of concern
of these two layers
through AspectJ ITD-based architecture.
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
29. - REST Controllers work directly with Domain entities -
- OpenEntityManagerInViewFilter -
- JPA EntityManager bound to the thread for the entire
processing of the request -
- allow for lazy loading in web views -
- original transactions already being completed -
- Service layer is optional, it can be created and used for business
logic spanning multiple entities -
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
30. AspectJ ITD
(where Roo shines)
Demo for unbelievers
Roo Internals
Maven Roo support
Add On Anatomy
Roo Domain Driven Design
AspectJ Intertype Declaration
SpringSurf Add-on
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
31. Do you
remember
the concept
of
this slide ?
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
32. The Spring Introductions in the Aspect world
are called Inter-Type Declarations (ITD) .
Roo uses AspectJ ITD
instead of Spring Introductions (proxy based).
With ITD Roo performs active generation.
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
33. The ITD enables ROO through the add-on
to write the custom logic
into <name_class>_Roo_<addOn>.aj files
related to the corresponding java class
AspectJ compiler does the rest
by linking the pieces of the puzzle :)
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
34. For example the add-ons Entity, JavaBean, ToString
generates the proper logic in corresponding .aj files.
*_Roo_Entity.aj
*_Roo_JavaBean.aj
*_Roo_ToString.aj
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
35. With AspectJ ITD
Roo can implement
an effective Object Oriented
Domain Driven Design
application
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
36. Alfresco SpringSurf add-on
Demo for unbelievers
Roo Internals
Maven Roo support
Add On Anatomy
Roo Domain Driven Design
AspectJ Intertype Declaration
SpringSurf Add-on
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
37. “Spring Surf is a view composition framework
for Spring MVC that plugs into
your existing Spring applications.
It provides
a scriptable and content-centric approach
to building web applications “
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
38. Surf is born from the alfresco community
need of a lightweight approach
to create application services
and
user interface extensions
instead of JSF or Struts
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
39. Spring Surf is an official
Spring extension by Alfresco.
(http://www.springsource.org/extensions/se-surf)
Roo enables scaffolding for
Surf pages, templates and components.
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
40. The Spring Surf Roo add-on
shows one of the many possibilities
that Roo provides with its API
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
41. Spring-Surf mini demo
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
43. • Home Project resources
• http://www.springsource.org/roo
• Contains links to all other resources
• Forum
• http://forum.springsource.org
• Issues
• http://jira.springframework.org/browse/ROO
• Twitter
• #roo hash key
• follow @schmidtstefan & @benalexau
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010
44. Thanks for the attention !
Massimiliano Dessì
desmax74 at yahoo.it
massimiliano.dessi at pronetics.it
http://twitter.com/desmax74
http://jroller.com/desmax
http://www.linkedin.com/in/desmax74
http://www.slideshare.net/desmax74
http://wiki.java.net/bin/view/People/MassimilianoDessi
http://www.jugsardegna.org/vqwiki/jsp/Wiki?MassimilianoDessi
Massimiliano Dessì - SpringFramework Italian User Group
Javaday IV – Roma – 30 gennaio 2010