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]