comparison src/luan/LuanJavaFunction.java @ 1259:e8020216dee7

add Luan.to_luan and fix multipart/form-data
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 23 Sep 2018 17:58:40 -0600
parents aa8517d7c065
children 9fa8b8389578
comparison
equal deleted inserted replaced
1258:e4d7a3114fa8 1259:e8020216dee7
223 if( !m.isLuan() && rtnType.isArray() && !rtnType.getComponentType().isPrimitive() ) { 223 if( !m.isLuan() && rtnType.isArray() && !rtnType.getComponentType().isPrimitive() ) {
224 return RTN_ARRAY; 224 return RTN_ARRAY;
225 } 225 }
226 return RTN_SAME; 226 return RTN_SAME;
227 } 227 }
228 /* 228
229 private static boolean isNumber(Class rtnType) {
230 return rtnType == Short.TYPE
231 || rtnType == Integer.TYPE
232 || rtnType == Long.TYPE
233 || rtnType == Float.TYPE
234 || rtnType == Double.TYPE
235 ;
236 }
237 */
238 private interface ArgConverter { 229 private interface ArgConverter {
239 public Object convert(LuanState luan,Object obj) throws LuanException; 230 public Object convert(LuanState luan,Object obj) throws LuanException;
240 } 231 }
241 232
242 private static final ArgConverter ARG_SAME = new ArgConverter() { 233 private static final ArgConverter ARG_SAME = new ArgConverter() {
346 } 337 }
347 }; 338 };
348 339
349 private static final ArgConverter ARG_TABLE = new ArgConverter() { 340 private static final ArgConverter ARG_TABLE = new ArgConverter() {
350 public Object convert(LuanState luan,Object obj) { 341 public Object convert(LuanState luan,Object obj) {
351 if( obj == null ) 342 LuanTable tbl = Luan.toTable(obj);
352 return null; 343 return tbl!=null ? tbl : obj;
353 if( obj instanceof List ) {
354 return new LuanTable((List)obj);
355 }
356 if( obj instanceof Map ) {
357 return new LuanTable((Map)obj);
358 }
359 if( obj instanceof Set ) {
360 return new LuanTable((Set)obj);
361 }
362 Class cls = obj.getClass();
363 if( cls.isArray() ) {
364 if( cls.getComponentType().isPrimitive() ) {
365 int len = Array.getLength(obj);
366 List list = new ArrayList();
367 for( int i=0; i<len; i++ ) {
368 list.add(Array.get(obj,i));
369 }
370 return new LuanTable(list);
371 } else {
372 Object[] a = (Object[])obj;
373 return new LuanTable(Arrays.asList(a));
374 }
375 }
376 return obj;
377 } 344 }
378 @Override public String toString() { 345 @Override public String toString() {
379 return "ARG_TABLE"; 346 return "ARG_TABLE";
380 } 347 }
381 }; 348 };