Using Java reflection, you could determine what interfaces the iterator
implements, and if it implements OptionDescriber, prompt for the options.
At the very least, a better error message should be produced, currently it
just throws a ClassCastException
On Thu, Nov 10, 2011 at 3:13 PM, Billie J Rinaldi <[EMAIL PROTECTED]
> On Tuesday, November 8, 2011 3:05:03 PM, "Jim Klucar" <[EMAIL PROTECTED]>
> > Currently the
> > org.apache.accumulo.core.util.shell.commands.SetIterCommand
> > requires that the iterator implement the OptionDescriber interface
> > (line
> > 128). This prevents using some useful iterators at the shell, for
> > instance
> > the DebugIterator. A nice way to learn how iterators work is to set
> > this
> > iterator, use "debug on" at the shell and start scanning different
> > ways.
> Iterators can also be configured manually in the shell using the config
> For example, you could set the debug iterator as follows:
> config -t tablename -s
> You can also set options/parameters for iterators that require them with
> further config commands.
> The issue with allowing setiter to configure iterators that do not
> implement OptionDescriber is that there is no way for the shell (or the
> user) to know if the iterators require options or not. It would have to
> configure them without options, then the user would have to look at the
> code or documentation to determine the required options and set those
> manually with config.
> We could consider requiring that iterators implement default parameters
> that would be used whenever parameters are not specified. Then any
> iterator could be configured with setiter. However, it can be confusing
> for users if the default parameters are not obvious -- I had one user
> expect that removing the maxVersions parameter for the VersioningIterator
> would stop it from restricting the number of versions, when in fact the
> default for maxVersions is 1.