SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
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



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


OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris
                     www.ow2.org                                 3
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
Modules


OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris
                     www.ow2.org                                 5
QUITE BASIC STUFF

•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
ANNOTATION PROCESSOR

•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
EVENT SYSTEM

•On steroid topic notification system                // Simple asynchronous listener
                                                    IEventListener listener = new IEventListener() {
                                                    	
                                                    	
                                                         	     	
                                                         public void handle(IEvent event) {
                                                    	    	     // Do your own casting here

 • Hierarchical, multi-threaded                     	
                                                    	
                                                    	
                                                         	
                                                         }
                                                         	
                                                               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
// Create a Dispatcher
                                      EVENT SYSTEM
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
POOL
                                          public static void main(String[] args) throws Exception {
                                          	    PoolFactory<Pooled, Long> poolFactory = new PooledFactory();


•Simple Pooling API
                                          	    JPool<Pooled,Long> pool = new JPool<Pooled, Long>(poolFactory);
                                          	    pool.start();
                                          	    	
                                          	    Pooled one = pool.get();
                                          	    Pooled two = pool.get();

  • Pool size, waiters, timeout           	
                                          	
                                               Pooled three = pool.get();
                                               Pooled four = pool.get(); // Will block until timeout or a release
                                          }
                                          	

  • Thread-safe                           private static final class PooledFactory implements PoolFactory<Pooled, 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 }

  • Synchronous                           	
                                          	
                                          	
                                               public boolean validate(Pooled instance, PoolEntryStatistics stats) {
                                               	
                                               }
                                                     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
SUBSTITUTION

•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
ARCHIVE

•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;

                                              Iterator<URL> getResources() throws ArchiveException;



 • Jar                                        Iterator<URL> getResources(String resourceName) throws ArchiveException;

                                              Iterator<String> getEntries() throws ArchiveException;




 • OSGi Bundle
                                              boolean close();

                                              IArchiveMetadata getMetadata();

                                          }


•Extensible
               OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris
                                    www.ow2.org                                                                     12
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
Contributions


OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris
                     www.ow2.org                                 14
ANONYMOUS QUOTES
           http://gitorious.ow2.org/ow2-utilities


                                 http://utilities.ow2.org

          http://bamboo.ow2.org/browse/UTIL


                  http://jira.ow2.org/browse/UTIL

 OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris
                      www.ow2.org                                 15
Questions
OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris
                     www.ow2.org                                 16
utilities.ow2.org
    guillaume.sauthier@peergreen.com
                @sauthieg


OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris
                     www.ow2.org                                 17
RESOURCES

•http://www.flickr.com/photos/emagic/56206868/




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

Más contenido relacionado

La actualidad más candente

Java concurrency begining
Java concurrency   beginingJava concurrency   begining
Java concurrency beginingmaksym220889
 
Java 8 - Stamped Lock
Java 8 - Stamped LockJava 8 - Stamped Lock
Java 8 - Stamped LockHaim Yadid
 
Java Concurrency Idioms
Java Concurrency IdiomsJava Concurrency Idioms
Java Concurrency IdiomsAlex Miller
 
Inside the android_application_framework
Inside the android_application_frameworkInside the android_application_framework
Inside the android_application_frameworksurendray
 
Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012Anton Arhipov
 
Writing Swift code with great testability
Writing Swift code with great testabilityWriting Swift code with great testability
Writing Swift code with great testabilityJohn Sundell
 
Ts archiving
Ts   archivingTs   archiving
Ts archivingConfiz
 
Java 5 6 Generics, Concurrency, Garbage Collection, Tuning
Java 5 6 Generics, Concurrency, Garbage Collection, TuningJava 5 6 Generics, Concurrency, Garbage Collection, Tuning
Java 5 6 Generics, Concurrency, Garbage Collection, TuningCarol McDonald
 
Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011Agora Group
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMRafael Winterhalter
 
Code generation for alternative languages
Code generation for alternative languagesCode generation for alternative languages
Code generation for alternative languagesRafael Winterhalter
 
