Angela Schreiber wrote:

if you find other places e.g. during the import of data without
an explaining comment its probably a bug.

you seem to be talking about swallowing RepositoryExceptions here. i understand why you did it in importProperties, tho i don't agree that swallowing every possible RepositoryException is correct.

yes, 'a certain'... with the handlers available no check is made
against the nodetype-definition that would reveal whether a
certain property can be set or not :).
>
but of cause you may write your own handlers that assert
the complete nodetype structure...

that's not my point. i'm not worried about structural exceptions, but rather operational ones. when i run out of disk and derby can no longer store properties, i want DefaultHandler.importProperties to throw that exception up the stack, not swallow it.

yes, i can write my own handler, but then i don't get to leverage the hundreds of lines of code in DefaultHandler and friends that are perfectly useful.

i didn't throw RepositoryException on purpose, due to the fact,
that the io-stuff was originally (thus already with the command-chains)
designed to provide some abstraction of the import/export.
currently i don't see a benefit of throwing RepositoryException(s).

you're taking the abstraction to such an extreme that we're losing important exception information.

IOException does not have a constructor that accepts a root cause exception, so even if i write a bunch of try/catch clauses to catch RepositoryExceptions and rethrow them as IOExceptions, i lose the stack trace of the original exception, and i have more useless lines of code to boot.

i think you've set the wrong goal by limiting exceptions in this way. it's not like you're somehow abstracting jcr out of the import/export process - ImportContext and ExportContext carry a node around. the only thing you're achieving here is throwing away information in a lower layer that is useful at a higher layer.


Reply via email to