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 {