package org.elasticsearch.index.fields;
import org.elasticsearch.index.mapper.DocumentMapper;
import org.elasticsearch.index.mapper.ParseContext.Document;
import org.elasticsearch.index.mapper.object.ObjectMapper;
public final class FieldParametersWrapper extends BaseScriptParametersWrapper
{
private final BaseScriptParametersWrapper _parent;
private final ObjectMapper _mapper;
public FieldParametersWrapper(final BaseScriptParametersWrapper parent, final ObjectMapper mapper)
{
_parent = parent;
_mapper = mapper;
}
@Override
protected Document doc()
{
return _parent.doc();
}
@Override
protected DocumentMapper mapper()
{
return _parent.mapper();
}
@Override
protected boolean returnFieldData()
{
return _parent.returnFieldData();
}
@Override
protected String path()
{
return _mapper.fullPath();
}
@Override
public Object get(final Object key)
{
if (key == null) return null;
try
{
String path = _mapper.fullPath() + "." + (String)key;
ObjectMapper obj = mapper().objectMappers().get(path);
if (obj != null)
{
return new FieldParametersWrapper(this, obj);
}
else
{
return super.get(key);
}
}
catch (RuntimeException ex)
{
throw ex;
}
}
}