No objections.

Allen Gilliland wrote:
> After doing a bit of work on the FileManager as part of my Theme
> Encapsulation proposal I have come to a point where I am thinking I
> would like to add in a new WeblogResource class/interface to serve as a
> layer of abstraction between an uploaded resource as used by Roller and
> the physical way that resource is managed by the FileManager.
> 
> Right now the FileManager simply returns java.io.File objects which
> represent the resource as it lives on the filesystem, and I think that's
> not particularly ideal.  There are a couple of reasons to change that
> such that the FileManager returns a more abstract notion of a
> WeblogResource.
> 
> 1. security and proper abstraction through layers.  Ideally the
> presentation layer should not need to know or have access to the details
> of how a resource is being stored on the filesystem.  Returning
> java.io.File objects gives more information than is needed.
> 
> 2. there are some things that we may want to associate with a resource
> that we can't do with a java.io.File object.  for example, i want to
> have a method which returns the relative path to a resource inside the
> weblog's uploads area.  it would also make sense if a WeblogResource had
> a reference to the Weblog it's part of and also possibly has a method to
> access the URL to the resource.
> 
> So this is what I've defined ...
> 
> public interface WeblogResource {
> 
>     public WebsiteData getWeblog();
>     public String getName();
>     public String getPath();

Is this the relative "URL" path from the weblog handle?

>     public long getLastModified();
>     public long getLength();
>     public boolean isDirectory();

If we are defining a resource that is a directory, do we need a way to
traverse the directory? i.e. getChildren()

>     public boolean isFile();
>     public String getURL(boolean absolute);
>     public InputStream getInputStream();
> 
> }
> 
> anyone have any objections to doing this?  The only class which produces
> these objects will be the FileManager by calling it's getFile() or
> getFiles() methods.
> 
> -- Allen
> 
> 

Reply via email to