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.transformer.simple;
8   
9   import org.mule.api.transformer.TransformerException;
10  import org.mule.config.i18n.MessageFactory;
11  import org.mule.transformer.AbstractTransformer;
12  import org.mule.transformer.types.DataTypeFactory;
13  
14  import java.util.Map;
15  
16  /**
17   * <code>MapLookup</code> looks up and returns an object from a Map based on a key.
18   */
19  
20  public class MapLookup extends AbstractTransformer
21  {
22  
23      protected volatile Object key;
24  
25      public MapLookup()
26      {
27          registerSourceType(DataTypeFactory.create(Map.class));
28          setReturnDataType(DataTypeFactory.OBJECT);
29      }
30  
31      @Override
32      public Object doTransform(Object src, String encoding) throws TransformerException
33      {
34          if (src instanceof Map)
35          {
36              if (key != null)
37              {
38                  return ((Map) src).get(key);
39              }
40              else
41              {
42                  throw new TransformerException(MessageFactory
43                          .createStaticMessage("Property 'key' must be set in order to use this transformer."));
44              }
45          }
46          else
47          {
48              throw new TransformerException(MessageFactory
49                      .createStaticMessage("Message to transform must be of type java.util.Map"));
50          }
51      }
52  
53      public Object getKey()
54      {
55          return key;
56      }
57  
58      public void setKey(Object key)
59      {
60          this.key = key;
61      }
62  
63  }