1
2
3
4
5
6
7 package org.mule.example.loanbroker.bank;
8
9 import org.mule.api.endpoint.ImmutableEndpoint;
10 import org.mule.api.service.Service;
11 import org.mule.api.service.ServiceAware;
12 import org.mule.example.loanbroker.LocaleMessage;
13 import org.mule.example.loanbroker.messages.LoanBrokerQuoteRequest;
14 import org.mule.example.loanbroker.messages.LoanQuote;
15 import org.mule.service.ServiceCompositeMessageSource;
16
17 import java.io.Serializable;
18 import java.util.List;
19
20 import org.apache.commons.logging.Log;
21 import org.apache.commons.logging.LogFactory;
22
23
24
25
26
27
28 public class Bank implements ServiceAware, Serializable, BankService
29 {
30
31
32
33 private static final long serialVersionUID = 4108271137166107769L;
34
35
36
37
38 protected static final Log logger = LogFactory.getLog(Bank.class);
39
40 private String bankName;
41 private double primeRate;
42
43
44
45
46 private String endpoint;
47
48 public Bank()
49 {
50 this.primeRate = Math.random() * 10;
51 }
52
53 public Bank(String bankname)
54 {
55 this();
56 this.bankName = bankname;
57
58
59 this.endpoint = bankName;
60 }
61
62
63
64 public void setService(Service service)
65 {
66 this.bankName = service.getName();
67
68 if (!(service.getMessageSource() instanceof ServiceCompositeMessageSource))
69 {
70 throw new IllegalStateException("Only 'ServiceCompositeMessageSource' is supported");
71 }
72
73 List endpoints = ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoints();
74 if ((endpoints == null) || (endpoints.size() != 1))
75 {
76 throw new IllegalArgumentException("Bank is expected to have exactly 1 incoming endpoint.");
77 }
78
79
80 this.endpoint = ((ImmutableEndpoint) endpoints.get(0)).getName();
81 }
82
83 public LoanQuote getLoanQuote(LoanBrokerQuoteRequest request)
84 {
85 LoanQuote quote = new LoanQuote();
86 quote.setBankName(getBankName());
87 quote.setInterestRate(primeRate);
88 logger.info(LocaleMessage.receivedRate(quote));
89
90 return quote;
91 }
92
93 public String getBankName()
94 {
95 return bankName;
96 }
97
98 public void setBankName(String bankName)
99 {
100 this.bankName = bankName;
101 }
102
103 public double getPrimeRate()
104 {
105 return primeRate;
106 }
107
108 public void setPrimeRate(double primeRate)
109 {
110 this.primeRate = primeRate;
111 }
112
113 public String getEndpoint()
114 {
115 return endpoint;
116 }
117 public void setEndpoint(String endpoint)
118 {
119 this.endpoint = endpoint;
120 }
121 }