1 29 30 package com.caucho.quercus.function; 31 32 import com.caucho.quercus.env.Callback; 33 import com.caucho.quercus.env.CallbackFunction; 34 import com.caucho.quercus.env.DefaultValue; 35 import com.caucho.quercus.env.Env; 36 import com.caucho.quercus.env.Value; 37 import com.caucho.quercus.expr.Expr; 38 39 public class CallbackMarshal extends Marshal 40 { 41 public static final Marshal MARSHAL = new CallbackMarshal(); 42 43 public boolean isReadOnly() 44 { 45 return true; 46 } 47 48 public Object marshal(Env env, Expr expr, Class expectedClass) 49 { 50 return marshal(env, expr.eval(env), expectedClass); 51 } 52 53 public Object marshal(Env env, Value value, Class expectedClass) 54 { 55 Callback cb = env.createCallback(value); 56 57 59 if (cb != null) 60 return cb; 61 else if (value instanceof DefaultValue) 62 return null; 63 else 64 return new CallbackFunction(env, value.toString()); } 66 67 public Value unmarshal(Env env, Object value) 68 { 69 throw new UnsupportedOperationException (); 70 } 71 } 72 | Popular Tags |