X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fsession%2FHTTPAdapters.java;h=08c82210bdef241b2b93b03ea1df244fc55cfc25;hb=63e0ee1fb8038eb6d8f0190cf38c3b3ab2727216;hp=fec51f6efcaf8512ae02b456b626d1e3e7afa01a;hpb=8b4d9fadd2d25d8e80785d643d3b397e8797b92d;p=mir.git diff --git a/source/mir/session/HTTPAdapters.java b/source/mir/session/HTTPAdapters.java index fec51f6e..08c82210 100755 --- a/source/mir/session/HTTPAdapters.java +++ b/source/mir/session/HTTPAdapters.java @@ -29,25 +29,44 @@ */ package mir.session; -import java.util.Arrays; -import java.util.List; -import java.util.Vector; +import java.util.*; +import java.net.InetAddress; +import java.net.UnknownHostException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; -import org.apache.commons.fileupload.FileItem; - import mir.util.HTTPParsedRequest; +import org.apache.commons.fileupload.FileItem; public class HTTPAdapters { public static class HTTPRequestAdapter implements Request { private HttpServletRequest request; + private String cachedHostName = null; public HTTPRequestAdapter(HttpServletRequest aRequest) { request = aRequest; } public String getHeader(String aHeaderName) { + if (aHeaderName.equals("ip")) + return request.getRemoteAddr(); + + if (aHeaderName.equals("hostname")) { + if (aHeaderName.equals("hostname")) { + if (cachedHostName==null) { + try { + cachedHostName = InetAddress.getByName(request.getRemoteAddr()).getHostName(); + } + catch (UnknownHostException e) { + cachedHostName = request.getRemoteAddr(); + } + } + + return cachedHostName; + } + + } + return request.getHeader(aHeaderName); }; @@ -55,8 +74,22 @@ public class HTTPAdapters { return request.getParameter(aName); }; + public List getPrefixedParameterNames(String aPrefix) { + List result = new ArrayList(); + + Enumeration enumeration = request.getParameterNames(); + while (enumeration.hasMoreElements()) { + String name = (String) enumeration.nextElement(); + if (name.startsWith(aPrefix)) { + result.add(name); + } + } + + return result; + }; + public List getUploadedFiles() { - return new Vector(); + return Collections.EMPTY_LIST; }; public List getParameters(String aName) { @@ -70,14 +103,31 @@ public class HTTPAdapters { public static class HTTPParsedRequestAdapter implements Request { private HTTPParsedRequest request; + private String cachedHostName = null; public HTTPParsedRequestAdapter(HTTPParsedRequest aRequest) { request = aRequest; } public String getHeader(String aHeaderName) { + if (aHeaderName.equals("ip")) + return request.getRequest().getRemoteAddr(); + + if (aHeaderName.equals("hostname")) { + if (cachedHostName==null) { + try { + cachedHostName = InetAddress.getByName(request.getRequest().getRemoteAddr()).getHostName(); + } + catch (UnknownHostException e) { + cachedHostName = request.getRequest().getRemoteAddr(); + } + } + + return cachedHostName; + } + return request.getHeader(aHeaderName); - }; + } public String getParameter(String aName) { return request.getParameter(aName); @@ -87,8 +137,23 @@ public class HTTPAdapters { return request.getParameterList(aName); }; + public List getPrefixedParameterNames(String aPrefix) { + List result = new ArrayList(); + + Iterator i = request.getParameterNames().iterator(); + + while (i.hasNext()) { + String name = (String) i.next(); + if (name.startsWith(aPrefix)) { + result.add(name); + } + } + + return result; + }; + public List getUploadedFiles() { - List result = new Vector(); + List result = new ArrayList(); List files = request.getFiles(); for (int i=0; i