data Structure Lecture 1
data Structure Lecture 1data Structure Lecture 1
data Structure Lecture 1Teksify
 
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
 
Testing Kafka - The Developer Perspective
Testing Kafka - The Developer PerspectiveTesting Kafka - The Developer Perspective
Testing Kafka - The Developer Perspectivemaiktoepfer
 

La actualidad más candente (20)

Java concurrency
Java concurrencyJava concurrency
Java concurrency
 
Java concurrency begining
Java concurrency   beginingJava concurrency   begining
Java concurrency begining
 
Server1
Server1Server1
Server1
 
Java 7 & 8 New Features
Java 7 & 8 New FeaturesJava 7 & 8 New Features
Java 7 & 8 New Features
 
Java 8 - Stamped Lock
Java 8 - Stamped LockJava 8 - Stamped Lock
Java 8 - Stamped Lock
 
Java Concurrency Idioms
Java Concurrency IdiomsJava Concurrency Idioms
Java Concurrency Idioms
 
Inside the android_application_framework
Inside the android_application_frameworkInside the android_application_framework
Inside the android_application_framework
 
Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012
 
Elementary Sort
Elementary SortElementary Sort
Elementary Sort
 
Writing Swift code with great testability
Writing Swift code with great testabilityWriting Swift code with great testability
Writing Swift code with great testability
 
Clojure: a LISP for the JVM
Clojure: a LISP for the JVMClojure: a LISP for the JVM
Clojure: a LISP for the JVM
 
Ts archiving
Ts   archivingTs   archiving
Ts archiving
 
Java 5 6 Generics, Concurrency, Garbage Collection, Tuning
Java 5 6 Generics, Concurrency, Garbage Collection, TuningJava 5 6 Generics, Concurrency, Garbage Collection, Tuning
Java 5 6 Generics, Concurrency, Garbage Collection, Tuning
 
Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVM
 
Code generation for alternative languages
Code generation for alternative languagesCode generation for alternative languages
Code generation for alternative languages
 
data Structure Lecture 1
data Structure Lecture 1data Structure Lecture 1
data Structure Lecture 1
 
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 ...
 
Testing Kafka - The Developer Perspective
Testing Kafka - The Developer PerspectiveTesting Kafka - The Developer Perspective
Testing Kafka - The Developer Perspective
 
NIO and NIO2
NIO and NIO2NIO and NIO2
NIO and NIO2
 

Destacado

OW2con'14 - Managing risks in OSS adoption: the RISCOSS approach
OW2con'14 - Managing risks in OSS adoption: the RISCOSS approachOW2con'14 - Managing risks in OSS adoption: the RISCOSS approach
OW2con'14 - Managing risks in OSS adoption: the RISCOSS approachOW2
 
カマコンバレー @YOKOHAMA Future Session 150421
カマコンバレー @YOKOHAMA Future Session 150421カマコンバレー @YOKOHAMA Future Session 150421
カマコンバレー @YOKOHAMA Future Session 150421Kanshin!, Inc.
 
Egypt Travel- Webinar Slide Show (June 2009)
Egypt Travel- Webinar Slide Show (June 2009)Egypt Travel- Webinar Slide Show (June 2009)
Egypt Travel- Webinar Slide Show (June 2009)Lindblad Expeditions
 
6 october 09.20_am_hejnowski_ver pl
6 october 09.20_am_hejnowski_ver pl6 october 09.20_am_hejnowski_ver pl
6 october 09.20_am_hejnowski_ver plCiszewski MSL
 
Cloud workload guidelines
Cloud workload guidelinesCloud workload guidelines
Cloud workload guidelinesJen Wei Lee
 
Project Avalon Online(Game) Final Report
Project Avalon Online(Game) Final ReportProject Avalon Online(Game) Final Report
Project Avalon Online(Game) Final ReportMatthew Chang
 
Project NGX - Proposal
Project NGX - ProposalProject NGX - Proposal
Project NGX - ProposalMatthew Chang
 
