SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
OW2 UTILITIES
 The Swiss Army Knife Of OW2 Projects
           Guillaume Sauthier




OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris
                      www.ow2.org                                1
OW2 Utilities
       Because
 code
 should
 be
 written
 only
 once
             Because
 code
 should
 be
 well
 tested
                                                   Because
 code
 should
 be
 shared

OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris
                      www.ow2.org                                                                                                                                                                                                                  2
Genesis
                                              How

Mais conteúdo relacionado

Mais procurados

Code generation for alternative languages
Code generation for alternative languagesCode generation for alternative languages
Code generation for alternative languagesRafael Winterhalter
 
Java Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner WalkthroughJava Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner WalkthroughMahfuz Islam Bhuiyan
 
OWASP SD: Deserialize My Shorts: Or How I Learned To Start Worrying and Hate ...
OWASP SD: Deserialize My Shorts: Or How I Learned To Start Worrying and Hate ...OWASP SD: Deserialize My Shorts: Or How I Learned To Start Worrying and Hate ...
OWASP SD: Deserialize My Shorts: Or How I Learned To Start Worrying and Hate ...Christopher Frohoff
 
Scala For Java Programmers
Scala For Java ProgrammersScala For Java Programmers
Scala For Java ProgrammersEnno Runne
 
Invokedynamic / JSR-292
Invokedynamic / JSR-292Invokedynamic / JSR-292
Invokedynamic / JSR-292ytoshima
 
Java and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemJava and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemRafael Winterhalter
 
Getting started with Java 9 modules
Getting started with Java 9 modulesGetting started with Java 9 modules
Getting started with Java 9 modulesRafael Winterhalter
 
iPhone dev intro
iPhone dev introiPhone dev intro
iPhone dev introVonbo
 
Java7 New Features and Code Examples
Java7 New Features and Code ExamplesJava7 New Features and Code Examples
Java7 New Features and Code ExamplesNaresh Chintalcheru
 
LatJUG. Java Bytecode Fundamentals
LatJUG. Java Bytecode FundamentalsLatJUG. Java Bytecode Fundamentals
LatJUG. Java Bytecode Fundamentalsdenis Udod
 

Mais procurados (12)

Code generation for alternative languages
Code generation for alternative languagesCode generation for alternative languages
Code generation for alternative languages
 
Java Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner WalkthroughJava Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner Walkthrough
 
Garbage
GarbageGarbage
Garbage
 
OWASP SD: Deserialize My Shorts: Or How I Learned To Start Worrying and Hate ...
OWASP SD: Deserialize My Shorts: Or How I Learned To Start Worrying and Hate ...OWASP SD: Deserialize My Shorts: Or How I Learned To Start Worrying and Hate ...
OWASP SD: Deserialize My Shorts: Or How I Learned To Start Worrying and Hate ...
 
Scala For Java Programmers
Scala For Java ProgrammersScala For Java Programmers
Scala For Java Programmers
 
Java 10, Java 11 and beyond
Java 10, Java 11 and beyondJava 10, Java 11 and beyond
Java 10, Java 11 and beyond
 
Invokedynamic / JSR-292
Invokedynamic / JSR-292Invokedynamic / JSR-292
Invokedynamic / JSR-292
 
Java and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemJava and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystem
 
Getting started with Java 9 modules
Getting started with Java 9 modulesGetting started with Java 9 modules
Getting started with Java 9 modules
 
iPhone dev intro
iPhone dev introiPhone dev intro
iPhone dev intro
 
Java7 New Features and Code Examples
Java7 New Features and Code ExamplesJava7 New Features and Code Examples
Java7 New Features and Code Examples
 
LatJUG. Java Bytecode Fundamentals
LatJUG. Java Bytecode FundamentalsLatJUG. Java Bytecode Fundamentals
LatJUG. Java Bytecode Fundamentals
 

Destaque

Leverage OSGi in business application with JOnAS
Leverage OSGi in business application with JOnASLeverage OSGi in business application with JOnAS
Leverage OSGi in business application with JOnASGuillaume Sauthier
 
Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASGuillaume Sauthier
 
