1 63 64 package com.jcorporate.expresso.core.registry; 65 66 import com.jcorporate.expresso.core.controller.NonHandleableException; 67 import com.jcorporate.expresso.core.dataobjects.DataObject; 68 import com.jcorporate.expresso.core.dataobjects.Securable; 69 import com.jcorporate.expresso.core.db.DBException; 70 import com.jcorporate.expresso.core.jsdkapi.GenericSession; 71 import com.jcorporate.expresso.core.misc.CurrentLogin; 72 import com.jcorporate.expresso.core.security.SuperUser; 73 import com.jcorporate.expresso.core.security.User; 74 import com.jcorporate.expresso.core.servlet.CheckLogin; 75 import com.jcorporate.expresso.services.dbobj.DefaultUserInfo; 76 77 import javax.servlet.Filter ; 78 import javax.servlet.FilterChain ; 79 import javax.servlet.FilterConfig ; 80 import javax.servlet.ServletException ; 81 import javax.servlet.ServletRequest ; 82 import javax.servlet.ServletResponse ; 83 import javax.servlet.http.HttpServlet ; 84 import javax.servlet.http.HttpServletRequest ; 85 import java.io.IOException ; 86 87 94 public class RequestRegistryFilter extends HttpServlet implements Filter { 95 private FilterConfig filterConfig; 96 97 98 104 public void init(FilterConfig filterConfig) throws ServletException { 105 this.filterConfig = filterConfig; 106 filterConfig.getServletContext().log("Initializing RequestRegistryFilter"); 107 } 108 109 119 public void doFilter(ServletRequest request, ServletResponse response, 120 FilterChain filterChain) throws ServletException , IOException { 121 try { 122 HttpServletRequest req = (HttpServletRequest ) request; 123 RequestRegistry superUserSettings = 124 new MutableRequestRegistry("default", SuperUser.SUPER_USER); 125 CurrentLogin cl; 126 User u; 127 try { 128 CheckLogin.getInstance().checkLogin((HttpServletRequest ) 131 request); 132 cl = (CurrentLogin) GenericSession 133 .getAttribute(req, "CurrentLogin"); 134 135 u = new User(); 136 u.setDataContext(cl.getDBName()); 137 u.setUid(cl.getUid()); 138 139 try { 140 u.retrieve(); 141 } catch (DBException ex1) { 142 DataObject dao = new DefaultUserInfo(Securable.SYSTEM_ACCOUNT); 145 dao.setDataContext(cl.getDBName()); 146 try { 147 dao.count(); 148 throw new DBException("Unable to load user", ex1); 149 } catch (DBException ex) { 150 try { 151 this.log("User Table Doesn't Yet Exist", ex); 152 } catch (NullPointerException ex2) { 153 ex.printStackTrace(); 154 System.err.println("User table doesn't yet exist, but couldn't log: " + ex2.getMessage()); 155 } 156 } 157 } 158 } finally { 159 superUserSettings.releaseSettings(); 162 } 163 164 RequestRegistry requestRegistry = 167 new MutableRequestRegistry(cl.getDBName(), u); 168 try { 169 filterChain.doFilter(request, response); 170 } finally { 171 requestRegistry.releaseSettings(); 172 } 173 } catch (NonHandleableException ex) { 174 throw new ServletException ("Error pre-processing request", ex); 175 } catch (DBException ex) { 176 throw new ServletException ("Error pre-processing request", ex); 177 } 178 } 179 180 183 public void destroy() { 184 filterConfig.getServletContext().log("Destroying RequestRegistryFilter"); 185 } 186 } 187 | Popular Tags |