vgritsenko    2002/10/28 20:49:52

  Modified:    .        changes.xml
               src/java/org/apache/cocoon/components/request
                        MaybeUploadRequestFactoryImpl.java
                        RequestFactory.java
               src/java/org/apache/cocoon/environment/http
                        HttpEnvironment.java HttpRequest.java
               src/java/org/apache/cocoon/servlet CocoonServlet.java
  Log:
  Remove the static factory variable in RequestFactory, and instead
  pass it to the HttpRequest via the environment.
  
  Revision  Changes    Path
  1.274     +6 -2      xml-cocoon2/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/changes.xml,v
  retrieving revision 1.273
  retrieving revision 1.274
  diff -u -r1.273 -r1.274
  --- changes.xml       28 Oct 2002 15:48:27 -0000      1.273
  +++ changes.xml       29 Oct 2002 04:49:52 -0000      1.274
  @@ -40,7 +40,11 @@
    </devs>
   
    <release version="@version@" date="@date@">
  -  <action dev="TC type="update">
  +  <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="TC" type="update">
       Renamed the AbstractMethodAction into AbstractMultiAction and
       moved it from scratchpad into the maintrunk. Using it helps
       reducing the amount of custom actions for a webapp.
  
  
  
  1.4       +3 -3      
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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MaybeUploadRequestFactoryImpl.java        28 Jun 2002 08:22:56 -0000      1.3
  +++ MaybeUploadRequestFactoryImpl.java        29 Oct 2002 04:49:52 -0000      1.4
  @@ -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
        */
  @@ -94,6 +93,7 @@
                        oldInterval = session.getMaxInactiveInterval();
                        session.setMaxInactiveInterval( -1 );
                    }
  +
                    req = new MaybeUploadRequestWrapperEx(request,
                                            saveUploadedFilesToDisk,
                                            uploadDirectory,
  
  
  
  1.2       +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.2
  diff -u -r1.1 -r1.2
  --- RequestFactory.java       24 Feb 2002 11:10:58 -0000      1.1
  +++ RequestFactory.java       29 Oct 2002 04:49:52 -0000      1.2
  @@ -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
  +}
  
  
  
  1.18      +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.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- HttpEnvironment.java      24 Sep 2002 08:44:23 -0000      1.17
  +++ HttpEnvironment.java      29 Oct 2002 04:49:52 -0000      1.18
  @@ -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;
  @@ -102,14 +103,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.9       +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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- HttpRequest.java  4 Jun 2002 09:27:21 -0000       1.8
  +++ HttpRequest.java  29 Oct 2002 04:49:52 -0000      1.9
  @@ -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() {
  
  
  
  1.42      +19 -15    
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.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- CocoonServlet.java        22 Oct 2002 04:01:58 -0000      1.41
  +++ CocoonServlet.java        29 Oct 2002 04:49:52 -0000      1.42
  @@ -203,6 +203,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
  @@ -426,13 +432,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) {
  @@ -611,7 +618,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;
  @@ -749,11 +756,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";
  @@ -944,7 +948,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,
  @@ -1018,7 +1022,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
  @@ -1166,8 +1170,8 @@
        * Create the environment for the request
        */
       protected Environment getEnvironment(String uri,
  -                                       HttpServletRequest req,
  -                                       HttpServletResponse res)
  +                                         HttpServletRequest req,
  +                                         HttpServletResponse res)
       throws Exception {
           HttpEnvironment env;
   
  @@ -1182,7 +1186,8 @@
                                     this.servletContext,
                                     
(HttpContext)this.appContext.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT),
                                     this.containerEncoding,
  -                                  formEncoding);
  +                                  formEncoding,
  +                                  this.requestFactory);
           env.enableLogging(new LogKitLogger(this.log));
           return env;
       }
  @@ -1329,8 +1334,7 @@
           return instrumentManager;
       }
   
  -    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