EclipseCon FR : Ignite talks, OSGi Resolver in action
EclipseCon FR : Ignite talks, OSGi Resolver in actionEclipseCon FR : Ignite talks, OSGi Resolver in action
EclipseCon FR : Ignite talks, OSGi Resolver in actionGuillaume Sauthier
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart ClientGuillaume Sauthier
 
#4 Applications Convergentes JavaEE/OSGi
#4 Applications Convergentes JavaEE/OSGi#4 Applications Convergentes JavaEE/OSGi
#4 Applications Convergentes JavaEE/OSGiGuillaume Sauthier
 

Destaque (9)

Leverage OSGi in business application with JOnAS
Leverage OSGi in business application with JOnASLeverage OSGi in business application with JOnAS
Leverage OSGi in business application with JOnAS
 
OUGF - OSAmI - OSGi Ubiquity
OUGF - OSAmI - OSGi UbiquityOUGF - OSAmI - OSGi Ubiquity
OUGF - OSAmI - OSGi Ubiquity
 
JO2nAS Collaboration
JO2nAS CollaborationJO2nAS Collaboration
JO2nAS Collaboration
 
Peergreen Platform Overview
Peergreen Platform OverviewPeergreen Platform Overview
Peergreen Platform Overview
 
Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnAS
 
EclipseCon FR : Ignite talks, OSGi Resolver in action
EclipseCon FR : Ignite talks, OSGi Resolver in actionEclipseCon FR : Ignite talks, OSGi Resolver in action
EclipseCon FR : Ignite talks, OSGi Resolver in action
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart Client
 
#4 Applications Convergentes JavaEE/OSGi
#4 Applications Convergentes JavaEE/OSGi#4 Applications Convergentes JavaEE/OSGi
#4 Applications Convergentes JavaEE/OSGi
 
OW2 JASMINe
OW2 JASMINeOW2 JASMINe
OW2 JASMINe
 

Semelhante a Ow2 Utilities - The Swiss Army Knife Of Ow2 Projects

Ow2 Utilities, OW2con'12, Paris
Ow2 Utilities, OW2con'12, ParisOw2 Utilities, OW2con'12, Paris
Ow2 Utilities, OW2con'12, ParisOW2
 
JavaOne 2014 - CON2013 - Code Generation in the Java Compiler: Annotation Pro...
JavaOne 2014 - CON2013 - Code Generation in the Java Compiler: Annotation Pro...JavaOne 2014 - CON2013 - Code Generation in the Java Compiler: Annotation Pro...
JavaOne 2014 - CON2013 - Code Generation in the Java Compiler: Annotation Pro...Jorge Hidalgo
 
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...Jorge Hidalgo
 
Write code that writes code! A beginner's guide to Annotation Processing - Ja...
Write code that writes code! A beginner's guide to Annotation Processing - Ja...Write code that writes code! A beginner's guide to Annotation Processing - Ja...
Write code that writes code! A beginner's guide to Annotation Processing - Ja...DroidConTLV
 
Write code that writes code!
Write code that writes code!Write code that writes code!
Write code that writes code!Jason Feinstein
 
Aspect oriented programming_with_spring
Aspect oriented programming_with_springAspect oriented programming_with_spring
Aspect oriented programming_with_springGuo Albert
 
20100730 phpstudy
20100730 phpstudy20100730 phpstudy
20100730 phpstudyYusuke Ando
 
What Makes Objective C Dynamic?
What Makes Objective C Dynamic?What Makes Objective C Dynamic?
What Makes Objective C Dynamic?Kyle Oba
 
Practical Chaos Engineering
Practical Chaos EngineeringPractical Chaos Engineering
Practical Chaos EngineeringSIGHUP
 
How to Reverse Engineer Web Applications
How to Reverse Engineer Web ApplicationsHow to Reverse Engineer Web Applications
How to Reverse Engineer Web ApplicationsJarrod Overson
 
Code transformation With Spoon
Code transformation With SpoonCode transformation With Spoon
Code transformation With SpoonGérard Paligot
 
