comparison core/src/luan/modules/JavaLuan.java @ 578:60c549d43988

remove LuanState.exception()
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 14 Jul 2015 17:40:48 -0600
parents 4723d22062ce
children 859c0dedc8b6
comparison
equal deleted inserted replaced
577:d7a85fbe15f1 578:60c549d43988
41 } 41 }
42 } 42 }
43 43
44 private static void checkJava(LuanState luan) throws LuanException { 44 private static void checkJava(LuanState luan) throws LuanException {
45 if( !luan.hasJava() ) 45 if( !luan.hasJava() )
46 throw luan.exception("Java isn't allowed"); 46 throw new LuanException(luan,"Java isn't allowed");
47 } 47 }
48 48
49 static final Object FAIL = new Object(); 49 static final Object FAIL = new Object();
50 50
51 public static Object __index(LuanState luan,Object obj,Object key,boolean canReturnFail) throws LuanException { 51 public static Object __index(LuanState luan,Object obj,Object key,boolean canReturnFail) throws LuanException {
92 } 92 }
93 Integer i = Luan.asInteger(key); 93 Integer i = Luan.asInteger(key);
94 if( i != null ) { 94 if( i != null ) {
95 return Array.get(obj,i); 95 return Array.get(obj,i);
96 } 96 }
97 // throw luan.exception("invalid member '"+key+"' for java array: "+obj); 97 // throw new LuanException(luan,"invalid member '"+key+"' for java array: "+obj);
98 } else if( key instanceof String ) { 98 } else if( key instanceof String ) {
99 String name = (String)key; 99 String name = (String)key;
100 if( "instanceof".equals(name) ) { 100 if( "instanceof".equals(name) ) {
101 return new LuanJavaFunction(instanceOf,new InstanceOf(obj)); 101 return new LuanJavaFunction(instanceOf,new InstanceOf(obj));
102 } else { 102 } else {
108 } 108 }
109 } 109 }
110 //System.out.println("invalid member '"+key+"' for java object: "+obj); 110 //System.out.println("invalid member '"+key+"' for java object: "+obj);
111 if( canReturnFail ) 111 if( canReturnFail )
112 return FAIL; 112 return FAIL;
113 throw luan.exception( "invalid index for java "+cls+" in '"+luan.context()+"'" ); 113 throw new LuanException(luan, "invalid index for java "+cls+" in '"+luan.context()+"'" );
114 } 114 }
115 115
116 private static Object member(Object obj,List<Member> members) throws LuanException { 116 private static Object member(Object obj,List<Member> members) throws LuanException {
117 try { 117 try {
118 if( members.size()==1 ) { 118 if( members.size()==1 ) {
154 throw new RuntimeException("not field '"+name+"' of "+obj); 154 throw new RuntimeException("not field '"+name+"' of "+obj);
155 setMember(obj,members,value); 155 setMember(obj,members,value);
156 return; 156 return;
157 } 157 }
158 } 158 }
159 // throw luan.exception("invalid member '"+key+"' for: "+obj); 159 // throw new LuanException(luan,"invalid member '"+key+"' for: "+obj);
160 } else { 160 } else {
161 cls = obj.getClass(); 161 cls = obj.getClass();
162 if( cls.isArray() ) { 162 if( cls.isArray() ) {
163 Integer i = Luan.asInteger(key); 163 Integer i = Luan.asInteger(key);
164 if( i != null ) { 164 if( i != null ) {
165 Array.set(obj,i,value); 165 Array.set(obj,i,value);
166 return; 166 return;
167 } 167 }
168 // throw luan.exception("invalid member '"+key+"' for java array: "+obj); 168 // throw new LuanException(luan,"invalid member '"+key+"' for java array: "+obj);
169 } else if( key instanceof String ) { 169 } else if( key instanceof String ) {
170 String name = (String)key; 170 String name = (String)key;
171 List<Member> members = getMembers(cls,name); 171 List<Member> members = getMembers(cls,name);
172 if( !members.isEmpty() ) { 172 if( !members.isEmpty() ) {
173 if( members.size() != 1 ) 173 if( members.size() != 1 )
175 setMember(obj,members,value); 175 setMember(obj,members,value);
176 return; 176 return;
177 } 177 }
178 } 178 }
179 } 179 }
180 throw luan.exception( "invalid index for java "+cls+" in '"+luan.context()+"'" ); 180 throw new LuanException(luan, "invalid index for java "+cls+" in '"+luan.context()+"'" );
181 } 181 }
182 182
183 private static void setMember(Object obj,List<Member> members,Object value) { 183 private static void setMember(Object obj,List<Member> members,Object value) {
184 Field field = (Field)members.get(0); 184 Field field = (Field)members.get(0);
185 try { 185 try {
376 for( LuanJavaFunction fn : fnMap.get(args.length) ) { 376 for( LuanJavaFunction fn : fnMap.get(args.length) ) {
377 try { 377 try {
378 return fn.rawCall(luan,args); 378 return fn.rawCall(luan,args);
379 } catch(IllegalArgumentException e) {} 379 } catch(IllegalArgumentException e) {}
380 } 380 }
381 throw luan.exception("no method matched args: "+Arrays.asList(args)); 381 throw new LuanException(luan,"no method matched args: "+Arrays.asList(args));
382 } 382 }
383 } 383 }
384 384
385 private static class InstanceOf { 385 private static class InstanceOf {
386 private final Object obj; 386 private final Object obj;
413 413
414 public Object assertClass(LuanState luan,Object v) throws LuanException { 414 public Object assertClass(LuanState luan,Object v) throws LuanException {
415 if( !cls.isInstance(v) ) { 415 if( !cls.isInstance(v) ) {
416 String got = v.getClass().getSimpleName(); 416 String got = v.getClass().getSimpleName();
417 String expected = cls.getSimpleName(); 417 String expected = cls.getSimpleName();
418 throw luan.exception("bad argument #1 ("+expected+" expected, got "+got+")"); 418 throw new LuanException(luan,"bad argument #1 ("+expected+" expected, got "+got+")");
419 } 419 }
420 return v; 420 return v;
421 } 421 }
422 } 422 }
423 private static final Method assertClass; 423 private static final Method assertClass;