OW2con'14 - Lutece, the open source CMS & Development framework of the City o...
OW2con'14 - Lutece, the open source CMS & Development framework of the City o...OW2con'14 - Lutece, the open source CMS & Development framework of the City o...
OW2con'14 - Lutece, the open source CMS & Development framework of the City o...OW2
 
OSCAR & AppHub, fostering market readiness at OW2, OW2con'16, Paris.
OSCAR & AppHub, fostering market readiness at OW2, OW2con'16, Paris. OSCAR & AppHub, fostering market readiness at OW2, OW2con'16, Paris.
OSCAR & AppHub, fostering market readiness at OW2, OW2con'16, Paris. OW2
 
Mystery Salamanca
Mystery SalamancaMystery Salamanca
Mystery Salamancaalfcoltrane
 
the rise of Square
the rise of Squarethe rise of Square
the rise of Squarefigo GmbH
 
Monitoring File transfert (MFT) WAARP R66, OW2con'16, Paris.
Monitoring File transfert (MFT) WAARP R66, OW2con'16, Paris. Monitoring File transfert (MFT) WAARP R66, OW2con'16, Paris.
Monitoring File transfert (MFT) WAARP R66, OW2con'16, Paris. OW2
 
Renegade networks: How we can save the world, make a little cash & get to the...
Renegade networks: How we can save the world, make a little cash & get to the...Renegade networks: How we can save the world, make a little cash & get to the...
Renegade networks: How we can save the world, make a little cash & get to the...The Institute for Triple Helix Innovation
 
Venus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScienceVenus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScienceOW2
 
RGAA, REFERENTIEL D’ACCESSIBILITE MULTICANAL
RGAA, REFERENTIEL D’ACCESSIBILITE MULTICANAL RGAA, REFERENTIEL D’ACCESSIBILITE MULTICANAL
RGAA, REFERENTIEL D’ACCESSIBILITE MULTICANAL OW2
 
Social Media for Nutrition Bytes
Social Media for Nutrition BytesSocial Media for Nutrition Bytes
Social Media for Nutrition Bytestellem
 
Mantis Code Deployment Process
Mantis Code Deployment ProcessMantis Code Deployment Process
Mantis Code Deployment ProcessJen Wei Lee
 
Naturalization Webinar
Naturalization WebinarNaturalization Webinar
Naturalization Webinarguest5dabb0
 

Destacado (20)

OW2con'14 - Managing risks in OSS adoption: the RISCOSS approach
OW2con'14 - Managing risks in OSS adoption: the RISCOSS approachOW2con'14 - Managing risks in OSS adoption: the RISCOSS approach
OW2con'14 - Managing risks in OSS adoption: the RISCOSS approach
 
カマコンバレー @YOKOHAMA Future Session 150421
カマコンバレー @YOKOHAMA Future Session 150421カマコンバレー @YOKOHAMA Future Session 150421
カマコンバレー @YOKOHAMA Future Session 150421
 
Egypt Travel- Webinar Slide Show (June 2009)
Egypt Travel- Webinar Slide Show (June 2009)Egypt Travel- Webinar Slide Show (June 2009)
Egypt Travel- Webinar Slide Show (June 2009)
 
6 october 09.20_am_hejnowski_ver pl
6 october 09.20_am_hejnowski_ver pl6 october 09.20_am_hejnowski_ver pl
6 october 09.20_am_hejnowski_ver pl
 
Best Of 08
Best Of 08Best Of 08
Best Of 08
 
Cloud workload guidelines
Cloud workload guidelinesCloud workload guidelines
Cloud workload guidelines
 
Project Avalon Online(Game) Final Report
Project Avalon Online(Game) Final ReportProject Avalon Online(Game) Final Report
Project Avalon Online(Game) Final Report
 
Project NGX - Proposal
Project NGX - ProposalProject NGX - Proposal
Project NGX - Proposal
 