Java Course 4: Exceptions & Collections
Java Course 4: Exceptions & CollectionsJava Course 4: Exceptions & Collections
Java Course 4: Exceptions & CollectionsAnton Keks
 
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...ICSM 2011
 
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...Coen De Roover
 

Semelhante a Ow2 Utilities - The Swiss Army Knife Of Ow2 Projects (20)

Ow2 Utilities, OW2con'12, Paris
Ow2 Utilities, OW2con'12, ParisOw2 Utilities, OW2con'12, Paris
Ow2 Utilities, OW2con'12, Paris
 
JavaOne 2014 - CON2013 - Code Generation in the Java Compiler: Annotation Pro...
JavaOne 2014 - CON2013 - Code Generation in the Java Compiler: Annotation Pro...JavaOne 2014 - CON2013 - Code Generation in the Java Compiler: Annotation Pro...
JavaOne 2014 - CON2013 - Code Generation in the Java Compiler: Annotation Pro...
 
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...
JavaOne 2017 CON3282 - Code Generation with Annotation Processors: State of t...
 
Write code that writes code! A beginner's guide to Annotation Processing - Ja...
Write code that writes code! A beginner's guide to Annotation Processing - Ja...Write code that writes code! A beginner's guide to Annotation Processing - Ja...
Write code that writes code! A beginner's guide to Annotation Processing - Ja...
 
Write code that writes code!
Write code that writes code!Write code that writes code!
Write code that writes code!
 
Annotations Processor Tools (APT)
Annotations Processor Tools (APT)Annotations Processor Tools (APT)
Annotations Processor Tools (APT)
 
Aspect oriented programming_with_spring
Aspect oriented programming_with_springAspect oriented programming_with_spring
Aspect oriented programming_with_spring
 
Scala Introduction
Scala IntroductionScala Introduction
Scala Introduction
 
20100730 phpstudy
20100730 phpstudy20100730 phpstudy
20100730 phpstudy
 
XML SAX PARSING
XML SAX PARSING XML SAX PARSING
XML SAX PARSING
 
What Makes Objective C Dynamic?
What Makes Objective C Dynamic?What Makes Objective C Dynamic?
What Makes Objective C Dynamic?
 
Practical Chaos Engineering
Practical Chaos EngineeringPractical Chaos Engineering
Practical Chaos Engineering
 
How to Reverse Engineer Web Applications
How to Reverse Engineer Web ApplicationsHow to Reverse Engineer Web Applications
How to Reverse Engineer Web Applications
 
Code transformation With Spoon
Code transformation With SpoonCode transformation With Spoon
Code transformation With Spoon
 
Java and the JVM
Java and the JVMJava and the JVM
Java and the JVM
 
55 New Features in Java 7
55 New Features in Java 755 New Features in Java 7
55 New Features in Java 7
 
Java Course 4: Exceptions & Collections
Java Course 4: Exceptions & CollectionsJava Course 4: Exceptions & Collections
Java Course 4: Exceptions & Collections
 
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
 
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
 
2 P Seminar
2 P Seminar2 P Seminar
2 P Seminar
 

Mais de Guillaume Sauthier

Mais de Guillaume Sauthier (14)

Data Privacy, reprenez le contrôle
Data Privacy, reprenez le contrôleData Privacy, reprenez le contrôle
Data Privacy, reprenez le contrôle
 
La Grande Famille OAuth 2.0
La Grande Famille OAuth 2.0La Grande Famille OAuth 2.0
La Grande Famille OAuth 2.0
 
#7 Migration
#7 Migration#7 Migration
#7 Migration
 
#6 Outils De Developpement
#6 Outils De Developpement#6 Outils De Developpement
#6 Outils De Developpement
 
#3 Nouveautes Deploiement Demarrage
#3 Nouveautes Deploiement Demarrage#3 Nouveautes Deploiement Demarrage
#3 Nouveautes Deploiement Demarrage
 
#0 Accueil
#0 Accueil#0 Accueil
#0 Accueil
 
#2 Architecture OSGi
#2 Architecture OSGi#2 Architecture OSGi
#2 Architecture OSGi
 
