1 33 package net.sf.jga.fn.property; 34 35 import java.lang.reflect.Constructor ; 36 import java.lang.reflect.Field ; 37 import java.lang.reflect.Method ; 38 import net.sf.jga.fn.BinaryFunctor; 39 import net.sf.jga.fn.UnaryFunctor; 40 import net.sf.jga.fn.adaptor.Identity; 41 import net.sf.jga.fn.Generator; 42 43 49 50 public final class PropertyFunctors { 51 53 static public <T1,T2> BinaryFunctor<T1,T2,Object []> arrayBinary() { 54 return new ArrayBinary<T1,T2>(); 55 } 56 57 58 60 static public <T> UnaryFunctor<T,Object []> arrayUnary() { 61 return new ArrayUnary<T>(); 62 } 63 64 65 67 static public <T,R> UnaryFunctor<T,R> cast(Class <R> r) { 68 return new Cast<T,R>(r); 69 } 70 71 72 74 static public <T,V> UnaryFunctor<T,Boolean > compareProperty(Class <T> t, String name, V value) { 75 return new CompareProperty<T,V>(t, name, value); 76 } 77 78 79 81 static public <T,V> UnaryFunctor<T,Boolean > 82 compareProperty(Class <T> t, String name, BinaryFunctor<V,V,Boolean > pred, V value) 83 { 84 return new CompareProperty<T,V>(t, name, pred, value); 85 } 86 87 88 90 static public <R> UnaryFunctor<Object [],R> construct(Constructor <R> ctor) { 91 return new Construct<R>(ctor); 92 } 93 94 95 97 static public <R> UnaryFunctor<Object [],R> construct(Class <R> r, Class ... argclasses) { 98 return new Construct<R>(r, argclasses); 99 } 100 101 102 104 static public <R> Generator<R> constructDefault(Class <R> r) { 105 return new ConstructDefault<R>(r); 106 } 107 108 109 111 static public <T,R> UnaryFunctor<T,R> constructUnary(Class <R> r, Class <T> t) { 112 return new ConstructUnary<T,R>(t,r); 113 } 114 115 116 118 static public <T,R> UnaryFunctor<T,R> getField(Class <T> t,String name) { 119 return new GetField<T,R>(t, name); 120 } 121 122 123 125 static public <T,R> UnaryFunctor<T,R> getField(Class <T> t, Field field) { 126 return new GetField<T,R>(t, field); 127 } 128 129 130 132 static public <T,R> UnaryFunctor<T,R> getField(Field field) { 133 return new GetField<T,R>(field); 134 } 135 136 137 139 static public <T,R> UnaryFunctor<T,R> getProperty(Class <T> t,String name) { 140 return new GetProperty<T,R>(t, name); 141 } 142 143 144 146 static public <T,R> UnaryFunctor<T,R> getProperty(Class <T> t, String name, Class <R> hint) { 147 return new GetProperty<T,R>(t,name); 148 } 149 150 151 153 static public <T> UnaryFunctor<T,Boolean > instanceOf(Class <?> type) { 154 return new InstanceOf<T>(type); 155 } 156 157 158 161 static public <T1,T2,R> BinaryFunctor<T1,Object [],R> 162 invokeMethod(Class <T1> t1, String name, Class <T2> t2) 164 { 165 return new InvokeMethod<T1,R>(t1, name, t2) 166 ; 168 } 169 170 171 173 static public <T,R> BinaryFunctor<T,Object [],R> invokeMethod(Class <T> t, Method method) { 174 return new InvokeMethod<T,R>(t, method); 175 } 176 177 178 180 static public <T,R> BinaryFunctor<T,Object [],R> 181 invokeMethod(Class <T> t, String name, Class ... argtypes) { 182 return new InvokeMethod<T,R>(t, name, argtypes); 183 } 184 185 186 188 static public <T,R> UnaryFunctor<T,R> invokeNoArgMethod(Class <T> t, Method method) { 189 return new InvokeNoArgMethod<T,R>(t, method); 190 } 191 192 193 195 static public <T,R> UnaryFunctor<T,R> invokeNoArgMethod(Class <T> t, String name) { 196 return new InvokeNoArgMethod<T,R>(t, name); 197 } 198 199 200 202 static public <T1,T2> BinaryFunctor<T1,T2,T2> setField(Field field) { 203 return new SetField<T1,T2>(field); 204 } 205 206 208 static public <T1,T2> BinaryFunctor<T1,T2,T2> setField(Class <T1> t1, Field field) { 209 return new SetField<T1,T2>(t1, field); 210 } 211 212 214 static public <T1,T2> BinaryFunctor<T1,T2,T2> setField(Class <T1> t1, Field field, Class <T2> t2) { 215 return new SetField<T1,T2>(t1, field, t2); 216 } 217 218 219 221 static public <T1,T2> BinaryFunctor<T1,T2,T2> setField(Class <T1> t1, String name, Class <T2> t2) { 222 return new SetField<T1,T2>(t1, name, t2); 223 } 224 225 226 228 static public <T1,T2> BinaryFunctor<T1,T2,T2> setProperty(Class <T1> t1,String name,Class <T2> t2){ 229 return new SetProperty<T1,T2>(t1, name, t2); 230 } 231 } 232 | Popular Tags |