diff web/src/luan/modules/web/HttpServicer.java @ 415:ce8e19567911

make LuanPropertyMeta a singleton
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 30 Apr 2015 06:04:17 -0600
parents 8937263f59f6
children 91af5337b9ae
line wrap: on
line diff
--- a/web/src/luan/modules/web/HttpServicer.java	Wed Apr 29 19:06:18 2015 -0600
+++ b/web/src/luan/modules/web/HttpServicer.java	Thu Apr 30 06:04:17 2015 -0600
@@ -119,8 +119,8 @@
 	}
 
 	private LuanTable requestTable() throws NoSuchMethodException {
-		LuanPropertyMeta meta = LuanPropertyMeta.newInstance();
-		LuanTable tbl = meta.newTable();
+		LuanTable tbl = LuanPropertyMeta.INSTANCE.newTable();
+		LuanTable getters = LuanPropertyMeta.INSTANCE.getters(tbl);
 		tbl.put("java",request);
 		LuanTable parameters = new NameMeta() {
 
@@ -128,7 +128,7 @@
 				return request.getParameter(name);
 			}
 
-			@Override protected Iterator keys() {
+			@Override protected Iterator keys(LuanTable tbl) {
 				return new EnumerationIterator(request.getParameterNames());
 			}
 /*
@@ -145,7 +145,7 @@
 				return request.getHeader(name);
 			}
 
-			@Override protected Iterator keys() {
+			@Override protected Iterator keys(LuanTable tbl) {
 				return new EnumerationIterator(request.getHeaderNames());
 			}
 /*
@@ -155,22 +155,22 @@
 */
 		}.newTable();
 		tbl.put( "headers", headers );
-		meta.getters().put( "method", new LuanJavaFunction(
+		getters.put( "method", new LuanJavaFunction(
 			HttpServletRequest.class.getMethod( "getMethod" ), request
 		) );
-		meta.getters().put( "path", new LuanJavaFunction(
+		getters.put( "path", new LuanJavaFunction(
 			HttpServletRequest.class.getMethod( "getRequestURI" ), request
 		) );
-		meta.getters().put( "server_name", new LuanJavaFunction(
+		getters.put( "server_name", new LuanJavaFunction(
 			HttpServletRequest.class.getMethod( "getServerName" ), request
 		) );
-		meta.getters().put( "url", new LuanJavaFunction(
+		getters.put( "url", new LuanJavaFunction(
 			HttpServicer.class.getMethod( "getURL" ), this
 		) );
-		meta.getters().put( "query_string", new LuanJavaFunction(
+		getters.put( "query_string", new LuanJavaFunction(
 			HttpServicer.class.getMethod( "getQueryString" ), this
 		) );
-		meta.getters().put( "remote_address", new LuanJavaFunction(
+		getters.put( "remote_address", new LuanJavaFunction(
 			HttpServletRequest.class.getMethod( "getRemoteAddr" ), request
 		) );
 		LuanTable cookies = new LuanMeta() {
@@ -182,7 +182,7 @@
 				return getCookieValue(request,name);
 			}
 
-			@Override protected Iterator<Object> keys() {
+			@Override protected Iterator<Object> keys(LuanTable tbl) {
 				return new Iterator<Object>() {
 					final Cookie[] cookies = request.getCookies();
 					int i = 0;
@@ -222,11 +222,10 @@
 					if( filename == null ) {
 						value = new String(part.getBytes());
 					} else {
-						LuanPropertyMeta partMeta = LuanPropertyMeta.newInstance();
-						LuanTable partTbl = partMeta.newTable();
+						LuanTable partTbl = LuanPropertyMeta.INSTANCE.newTable();
 						partTbl.put("filename",filename);
 						partTbl.put("content_type",part.getContentType());
-						partMeta.getters().put( "content", new LuanFunction() {
+						LuanPropertyMeta.INSTANCE.getters(partTbl).put( "content", new LuanFunction() {
 							@Override public Object call(LuanState luan,Object[] args) throws LuanException {
 								try {
 									InputStream in = part.getInputStream();
@@ -271,8 +270,9 @@
 	}
 
 	private LuanTable responseTable() throws NoSuchMethodException {
-		LuanPropertyMeta meta = LuanPropertyMeta.newInstance();
-		LuanTable tbl = meta.newTable();
+		LuanTable tbl = LuanPropertyMeta.INSTANCE.newTable();
+		LuanTable getters = LuanPropertyMeta.INSTANCE.getters(tbl);
+		LuanTable setters = LuanPropertyMeta.INSTANCE.setters(tbl);
 		tbl.put("java",response);
 		add( tbl, "send_redirect", String.class );
 		add( tbl, "send_error", Integer.TYPE, String.class );
@@ -282,7 +282,7 @@
 				return response.getHeader(name);
 			}
 
-			@Override protected Iterator keys() {
+			@Override protected Iterator keys(LuanTable tbl) {
 				return response.getHeaderNames().iterator();
 			}
 
@@ -312,25 +312,25 @@
 */
 		}.newTable();
 		tbl.put( "headers", headers );
-		meta.getters().put( "content_type", new LuanJavaFunction(
+		getters.put( "content_type", new LuanJavaFunction(
 			HttpServletResponse.class.getMethod( "getContentType" ), response
 		) );
-		meta.setters().put( "content_type", new LuanJavaFunction(
+		setters.put( "content_type", new LuanJavaFunction(
 			HttpServletResponse.class.getMethod( "setContentType", String.class ), response
 		) );
-		meta.getters().put( "character_encoding", new LuanJavaFunction(
+		getters.put( "character_encoding", new LuanJavaFunction(
 			HttpServletResponse.class.getMethod( "getCharacterEncoding" ), response
 		) );
-		meta.setters().put( "character_encoding", new LuanJavaFunction(
+		setters.put( "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 );
-		meta.getters().put( "status", new LuanJavaFunction(
+		getters.put( "status", new LuanJavaFunction(
 			HttpServletResponse.class.getMethod( "getStatus" ), response
 		) );
-		meta.setters().put( "status", new LuanJavaFunction(
+		setters.put( "status", new LuanJavaFunction(
 			HttpServletResponse.class.getMethod( "setStatus", Integer.TYPE ), response
 		) );
 		return tbl;
@@ -344,7 +344,7 @@
 				return request.getSession().getAttribute(name);
 			}
 
-			@Override protected Iterator keys() {
+			@Override protected Iterator keys(LuanTable tbl) {
 				return new EnumerationIterator(request.getSession().getAttributeNames());
 			}