#11 Introduction JASMINe
#11 Introduction JASMINe#11 Introduction JASMINe
#11 Introduction JASMINe
 
#8 Tour des Consoles d'Administration
#8 Tour des Consoles d'Administration#8 Tour des Consoles d'Administration
#8 Tour des Consoles d'Administration
 
#9 Deploiement Complexe
#9 Deploiement Complexe#9 Deploiement Complexe
#9 Deploiement Complexe
 
#1 Introduction
#1 Introduction#1 Introduction
#1 Introduction
 
#12 et #13 Versioning et JaDOrT
#12 et #13 Versioning et JaDOrT#12 et #13 Versioning et JaDOrT
#12 et #13 Versioning et JaDOrT
 
OW2 Shelbie TC Presentation
OW2 Shelbie TC PresentationOW2 Shelbie TC Presentation
OW2 Shelbie TC Presentation
 
JOnAS 5.1 Application Server Profiles
JOnAS 5.1 Application Server ProfilesJOnAS 5.1 Application Server Profiles
JOnAS 5.1 Application Server Profiles
 

Último

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Último (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Ow2 Utilities - The Swiss Army Knife Of Ow2 Projects

  • 1. OW2 UTILITIES The Swiss Army Knife Of OW2 Projects Guillaume Sauthier OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 1
  • 2. OW2 Utilities Because
  • 8.  once Because
  • 11.  be
  • 13.  tested Because
  • 16.  be
  • 17.  shared OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 2
  • 18. Genesis How
  • 19.  did
  • 20.  we
  • 21.  get
  • 23.  ? OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 3
  • 24. A LITTLE BIT OF HISTORY • Was born in 2006 inside the OW2 EasyBeans project • Used in JOnAS, CAROL, CMI, EasyBeans, Shelbie, JASMINe for years • Extracted as a separate maven project in 2008 • More than 35 releases up to today ! • Proposed as top level OW2 project in 2012 • We’re here now :) OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 4
  • 25. Modules 15
  • 27.  is
  • 28.  so
  • 30.  and
  • 31.  we
  • 33.  so
  • 35.  modules OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 5
  • 37.  to
  • 38.  be
  • 39.  mentioned • I18n and Logger • Simple Java/Xml mapper (read your Xml configuration files) • Internationalized loggers, Java 5 style • Base64 • Xml parsing • Encode, decode • Obtain a DocumentParser, extract values from Elements (trimmed, • File/URL conversion Properties, default values, ...) • Classloader aware • Xml Config ObjectInputStream OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 6
  • 41.  a
  • 43.  way
  • 44.  to
  • 47.  of
  • 48.  an
  • 50.  ? • Traverse Class, Method and Field declaration • Support inheritance • Call interested AnnotationHandler(s) public class SampleAnnotationHandler extends AbstractAnnotationHandler { public boolean isSupported(Class? extends Annotation clazz) { return clazz.equals(Hello.class); } @Override IAnnotationProcessor processor = new DefaultAnnotationProcessor(); public void process(Annotation annotation, Class? clazz, Object target) processor.addAnnotationHandler(new SampleAnnotationHandler()); throws ProcessorException { processor.addAnnotationHandler(/* as many handler as you want */); System.out.printf(Type %s is annotated with @%s(%s), processor.process(/* some instance */); clazz, annotation.annotationType().getSimpleName() ((Hello) annotation).name()); } } OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 7
  • 51. Asynchronous EVENT SYSTEM Support • On steroid topic notification system // Simple asynchronous listener IEventListener listener = new IEventListener() { public void handle(IEvent event) { • Hierarchical, multi-threaded // Do your own casting here System.out.printf(Received Event %s, event); } public EventPriority getPriority() { • Dispatcher fires event on a topic return EventPriority.ASYNC_HIGH; } public boolean accept(IEvent event) { return true; } }; • Listeners receive events matching a topic pattern • Declares a priority (SYNC, ASYNC) OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 8
  • 52. // Create a Dispatcher EVENT SYSTEM Some
  • 53.  code EventDispatcher dispatcher = new EventDispatcher(); dispatcher.setNbWorkers(3); // Listen to all Event published in /result/** dispatcher.start(); eventService.registerListener(listener, /result/.*); // Topic registration eventService.registerDispatcher(/result/success, dispatcher); Dispatchers Loose Coupling Event Listeners Event Source(s) Asynchronous Consumer(s) /a/b /a /c Event Service // Dispatch an Event dispatcher.dispatch(new MyEvent(/result/.*)); OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 9
  • 54. Re-using POOL instances public static void main(String[] args) throws Exception { • Simple Pooling API PoolFactoryPooled, Long poolFactory = new PooledFactory(); JPoolPooled,Long pool = new JPoolPooled, Long(poolFactory); pool.start(); Pooled one = pool.get(); • Pool size, waiters, timeout Pooled two = pool.get(); Pooled three = pool.get(); Pooled four = pool.get(); // Will block until timeout or a release } • Thread-safe private static final class PooledFactory implements PoolFactoryPooled, Long { public Pooled create(Long clue) throws PoolException { return new Pooled(clue); } • Basic implementation public boolean isMatching(Pooled instance, Long clue) { } return instance.id == clue; public void remove(Pooled instance) { // Destroy instance } • public boolean validate(Pooled instance, PoolEntryStatistics stats) { Synchronous } return true; } • Advanced implementation @Pool(min = 1, max = 3) private static class Pooled { long id; public Pooled(Long clue) { id = clue; } • } Asynchronous, composable OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 10
  • 55. Variable SUBSTITUTION processing • Extract variables declaration from String • ‘Hello ${speaker.name} !’ DefaultSubstitutionEngine engine = new DefaultSubstitutionEngine(); ChainedResolver chain = new ChainedResolver(); chain.getResolvers().add(new SpeakerResolver()); • PropertyResolvers chain.getResolvers().add(new DateResolver());engine.setResolver(chain); engine.substitute(Hello ${speaker.name} ! -- ${date}); public class SpeakerResolver implements IPropertyResolver { public String resolve(String expression) { return speaker.name.equals(expression) ? Guillaume : null; • Provides value for expression } } public class DateResolver implements IPropertyResolver { public String resolve(String expression) { • Composable } } return date.equals(expression) ? (new Date()).toString() : null; • Support recursion (variables in variable) OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 11
  • 56. Resource ARCHIVE Abstraction • Uniform API for resource consumption • Supporting (out of the box) public interface IArchive { String getName(); URL getURL() throws ArchiveException; • Directory URL getResource(String resourceName) throws ArchiveException; IteratorURL getResources() throws ArchiveException; • Jar IteratorURL getResources(String resourceName) throws ArchiveException; IteratorString getEntries() throws ArchiveException; boolean close(); • OSGi Bundle IArchiveMetadata getMetadata(); } • Extensible OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 12
  • 57. BUNDLES, BUNDLES, BUNDLES • Around 20 common libraries wrapped as Bundles • commons-{collections, logging, modeler}, javassist, jaxb2-ri, jgroups, jsch, opencsv, weld, zookeeper, bouncycastle, ... • Correct exported packages version, verified imports • All other modules are OSGi Bundles • Versioned API, content exported OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 13
  • 60.  you
  • 61.  ? OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 14
  • 64.  to
  • 67.  are
  • 68.  the
  • 70.  ?’ http://gitorious.ow2.org/ow2-utilities ‘You
  • 72.  me,
  • 73.  let
  • 74.  me
  • 77.  documentation’ http://utilities.ow2.org ‘Wow,
  • 81.  a
  • 83.  for
  • 84.  CI’ http://bamboo.ow2.org/browse/UTIL ‘Do
  • 88.  a
  • 92.  so
  • 94.  !’ http://jira.ow2.org/browse/UTIL OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 15
  • 95. Questions OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 16
  • 96. utilities.ow2.org guillaume.sauthier@peergreen.com @sauthieg OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 17
  • 97. RESOURCES • http://www.flickr.com/photos/emagic/56206868/ OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 18