You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucy.apache.org by "Marvin Humphrey (JIRA)" <ji...@apache.org> on 2009/11/19 03:42:39 UTC
[jira] Created: (LUCY-67) Folder -- an index directory.
Folder -- an index directory.
-----------------------------
Key: LUCY-67
URL: https://issues.apache.org/jira/browse/LUCY-67
Project: Lucy
Issue Type: New Feature
Components: Core
Reporter: Marvin Humphrey
Assignee: Marvin Humphrey
Priority: Blocker
Folder is an abstract class representing an index directory. Unlike Lucene's
Directory class, Folder can contain subdirectories, which are implemented
using additional, nested Folder instances and recursion.
The subdirectory support requirement increases Folder's size and complexity,
but of course it is mandatory if segments are to be implemented as individual
directories.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (LUCY-67) Folder -- an index directory.
Posted by "Marvin Humphrey (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/LUCY-67?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marvin Humphrey updated LUCY-67:
--------------------------------
Attachment: Folder.pm
Folder.c
Folder.bp
Subclasses of Folder implement a handful of abstract methods which operate
only on immediate "local" files within the directory: Local_Open_FileHandle(),
Local_Delete(), and so on. The recursion is all taken care of within Folder.c
in methods such as Open_FileHandle() and Delete(), sparing the subclasses from
having to take on that tricky task. Client code will call the recursing
Folder methods, rather than the "Local" variants.
Folder has a few more client methods than Lucene's Directory. Some are
absolutely necessary:
{code:none}
/** Open a FileHandle, or set Err_error and return NULL on failure.
*
* @param path A relative filepath.
* @param flags FileHandle flags.
* @return a FileHandle, or NULL.
*/
public incremented FileHandle*
Open_FileHandle(Folder *self, const CharBuf *path, u32_t flags);
/** Open a DirHandle or set Err_error and return NULL on failure.
*
* @param path Path to a subdirectory, relative to the Folder's path. If
* empty or NULL, returns a DirHandle for this Folder.
* @return a DirHandle, or NULL.
*/
public incremented DirHandle*
Open_Dir(Folder *self, const CharBuf *path = NULL);
/** Create a subdirectory.
*
* @param path A relative filepath.
* @return true on success, false on failure (sets Err_error).
*/
public bool_t
MkDir(Folder *self, const CharBuf *path);
{code}
A few are more for convenience and might possibly be stripped or implemented
differently if paring down Folder becomes a priority.
{code:none}
/** Recursively list all files and directories in the Folder.
*
* @return an unsorted array of relative filepaths.
*/
incremented VArray*
List_R(Folder *self);
/** Delete recursively, starting at <code>path</code>
*
* @param path A relative filepath specifying a file or subdirectory.
* @return true if the whole tree is deleted successfully, false if any
* part remains.
*/
public bool_t
Delete_Tree(Folder *self, const CharBuf *path);
/** Read a file and return its contents.
*
* @param path A relative filepath.
* @param return the file's contents.
*/
public incremented ByteBuf*
Slurp_File(Folder *self, const CharBuf *path);
/** Perform implementation-specific initialization. For example: FSFolder
* creates its own directory.
*/
public abstract void
Initialize(Folder *self);
/** Verify that operations may be performed on this Folder.
*
* @return true on success.
*/
public abstract bool_t
Check(Folder *self);
{code}
There is one method, Hard_Link() which is included for now, but may be removed
in the future depending on how we decide to implement locks.
{code}
/** Create a hard link at path <code>to</code> pointing at the existing
* file <code>from</code>, or set Err_error and return false on failure.
*
* @return true on success, false on failure.
*/
public abstract bool_t
Hard_Link(Folder *self, const CharBuf *from, const CharBuf *to);
{code}
I have prepared test cases for Folder, but they are implemented at present
using RAMFolder; it would have been too much work to create a test-only
MockFolder class. The Folder test files will be contributed in a separate
issue after RAMFolder goes into the Lucy repository.
> Folder -- an index directory.
> -----------------------------
>
> Key: LUCY-67
> URL: https://issues.apache.org/jira/browse/LUCY-67
> Project: Lucy
> Issue Type: Sub-task
> Components: Core
> Reporter: Marvin Humphrey
> Assignee: Marvin Humphrey
> Priority: Blocker
> Attachments: Folder.bp, Folder.c, Folder.pm
>
>
> Folder is an abstract class representing an index directory. Unlike Lucene's
> Directory class, Folder can contain subdirectories, which are implemented
> using additional, nested Folder instances and recursion.
> The subdirectory support requirement increases Folder's size and complexity,
> but of course it is mandatory if segments are to be implemented as individual
> directories.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Updated: (LUCY-67) Folder -- an index directory.
Posted by "Marvin Humphrey (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/LUCY-67?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marvin Humphrey updated LUCY-67:
--------------------------------
Issue Type: Sub-task (was: New Feature)
Parent: LUCY-51
> Folder -- an index directory.
> -----------------------------
>
> Key: LUCY-67
> URL: https://issues.apache.org/jira/browse/LUCY-67
> Project: Lucy
> Issue Type: Sub-task
> Components: Core
> Reporter: Marvin Humphrey
> Assignee: Marvin Humphrey
> Priority: Blocker
>
> Folder is an abstract class representing an index directory. Unlike Lucene's
> Directory class, Folder can contain subdirectories, which are implemented
> using additional, nested Folder instances and recursion.
> The subdirectory support requirement increases Folder's size and complexity,
> but of course it is mandatory if segments are to be implemented as individual
> directories.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Resolved: (LUCY-67) Folder -- an index directory.
Posted by "Marvin Humphrey (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/LUCY-67?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marvin Humphrey resolved LUCY-67.
---------------------------------
Resolution: Fixed
Committed as r882424.
> Folder -- an index directory.
> -----------------------------
>
> Key: LUCY-67
> URL: https://issues.apache.org/jira/browse/LUCY-67
> Project: Lucy
> Issue Type: Sub-task
> Components: Core
> Reporter: Marvin Humphrey
> Assignee: Marvin Humphrey
> Priority: Blocker
> Attachments: Folder.bp, Folder.c, Folder.pm
>
>
> Folder is an abstract class representing an index directory. Unlike Lucene's
> Directory class, Folder can contain subdirectories, which are implemented
> using additional, nested Folder instances and recursion.
> The subdirectory support requirement increases Folder's size and complexity,
> but of course it is mandatory if segments are to be implemented as individual
> directories.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.