Created a jira issue including a patch that only takes files directly under flow/ into account.

http://issues.apache.org/jira/browse/COCOON-1933


Alex


Alexander Klimetschek schrieb:
I just run into a problem with the automatic loading of all files inside flow/: if there is a subversion directory (.svn) inside, it will try to call getInputStream() on it, which will fail on a directory.

So the problem is very general: you probably want to traverse sub-directories in order to let users structure their flow-directory. But how do you know that you have one of those "hidden" directories of a version control system (.svn, CVS,....). The "." for hidden dirs is not an exclusion criteria, because CVS doesn't use it. IMHO the conclusion is that there are two cases:

a) skip traversing of sub-directories (simple)
b) write some magic code that is able to skip any special/hidden directory

I could quickly provide a patch for a). So what do you think?

Alexander Klimetschek
(Mindquarry)

The stacktrace:

Caused by: org.apache.excalibur.source.SourceNotFoundException: file:/Users/alex/Mindquarry/hack/mindquarry-teamspace-web/mindquarry-teamspace-block/src/main/resources/COB-INF/flow/.svn/ doesn't exist. at org.apache.excalibur.source.impl.FileSource.getInputStream(FileSource.java:150) at org.apache.cocoon.components.flow.javascript.fom.FOM_JavaScriptInterpreter.compileScript(FOM_JavaScriptInterpreter.java:502) at org.apache.cocoon.components.flow.CompilingInterpreter$ScriptSourceEntry.getScript(CompilingInterpreter.java:112) at org.apache.cocoon.components.flow.javascript.fom.FOM_JavaScriptInterpreter.setupContext(FOM_JavaScriptInterpreter.java:453) at org.apache.cocoon.components.flow.javascript.fom.FOM_JavaScriptInterpreter.callFunction(FOM_JavaScriptInterpreter.java:572) at org.apache.cocoon.components.treeprocessor.sitemap.CallFunctionNode.invoke(CallFunctionNode.java:109)
    ... 43 more
Caused by: java.io.FileNotFoundException: /Users/alex/Mindquarry/hack/mindquarry-teamspace-web/mindquarry-teamspace-block/src/main/resources/COB-INF/flow/.svn (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
at org.apache.excalibur.source.impl.FileSource.getInputStream(FileSource.java:146)
    ... 48 more

Carsten Ziegeler wrote:
I now implemented this "convention" stuff - all files located in the
"flow" directory relative to the current sitemap are added to the flow
interpreter - regardless of the file name suffix and the used
interpreter (javascript, javaflow etc). The directory is of course optional.
By this we show a best practice of how to use flow - if for any reason
the user wants to use a different location, it's possible by specifying
the "location" attribute on the flow node.

I think we should leave the other "convention" directories for spring
and avalon configurations and the properties inside the "config"
directory for now.

Carsten




Reply via email to