View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.example.loanbroker.transformers;
8   
9   import org.mule.api.MuleMessage;
10  import org.mule.api.transformer.TransformerException;
11  import org.mule.example.loanbroker.messages.Customer;
12  import org.mule.example.loanbroker.messages.CustomerQuoteRequest;
13  import org.mule.transformer.AbstractMessageTransformer;
14  import org.mule.transformer.types.DataTypeFactory;
15  
16  /**
17   * Converts parameters on the message into a CustomerQuoteRequest object
18   */
19  public class RestRequestToCustomerRequest extends AbstractMessageTransformer
20  {
21  
22      public RestRequestToCustomerRequest()
23      {
24          setReturnDataType(DataTypeFactory.create(CustomerQuoteRequest.class));
25      }
26  
27      @Override
28      public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException
29      {
30          String name;
31          int ssn;
32          double amount;
33          int duration;
34  
35          try
36          {
37              name = getParam(message, "customerName");
38              ssn = Integer.parseInt(getParam(message, "ssn"));
39              amount = Double.parseDouble(getParam(message, "loanAmount"));
40              duration = Integer.parseInt(getParam(message, "loanDuration"));
41          }
42          catch (Exception e)
43          {
44              throw new TransformerException(this, e);
45          }
46  
47          Customer c = new Customer(name, ssn);
48          CustomerQuoteRequest request = new CustomerQuoteRequest(c, amount, duration);
49          return request;
50      }
51  
52      protected String getParam(MuleMessage message, String name) throws NullPointerException
53      {
54          String value = message.getOutboundProperty(name);
55          if (value == null)
56          {
57              throw new IllegalArgumentException("Parameter '" + name + "' must be set on the request");
58          }
59          return value;
60      }
61  }