SlideShare a Scribd company logo
Boosting your testing productivity with Groovy James Williams, Spatial Networks Andres Almiray, Oracle BOF-5101
Have fun while programming tests
Agenda What is Groovy Groovy + Testing Frameworks Mocking with Groovy Grails Testing Testing Databases Functional Testing Resources
What is Groovy? Groovy is an agile and  dynamic  language for the Java Virtual Machine  Builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby & Smalltalk  Makes modern programming features available to Java developers with  almost-zero learning curve Supports  Domain Specific Languages  and other compact syntax so your code becomes easy to read and maintain
What is Groovy? Increases developer productivity by  reducing scaffolding  code when developing web, GUI, database or console applications  Simplifies testing  by supporting unit testing and mocking out-of-the-box  Seamlessly integrates  with all existing Java objects and libraries  Compiles straight to Java byte code so you can  use it anywhere you can use Java
HelloWorld.java public class  HelloWorld { String name; public   void  setName(String name) { this.name = name; } public  String getName(){ return name; } public  String greet() { return  “Hello “ + name; } public   static void  main(String args[]){ HelloWorld helloWorld =  new  HelloWorld() helloWorld.setName( “Groovy” ) System.err.println( helloWorld.greet() ) } }
HelloWorld.groovy public class  HelloWorld { String name; public   void  setName(String name) { this.name = name; } public  String getName(){ return name; } public  String greet() { return  “Hello “ + name; } public   static void  main(String args[]){ HelloWorld helloWorld =  new  HelloWorld() helloWorld.setName( “Groovy” ) System.err.println( helloWorld.greet() ) } }
Equivalent HelloWorld 100% Groovy class  HelloWorld { String name def  greet() {  "Hello $name"   } } def  helloWorld =  new  HelloWorld(name : " Groovy" ) println helloWorld.greet()
Groovy + Testing Frameworks Any Groovy script may become a testcase assert keyword enabled by default Groovy provides a GroovyTestCase base class Easier to test exception throwing code Junit 4.x and TestNG ready, Groovy suports JDK5+ features Annotations Static imports Enums
Testing exceptions in Java public class JavaExceptionTestCase  extends TestCase  { public void testExceptionThrowingCode() { try { new MyService().doSomething(); fail("MyService.doSomething has been implemented"); }catch( UnsupportedOperationException expected ){ // everything is ok if we reach this block  } } }
Testing exceptions in Groovy class GroovyExceptionTestCase  extends GroovyTestCase  { void testExceptionThrowingCode() { shouldFail( UnsupportedOperationException ){ new MyService().doSomething() } } }
Alright, but how do I run Groovy tests? Pick your favorite IDE!  IDEA Eclipse NetBeans Command line tools Ant Gant Maven Good ol’ Groovy shell/console
Mocking with Groovy Known mocking libraries EasyMock – record/replay Jmock – write expectations as you go Use dynamic proxies as stubs Use StubFor/MockFor Groovy mocks rely on MetaClasses to do their magic Caveat: use them only for Groovy classes
Groovy Mocks
Grails testing Fairly similar to testing in core Groovy Plugins a plenty easyb Canoo WebTest Selenium DBUnit jsUnit Cobertura JUnit is built in
Testing Taglibs Can be tested with Junit Need to extend several metaClasses that are not in testing scope out Encoders/Decoders General format:  className.tagName( [ attrs as Map], body)
Grails Taglibs
Testing Databases DbUnit: a Junit extension for testing databases Several options at your disposal Old school – extend DatabaseTestCase Flexible – use an IDataBaseTester implementation Roll your own Database testcase
Inline XML dataset import org.dbunit.* import org.junit.* class MyDBTestCase { IDatabaseTester db @BeforeClass void init(){  db = new JdbcDatabaseTester(&quot;org.hsqldb.jdbcDriver&quot;, &quot;jdbc:hsqldb:sample&quot;, &quot;sa&quot;, &quot;&quot; ) def dataset = &quot;&quot;&quot; <dataset> <company name=&quot;Acme&quot;/> <employee name=&quot;Duke&quot; company_id=&quot;1&quot;> </dataset> &quot;&quot;&quot; db.dataset = new FlatXmlDataSet( new StringReader(dataset) ) db.onSetUp() } @AfterClass void exit() { db.onTearDown() } }
Compile-checked dataset import org.dbunit.* import org.junit.* Import groovy.xml.MarkupBuilder class MyDBTestCase { IDatabaseTester db @BeforeClass void init(){  db = new JdbcDatabaseTester(&quot;org.hsqldb.jdbcDriver&quot;, &quot;jdbc:hsqldb:sample&quot;, &quot;sa&quot;, &quot;&quot; ) def dataset = new MarkupBuilder().dataset { company( name: Acme ) employee( name: &quot;Duke&quot;, company_id: 1 ) } db.dataset = new FlatXmlDataSet( new StringReader(dataset) ) db.onSetUp() } @AfterClass void exit() { db.onTearDown() } }
Functional Testing These tests usually require more setup Non-developers usually like to drive these tests Developers usually don’t like to code these tests No Functional Testing => unhappy customer => unhappy developer
Groovy to the rescue! [Any of the following] + Groovy = success! Web testing -> Canoo WebTest Swing testing -> FEST BDD testing -> Easyb
FEST + Easyb
For More Information http://groovy.codehaus.org http://grails.org http://junit.org http://testng.org http:// www.dbunit.org http:// webtest.canoo.com http://easyb.org http:// easytesting.org http :// jameswilliams.be http:// jroller.com/aalmiray
James Williams, Spatial Networks Andres Almiray, Oracle BOF-5101

More Related Content

What's hot (20)

PDF
Javascript TDD with Jasmine, Karma, and Gulp
All Things Open
 
PDF
Node ppt
Tamil Selvan R S
 
PDF
PyParis 2017 / Writing a C Python extension in 2017, Jean-Baptiste Aviat
Pôle Systematic Paris-Region
 
PDF
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JSFestUA
 
PDF
Node.js cluster
Derek Willian Stavis
 
KEY
PyCon AU 2012 - Debugging Live Python Web Applications
Graham Dumpleton
 
PDF
Node.js Jaram Winter Workshop 2014
Chulwoo Park
 
PPTX
Karate - MoT Dallas 26-Oct-2017
Peter Thomas
 
PDF
CommandBox & ForgeBox Package Management
Ortus Solutions, Corp
 
PDF
Grooscript greach
Jorge Franco Leza
 
PDF
Grooscript greach 2015
Jorge Franco Leza
 
KEY
Lock? We don't need no stinkin' locks!
Michael Barker
 
PDF
Tomasz Polanski - Automated mobile testing 2016 - Testing: why, when, how
Tomasz Polanski
 
PDF
Deep Dive async/await in Unity with UniTask(EN)
Yoshifumi Kawai
 
PDF
Fuzzing: The New Unit Testing
Dmitry Vyukov
 
PDF
"Real-time Collaborative Text Editing on Grammarly’s Front-End Team" Oleksii...
Fwdays
 
PPTX
Introduction to Grails Framework
PT.JUG
 
PDF
Dependency Injection
ColdFusionConference
 
PDF
Grooscript gr8conf 2015
Jorge Franco Leza
 
PPT
Unit testing with Spock Framework
Eugene Dvorkin
 
Javascript TDD with Jasmine, Karma, and Gulp
All Things Open
 
PyParis 2017 / Writing a C Python extension in 2017, Jean-Baptiste Aviat
Pôle Systematic Paris-Region
 
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JSFestUA
 
Node.js cluster
Derek Willian Stavis
 
PyCon AU 2012 - Debugging Live Python Web Applications
Graham Dumpleton
 
Node.js Jaram Winter Workshop 2014
Chulwoo Park
 
Karate - MoT Dallas 26-Oct-2017
Peter Thomas
 
CommandBox & ForgeBox Package Management
Ortus Solutions, Corp
 
Grooscript greach
Jorge Franco Leza
 
Grooscript greach 2015
Jorge Franco Leza
 
Lock? We don't need no stinkin' locks!
Michael Barker
 
Tomasz Polanski - Automated mobile testing 2016 - Testing: why, when, how
Tomasz Polanski
 
Deep Dive async/await in Unity with UniTask(EN)
Yoshifumi Kawai
 
Fuzzing: The New Unit Testing
Dmitry Vyukov
 
"Real-time Collaborative Text Editing on Grammarly’s Front-End Team" Oleksii...
Fwdays
 
Introduction to Grails Framework
PT.JUG
 
Dependency Injection
ColdFusionConference
 
Grooscript gr8conf 2015
Jorge Franco Leza
 
Unit testing with Spock Framework
Eugene Dvorkin
 

Viewers also liked (6)

PDF
Polyglot Programming @ CONFESS
Andres Almiray
 
PDF
Gradle: Harder, Stronger, Better, Faster
Andres Almiray
 
PDF
Griffon @ Svwjug
Andres Almiray
 
PPT
Svcc Groovy Testing
Andres Almiray
 
PPTX
Griffon: what's new and what's coming
Andres Almiray
 
PPT
Polyglot Programming in the JVM
Andres Almiray
 
Polyglot Programming @ CONFESS
Andres Almiray
 
Gradle: Harder, Stronger, Better, Faster
Andres Almiray
 
Griffon @ Svwjug
Andres Almiray
 
Svcc Groovy Testing
Andres Almiray
 
Griffon: what's new and what's coming
Andres Almiray
 
Polyglot Programming in the JVM
Andres Almiray
 
Ad

Similar to Javaone2008 Bof 5101 Groovytesting (20)

PDF
Oscon Java Testing on the Fast Lane
Andres Almiray
 
ODP
Groovy Testing
Davide Rossi
 
PPT
What's New in Groovy 1.6?
Guillaume Laforge
 
PPT
Groovy Introduction - JAX Germany - 2008
Guillaume Laforge
 
ODP
New Ideas for Old Code - Greach
HamletDRC
 
PPTX
Groovy!
Petr Giecek
 
PPT
Groovy for Java Developers
Andres Almiray
 
PPT
Introduction To Groovy
manishkp84
 
ODP
Grails unit testing
pleeps
 
PDF
Groovy On Trading Desk (2010)
Jonathan Felch
 
PPT
Groovy & Grails: Scripting for Modern Web Applications
rohitnayak
 
PDF
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Guillaume Laforge
 
PPT
Groovy Update - JavaPolis 2007
Guillaume Laforge
 
PPT
2007 09 10 Fzi Training Groovy Grails V Ws
loffenauer
 
PDF
The Future of JVM Languages
VictorSzoltysek
 
PPT
Eclipsecon08 Introduction To Groovy
Andres Almiray
 
PDF
Whats New In Groovy 1.6?
Guillaume Laforge
 
PDF
GR8Conf 2009: What's New in Groovy 1.6? by Guillaume Laforge
GR8Conf
 
PDF
Make Your Testing Groovy
Paul King
 
PPT
Spock Framework
Леонид Ставила
 
Oscon Java Testing on the Fast Lane
Andres Almiray
 
Groovy Testing
Davide Rossi
 
What's New in Groovy 1.6?
Guillaume Laforge
 
Groovy Introduction - JAX Germany - 2008
Guillaume Laforge
 
New Ideas for Old Code - Greach
HamletDRC
 
Groovy!
Petr Giecek
 
Groovy for Java Developers
Andres Almiray
 
Introduction To Groovy
manishkp84
 
Grails unit testing
pleeps
 
Groovy On Trading Desk (2010)
Jonathan Felch
 
Groovy & Grails: Scripting for Modern Web Applications
rohitnayak
 
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Guillaume Laforge
 
Groovy Update - JavaPolis 2007
Guillaume Laforge
 
2007 09 10 Fzi Training Groovy Grails V Ws
loffenauer
 
The Future of JVM Languages
VictorSzoltysek
 
Eclipsecon08 Introduction To Groovy
Andres Almiray
 
Whats New In Groovy 1.6?
Guillaume Laforge
 
GR8Conf 2009: What's New in Groovy 1.6? by Guillaume Laforge
GR8Conf
 
Make Your Testing Groovy
Paul King
 
Ad

More from Andres Almiray (20)

PDF
Dealing with JSON in the relational world
Andres Almiray
 
PDF
Deploying to production with confidence 🚀
Andres Almiray
 
PDF
Going beyond ORMs with JSON Relational Duality Views
Andres Almiray
 
PDF
Setting up data driven tests with Java tools
Andres Almiray
 
PDF
Creando, creciendo, y manteniendo una comunidad de codigo abierto
Andres Almiray
 
PDF
Liberando a produccion con confianza
Andres Almiray
 
PDF
Liberando a produccion con confidencia
Andres Almiray
 
PDF
OracleDB Ecosystem for Java Developers
Andres Almiray
 
PDF
Softcon.ph - Maven Puzzlers
Andres Almiray
 
PDF
Maven Puzzlers
Andres Almiray
 
PDF
Oracle Database Ecosystem for Java Developers
Andres Almiray
 
PDF
JReleaser - Releasing at the speed of light
Andres Almiray
 
PDF
Building modular applications with the Java Platform Module System and Layrry
Andres Almiray
 
PDF
Going Reactive with g rpc
Andres Almiray
 
PDF
Building modular applications with JPMS and Layrry
Andres Almiray
 
PDF
Taking Micronaut out for a spin
Andres Almiray
 
PDF
Apache Groovy's Metaprogramming Options and You
Andres Almiray
 
PDF
What I wish I knew about Maven years ago
Andres Almiray
 
PDF
What I wish I knew about maven years ago
Andres Almiray
 
PDF
The impact of sci fi in tech
Andres Almiray
 
Dealing with JSON in the relational world
Andres Almiray
 
Deploying to production with confidence 🚀
Andres Almiray
 
Going beyond ORMs with JSON Relational Duality Views
Andres Almiray
 
Setting up data driven tests with Java tools
Andres Almiray
 
Creando, creciendo, y manteniendo una comunidad de codigo abierto
Andres Almiray
 
Liberando a produccion con confianza
Andres Almiray
 
Liberando a produccion con confidencia
Andres Almiray
 
OracleDB Ecosystem for Java Developers
Andres Almiray
 
Softcon.ph - Maven Puzzlers
Andres Almiray
 
Maven Puzzlers
Andres Almiray
 
Oracle Database Ecosystem for Java Developers
Andres Almiray
 
JReleaser - Releasing at the speed of light
Andres Almiray
 
Building modular applications with the Java Platform Module System and Layrry
Andres Almiray
 
Going Reactive with g rpc
Andres Almiray
 
Building modular applications with JPMS and Layrry
Andres Almiray
 
Taking Micronaut out for a spin
Andres Almiray
 
Apache Groovy's Metaprogramming Options and You
Andres Almiray
 
What I wish I knew about Maven years ago
Andres Almiray
 
What I wish I knew about maven years ago
Andres Almiray
 
The impact of sci fi in tech
Andres Almiray
 

Recently uploaded (20)

PDF
From Legacy to Velocity: how we rebuilt everything in 8 months.
Product-Tech Team
 
PPTX
2025 July - ABM for B2B in Hubspot - Demand Gen HUG.pptx
mjenkins13
 
PPTX
Master and Business Administration II Next MBA
RobertoOrellana44
 
PDF
Thane Stenner - An Industry Expert
Thane Stenner
 
PPTX
Business Trendsjobsand careerr 2025.pptx
sahatanmay391
 
PDF
Concept Topology in Architectural Build Addendum.pdf
Brij Consulting, LLC
 
DOCX
RECLAIM STOLEN CRYPTO REVIEW WITH RECUVA HACKER SOLUTIONS
camilamichaelj7
 
PDF
Keppel Investor Day 2025 Presentation Slides GCAT.pdf
KeppelCorporation
 
PDF
LEWIONICS SCO Company Profile UAE JULY 2025
Natalie Lewes
 
PDF
NJ GST Collection Summary - June2025.pdf
writer28
 
PDF
CBV - GST Collection Report V16. pdf.
writer28
 
PDF
Blind Spots in Business: Unearthing Hidden Challenges in Today's Organizations
Crimson Business Consulting
 
PDF
Dr. Enrique Segura Ense Group - A Philanthropist And Entrepreneur
Dr. Enrique Segura Ense Group
 
PPTX
DECODING AI AGENTS AND WORKFLOW AUTOMATION FOR MODERN RECRUITMENT
José Kadlec
 
PPTX
Understanding ISO 42001 Standard: AI Governance & Compliance Insights from Ad...
Adeptiv AI
 
PDF
Buy Verified Payoneer Account – 100% Best With All Documents.pdf
buypaypalaccountsee buypaypalaccounts
 
PPTX
Why-Your-BPO-Startup-Must-Track-Attrition-from-Day-One.pptx.pptx
Orage technologies
 
PDF
Azumah Resources reaffirms commitment to Ghana amid dispute with Engineers & ...
Kweku Zurek
 
PDF
Redefining Punjab’s Growth Story_ Mohit Bansal and the Human-Centric Vision o...
Mohit Bansal GMI
 
DOCX
How to Choose the Best Dildo for Men A Complete Buying Guide.docx
Glas Toy
 
From Legacy to Velocity: how we rebuilt everything in 8 months.
Product-Tech Team
 
2025 July - ABM for B2B in Hubspot - Demand Gen HUG.pptx
mjenkins13
 
Master and Business Administration II Next MBA
RobertoOrellana44
 
Thane Stenner - An Industry Expert
Thane Stenner
 
Business Trendsjobsand careerr 2025.pptx
sahatanmay391
 
Concept Topology in Architectural Build Addendum.pdf
Brij Consulting, LLC
 
RECLAIM STOLEN CRYPTO REVIEW WITH RECUVA HACKER SOLUTIONS
camilamichaelj7
 
Keppel Investor Day 2025 Presentation Slides GCAT.pdf
KeppelCorporation
 
LEWIONICS SCO Company Profile UAE JULY 2025
Natalie Lewes
 
NJ GST Collection Summary - June2025.pdf
writer28
 
CBV - GST Collection Report V16. pdf.
writer28
 
Blind Spots in Business: Unearthing Hidden Challenges in Today's Organizations
Crimson Business Consulting
 
Dr. Enrique Segura Ense Group - A Philanthropist And Entrepreneur
Dr. Enrique Segura Ense Group
 
DECODING AI AGENTS AND WORKFLOW AUTOMATION FOR MODERN RECRUITMENT
José Kadlec
 
Understanding ISO 42001 Standard: AI Governance & Compliance Insights from Ad...
Adeptiv AI
 
Buy Verified Payoneer Account – 100% Best With All Documents.pdf
buypaypalaccountsee buypaypalaccounts
 
Why-Your-BPO-Startup-Must-Track-Attrition-from-Day-One.pptx.pptx
Orage technologies
 
Azumah Resources reaffirms commitment to Ghana amid dispute with Engineers & ...
Kweku Zurek
 
Redefining Punjab’s Growth Story_ Mohit Bansal and the Human-Centric Vision o...
Mohit Bansal GMI
 
How to Choose the Best Dildo for Men A Complete Buying Guide.docx
Glas Toy
 

Javaone2008 Bof 5101 Groovytesting

  • 1. Boosting your testing productivity with Groovy James Williams, Spatial Networks Andres Almiray, Oracle BOF-5101
  • 2. Have fun while programming tests
  • 3. Agenda What is Groovy Groovy + Testing Frameworks Mocking with Groovy Grails Testing Testing Databases Functional Testing Resources
  • 4. What is Groovy? Groovy is an agile and dynamic language for the Java Virtual Machine Builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby & Smalltalk Makes modern programming features available to Java developers with almost-zero learning curve Supports Domain Specific Languages and other compact syntax so your code becomes easy to read and maintain
  • 5. What is Groovy? Increases developer productivity by reducing scaffolding code when developing web, GUI, database or console applications Simplifies testing by supporting unit testing and mocking out-of-the-box Seamlessly integrates with all existing Java objects and libraries Compiles straight to Java byte code so you can use it anywhere you can use Java
  • 6. HelloWorld.java public class HelloWorld { String name; public void setName(String name) { this.name = name; } public String getName(){ return name; } public String greet() { return “Hello “ + name; } public static void main(String args[]){ HelloWorld helloWorld = new HelloWorld() helloWorld.setName( “Groovy” ) System.err.println( helloWorld.greet() ) } }
  • 7. HelloWorld.groovy public class HelloWorld { String name; public void setName(String name) { this.name = name; } public String getName(){ return name; } public String greet() { return “Hello “ + name; } public static void main(String args[]){ HelloWorld helloWorld = new HelloWorld() helloWorld.setName( “Groovy” ) System.err.println( helloWorld.greet() ) } }
  • 8. Equivalent HelloWorld 100% Groovy class HelloWorld { String name def greet() { &quot;Hello $name&quot; } } def helloWorld = new HelloWorld(name : &quot; Groovy&quot; ) println helloWorld.greet()
  • 9. Groovy + Testing Frameworks Any Groovy script may become a testcase assert keyword enabled by default Groovy provides a GroovyTestCase base class Easier to test exception throwing code Junit 4.x and TestNG ready, Groovy suports JDK5+ features Annotations Static imports Enums
  • 10. Testing exceptions in Java public class JavaExceptionTestCase extends TestCase { public void testExceptionThrowingCode() { try { new MyService().doSomething(); fail(&quot;MyService.doSomething has been implemented&quot;); }catch( UnsupportedOperationException expected ){ // everything is ok if we reach this block } } }
  • 11. Testing exceptions in Groovy class GroovyExceptionTestCase extends GroovyTestCase { void testExceptionThrowingCode() { shouldFail( UnsupportedOperationException ){ new MyService().doSomething() } } }
  • 12. Alright, but how do I run Groovy tests? Pick your favorite IDE! IDEA Eclipse NetBeans Command line tools Ant Gant Maven Good ol’ Groovy shell/console
  • 13. Mocking with Groovy Known mocking libraries EasyMock – record/replay Jmock – write expectations as you go Use dynamic proxies as stubs Use StubFor/MockFor Groovy mocks rely on MetaClasses to do their magic Caveat: use them only for Groovy classes
  • 15. Grails testing Fairly similar to testing in core Groovy Plugins a plenty easyb Canoo WebTest Selenium DBUnit jsUnit Cobertura JUnit is built in
  • 16. Testing Taglibs Can be tested with Junit Need to extend several metaClasses that are not in testing scope out Encoders/Decoders General format: className.tagName( [ attrs as Map], body)
  • 18. Testing Databases DbUnit: a Junit extension for testing databases Several options at your disposal Old school – extend DatabaseTestCase Flexible – use an IDataBaseTester implementation Roll your own Database testcase
  • 19. Inline XML dataset import org.dbunit.* import org.junit.* class MyDBTestCase { IDatabaseTester db @BeforeClass void init(){ db = new JdbcDatabaseTester(&quot;org.hsqldb.jdbcDriver&quot;, &quot;jdbc:hsqldb:sample&quot;, &quot;sa&quot;, &quot;&quot; ) def dataset = &quot;&quot;&quot; <dataset> <company name=&quot;Acme&quot;/> <employee name=&quot;Duke&quot; company_id=&quot;1&quot;> </dataset> &quot;&quot;&quot; db.dataset = new FlatXmlDataSet( new StringReader(dataset) ) db.onSetUp() } @AfterClass void exit() { db.onTearDown() } }
  • 20. Compile-checked dataset import org.dbunit.* import org.junit.* Import groovy.xml.MarkupBuilder class MyDBTestCase { IDatabaseTester db @BeforeClass void init(){ db = new JdbcDatabaseTester(&quot;org.hsqldb.jdbcDriver&quot;, &quot;jdbc:hsqldb:sample&quot;, &quot;sa&quot;, &quot;&quot; ) def dataset = new MarkupBuilder().dataset { company( name: Acme ) employee( name: &quot;Duke&quot;, company_id: 1 ) } db.dataset = new FlatXmlDataSet( new StringReader(dataset) ) db.onSetUp() } @AfterClass void exit() { db.onTearDown() } }
  • 21. Functional Testing These tests usually require more setup Non-developers usually like to drive these tests Developers usually don’t like to code these tests No Functional Testing => unhappy customer => unhappy developer
  • 22. Groovy to the rescue! [Any of the following] + Groovy = success! Web testing -> Canoo WebTest Swing testing -> FEST BDD testing -> Easyb
  • 24. For More Information http://groovy.codehaus.org http://grails.org http://junit.org http://testng.org http:// www.dbunit.org http:// webtest.canoo.com http://easyb.org http:// easytesting.org http :// jameswilliams.be http:// jroller.com/aalmiray
  • 25. James Williams, Spatial Networks Andres Almiray, Oracle BOF-5101