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