View Javadoc

1   /*
2    * $Id: EndpointInfoExpressionEvaluator.java 11567 2008-04-11 13:08:05Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.util.expression;
12  
13  import org.mule.MuleServer;
14  import org.mule.config.i18n.CoreMessages;
15  import org.mule.endpoint.AbstractEndpointBuilder;
16  
17  import org.apache.commons.logging.Log;
18  import org.apache.commons.logging.LogFactory;
19  
20  /**
21   * Looks up information about a global endpoint
22   *
23   * @see org.mule.util.expression.ExpressionEvaluator
24   * @see org.mule.util.expression.ExpressionEvaluatorManager
25   */
26  public class EndpointInfoExpressionEvaluator implements ExpressionEvaluator
27  {
28      public static final String NAME = "endpoint";
29  
30      /**
31       * logger used by this class
32       */
33      protected transient final Log logger = LogFactory.getLog(EndpointInfoExpressionEvaluator.class);
34  
35      public Object evaluate(String expression, Object message)
36      {
37          int i = expression.indexOf(".");
38          String endpointName;
39          String property;
40          if(i > 0)
41          {
42              endpointName = expression.substring(0, i);
43              property = expression.substring(i + 1);
44          }
45          else
46          {
47              throw new IllegalArgumentException(CoreMessages.expressionMalformed(expression, getName()).getMessage());
48          }
49  
50          AbstractEndpointBuilder eb = (AbstractEndpointBuilder)MuleServer.getMuleContext().getRegistry().lookupEndpointBuilder(endpointName);
51          if(eb!=null)
52          {
53  
54              if(property.equalsIgnoreCase("address"))
55              {
56                  return eb.getEndpointBuilder().getEndpoint().getAddress();
57              }
58              else //TODO more properties
59              {
60                  throw new IllegalArgumentException(CoreMessages.expressionInvalidForProperty(property, expression).getMessage());
61              }
62          }
63          else
64          {
65              logger.warn("There is no endpoint registered with name: " + endpointName);
66              return null;
67          }
68      }
69  
70      /** {@inheritDoc} */
71      public String getName()
72      {
73          return NAME;
74      }
75  
76      /** {@inheritDoc} */
77      public void setName(String name)
78      {
79          throw new UnsupportedOperationException("setName");
80      }
81  }