OW2con'14 - Lutece, the open source CMS & Development framework of the City o...
OW2con'14 - Lutece, the open source CMS & Development framework of the City o...OW2con'14 - Lutece, the open source CMS & Development framework of the City o...
OW2con'14 - Lutece, the open source CMS & Development framework of the City o...
 
OSCAR & AppHub, fostering market readiness at OW2, OW2con'16, Paris.
OSCAR & AppHub, fostering market readiness at OW2, OW2con'16, Paris. OSCAR & AppHub, fostering market readiness at OW2, OW2con'16, Paris.
OSCAR & AppHub, fostering market readiness at OW2, OW2con'16, Paris.
 
Mystery Salamanca
Mystery SalamancaMystery Salamanca
Mystery Salamanca
 
the rise of Square
the rise of Squarethe rise of Square
the rise of Square
 
Monitoring File transfert (MFT) WAARP R66, OW2con'16, Paris.
Monitoring File transfert (MFT) WAARP R66, OW2con'16, Paris. Monitoring File transfert (MFT) WAARP R66, OW2con'16, Paris.
Monitoring File transfert (MFT) WAARP R66, OW2con'16, Paris.
 
Renegade networks: How we can save the world, make a little cash & get to the...
Renegade networks: How we can save the world, make a little cash & get to the...Renegade networks: How we can save the world, make a little cash & get to the...
Renegade networks: How we can save the world, make a little cash & get to the...
 
Venus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScienceVenus-c: Using open source clouds in eScience
Venus-c: Using open source clouds in eScience
 
Yakima Trip
Yakima TripYakima Trip
Yakima Trip
 
RGAA, REFERENTIEL D’ACCESSIBILITE MULTICANAL
RGAA, REFERENTIEL D’ACCESSIBILITE MULTICANAL RGAA, REFERENTIEL D’ACCESSIBILITE MULTICANAL
RGAA, REFERENTIEL D’ACCESSIBILITE MULTICANAL
 
Social Media for Nutrition Bytes
Social Media for Nutrition BytesSocial Media for Nutrition Bytes
Social Media for Nutrition Bytes
 
Mantis Code Deployment Process
Mantis Code Deployment ProcessMantis Code Deployment Process
Mantis Code Deployment Process
 
Naturalization Webinar
Naturalization WebinarNaturalization Webinar
Naturalization Webinar
 

Similar a Ow2 Utilities, OW2con'12, Paris

Ow2 Utilities - The Swiss Army Knife Of Ow2 Projects
Ow2 Utilities - The Swiss Army Knife Of Ow2 ProjectsOw2 Utilities - The Swiss Army Knife Of Ow2 Projects
Ow2 Utilities - The Swiss Army Knife Of Ow2 ProjectsGuillaume Sauthier
 
Aspect oriented programming_with_spring
Aspect oriented programming_with_springAspect oriented programming_with_spring
Aspect oriented programming_with_springGuo Albert
 
Aspect oriented programming with spring
Aspect oriented programming with springAspect oriented programming with spring
Aspect oriented programming with springSreenivas Kappala
 
Better Code through Lint and Checkstyle
Better Code through Lint and CheckstyleBetter Code through Lint and Checkstyle
Better Code through Lint and CheckstyleMarc Prengemann
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9Marcus Lagergren
 
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
 
JavaFX for Business Application Developers
JavaFX for Business Application DevelopersJavaFX for Business Application Developers
JavaFX for Business Application DevelopersMichael Heinrichs
 
Lambda Chops - Recipes for Simpler, More Expressive Code
Lambda Chops - Recipes for Simpler, More Expressive CodeLambda Chops - Recipes for Simpler, More Expressive Code
Lambda Chops - Recipes for Simpler, More Expressive CodeIan Robertson
 
Atlassian Groovy Plugins
Atlassian Groovy PluginsAtlassian Groovy Plugins
Atlassian Groovy PluginsPaul King
 
Practical Chaos Engineering
Practical Chaos EngineeringPractical Chaos Engineering
Practical Chaos EngineeringSIGHUP
 
