    001    // Copyright 2007, 2008 The Apache Software Foundation
    002    //
    003    // Licensed under the Apache License, Version 2.0 (the "License");
    004    // you may not use this file except in compliance with the License.
    005    // You may obtain a copy of the License at
    006    //
    007    //     http://www.apache.org/licenses/LICENSE-2.0
    008    //
    009    // Unless required by applicable law or agreed to in writing, software
    010    // distributed under the License is distributed on an "AS IS" BASIS,
    011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    012    // See the License for the specific language governing permissions and
    013    // limitations under the License.
    014
    015    package org.apache.tapestry5.upload.internal.services;
    016
    017    import org.apache.commons.fileupload.FileItem;
    018    import org.apache.commons.io.FilenameUtils;
    019    import org.apache.tapestry5.upload.services.UploadedFile;
    020
    021    import java.io.File;
    022    import java.io.IOException;
    023    import java.io.InputStream;
    024
    025    /**
    026     * Implentation of {@link org.apache.tapestry5.upload.services.UploadedFile} for FileItems.
    027     */
    028    public class UploadedFileItem implements UploadedFile
    029    {
    030        private final FileItem item;
    031
    032        public UploadedFileItem(FileItem item)
    033        {
    034            this.item = item;
    035        }
    036
    037        public String getContentType()
    038        {
    039            return item.getContentType();
    040        }
    041
    042        public String getFileName()
    043        {
    044            return FilenameUtils.getName(getFilePath());
    045        }
    046
    047        public String getFilePath()
    048        {
    049            return item.getName();
    050        }
    051
    052        public long getSize()
    053        {
    054            return item.getSize();
    055        }
    056
    057        public InputStream getStream()
    058        {
    059            try
    060            {
    061                return item.getInputStream();
    062            }
    063            catch (IOException e)
    064            {
    065                throw new RuntimeException(UploadMessages.unableToOpenContentFile(this), e);
    066            }
    067        }
    068
    069        public boolean isInMemory()
    070        {
    071            return item.isInMemory();
    072        }
    073
    074        public void write(File file)
    075        {
    076            try
    077            {
    078                item.write(file);
    079            }
    080            catch (Exception e)
    081            {
    082                throw new RuntimeException(UploadMessages.writeFailure(file), e);
    083            }
    084        }
    085
    086        public void cleanup()
    087        {
    088            item.delete();
    089        }
    090    }