001    package org.trails.component.blob;
002    
003    import org.apache.tapestry.BaseComponent;
004    import org.apache.tapestry.annotations.ComponentClass;
005    import org.apache.tapestry.annotations.InjectObject;
006    import org.apache.tapestry.annotations.Parameter;
007    import org.apache.tapestry.request.IUploadFile;
008    import org.trails.descriptor.IClassDescriptor;
009    import org.trails.descriptor.IPropertyDescriptor;
010    
011    @ComponentClass(allowBody = true, allowInformalParameters = true)
012    public abstract class TrailsUpload extends BaseComponent
013    {
014            @InjectObject("service:trails.core.FilePersister")
015            public abstract IFilePersister getFilePersister();
016    
017            @Parameter(required = true)
018            public abstract Object getModel();
019    
020            @Parameter(required = true)
021            public abstract IPropertyDescriptor getPropertyDescriptor();
022    
023            public IUploadFile getFile()
024            {
025                    return null;
026            }
027    
028            public void setFile(IUploadFile file)
029            {
030                    if (file != null)
031                    {
032                            getFilePersister().store(getPropertyDescriptor(), getModel(), file);
033                    }
034            }
035    }