hi merlin insiders,

I am just getting my hands dirty on writing a simple merlin block.

Here are some questions:

-> can any block act as root block? 
-> if not, what are the minimum requirements...

-> afaik is that the default block is the one you pass to the merlin-cli
Merlin.class - but:

in fact I don't understand why StandardBlockLoader doesn't throw, when
you don't have a child "engine" under "implementation" in your
block.xml.... .

<snip>

        Configuration classLoaderConfig = implementation.getChild(
"classloader", false );

        if( classLoaderConfig == null )
        {
            classLoaderConfig = implementation.getChild( "engine" );
        }
        /******* comment ::: ***********/
        /* for my block the classLoaderConfig must be null, but this 
           classLoaderConfig is used in createEngine, without null
           checks .. */

        EngineClassLoader engine = 
          createEngine( classLoaderConfig, path );

</snip>


-> After startup of a very simplistic block - just one component and a
block meta data, I get a strange Exception with a stack trace like:

<snip>
java.lang.IllegalArgumentException:
commons-cli,excalibur-i18n-Extension-Name
        at java.util.jar.Attributes$Name.<init>(Attributes.java:434)
        at java.util.jar.Attributes.getValue(Attributes.java:97)
        at
org.apache.avalon.extension.Extension.getExtension(Extension.java:765)
        at
org.apache.avalon.extension.Extension.getExtension(Extension.java:719)
        at
org.apache.avalon.extension.Extension.getListed(Extension.java:682)
        at
org.apache.avalon.extension.Extension.getRequired(Extension.java:299)
        at
org.apache.avalon.extension.Extension.getRequired(Extension.java:316)
        at
org.apache.avalon.assembly.engine.impl.EngineClassLoader.getOptionalPackagesFor(EngineClassLoader.java:1243)
        at
org.apache.avalon.assembly.engine.impl.EngineClassLoader.addExtensions(EngineClassLoader.java:817)
        at
org.apache.avalon.assembly.engine.impl.EngineClassLoader.addURL(EngineClassLoader.java:742)
        at
org.apache.avalon.assembly.engine.impl.EngineClassLoader.initialize(EngineClassLoader.java:554)
        at
org.apache.avalon.merlin.block.impl.StandardBlockLoader.createEngine(StandardBlockLoader.java:461)
        at
org.apache.avalon.merlin.block.impl.StandardBlockLoader.install(StandardBlockLoader.java:329)
        at
org.apache.avalon.merlin.kernel.impl.DefaultKernel.install(DefaultKernel.java:606)
        at
org.apache.avalon.merlin.kernel.impl.DefaultKernel.initialize(DefaultKernel.java:526)
        at
org.apache.avalon.merlin.kernel.impl.DefaultKernelLoader.build(DefaultKernelLoader.java:117)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at Merlin.main(Merlin.java:433)
</snip>

the funny thing is that I actually don't declared these extension -
where are their declared ? (looked at the kernel*.xinfo but couldn't
find them ).

-> What is the override configuration good for - the -cofnig file passt
to merlin - I assume that it is another block.xml file ? 

-> stupid one: is there somewhere a more complex block example (perhaps
in the sandbox-cvs - perhaps I overlooked it ;-) )

-- Jakob


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to