Mercurial Hosting > luan
diff web/src/luan/modules/web/HttpServicer.java @ 427:dae264ad6a7b
fix LuanTable.put() to use metatables
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 01 May 2015 19:29:07 -0600 |
parents | 23a93c118042 |
children | df95199ca4c0 |
line wrap: on
line diff
--- a/web/src/luan/modules/web/HttpServicer.java Fri May 01 18:44:20 2015 -0600 +++ b/web/src/luan/modules/web/HttpServicer.java Fri May 01 19:29:07 2015 -0600 @@ -74,9 +74,9 @@ LuanTable module = (LuanTable)PackageLuan.require(luan,"luan:web/Http"); HttpServicer lib = new HttpServicer(request,response); try { - module.put( "request", lib.requestTable() ); - module.put( "response", lib.responseTable() ); - module.put( "session", lib.sessionTable() ); + module.put( luan, "request", lib.requestTable() ); + module.put( luan, "response", lib.responseTable() ); + module.put( luan, "session", lib.sessionTable() ); /* module.put( "write", new LuanJavaFunction( HttpServicer.class.getMethod( "text_write", LuanState.class, new Object[0].getClass() ), lib @@ -119,7 +119,7 @@ private LuanTable requestTable() throws NoSuchMethodException { LuanTable tbl = LuanPropertyMeta.INSTANCE.newTable(); LuanTable getters = LuanPropertyMeta.INSTANCE.getters(tbl); - tbl.put("java",request); + tbl.rawPut("java",request); LuanTable parameters = new NameMeta() { @Override Object get(String name) { @@ -135,7 +135,7 @@ } }.newTable(); - tbl.put( "parameters", parameters ); + tbl.rawPut( "parameters", parameters ); add( tbl, "get_parameter_values", String.class ); LuanTable headers = new NameMeta() { @@ -152,23 +152,23 @@ } }.newTable(); - tbl.put( "headers", headers ); - getters.put( "method", new LuanJavaFunction( + tbl.rawPut( "headers", headers ); + getters.rawPut( "method", new LuanJavaFunction( HttpServletRequest.class.getMethod( "getMethod" ), request ) ); - getters.put( "path", new LuanJavaFunction( + getters.rawPut( "path", new LuanJavaFunction( HttpServletRequest.class.getMethod( "getRequestURI" ), request ) ); - getters.put( "server_name", new LuanJavaFunction( + getters.rawPut( "server_name", new LuanJavaFunction( HttpServletRequest.class.getMethod( "getServerName" ), request ) ); - getters.put( "url", new LuanJavaFunction( + getters.rawPut( "url", new LuanJavaFunction( HttpServicer.class.getMethod( "getURL" ), this ) ); - getters.put( "query_string", new LuanJavaFunction( + getters.rawPut( "query_string", new LuanJavaFunction( HttpServicer.class.getMethod( "getQueryString" ), this ) ); - getters.put( "remote_address", new LuanJavaFunction( + getters.rawPut( "remote_address", new LuanJavaFunction( HttpServletRequest.class.getMethod( "getRemoteAddr" ), request ) ); LuanTable cookies = new LuanMeta() { @@ -202,7 +202,7 @@ } }.newTable(); - tbl.put( "cookies", cookies ); + tbl.rawPut( "cookies", cookies ); String contentType = request.getContentType(); if( contentType!=null && contentType.startsWith("multipart/form-data") ) { @@ -221,9 +221,9 @@ value = new String(part.getBytes()); } else { LuanTable partTbl = LuanPropertyMeta.INSTANCE.newTable(); - partTbl.put("filename",filename); - partTbl.put("content_type",part.getContentType()); - LuanPropertyMeta.INSTANCE.getters(partTbl).put( "content", new LuanFunction() { + partTbl.rawPut("filename",filename); + partTbl.rawPut("content_type",part.getContentType()); + LuanPropertyMeta.INSTANCE.getters(partTbl).rawPut( "content", new LuanFunction() { @Override public Object call(LuanState luan,Object[] args) throws LuanException { try { InputStream in = part.getInputStream(); @@ -237,7 +237,7 @@ } ); value = partTbl; } - parameters.put(name,value); + parameters.rawPut(name,value); Object old = map.get(name); if( old == null ) { map.put(name,value); @@ -251,8 +251,8 @@ map.put(name,new Object[]{old,value}); } } - tbl.put( "parameters", parameters ); - tbl.put( "get_parameter_values", new LuanFunction() { + tbl.rawPut( "parameters", parameters ); + tbl.rawPut( "get_parameter_values", new LuanFunction() { @Override public Object call(LuanState luan,Object[] args) throws LuanException { return args.length==0 ? null : map.get(args[0]); } @@ -271,7 +271,7 @@ LuanTable tbl = LuanPropertyMeta.INSTANCE.newTable(); LuanTable getters = LuanPropertyMeta.INSTANCE.getters(tbl); LuanTable setters = LuanPropertyMeta.INSTANCE.setters(tbl); - tbl.put("java",response); + tbl.rawPut("java",response); add( tbl, "send_redirect", String.class ); add( tbl, "send_error", Integer.TYPE, String.class ); LuanTable headers = new NameMeta() { @@ -309,26 +309,26 @@ } }.newTable(); - tbl.put( "headers", headers ); - getters.put( "content_type", new LuanJavaFunction( + tbl.rawPut( "headers", headers ); + getters.rawPut( "content_type", new LuanJavaFunction( HttpServletResponse.class.getMethod( "getContentType" ), response ) ); - setters.put( "content_type", new LuanJavaFunction( + setters.rawPut( "content_type", new LuanJavaFunction( HttpServletResponse.class.getMethod( "setContentType", String.class ), response ) ); - getters.put( "character_encoding", new LuanJavaFunction( + getters.rawPut( "character_encoding", new LuanJavaFunction( HttpServletResponse.class.getMethod( "getCharacterEncoding" ), response ) ); - setters.put( "character_encoding", new LuanJavaFunction( + setters.rawPut( "character_encoding", new LuanJavaFunction( HttpServletResponse.class.getMethod( "setCharacterEncoding", String.class ), response ) ); add( tbl, "text_writer" ); add( tbl, "set_cookie", String.class, String.class, Boolean.TYPE, String.class ); add( tbl, "remove_cookie", String.class, String.class ); - getters.put( "status", new LuanJavaFunction( + getters.rawPut( "status", new LuanJavaFunction( HttpServletResponse.class.getMethod( "getStatus" ), response ) ); - setters.put( "status", new LuanJavaFunction( + setters.rawPut( "status", new LuanJavaFunction( HttpServletResponse.class.getMethod( "setStatus", Integer.TYPE ), response ) ); return tbl; @@ -362,12 +362,12 @@ } }.newTable(); - tbl.put( "attributes", attributes ); + tbl.rawPut( "attributes", attributes ); return tbl; } private void add(LuanTable t,String method,Class<?>... parameterTypes) throws NoSuchMethodException { - t.put( method, new LuanJavaFunction(HttpServicer.class.getMethod(method,parameterTypes),this) ); + t.rawPut( method, new LuanJavaFunction(HttpServicer.class.getMethod(method,parameterTypes),this) ); } /* public void text_write(LuanState luan,Object... args) throws LuanException, IOException {