jboss wise: breaking barriers to ws testing
DESCRIPTION
JBoss Wise [1] is a library for simplifying webservices invocation and testing. It provides solutions for easy browsing of WSDL models, zero-code invocation of WS operations and for lowering the technical entry level to WS testing. The presentation will go through the recently added functionalities; the focus will then shift to WS testing, with a demo of the available GUI and an overview of the future enhancement efforts. [1] http://www.jboss.org/wiseTRANSCRIPT
![Page 1: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/1.jpg)
JBoss Wise: breaking barriers to WS testingJBoss Wise: breaking barriers to WS testing
Alessio [email protected]
Principal Software Eng.JBoss - Red Hat
October 22nd, 2013Milan JBoss User Group
![Page 2: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/2.jpg)
Let's invoke a WS in Java...● You've been given a WSDL (reference)...
● ...so you start by generating the stubs (JAXWS tools)
![Page 3: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/3.jpg)
Let's invoke a WS in Java...● Then you import the sources in your IDE...
● ... finally you code against them an invoke the endpoint
![Page 4: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/4.jpg)
Perhaps you automate the process a bit...● Maven plugins for generating the stubs automatically
... but ...
![Page 5: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/5.jpg)
Pros / Cons● Your code is actually bound to the generated classes
(client server coupling)–
● Good solution for clients of stable endpoints
● Not suitable to quick testing of multiple/different endpoints
![Page 6: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/6.jpg)
JBoss Wise● Java library for easily invoking webservices
● Built on top of JBossWS stack
● Goals
‣Effective client/server decoupling
‣Easy browsing of WSDL models
‣(nearly)zero-code invocation of WS operations
‣Lowering the technical entry level to WS testing
![Page 7: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/7.jpg)
Dynamic client API● Get a dynamic client for a WSDL operation and invoke...
![Page 8: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/8.jpg)
Dynamic client API● or browse the model to choose the method to call
● What about parameters?
‣ non-trivial endpoints get and return structured data...
‣ we need Object instances to put in the invocation Map...
![Page 9: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/9.jpg)
WebParameter inspection + reflection● Get Java type from WebParameter instances
● Use reflection to build up the desired data
● ... working on classes generated on-the-fly by Wise ...
● ugly, unpractical, etc.
![Page 10: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/10.jpg)
Wise mappers● Allow users to invoke endpoints using their own model
● Map user model to internally generated client classes
● Any custom mapper can be implemented
● ... moving the problem to defining the proper vehicle and transformation of user data into target endpoint parameters
![Page 11: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/11.jpg)
Smooks mapper● “Smooks is an extensible framework for building
applications for processing XML and non XML data (CSV, Java, ...) using Java”
with proper Smooks mappers, Wise can invoke a WS endpoint given any model (even in different formats) !
![Page 12: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/12.jpg)
Smooks mapper● Define the request and response mappings..
● ... and invoke providing the user model
![Page 13: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/13.jpg)
Tree modelSo the request / response model is really the core concept here... what about something very simple yet generic, with String only values?
● Tree-like view model
● kind of a DOM tree built on the
valid WS req/res space
![Page 14: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/14.jpg)
Tree model usage● Get tree view model and populate it...
● Invoke the endpoint and convert the result in another tree...
![Page 15: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/15.jpg)
Tree model advantages● Detyped model... but stil l compliant to the WSDL/schema
● Simple and generic...
enough to build a GUI !
Demo Time :-)
![Page 16: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/16.jpg)
Wise GUI● Web based
‣ no need for Eclipse / IDE
‣ usable everywhere (even on mobile...)
‣ deployed on JBoss (even on Openshift...)
● Focus on the data, not on the technology
‣ No WS, XML or Java knowledge required
‣ Fast / agile WS testing
‣ Enable business acceptance tests from analysts
![Page 17: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/17.jpg)
Wise Invokes Services Easily● Wise is built on top of a JavaEE certified stack (JBossWS)
... this ensures core correctness and interoperability.
● You're consuming WS services (based on WSDL / XSD)
‣ you're granted compliance with the contract
‣ ... but you don't get your hands dirty with SOAP ;-)
Is it really that complex and inconvenient to call one of those dreaded WSDL based WS services? ;-)
![Page 18: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/18.jpg)
Future features (maybe...)● GUI user management
● Import / export GUI environment
● Multiple authentication options
● Explicit WS-Policy support
● Smooks Eclipse plugin for Wise mappers generation?
● ...
... but we need help from YOU !
![Page 19: JBoss Wise: breaking barriers to WS testing](https://reader034.vdocuments.us/reader034/viewer/2022051610/5486c9f0b4af9f76628b4668/html5/thumbnails/19.jpg)
Links● Project homepage: www.jboss.org/wise
● Blog: jbosswise.blogspot.com
● Code for this presentation: https://github.com/asoldano/demo
Write us! Contribution is more the welcome!