Microservices with Netflix OSS and Spring Cloud - Dev Day Orange
Microservices with Netflix OSS and Spring Cloud -  Dev Day OrangeMicroservices with Netflix OSS and Spring Cloud -  Dev Day Orange
Microservices with Netflix OSS and Spring Cloud - Dev Day Orangeacogoluegnes
 
TYPO3 Flow 2.0 Workshop T3BOARD13
TYPO3 Flow 2.0 Workshop T3BOARD13TYPO3 Flow 2.0 Workshop T3BOARD13
TYPO3 Flow 2.0 Workshop T3BOARD13Robert Lemke
 

Similar a Ow2 Utilities, OW2con'12, Paris (20)

Ow2 Utilities - The Swiss Army Knife Of Ow2 Projects
Ow2 Utilities - The Swiss Army Knife Of Ow2 ProjectsOw2 Utilities - The Swiss Army Knife Of Ow2 Projects
Ow2 Utilities - The Swiss Army Knife Of Ow2 Projects
 
Aspect oriented programming_with_spring
Aspect oriented programming_with_springAspect oriented programming_with_spring
Aspect oriented programming_with_spring
 
Aspect oriented programming with spring
Aspect oriented programming with springAspect oriented programming with spring
Aspect oriented programming with spring
 
Apache ZooKeeper
Apache ZooKeeperApache ZooKeeper
Apache ZooKeeper
 
Better Code through Lint and Checkstyle
Better Code through Lint and CheckstyleBetter Code through Lint and Checkstyle
Better Code through Lint and Checkstyle
 
Messaging the essence of OOP
Messaging the essence of OOPMessaging the essence of OOP
Messaging the essence of OOP
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9
 
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...
 
55j7
55j755j7
55j7
 
JavaFX for Business Application Developers
JavaFX for Business Application DevelopersJavaFX for Business Application Developers
JavaFX for Business Application Developers
 
Lambda Chops - Recipes for Simpler, More Expressive Code
Lambda Chops - Recipes for Simpler, More Expressive CodeLambda Chops - Recipes for Simpler, More Expressive Code
Lambda Chops - Recipes for Simpler, More Expressive Code
 
Atlassian Groovy Plugins
Atlassian Groovy PluginsAtlassian Groovy Plugins
Atlassian Groovy Plugins
 
Pharos
PharosPharos
Pharos
 
Curator intro
Curator introCurator intro
Curator intro
 
The IoC Hydra
The IoC HydraThe IoC Hydra
The IoC Hydra
 
Practical Chaos Engineering
Practical Chaos EngineeringPractical Chaos Engineering
Practical Chaos Engineering
 
oojs
oojsoojs
oojs
 
Node intro
Node introNode intro
Node intro
 
Microservices with Netflix OSS and Spring Cloud - Dev Day Orange
Microservices with Netflix OSS and Spring Cloud -  Dev Day OrangeMicroservices with Netflix OSS and Spring Cloud -  Dev Day Orange
Microservices with Netflix OSS and Spring Cloud - Dev Day Orange
 
TYPO3 Flow 2.0 Workshop T3BOARD13
TYPO3 Flow 2.0 Workshop T3BOARD13TYPO3 Flow 2.0 Workshop T3BOARD13
TYPO3 Flow 2.0 Workshop T3BOARD13
 

Más de OW2

OW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in Roma
OW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in RomaOW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in Roma
OW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in RomaOW2
 
The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...
The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...
The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...OW2
 
GLPi v.10, les fonctionnalités principales et l'offre cloud
GLPi v.10, les fonctionnalités principales et l'offre cloudGLPi v.10, les fonctionnalités principales et l'offre cloud
GLPi v.10, les fonctionnalités principales et l'offre cloudOW2
 
Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...
Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...
Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...OW2
 
FusionIAM : la gestion des identités et des accés open source
FusionIAM : la gestion des identités et des accés open sourceFusionIAM : la gestion des identités et des accés open source
FusionIAM : la gestion des identités et des accés open sourceOW2
 
OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...
OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...
OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...OW2
 
