diff --git a/applications/loan-broker/.gitignore b/applications/loan-broker/.gitignore index eb5a316c..abbe2829 100644 --- a/applications/loan-broker/.gitignore +++ b/applications/loan-broker/.gitignore @@ -1 +1,2 @@ target +.settings diff --git a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/LoanQuoteAggregator.java b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/LoanQuoteAggregator.java index f1f0bed5..cc3338f8 100644 --- a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/LoanQuoteAggregator.java +++ b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/LoanQuoteAggregator.java @@ -16,11 +16,10 @@ package org.springframework.integration.samples.loanbroker; -import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.springframework.integration.Message; +import org.springframework.integration.annotation.Header; import org.springframework.integration.samples.loanbroker.domain.LoanQuote; /** @@ -37,17 +36,13 @@ public class LoanQuoteAggregator { /** * Aggregates LoanQuote Messages to return a single reply Message. * - * @param messages Messages received from upstream lenders. + * @param quotes list of loan quotes received from upstream lenders + * @param responseType header that indicates the response type * @return the best {@link LoanQuote} if the 'RESPONSE_TYPE' header value is 'BEST' else all quotes */ - public Object aggregateQuotes(List> messages) { - ArrayList payloads = new ArrayList(messages.size()); - for (Message message : messages) { - payloads.add(message.getPayload()); - } - Collections.sort(payloads); - String responseType = messages.get(0).getHeaders().get("RESPONSE_TYPE", String.class); - return ("BEST".equals(responseType)) ? payloads.get(0) : payloads; + public Object aggregateQuotes(List quotes, @Header("RESPONSE_TYPE") String responseType) { + Collections.sort(quotes); + return ("BEST".equals(responseType)) ? quotes.get(0) : quotes; } } diff --git a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/CreditScore.java b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/CreditReport.java similarity index 75% rename from applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/CreditScore.java rename to applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/CreditReport.java index a026ee8d..7eb12e6b 100644 --- a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/CreditScore.java +++ b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/CreditReport.java @@ -19,25 +19,25 @@ package org.springframework.integration.samples.loanbroker.domain; /** * @author Oleg Zhurakousky */ -public class CreditScore { +public class CreditReport { private final int score; - private String creditHistory; - - public CreditScore(int score){ - this.score = score; - } - - public String getCreditHistory() { - return creditHistory; - } + private volatile String history; - public void setCreditHistory(String creditHistory) { - this.creditHistory = creditHistory; + public CreditReport(int score) { + this.score = score; } public int getScore() { - return score; + return this.score; + } + + public void setHistory(String history) { + this.history = history; + } + + public String getHistory() { + return this.history; } } diff --git a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/LoanQuote.java b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/LoanQuote.java index 4c687b3a..e76af5f2 100644 --- a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/LoanQuote.java +++ b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/LoanQuote.java @@ -16,7 +16,6 @@ package org.springframework.integration.samples.loanbroker.domain; -import java.text.DecimalFormat; import java.util.Date; /** @@ -79,17 +78,6 @@ public class LoanQuote implements Comparable{ this.rate = rate; } - public String toString(){ - return "\n====== Loan Quote =====\n" + - "Lender: " + this.lender + "\n" + - "Loan amount: " + new DecimalFormat("$###,###.###").format(this.amount) + "\n" + - "Quote Date: " + this.quoteDate + "\n" + - "Expiration Date: " + this.expirationDate + "\n" + - "Term: " + this.term + " years" + "\n" + - "Rate: " + this.rate + "%\n" + - "=======================\n"; - } - public int compareTo(LoanQuote other) { if (this.rate > other.rate) { return 1; @@ -100,4 +88,8 @@ public class LoanQuote implements Comparable{ return 0; } + public String toString() { + return this.lender + ":\t" + this.rate; + } + } diff --git a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/LoanRequest.java b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/LoanRequest.java index e77667d4..155c9620 100644 --- a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/LoanRequest.java +++ b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/domain/LoanRequest.java @@ -24,20 +24,20 @@ public class LoanRequest { private Customer customer; private float loanAmount; - public Customer getCustomer() { - return customer; - } - public void setCustomer(Customer customer) { this.customer = customer; } - - public float getLoanAmount() { - return loanAmount; + + public Customer getCustomer() { + return customer; } public void setLoanAmount(float loanAmount) { this.loanAmount = loanAmount; } + public float getLoanAmount() { + return loanAmount; + } + } diff --git a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/stubs/BankStub.java b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/stubs/BankStub.java index 3ba62a5e..d51cdd68 100644 --- a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/stubs/BankStub.java +++ b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/stubs/BankStub.java @@ -27,6 +27,18 @@ import org.springframework.integration.samples.loanbroker.domain.LoanRequest; */ public class BankStub { + private volatile String name; + + private float baseRate = 6.0f; + + public void setName(String name) { + this.name = name; + } + + public void setBaseRate(float baseRate) { + this.baseRate = baseRate; + } + /** * @param loanRequest the loan request * @return a LoanQuote for the given request @@ -38,10 +50,10 @@ public class BankStub { loanQuote.setQuoteDate(calendar.getTime()); calendar.add(Calendar.DAY_OF_YEAR, random.nextInt(25)); loanQuote.setExpirationDate(calendar.getTime()); - loanQuote.setRate(random.nextFloat() + 5); + loanQuote.setRate(random.nextFloat() + this.baseRate); loanQuote.setTerm(10 + random.nextInt(10)); loanQuote.setAmount(250000 + random.nextInt(40000)); - loanQuote.setLender("StubBank-" + random.nextInt(30)); + loanQuote.setLender(this.name); return loanQuote; } diff --git a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/stubs/CreditBureauStub.java b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/stubs/CreditBureauStub.java index 1a8dd015..ddd8ea5e 100644 --- a/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/stubs/CreditBureauStub.java +++ b/applications/loan-broker/src/main/java/org/springframework/integration/samples/loanbroker/stubs/CreditBureauStub.java @@ -20,7 +20,7 @@ import java.util.Random; import org.apache.log4j.Logger; -import org.springframework.integration.samples.loanbroker.domain.CreditScore; +import org.springframework.integration.samples.loanbroker.domain.CreditReport; import org.springframework.integration.samples.loanbroker.domain.LoanRequest; /** @@ -32,13 +32,12 @@ public class CreditBureauStub { /** * @param loanRequest the loan request - * @return the CreditScore for the given loan request + * @return the CreditReport for the given loan request */ - public CreditScore getCreditScore(LoanRequest loanRequest){ - Random random = new Random(); - int creditScore = 700 + random.nextInt(150); + public CreditReport getCreditReport(LoanRequest loanRequest) { + int creditScore = 600 + new Random().nextInt(250); logger.info("Credit Score: " + creditScore); - return new CreditScore(creditScore); + return new CreditReport(creditScore); } } diff --git a/applications/loan-broker/src/main/resources/META-INF/spring/integration/bank-channel-mappings-config.xml b/applications/loan-broker/src/main/resources/META-INF/spring/integration/bank-channel-mappings-config.xml deleted file mode 100644 index 8269ec2f..00000000 --- a/applications/loan-broker/src/main/resources/META-INF/spring/integration/bank-channel-mappings-config.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - diff --git a/applications/loan-broker/src/main/resources/META-INF/spring/integration/bootstrap-config/stubbed-loan-broker-multicast.xml b/applications/loan-broker/src/main/resources/META-INF/spring/integration/bootstrap-config/stubbed-loan-broker-multicast.xml index 0aecda95..174cc25d 100644 --- a/applications/loan-broker/src/main/resources/META-INF/spring/integration/bootstrap-config/stubbed-loan-broker-multicast.xml +++ b/applications/loan-broker/src/main/resources/META-INF/spring/integration/bootstrap-config/stubbed-loan-broker-multicast.xml @@ -5,7 +5,6 @@ - diff --git a/applications/loan-broker/src/main/resources/META-INF/spring/integration/bootstrap-config/stubbed-loan-broker.xml b/applications/loan-broker/src/main/resources/META-INF/spring/integration/bootstrap-config/stubbed-loan-broker.xml index 9344d9d8..44d1b8dc 100644 --- a/applications/loan-broker/src/main/resources/META-INF/spring/integration/bootstrap-config/stubbed-loan-broker.xml +++ b/applications/loan-broker/src/main/resources/META-INF/spring/integration/bootstrap-config/stubbed-loan-broker.xml @@ -5,6 +5,5 @@ - diff --git a/applications/loan-broker/src/main/resources/META-INF/spring/integration/loan-broker-config.xml b/applications/loan-broker/src/main/resources/META-INF/spring/integration/loan-broker-config.xml index 55055a27..69e42a01 100644 --- a/applications/loan-broker/src/main/resources/META-INF/spring/integration/loan-broker-config.xml +++ b/applications/loan-broker/src/main/resources/META-INF/spring/integration/loan-broker-config.xml @@ -11,26 +11,29 @@ http://www.springframework.org/schema/integration/spring-integration.xsd">
- + -
+
- + + + + + + + - + diff --git a/applications/loan-broker/src/main/resources/META-INF/spring/integration/shark-detector-config.xml b/applications/loan-broker/src/main/resources/META-INF/spring/integration/shark-detector-config.xml index 1edbaf88..991675f4 100644 --- a/applications/loan-broker/src/main/resources/META-INF/spring/integration/shark-detector-config.xml +++ b/applications/loan-broker/src/main/resources/META-INF/spring/integration/shark-detector-config.xml @@ -7,7 +7,7 @@ http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-2.0.xsd http://www.springframework.org/schema/integration/ip http://www.springframework.org/schema/integration/ip/spring-integration-ip-2.0.xsd"> - + diff --git a/applications/loan-broker/src/main/resources/META-INF/spring/integration/stub-services-config.xml b/applications/loan-broker/src/main/resources/META-INF/spring/integration/stub-services-config.xml index da820455..61b0fdc3 100644 --- a/applications/loan-broker/src/main/resources/META-INF/spring/integration/stub-services-config.xml +++ b/applications/loan-broker/src/main/resources/META-INF/spring/integration/stub-services-config.xml @@ -2,23 +2,32 @@ - - - + + + - + + + + + + + - + + + - - - + + + diff --git a/applications/loan-broker/src/test/java/org/springframework/integration/samples/loanbroker/demo/LoanBrokerDemo.java b/applications/loan-broker/src/test/java/org/springframework/integration/samples/loanbroker/demo/LoanBrokerDemo.java index 9fcc8523..be542ed0 100644 --- a/applications/loan-broker/src/test/java/org/springframework/integration/samples/loanbroker/demo/LoanBrokerDemo.java +++ b/applications/loan-broker/src/test/java/org/springframework/integration/samples/loanbroker/demo/LoanBrokerDemo.java @@ -46,9 +46,10 @@ public class LoanBrokerDemo { LoanRequest loanRequest = new LoanRequest(); loanRequest.setCustomer(new Customer()); LoanQuote loan = broker.getBestLoanQuote(loanRequest); - logger.info("\n********* Best Quote: " + loan); + logger.info("********* Best Quote *********\n" + loan); + System.out.println("=============================="); List loanQuotes = broker.getAllLoanQuotes(loanRequest); - logger.info("\n********* All Quotes: "); + logger.info("********* All Quotes *********"); for (LoanQuote loanQuote : loanQuotes) { logger.info(loanQuote); } diff --git a/applications/loan-broker/src/test/resources/log4j.xml b/applications/loan-broker/src/test/resources/log4j.xml index 3dc98d8d..915427b4 100644 --- a/applications/loan-broker/src/test/resources/log4j.xml +++ b/applications/loan-broker/src/test/resources/log4j.xml @@ -6,7 +6,7 @@ - +