Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import groovy.util.XmlSlurper
- class Person {
- String firstName, lastName
- }
- class Policy {
- String policyNo
- }
- class Search {
- def search(Person person) {
- //some implementation
- println "Searching for Person: $person.firstName $person.lastName"
- }
- def search(Policy policy, Person person) {
- //some implementation
- println "Searching for Person and Policy: $person.firstName $person.lastName $policy.policyNo"
- }
- def search(Person person, Policy policy) {
- //some implementation
- println "Searching for Person and Policy: $person.firstName $person.lastName $policy.policyNo"
- }
- }
- //search with Person only
- def payloadString1 = '<message><header><criteria><type>Person</type><key>firstName</key><value>RJ</value></criteria><criteria><type>Person</type><key>lastName</key><value>Salicco</value></criteria></header></message>'
- //search with Policy and Person
- def payloadString2 = '<message><header><criteria><type>Policy</type><key>policyNo</key><value>123456789</value></criteria><criteria><type>Person</type><key>firstName</key><value>RJ</value></criteria><criteria><type>Person</type><key>lastName</key><value>Salicco</value></criteria></header></message>'
- //search with Person and Policy
- def payloadString3 = '<message><header><criteria><type>Person</type><key>firstName</key><value>Jim</value></criteria><criteria><type>Person</type><key>lastName</key><value>Bob</value></criteria><criteria><type>Policy</type><key>policyNo</key><value>987654321</value></criteria></header></message>'
- def result1 = new XmlSlurper().parseText(payloadString1)
- def result2 = new XmlSlurper().parseText(payloadString2)
- def result3 = new XmlSlurper().parseText(payloadString3)
- def handleResult(result) {
- def objectMap = [:]
- result.header.criteria.each {
- def existing = objectMap.get(it.type.text())
- if(existing) {
- existing.put(it.key.text(), it.value.text())
- } else {
- objectMap.put(it.type.text(), [(it.key.text()):(it.value.text())])
- }
- }
- objectMap
- }
- def createObjectList(objectMap) {
- def objectList = []
- objectMap.each {
- def clazz = this.class.classLoader.loadClass("$it.key")
- objectList.add(clazz.newInstance(it.value))
- }
- objectList
- }
- def objectList1 = createObjectList(handleResult(result1))
- def objectList2 = createObjectList(handleResult(result2))
- def objectList3 = createObjectList(handleResult(result3))
- new Search().search(objectList1)
- new Search().search(objectList2)
- new Search().search(objectList3)
Add Comment
Please, Sign In to add comment