SFScon'20 Bringing the User into the Equation
SFScon'20 Bringing the User into the EquationSFScon'20 Bringing the User into the Equation
SFScon'20 Bringing the User into the EquationOW2
 
Towards a sustainable solution to open source sustainability, OW2online20, Ju...
Towards a sustainable solution to open source sustainability, OW2online20, Ju...Towards a sustainable solution to open source sustainability, OW2online20, Ju...
Towards a sustainable solution to open source sustainability, OW2online20, Ju...OW2
 
Advanced proactive and polymorphing cloud application adaptation with MORPHEM...
Advanced proactive and polymorphing cloud application adaptation with MORPHEM...Advanced proactive and polymorphing cloud application adaptation with MORPHEM...
Advanced proactive and polymorphing cloud application adaptation with MORPHEM...OW2
 
Open Source governance and the Eclipse Foundation, OW2online, June 2020
Open Source governance and the Eclipse Foundation, OW2online, June 2020Open Source governance and the Eclipse Foundation, OW2online, June 2020
Open Source governance and the Eclipse Foundation, OW2online, June 2020OW2
 
Open source contribution policies, OW2online, June 2020
Open source contribution policies, OW2online, June 2020Open source contribution policies, OW2online, June 2020
Open source contribution policies, OW2online, June 2020OW2
 
Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...
Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...
Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...OW2
 
Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020
Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020
Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020OW2
 
Open Source Compliance at Orange, OW2online, June 2020
Open Source Compliance at Orange, OW2online, June 2020Open Source Compliance at Orange, OW2online, June 2020
Open Source Compliance at Orange, OW2online, June 2020OW2
 
Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020
Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020
Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020OW2
 
Intelligent package management with FASTEN, OW2online, June 2020
Intelligent package management with FASTEN, OW2online, June 2020Intelligent package management with FASTEN, OW2online, June 2020
Intelligent package management with FASTEN, OW2online, June 2020OW2
 
DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020
DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020
DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020OW2
 
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...OW2
 
Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...
Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...
Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...OW2
 
Cacti and Big Data at Orange France, OW2online, June 2020
Cacti and Big Data at Orange France, OW2online, June 2020Cacti and Big Data at Orange France, OW2online, June 2020
Cacti and Big Data at Orange France, OW2online, June 2020OW2
 

Más de OW2 (20)

OW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in Roma
OW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in RomaOW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in Roma
OW2 and RIOS teaming up to boost the open source impact, Nov. 2022 in Roma
 
The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...
The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...
The Open Source Good Governance Initiative presented at RIOS OS Week, Nov. 20...
 
GLPi v.10, les fonctionnalités principales et l'offre cloud
GLPi v.10, les fonctionnalités principales et l'offre cloudGLPi v.10, les fonctionnalités principales et l'offre cloud
GLPi v.10, les fonctionnalités principales et l'offre cloud
 
Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...
Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...
Centreon: superviser le Cloud et le Legacy à partir d'une même plateforme, po...
 
FusionIAM : la gestion des identités et des accés open source
FusionIAM : la gestion des identités et des accés open sourceFusionIAM : la gestion des identités et des accés open source
FusionIAM : la gestion des identités et des accés open source
 
OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...
OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...
OW2 Association Européenne aux racines grenobloises, transformer l'industrie ...
 
SFScon'20 Bringing the User into the Equation
SFScon'20 Bringing the User into the EquationSFScon'20 Bringing the User into the Equation
SFScon'20 Bringing the User into the Equation
 
Towards a sustainable solution to open source sustainability, OW2online20, Ju...
Towards a sustainable solution to open source sustainability, OW2online20, Ju...Towards a sustainable solution to open source sustainability, OW2online20, Ju...
Towards a sustainable solution to open source sustainability, OW2online20, Ju...
 
Advanced proactive and polymorphing cloud application adaptation with MORPHEM...
Advanced proactive and polymorphing cloud application adaptation with MORPHEM...Advanced proactive and polymorphing cloud application adaptation with MORPHEM...
Advanced proactive and polymorphing cloud application adaptation with MORPHEM...
 
