/******************************************************************************* * Copyright (c) 2002-2006 Innoopract Informationssysteme GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Innoopract Informationssysteme GmbH - initial API and implementation ******************************************************************************/ package com.w4t.engine.requests; import java.util.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import org.apache.commons.fileupload.*; import org.eclipse.rwt.internal.*; import com.w4t.engine.util.ServletExceptionAdapter; /** <p>Special HttpServletRequest wrapper for handling file * upload requests.</p> */ public class FileUploadRequest extends HttpServletRequestWrapper implements IFileUploadRequest { private static final String SYSTEM_TEMP_DIR = System.getProperty( "java.io.tmpdir" ); private Hashtable parameters = new Hashtable(); public FileUploadRequest( final HttpServletRequest request ) throws ServletException { super( request ); IConfiguration configuration = ConfigurationReader.getConfiguration(); IFileUpload fileUpload = configuration.getFileUpload(); UploadRequestFileItemFactory factory = new UploadRequestFileItemFactory(); DiskFileUpload upload = new DiskFileUpload( factory ); upload.setSizeThreshold( fileUpload.getMaxMemorySize() ); upload.setSizeMax( fileUpload.getMaxMemorySize() ); upload.setRepositoryPath( FileUploadRequest.SYSTEM_TEMP_DIR ); try { List items = upload.parseRequest( request ); Iterator iter = items.iterator(); while( iter.hasNext() ) { FileItem item = ( FileItem )iter.next(); parameters.put( item.getFieldName(), item ); } } catch( FileUploadException e ) { throw new ServletExceptionAdapter( e ); } } public String getParameter( String name ) { String result = null; FileItem item = ( FileItem )parameters.get(name); if( item != null && item.isFormField() ) { result = item.getString(); } return result; } public FileItem getFileItem( final String name ) { FileItem result = null; FileItem item = ( FileItem )parameters.get( name ); if( item != null && !item.isFormField() ) { result = item; } return result; } public Enumeration getParameterNames() { return parameters.keys(); } }