001package com.randomnoun.common.jexl; 002 003/* (c) 2013 randomnoun. All Rights Reserved. This work is licensed under a 004 * BSD Simplified License. (http://www.randomnoun.com/bsd-simplified.html) 005 */ 006import java.io.ByteArrayOutputStream; 007import java.io.PrintWriter; 008import java.io.StringReader; 009 010import com.randomnoun.common.jexl.ast.TopLevelExpression; 011import com.randomnoun.common.jexl.parser.ExpressionParser; 012import com.randomnoun.common.jexl.parser.ParseException; 013import com.randomnoun.common.jexl.parser.TokenMgrError; 014import com.randomnoun.common.jexl.visitor.TreeDumper; 015 016/** 017 * Couple of methods to convert things to and from TopLevelExpressions. 018 * 019 * 020 * @author knoxg 021 */ 022public class ExpressionUtil 023{ 024 025 /** Convert Java expression String to a TopLevelExpression */ 026 public static TopLevelExpression stringToExpression(String expressionString) 027 throws java.text.ParseException 028 { 029 StringReader reader = new StringReader(expressionString); 030 ExpressionParser parser = new ExpressionParser(reader); 031 TopLevelExpression root = null; 032 033 try { 034 root = parser.TopLevelExpression(); 035 } catch (ParseException pe) { 036 throw new java.text.ParseException(pe.getMessage(), -1); 037 } catch (TokenMgrError tme) { 038 throw new java.text.ParseException(tme.getMessage(), -1); 039 } 040 041 return root; 042 } 043 044 /** Convert TopLevelExpression to a Java expression String */ 045 public static String expressionToString(TopLevelExpression expression) { 046 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 047 PrintWriter out = new PrintWriter(baos); 048 TreeDumper dumper = new TreeDumper(out); 049 dumper.visit(expression); 050 out.flush(); 051 return baos.toString(); 052 } 053 054}