Open Source governance and the Eclipse Foundation, OW2online, June 2020
Open Source governance and the Eclipse Foundation, OW2online, June 2020Open Source governance and the Eclipse Foundation, OW2online, June 2020
Open Source governance and the Eclipse Foundation, OW2online, June 2020
 
Open source contribution policies, OW2online, June 2020
Open source contribution policies, OW2online, June 2020Open source contribution policies, OW2online, June 2020
Open source contribution policies, OW2online, June 2020
 
Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...
Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...
Software development at scale, pandemic lockdown and oss ecosystems, OW2onlin...
 
Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020
Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020
Overview of the OpenChain Reference Tooling Work Group, OW2online20, June 2020
 
Open Source Compliance at Orange, OW2online, June 2020
Open Source Compliance at Orange, OW2online, June 2020Open Source Compliance at Orange, OW2online, June 2020
Open Source Compliance at Orange, OW2online, June 2020
 
Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020
Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020
Ideas, methods and tools for OSS Compliance assessment, OW2online, June 2020
 
Intelligent package management with FASTEN, OW2online, June 2020
Intelligent package management with FASTEN, OW2online, June 2020Intelligent package management with FASTEN, OW2online, June 2020
Intelligent package management with FASTEN, OW2online, June 2020
 
DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020
DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020
DECODER, a Smarter Environment for DevOps Teams , OW2online, June 2020
 
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
 
Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...
Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...
Upcoming Challenges in Artificial Intelligence Research and Development, OW2o...
 
Cacti and Big Data at Orange France, OW2online, June 2020
Cacti and Big Data at Orange France, OW2online, June 2020Cacti and Big Data at Orange France, OW2online, June 2020
Cacti and Big Data at Orange France, OW2online, June 2020
 

Último

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Último (20)

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Ow2 Utilities, OW2con'12, Paris

  • 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 OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 2
  • 3. Genesis OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 3
  • 4. 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
  • 5. Modules OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 5
  • 6. QUITE BASIC STUFF •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
  • 7. ANNOTATION PROCESSOR •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
  • 8. EVENT SYSTEM •On steroid topic notification system // Simple asynchronous listener IEventListener listener = new IEventListener() { public void handle(IEvent event) { // Do your own casting here • Hierarchical, multi-threaded } 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
  • 9. // Create a Dispatcher EVENT SYSTEM 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
  • 10. POOL public static void main(String[] args) throws Exception { PoolFactory<Pooled, Long> poolFactory = new PooledFactory(); •Simple Pooling API JPool<Pooled,Long> pool = new JPool<Pooled, Long>(poolFactory); pool.start(); Pooled one = pool.get(); Pooled two = pool.get(); • Pool size, waiters, timeout Pooled three = pool.get(); Pooled four = pool.get(); // Will block until timeout or a release } • Thread-safe private static final class PooledFactory implements PoolFactory<Pooled, 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 } • Synchronous public boolean validate(Pooled instance, PoolEntryStatistics stats) { } 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
  • 11. SUBSTITUTION •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
  • 12. ARCHIVE •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; Iterator<URL> getResources() throws ArchiveException; • Jar Iterator<URL> getResources(String resourceName) throws ArchiveException; Iterator<String> getEntries() throws ArchiveException; • OSGi Bundle boolean close(); IArchiveMetadata getMetadata(); } •Extensible OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 12
  • 13. 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
  • 14. Contributions OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 14
  • 15. ANONYMOUS QUOTES http://gitorious.ow2.org/ow2-utilities http://utilities.ow2.org http://bamboo.ow2.org/browse/UTIL http://jira.ow2.org/browse/UTIL OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 15
  • 16. Questions OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 16
  • 17. utilities.ow2.org guillaume.sauthier@peergreen.com @sauthieg OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 17
  • 18. RESOURCES •http://www.flickr.com/photos/emagic/56206868/ OW2 Annual Conference 2012, 27-29 November, Orange Labs, Paris www.ow2.org 18