Modified: openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java?rev=1141697&r1=1141681&r2=1141697&view=diff ============================================================================== --- openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java (original) +++ openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpResponseImpl.java Thu Jun 30 20:16:40 2011 @@ -23,23 +23,32 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLConnection; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; +import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Properties; import java.util.StringTokenizer; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.Cookie; /** This class takes care of HTTP Responses. It sends data back to the browser. */ public class HttpResponseImpl implements HttpResponse { - /** Response string */ private String responseString = "OK"; /** Code */ private int code = 200; + private String characterEncoding = "UTF-8"; + /** Response headers */ private final Map<String,String> headers = new HashMap<String,String>(); @@ -50,6 +59,7 @@ public class HttpResponseImpl implements private transient PrintWriter writer; /** the raw body */ private transient ByteArrayOutputStream baos; + private transient ServletOutputStream os; /** the HTTP version */ public static final String HTTP_VERSION = "HTTP/1.1"; @@ -62,9 +72,13 @@ public class HttpResponseImpl implements /** the server to send data from */ public static String server; + private List<Cookie> cookies = new ArrayList<Cookie>(); + private HttpRequestImpl request; private URLConnection content; + private Locale locale = Locale.getDefault(); + protected void setRequest(HttpRequestImpl request){ this.request = request; } @@ -77,6 +91,58 @@ public class HttpResponseImpl implements headers.put(name, value); } + @Override public void setIntHeader(String s, int i) { + headers.put(s, Integer.toString(i)); + } + + @Override public void setStatus(int i) { + setCode(i); + } + + @Override public void setStatus(int i, String s) { + setCode(i); + } + + @Override public void addCookie(Cookie cookie) { + cookies.add(cookie); + } + + @Override public void addDateHeader(String s, long l) { + headers.put(s, Long.toString(l)); + } + + @Override public void addHeader(String s, String s1) { + headers.put(s, s1); + } + + @Override public void addIntHeader(String s, int i) { + headers.put(s, Integer.toString(i)); + } + + @Override public boolean containsHeader(String s) { + return headers.containsKey(s); + } + + @Override public String encodeURL(String s) { + try { + return URLEncoder.encode(s, "UTF-8"); + } catch (UnsupportedEncodingException e) { + return null; + } + } + + @Override public String encodeRedirectURL(String s) { + return encodeURL(s); + } + + @Override public String encodeUrl(String s) { + return encodeURL(s); + } + + @Override public String encodeRedirectUrl(String s) { + return encodeURL(s); + } + /** Gets a header based on the name passed in * @param name The name of the header * @return the value of the header @@ -85,24 +151,65 @@ public class HttpResponseImpl implements return headers.get(name); } - /** Gets the PrintWriter to send data to the browser - * @return the PrintWriter to send data to the browser - */ - public PrintWriter getPrintWriter(){ - return writer; + @Override public Collection<String> getHeaderNames() { + return headers.keySet(); + } + + @Override public Collection<String> getHeaders(String s) { + return headers.values(); + } + + @Override public int getStatus() { + return getCode(); + } + + @Override public void sendError(int i) throws IOException { + setCode(i); + } + + @Override public void sendError(int i, String s) throws IOException { + setCode(i); + } + + @Override public void sendRedirect(String s) throws IOException { + // no-op + } + + @Override public void setDateHeader(String s, long l) { + headers.put(s, Long.toString(l)); } /** gets the OutputStream to send data to the browser * @return the OutputStream to send data to the browser */ - public OutputStream getOutputStream(){ - return baos; + public ServletOutputStream getOutputStream(){ + return os; + } + + public PrintWriter getPrintWriter() { + return writer; + } + + @Override public PrintWriter getWriter() throws IOException { + return writer; + } + + @Override public boolean isCommitted() { + return false; } public void flushBuffer() throws IOException { // there is really no way to flush } + @Override public int getBufferSize() { + return -1; + } + + @Override public String getCharacterEncoding() { + return characterEncoding; + } + /** sets the HTTP response code to be sent to the browser. These codes are: * * OPTIONS = 0 @@ -134,6 +241,10 @@ public class HttpResponseImpl implements setHeader("Content-Type", type); } + @Override public void setLocale(Locale locale) { + this.locale = locale; + } + /** gets the content type that will be sent to the browser * @return the content type (i.e. "text/html") */ @@ -141,6 +252,10 @@ public class HttpResponseImpl implements return getHeader("Content-Type"); } + @Override public Locale getLocale() { + return locale; + } + /** Sets the response string to be sent to the browser * @param responseString the response string */ @@ -153,6 +268,22 @@ public class HttpResponseImpl implements initBody(); } + @Override public void resetBuffer() { + baos.reset(); + } + + @Override public void setBufferSize(int i) { + // no-op + } + + @Override public void setCharacterEncoding(String s) { + characterEncoding = s; + } + + @Override public void setContentLength(int i) { + // no-op + } + /** resets the data to be sent to the browser with the response code and response * string * @param code the code to be sent to the browser @@ -221,7 +352,12 @@ public class HttpResponseImpl implements /** initalizes the body */ private void initBody(){ baos = new ByteArrayOutputStream(); - writer = new PrintWriter( baos ); + os = new ServletOutputStream() { + @Override public void write(int b) throws IOException { + baos.write(b); + } + }; + writer = new PrintWriter( os ); } /** Creates a string version of the response similar to: @@ -254,9 +390,9 @@ public class HttpResponseImpl implements writer.flush(); writer.close(); body = baos.toByteArray(); - setHeader("Content-Length", body.length+""); + setHeader("Content-Length", body.length + ""); } else { - setHeader("Content-Length", content.getContentLength()+""); + setHeader("Content-Length", content.getContentLength() + ""); } } @@ -469,8 +605,13 @@ public class HttpResponseImpl implements body = (byte[]) in.readObject(); //System.out.println("[] body "+body.length ); baos = new ByteArrayOutputStream(); + os = new ServletOutputStream() { + @Override public void write(int b) throws IOException { + baos.write(b); + } + }; baos.write( body ); - writer = new PrintWriter( baos ); + writer = new PrintWriter( os ); } /** @@ -480,14 +621,6 @@ public class HttpResponseImpl implements this.content = content; } - public void setStatusCode(int code) { - this.setCode(code); - } - - public int getStatusCode() { - return this.getCode(); - } - public void setStatusMessage(String responseString) { this.setResponseString(responseString); }
Modified: openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSession.java URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSession.java?rev=1141697&r1=1141681&r2=1141697&view=diff ============================================================================== --- openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSession.java (original) +++ openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSession.java Thu Jun 30 20:16:40 2011 @@ -18,38 +18,8 @@ package org.apache.openejb.server.httpd; /** */ -public interface HttpSession { +public interface HttpSession extends javax.servlet.http.HttpSession { - public void removeAttribute(String name); - - /** - * Returns the object bound with the specified name in this session, or - * <code>null</code> if no object is bound under the name. - * - * @param name a string specifying the name of the object - * - * @return the object with the specified name - */ - public Object getAttribute(String name); - - /** - * Binds an object to this session, using the name specified. If an object - * of the same name is already bound to the session, the object is - * replaced. - * - * @param name the name to which the object is bound; cannot be null - * @param value the object to be bound - */ - public void setAttribute(String name, Object value); - - /** - * Returns a string containing the unique identifier assigned to this - * session. The identifier is assigned by the ejb container and is - * implementation dependent. - * - * @return a string specifying the identifier assigned to this session - */ - public String getId(); } Modified: openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java?rev=1141697&r1=1141681&r2=1141697&view=diff ============================================================================== --- openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java (original) +++ openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBHttpServer.java Thu Jun 30 20:16:40 2011 @@ -16,6 +16,7 @@ */ package org.apache.openejb.server.httpd; +import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; Modified: openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletRequestAdapter.java URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletRequestAdapter.java?rev=1141697&r1=1141681&r2=1141697&view=diff ============================================================================== --- openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletRequestAdapter.java (original) +++ openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletRequestAdapter.java Thu Jun 30 20:16:40 2011 @@ -17,14 +17,28 @@ */ package org.apache.openejb.server.httpd; +import java.io.BufferedReader; +import java.io.UnsupportedEncodingException; +import java.security.Principal; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Locale; +import javax.servlet.AsyncContext; +import javax.servlet.DispatcherType; +import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletInputStream; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.InputStream; import java.net.URI; import java.net.URISyntaxException; import java.util.Map; +import javax.servlet.http.Part; public class ServletRequestAdapter implements HttpRequest { private final HttpServletRequest request; @@ -49,6 +63,38 @@ public class ServletRequestAdapter imple } } + @Override public Principal getUserPrincipal() { + return request.getUserPrincipal(); + } + + @Override public boolean isRequestedSessionIdFromCookie() { + return request.isRequestedSessionIdFromCookie(); + } + + @Override public boolean isRequestedSessionIdFromUrl() { + return request.isRequestedSessionIdFromUrl(); + } + + @Override public boolean isRequestedSessionIdFromURL() { + return request.isRequestedSessionIdFromURL(); + } + + @Override public boolean isRequestedSessionIdValid() { + return request.isRequestedSessionIdValid(); + } + + @Override public boolean isUserInRole(String s) { + return request.isUserInRole(s); + } + + @Override public void login(String s, String s1) throws ServletException { + request.login(s, s1); + } + + @Override public void logout() throws ServletException { + request.logout(); + } + public HttpSession getSession() { javax.servlet.http.HttpSession session = request.getSession(); if (session != null) { @@ -62,6 +108,18 @@ public class ServletRequestAdapter imple return request.getHeader(name); } + @Override public Enumeration<String> getHeaderNames() { + return request.getHeaderNames(); + } + + @Override public Enumeration<String> getHeaders(String s) { + return request.getHeaders(s); + } + + @Override public int getIntHeader(String s) { + return request.getIntHeader(s); + } + public URI getURI() { try { return new URI(request.getScheme(), null, request.getServerName(), request.getServerPort(), request.getRequestURI(), request.getQueryString(), null); @@ -78,42 +136,208 @@ public class ServletRequestAdapter imple return request.getContentType(); } + @Override public DispatcherType getDispatcherType() { + return request.getDispatcherType(); + } + + @Override public boolean authenticate(HttpServletResponse httpServletResponse) throws IOException, ServletException { + return request.authenticate(httpServletResponse); + } + + @Override public String getAuthType() { + return request.getAuthType(); + } + public String getContextPath() { return request.getContextPath(); } - public InputStream getInputStream() throws IOException { + @Override public Cookie[] getCookies() { + return request.getCookies(); + } + + @Override public long getDateHeader(String s) { + return request.getDateHeader(s); + } + + public ServletInputStream getInputStream() throws IOException { return request.getInputStream(); } - public Method getMethod() { - try { - return Method.valueOf(request.getMethod()); - } catch (IllegalArgumentException e) { - return Method.UNSUPPORTED; - } + @Override public String getLocalAddr() { + throw new UnsupportedOperationException(); + } + + @Override public Locale getLocale() { + return request.getLocale(); + } + + @Override public Enumeration<Locale> getLocales() { + return request.getLocales(); + } + + @Override public String getLocalName() { + return request.getLocalName(); + } + + @Override public int getLocalPort() { + return request.getLocalPort(); + } + + public String getMethod() { + return request.getMethod(); + } + + @Override public Part getPart(String s) throws IOException, ServletException { + return request.getPart(s); + } + + @Override public Collection<Part> getParts() throws IOException, ServletException { + return request.getParts(); + } + + @Override public String getPathInfo() { + return request.getPathInfo(); + } + + @Override public String getPathTranslated() { + return request.getPathTranslated(); + } + + @Override public String getQueryString() { + return request.getQueryString(); + } + + @Override public String getRemoteUser() { + return request.getRemoteUser(); + } + + @Override public String getRequestedSessionId() { + return request.getRequestedSessionId(); + } + + @Override public String getRequestURI() { + return request.getRequestURI(); + } + + @Override public StringBuffer getRequestURL() { + return request.getRequestURL(); + } + + @Override public String getServletPath() { + return request.getServletPath(); } public String getParameter(String name) { return request.getParameter(name); } + @Override public Map<String, String[]> getParameterMap() { + return request.getParameterMap(); + } + + @Override public Enumeration<String> getParameterNames() { + return request.getParameterNames(); + } + + @Override public String[] getParameterValues(String s) { + return request.getParameterValues(s); + } + + @Override public String getProtocol() { + return request.getProtocol(); + } + + @Override public BufferedReader getReader() throws IOException { + return request.getReader(); + } + + @Override public String getRealPath(String s) { + return request.getRealPath(s); + } + public Map getParameters() { return request.getParameterMap(); } + @Override public AsyncContext getAsyncContext() { + return request.getAsyncContext(); + } + public Object getAttribute(String s) { - Object o = request.getAttribute(s); + return request.getAttribute(s); + } - return o; + @Override public Enumeration<String> getAttributeNames() { + return request.getAttributeNames(); + } + + @Override public String getCharacterEncoding() { + return request.getCharacterEncoding(); } public void setAttribute(String s, Object o) { request.setAttribute(s, o); } + @Override public void setCharacterEncoding(String s) throws UnsupportedEncodingException { + request.setCharacterEncoding(s); + } + + @Override public AsyncContext startAsync() { + return request.startAsync(); + } + + @Override public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) { + return request.startAsync(servletRequest, servletResponse); + } + public String getRemoteAddr() { return request.getRemoteAddr(); } + @Override public String getRemoteHost() { + return request.getRemoteHost(); + } + + @Override public int getRemotePort() { + return request.getRemotePort(); + } + + @Override public RequestDispatcher getRequestDispatcher(String s) { + return request.getRequestDispatcher(s); + } + + @Override public String getScheme() { + return request.getScheme(); + } + + @Override public String getServerName() { + return request.getServerName(); + } + + @Override public int getServerPort() { + return request.getServerPort(); + } + + @Override public ServletContext getServletContext() { + return request.getServletContext(); + } + + @Override public boolean isAsyncStarted() { + return request.isAsyncStarted(); + } + + @Override public boolean isAsyncSupported() { + return request.isAsyncSupported(); + } + + @Override public boolean isSecure() { + return request.isSecure(); + } + + @Override public void removeAttribute(String s) { + request.removeAttribute(s); + } + } Modified: openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletResponseAdapter.java URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletResponseAdapter.java?rev=1141697&r1=1141681&r2=1141697&view=diff ============================================================================== --- openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletResponseAdapter.java (original) +++ openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletResponseAdapter.java Thu Jun 30 20:16:40 2011 @@ -17,10 +17,13 @@ */ package org.apache.openejb.server.httpd; +import java.util.Collection; +import java.util.Locale; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.io.IOException; -import java.io.OutputStream; public class ServletResponseAdapter implements HttpResponse { private final HttpServletResponse response; @@ -37,11 +40,87 @@ public class ServletResponseAdapter impl response.setHeader(name, value); } + @Override public void setIntHeader(String s, int i) { + response.setIntHeader(s, i); + } + + @Override public void setStatus(int i) { + response.setStatus(i); + } + + @Override public void setStatus(int i, String s) { + response.setStatus(i, s); + } + + @Override public void addCookie(Cookie cookie) { + response.addCookie(cookie); + } + + @Override public void addDateHeader(String s, long l) { + response.addDateHeader(s, l); + } + + @Override public void addHeader(String s, String s1) { + response.addHeader(s, s1); + } + + @Override public void addIntHeader(String s, int i) { + response.addIntHeader(s, i); + } + + @Override public boolean containsHeader(String s) { + return response.containsHeader(s); + } + + @Override public String encodeURL(String s) { + return response.encodeURL(s); + } + + @Override public String encodeRedirectURL(String s) { + return response.encodeRedirectURL(s); + } + + @Override public String encodeUrl(String s) { + return response.encodeUrl(s); + } + + @Override public String encodeRedirectUrl(String s) { + return response.encodeRedirectUrl(s); + } + public String getHeader(String name) { - throw new UnsupportedOperationException("Not possible to implement"); + return response.getHeader(name); + } + + @Override public Collection<String> getHeaderNames() { + return response.getHeaderNames(); } - public OutputStream getOutputStream() { + @Override public Collection<String> getHeaders(String s) { + return response.getHeaders(s); + } + + @Override public int getStatus() { + return response.getStatus(); + } + + @Override public void sendError(int i) throws IOException { + response.sendError(i); + } + + @Override public void sendError(int i, String s) throws IOException { + response.sendError(i, s); + } + + @Override public void sendRedirect(String s) throws IOException { + response.sendRedirect(s); + } + + @Override public void setDateHeader(String s, long l) { + response.setDateHeader(s, l); + } + + public ServletOutputStream getOutputStream() { try { return response.getOutputStream(); } catch (IOException e) { @@ -49,28 +128,64 @@ public class ServletResponseAdapter impl } } - public void setStatusCode(int code) { - response.setStatus(code); + @Override public PrintWriter getWriter() throws IOException { + return response.getWriter(); + } + + @Override public boolean isCommitted() { + return response.isCommitted(); + } + + @Override public void reset() { + response.reset(); } - public int getStatusCode() { - throw new UnsupportedOperationException("Not possible to implement"); + @Override public void resetBuffer() { + response.resetBuffer(); + } + + @Override public void setBufferSize(int i) { + response.setBufferSize(i); + } + + @Override public void setCharacterEncoding(String s) { + response.setCharacterEncoding(s); + } + + @Override public void setContentLength(int i) { + response.setContentLength(i); } public void setContentType(String type) { response.setContentType(type); } + @Override public void setLocale(Locale locale) { + response.setLocale(locale); + } + public String getContentType() { return response.getContentType(); } + @Override public Locale getLocale() { + return response.getLocale(); + } + @SuppressWarnings({"deprecation"}) public void setStatusMessage(String responseString) { - response.setStatus(getStatusCode(), responseString); + response.setStatus(getStatus(), responseString); } public void flushBuffer() throws IOException { response.flushBuffer(); } + + @Override public int getBufferSize() { + return response.getBufferSize(); + } + + @Override public String getCharacterEncoding() { + return response.getCharacterEncoding(); + } } Modified: openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletSessionAdapter.java URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletSessionAdapter.java?rev=1141697&r1=1141681&r2=1141697&view=diff ============================================================================== --- openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletSessionAdapter.java (original) +++ openejb/branches/openejb-4.0.x-cxf-2.4.x/openejb3/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletSessionAdapter.java Thu Jun 30 20:16:40 2011 @@ -17,6 +17,10 @@ */ package org.apache.openejb.server.httpd; +import java.util.Enumeration; +import javax.servlet.ServletContext; +import javax.servlet.http.HttpSessionContext; + public class ServletSessionAdapter implements HttpSession { private final javax.servlet.http.HttpSession session; @@ -24,19 +28,71 @@ public class ServletSessionAdapter imple this.session = session; } + @Override public long getCreationTime() { + return session.getCreationTime(); + } + public String getId() { return session.getId(); } + @Override public long getLastAccessedTime() { + return session.getLastAccessedTime(); + } + + @Override public ServletContext getServletContext() { + return session.getServletContext(); + } + + @Override public void setMaxInactiveInterval(int i) { + session.setMaxInactiveInterval(i); + } + + @Override public int getMaxInactiveInterval() { + return session.getMaxInactiveInterval(); + } + + @Override public HttpSessionContext getSessionContext() { + return session.getSessionContext(); + } + public Object getAttribute(String name) { return session.getAttribute(name); } + @Override public Object getValue(String s) { + return session.getAttribute(s); + } + + @Override public Enumeration<String> getAttributeNames() { + return session.getAttributeNames(); + } + + @Override public String[] getValueNames() { + return session.getValueNames(); + } + public void setAttribute(String name, Object value) { session.setAttribute(name, value); } + @Override public void putValue(String s, Object o) { + session.putValue(s, o); + } + public void removeAttribute(String name) { session.removeAttribute(name); } + + @Override public void removeValue(String s) { + session.removeValue(s); + } + + @Override public void invalidate() { + session.invalidate(); + } + + @Override public boolean isNew() { + return session.isNew(); + } }
