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

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

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