vgritsenko    2002/10/28 20:48:59

  Modified:    .        Tag: cocoon_2_0_3_branch changes.xml
               src/java/org/apache/cocoon/components/request Tag:
                        cocoon_2_0_3_branch
                        MaybeUploadRequestFactoryImpl.java
                        RequestFactory.java
               src/java/org/apache/cocoon/environment/http Tag:
                        cocoon_2_0_3_branch HttpEnvironment.java
                        HttpRequest.java
               src/java/org/apache/cocoon/servlet Tag: cocoon_2_0_3_branch
                        CocoonServlet.java
  Log:
  Remove the static factory variable in RequestFactory, and instead
  pass it to the HttpRequest via the environment.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.138.2.63 +5 -1      xml-cocoon2/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/changes.xml,v
  retrieving revision 1.138.2.62
  retrieving revision 1.138.2.63
  diff -u -r1.138.2.62 -r1.138.2.63
  --- changes.xml       23 Oct 2002 04:20:43 -0000      1.138.2.62
  +++ changes.xml       29 Oct 2002 04:48:58 -0000      1.138.2.63
  @@ -39,6 +39,10 @@
    </devs>
   
    <release version="@version@" date="@date@">
  +  <action dev="VG" type="fix" fixes-bug="13643" due-to="Leo Sutic" 
