Coverage Report - org.mule.expression.MuleExpressionEvaluator
 
Classes in this File Line Coverage Branch Coverage Complexity
MuleExpressionEvaluator
0%
0/20
0%
0/8
2
 
 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.expression;
 8  
 
 9  
 import org.mule.api.MuleContext;
 10  
 import org.mule.api.MuleMessage;
 11  
 import org.mule.api.context.MuleContextAware;
 12  
 import org.mule.api.expression.ExpressionEvaluator;
 13  
 
 14  
 /**
 15  
  * This evaluator provide a powerful expression language for querying mule information
 16  
  * at runtime.  It provides a unified language for querying message properties, attachments
 17  
  * payload, Mule context information such as the current service or endpoint and access to
 18  
  * the registry. Here are some examples:
 19  
  *
 20  
  * #[mule:message.headers(foo, bar)] - retrieves two headers 'foo' and 'bar' and returns a Map.
 21  
  *
 22  
  * #[mule:message.attachments-list(attach1, attach2*)] - retrieves two named attachments in a List.  The star on 'attach2'
 23  
  * indicates that it is optional
 24  
  *
 25  
  * #[mule:message.headers(all)] - retrieves all headers and returns as a Map.
 26  
  *
 27  
  * #[mule:message.payload(org.dom4j.Document)] - return the payload and convert it to a org.dom4j.Document.
 28  
  *
 29  
  * #[mule:message.correlationId] - return the the correlationId on the message
 30  
  *
 31  
  * #[mule:message.map-payload(foo)] - expects a Map payload object and will retrive a property 'foo' from the map.
 32  
  *
 33  
  * #[mule.context.serviceName] - returns the current service Name
 34  
  *
 35  
  * #[mule.context.modelName] - returns the current model Name
 36  
  *
 37  
  * #[mule.context.workingDir] - returns the working Directory
 38  
  *
 39  
  * #[mule.context.serverId] - returns the current server ID
 40  
  *
 41  
  * #[mule.registry.apple] - returns an object called 'apple' from the registry
 42  
  *
 43  
  * #[mule.registry.apple*] - returns an object called 'apple' from the registry but is optional
 44  
  *
 45  
  * #[mule.registry.apple.washed] - returns the property 'washed on an object called 'apple' in the registry
 46  
  *
 47  
  */
 48  0
 public class MuleExpressionEvaluator implements ExpressionEvaluator, MuleContextAware
 49  
 {
 50  
     public static final String NAME = "mule";
 51  
 
 52  
     private MuleContext muleContext;
 53  
 
 54  
     public void setMuleContext(MuleContext context)
 55  
     {
 56  0
         this.muleContext = context;
 57  0
     }
 58  
 
 59  
     public Object evaluate(String expression, MuleMessage message)
 60  
     {
 61  0
         if(expression==null)
 62  
         {
 63  0
             return message;
 64  
         }
 65  0
         int i = expression.indexOf(".");
 66  
 
 67  0
         ExpressionConfig config = getExpressionConfig(expression.substring(0, i), expression.substring(i+1));
 68  0
         String fullExpression = config.getFullExpression(muleContext.getExpressionManager());
 69  0
         return muleContext.getExpressionManager().evaluate(fullExpression, message);
 70  
     }
 71  
 
 72  
 
 73  
     protected ExpressionConfig getExpressionConfig(String eval, String expression)
 74  
     {
 75  
 
 76  0
         int i = expression.indexOf("(");
 77  0
         int x = expression.indexOf(".");
 78  0
         if(x > 0 && x < i)
 79  
         {
 80  0
             eval = expression.substring(0, x);
 81  0
             expression = expression.substring(x+1);
 82  
         }
 83  
 
 84  0
         if(i > 0)
 85  
         {
 86  0
             eval = expression.substring(0, i);
 87  0
             expression=expression.substring(i+1, expression.length()-1);
 88  
         }
 89  0
         return new ExpressionConfig(expression, eval,  null);
 90  
     }
 91  
 
 92  
     public void setName(String name)
 93  
     {
 94  0
         throw new UnsupportedOperationException();
 95  
     }
 96  
 
 97  
     public String getName()
 98  
     {
 99  0
         return NAME;
 100  
     }
 101  
 }