/*
* JLibs: Common Utilities for Java
* Copyright (C) 2009 Santhosh Kumar T <santhosh.tekuri@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package jlibs.nio.http.expr;
import java.util.ArrayList;
/**
* @author Santhosh Kumar Tekuri
*/
public class Variable implements Expression{
public ArrayList<Expression> children = new ArrayList<>();
@Override
public Object evaluate(Object root, Object current){
current = root;
if(current==null)
return null;
for(Expression child: children){
current = child.evaluate(root, current);
if(current==null)
return null;
}
return current;
}
@Override
public String toString(){
StringBuilder builder = new StringBuilder();
for(Expression child: children){
if(child instanceof GetField){
if(builder.length()>0)
builder.append('.');
}
if(child instanceof Lookup)
builder.append('[');
builder.append(child);
if(child instanceof Lookup)
builder.append(']');
}
return builder.toString();
}
}