due-to-email="[EMAIL PROTECTED]">
  +    Remove the static factory variable in RequestFactory, and instead 
  +    pass it to the HttpRequest via the environment.
  +  </action>
     <action dev="VG" type="update">
       ReadDOMSessionTransformer now can work with any types of object
       (same mechanism as in &lt;xsp:expr&gt; now used). Configuration
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.2.2   +10 -10    
xml-cocoon2/src/java/org/apache/cocoon/components/request/MaybeUploadRequestFactoryImpl.java
  
  Index: MaybeUploadRequestFactoryImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/request/MaybeUploadRequestFactoryImpl.java,v
  retrieving revision 1.2.2.1
  retrieving revision 1.2.2.2
  diff -u -r1.2.2.1 -r1.2.2.2
  --- MaybeUploadRequestFactoryImpl.java        15 Jul 2002 14:10:35 -0000      1.2.2.1
  +++ MaybeUploadRequestFactoryImpl.java        29 Oct 2002 04:48:58 -0000      1.2.2.2
  @@ -59,14 +59,13 @@
   import java.util.Vector;
   
   /**
  - *
    * Extends the {@link RequestFactory} class
    *
    * @author <a href="mailto:dims@;apache.org">Davanum Srinivas</a>
    * @version CVS $Id$
    */
  -
   public final class MaybeUploadRequestFactoryImpl extends RequestFactory {
  +
       /**
        * Return a wrapped request object
        */
  @@ -87,13 +86,14 @@
               int oldInterval = -1;
               HttpSession session = null;
               try {
  -                 // Change the session timeout to infinite whilst the upload takes 
place,
  -                 // to prevent a timeout occuring during a long upload.
  -                 session = req.getSession(false);
  -                 if ( null != session) {
  -                     oldInterval = session.getMaxInactiveInterval();
  -                     session.setMaxInactiveInterval( -1 );
  -                 }
  +                // Change the session timeout to infinite whilst the upload takes 
place,
  +                // to prevent a timeout occuring during a long upload.
  +                session = req.getSession(false);
  +                if ( null != session) {
  +                    oldInterval = session.getMaxInactiveInterval();
  +                    session.setMaxInactiveInterval( -1 );
  +                }
  +
                   req = new MaybeUploadRequestWrapperEx(request,
                                            saveUploadedFilesToDisk,
                                            uploadDirectory,
  
  
  
  1.1.2.1   +14 -12    
xml-cocoon2/src/java/org/apache/cocoon/components/request/RequestFactory.java
  
  Index: RequestFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/request/RequestFactory.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- RequestFactory.java       24 Feb 2002 11:10:58 -0000      1.1
  +++ RequestFactory.java       29 Oct 2002 04:48:58 -0000      1.1.2.1
  @@ -62,27 +62,28 @@
    * @author <a href="mailto:dims@;yahoo.com">Davanum Srinivas</a>
    * @version CVS $Id$
    */
  -public abstract class   RequestFactory
  -        implements Component {
  +public abstract class RequestFactory implements Component {
   
  -    static private RequestFactory factory;
  -
  -    public static synchronized RequestFactory getRequestFactory(String className) {
  -        if(factory != null)
  -            return factory;
  +    public static RequestFactory getRequestFactory(String className) {
  +        RequestFactory factory = null;
           try {
               ClassLoader loader = Thread.currentThread().getContextClassLoader();
               Class clazz = loader.loadClass(className);
               factory = (RequestFactory)clazz.newInstance();
  -        } catch (Throwable t){}
  +        } catch (Throwable t) {
  +            // FIXME (VG): Is it Ok to ignore all exceptions?
  +        }
           if(factory == null) {
               try {
                   Class clazz = Class.forName(className);
                   factory = (RequestFactory)clazz.newInstance();
  -            } catch (Throwable t){}
  +            } catch (Throwable t) {
  +                // FIXME (VG): Is it Ok to ignore all exceptions?
  +            }
           }
  -        if(factory == null)
  +        if (factory == null) {
               factory = new SimpleRequestFactoryImpl();
  +        }
           return factory;
       }
   
  @@ -95,8 +96,9 @@
                                                   boolean allowOverwrite,
                                                   boolean silentlyRename,
                                                   int maxUploadSize);
  +
       /**
        * Implementation of the get method
        */
       public abstract Object get(HttpServletRequest request, String name);
  -}
  \ No newline at end of file
  +}
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.12.2.3  +6 -4      
xml-cocoon2/src/java/org/apache/cocoon/environment/http/HttpEnvironment.java
  
  Index: HttpEnvironment.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/environment/http/HttpEnvironment.java,v
  retrieving revision 1.12.2.2
  retrieving revision 1.12.2.3
  diff -u -r1.12.2.2 -r1.12.2.3
  --- HttpEnvironment.java      23 Sep 2002 12:16:53 -0000      1.12.2.2
  +++ HttpEnvironment.java      29 Oct 2002 04:48:59 -0000      1.12.2.3
  @@ -51,6 +51,7 @@
   package org.apache.cocoon.environment.http;
   
   import org.apache.cocoon.Constants;
  +import org.apache.cocoon.components.request.RequestFactory;
   import org.apache.cocoon.environment.AbstractEnvironment;
   import org.apache.cocoon.environment.ObjectModelHelper;
   import org.apache.cocoon.environment.Redirector;
  @@ -105,14 +106,15 @@
                               ServletContext servletContext,
                               HttpContext context,
                               String containerEncoding,
  -                            String defaultFormEncoding)
  +                            String defaultFormEncoding,
  +                            RequestFactory requestFactory)
        throws MalformedURLException, IOException {
           super(uri, req.getParameter(Constants.VIEW_PARAM), rootURL, 
extractAction(req));
   
  -        this.request = new HttpRequest (req, this);
  +        this.request = new HttpRequest(req, this, requestFactory);
           this.request.setCharacterEncoding(defaultFormEncoding);
           this.request.setContainerEncoding(containerEncoding);
  -        this.response = new HttpResponse (res);
  +        this.response = new HttpResponse(res);
           this.webcontext = context;
           this.outputStream = response.getOutputStream();
           this.objectModel.put(ObjectModelHelper.REQUEST_OBJECT, this.request);
  
  
  
  1.6.2.3   +7 -4      
xml-cocoon2/src/java/org/apache/cocoon/environment/http/HttpRequest.java
  
  Index: HttpRequest.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/environment/http/HttpRequest.java,v
  retrieving revision 1.6.2.2
  retrieving revision 1.6.2.3
  diff -u -r1.6.2.2 -r1.6.2.3
  --- HttpRequest.java  15 Jul 2002 14:42:49 -0000      1.6.2.2
  +++ HttpRequest.java  29 Oct 2002 04:48:59 -0000      1.6.2.3
  @@ -83,20 +83,23 @@
   
       /** The default form encoding of the servlet container */
       private String container_encoding = null;
  +    
  +    private final RequestFactory requestFactory;
   
       /**
        * Creates a HttpServletRequest based on a real HttpServletRequest object
        */
  -    protected HttpRequest (HttpServletRequest req, HttpEnvironment env) {
  -        super ();
  +    protected HttpRequest(HttpServletRequest req, HttpEnvironment env, 
RequestFactory requestFactory) {
  +        super();
           this.req = req;
           this.env = env;
  +        this.requestFactory = requestFactory;
       }
   
       /* The HttpServletRequest interface methods */
   
       public Object get(String name) {
  -        return RequestFactory.getRequestFactory(null).get(this.req, name);
  +        return requestFactory.get(this.req, name);
       }
   
       public String getAuthType() {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.19.2.13 +23 -19    
xml-cocoon2/src/java/org/apache/cocoon/servlet/CocoonServlet.java
  
  Index: CocoonServlet.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/servlet/CocoonServlet.java,v
  retrieving revision 1.19.2.12
  retrieving revision 1.19.2.13
  diff -u -r1.19.2.12 -r1.19.2.13
  --- CocoonServlet.java        22 Oct 2002 04:01:58 -0000      1.19.2.12
  +++ CocoonServlet.java        29 Oct 2002 04:48:59 -0000      1.19.2.13
  @@ -161,7 +161,7 @@
       private String defaultFormEncoding;
   
       protected ServletContext servletContext;
  -    
  +
       /** The classloader that will be set as the context classloader if 
init-classloader is true */
       protected ClassLoader classLoader = this.getClass().getClassLoader();
       protected boolean initClassLoader = false;
  @@ -190,6 +190,12 @@
        */
       protected URL servletContextURL;
   
  +
  +    /**
  +     * The requestFactory to use for incoming HTTP requests.
  +     */
  +    protected RequestFactory requestFactory;
  +
       /**
        * Initialize this <code>CocoonServlet</code> instance.  You will
        * notice that I have broken the init into sub methods to make it
  @@ -206,7 +212,7 @@
       throws ServletException {
   
           super.init(conf);
  -        
  +
           final String initClassLoaderParam = 
conf.getInitParameter("init-classloader");
           this.initClassLoader = "true".equalsIgnoreCase(initClassLoaderParam) ||
                                  "yes".equalsIgnoreCase(initClassLoaderParam);
  @@ -413,13 +419,14 @@
               }
           }
   
  -        requestFactoryClass = conf.getInitParameter("request-factory");
  +        this.requestFactoryClass = conf.getInitParameter("request-factory");
           if (requestFactoryClass == null) {
  -            requestFactoryClass = 
"org.apache.cocoon.components.request.MaybeUploadRequestFactoryImpl";
  +            requestFactoryClass = 
"org.apache.cocoon.components.request.MultipartRequestFactoryImpl";
               if (log.isDebugEnabled()) {
                   log.debug("request-factory was not set - defaulting to " + 
requestFactoryClass);
               }
           }
  +        this.requestFactory = RequestFactory.getRequestFactory(requestFactoryClass);
   
           this.containerEncoding = conf.getInitParameter("container-encoding");
           if (containerEncoding == null) {
  @@ -467,7 +474,7 @@
               this.disposeCocoon();
           }
       }
  -     
  +
       /**
        * Adds an URL to the classloader. Does nothing here, but is
        * overriden in {@link ParanoidCocoonServlet}.
  @@ -585,7 +592,7 @@
   
               Manifest mf = new Manifest(manifestURL.openStream());
               Attributes attr = mf.getMainAttributes();
  -            String libValue = (String)attr.getValue("Cocoon-Libs");
  +            String libValue = attr.getValue("Cocoon-Libs");
               if (libValue == null) {
                   this.log.fatalError("Unable to get 'Cocoon-Libs' attribute from the 
Manifest");
                   return null;
  @@ -723,11 +730,8 @@
        * be as restrictive (Priority.FATAL_ERROR and above) or as liberal
        * (Priority.DEBUG and above) as you want that get routed to the
        * file.
  -     *
  -     * @throws ServletException
        */
  -    private void initLogger()
  -    throws ServletException {
  +    private void initLogger() {
           String logLevel = getInitParameter("log-level");
           if (logLevel == null) {
               logLevel = "INFO";
  @@ -918,7 +922,7 @@
           // This is more scalable
           long start = System.currentTimeMillis();
           res.addHeader("X-Cocoon-Version", Constants.VERSION);
  -        HttpServletRequest request = 
RequestFactory.getRequestFactory(requestFactoryClass).getServletRequest(req,
  +        HttpServletRequest request = requestFactory.getServletRequest(req,
                                            CocoonServlet.SAVE_UPLOADED_FILES_TO_DISK,
                                            this.uploadDir,
                                            CocoonServlet.ALLOW_OVERWRITE,
  @@ -992,7 +996,7 @@
                       uri = uri.substring(1);
                   }
   
  -                Environment env = this.getEnvironment(URLDecoder.decode(uri), 
request, res);
  +                Environment env = getEnvironment(URLDecoder.decode(uri), request, 
res);
   
                   // Initialize a fresh log context containing the object model : it
                   // will be used by the CocoonLogFormatter
  @@ -1063,7 +1067,7 @@
                       res.flushBuffer();
                   }
                   return;
  - 
  +
               } catch (ConnectionResetException cre) {
                   if (log.isDebugEnabled()) {
                       log.debug("The connection was reset", cre);
  @@ -1140,8 +1144,8 @@
        * Create the environment for the request
        */
       protected Environment getEnvironment(String uri,
  -                                       HttpServletRequest req,
  -                                       HttpServletResponse res)
  +                                         HttpServletRequest req,
  +                                         HttpServletResponse res)
       throws Exception {
           HttpEnvironment env;
   
  @@ -1156,7 +1160,8 @@
                                     this.servletContext,
                                     
(HttpContext)this.appContext.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT),
                                     this.containerEncoding,
  -                                  formEncoding);
  +                                  formEncoding,
  +                                  this.requestFactory);
           env.setLogger(this.log);
           return env;
       }
  @@ -1265,8 +1270,7 @@
           this.appContext.put(Constants.CONTEXT_CLASSPATH, getClassPath());
        }
   
  -    private String processTime(long time) throws IOException {
  -
  +    private String processTime(long time) {
           StringBuffer out = new StringBuffer(PROCESSED_BY);
           if (time <= SECOND) {
               out.append(time);
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to