package com.nominanuda.rhino.lang; import static com.nominanuda.zen.obj.wrap.Wrap.WF; import java.util.function.Function; import com.nominanuda.zen.common.Check; import com.nominanuda.zen.obj.Obj; import com.nominanuda.zen.obj.Stru; import com.nominanuda.zen.obj.wrap.ObjWrapper; public class Wrapper2Script2Wrapper<WRAPPER extends ObjWrapper> implements Function<WRAPPER, WRAPPER> { private final Function<Obj, Stru> fnc; private final Class<WRAPPER> clz; public Wrapper2Script2Wrapper(Function<Obj, Stru> fnc, Class<WRAPPER> clz) { this.fnc = Check.notNull(fnc, "wrapped script is null!"); this.clz = clz; } @Override public WRAPPER apply(WRAPPER t) { if (t != null) { Stru result = fnc.apply(t.unwrap()); if (result != null) { return WF.wrap(result.asObj(), clz); } } return null; } }