In order to get a grip on Merlin I am currently writing a little app
embedding it. I would like to have a local installation where merlin will
look for dependencies in a local cache first and will then fall back to the
usual suspects maven.repo.local, http://dpml.net/,
http://www.ibiblio.org/maven/:

app.home - bin
           |
           - lib
           |
           _ cache (1)

maven.repo.local (2)

http://dpml.net   (3)

http://www.ibiblio.org/maven/ (4)

Following a fairly recent thread on this list I started out by adapting
org.apache.avalon.merlin.unit.AbstractMerlinTestCase and customizing
kernel.xml (see below). When running my main class, however, I get

----
cause ---------------------------------------------------------------------
Exception: java.io.FileNotFoundException
Message:
file:\C:\Data\OBergner\Maven\repository\avalon-framework\jars\avalon-framewo
rk-impl-4.1.5.jar (Die Syntax f�r den Dateinamen, Verzeichnisnamen oder die
Datentr�gerbezeichnung ist falsch)

in factory.create(criteria). I am very likely making a really stupid
mistake, but right now I am stuck and would be thankful if someone could
point me to a solution.

Ultimately, I would like to embed Merlin into a servlet. Any best practices
or, even better, code samples?

Thanks,
Olaf Bergner

(1) Main class:

<snip>
public static void main(final String[] args) throws Exception
{
        final File cache = new File(getBaseDirectory(), "cache");
        final File repo = new File(getMavenLocalHome(), "repository");

        Artifact artifact =
                DefaultBuilder.createImplementationArtifact(
                        bootstrap,
                        getBaseDirectory(),
                        getBaseDirectory(),
                        MERLIN_PROPERTIES,
                        IMPLEMENTATION_KEY);

        final String repository = repo.toURL().toString();
        final String[] hosts =
                {
                        repository,
                        "http://dpml.net";,
                        "http://www.ibiblio.org/maven/"; };

        InitialContext context = new DefaultInitialContext(cache, hosts);

        Builder builder = new DefaultBuilder(context, artifact);
        final ClassLoader classloader = builder.getClassLoader();
        Factory factory = builder.getFactory();
        Map criteria = factory.createDefaultCriteria();

        ...

        final Object kernel = factory.create(criteria);
        ...
}
</snip>

(2) kernel.xml:

<snip>
<kernel>
   ...
   <cache>C:/Projekte/OBergner/EclipseWorkspace/merlin-aspects/cache</cache>
   <repository>
     <hosts>
       <host path="file:/C:/Data/OBergner/Maven/repository/"/>
       <host path="http://dpml.net/"/>
       <host path="http://www.ibiblio.org/maven/"/>
     </hosts>
   </repository>
</kernel>
</snip>

(3) Full stacktrace:

[INFO   ] (kernel): installing: file:/${user.dir}/samples/conf/sample.block
---- exception
report ----------------------------------------------------------
Exception: org.apache.avalon.merlin.KernelException
Message: Install failure:
file:/C:/Projekte/OBergner/EclipseWorkspace/merlin-aspects/samples/conf/samp
le.block
----
cause ---------------------------------------------------------------------
Exception: org.apache.avalon.composition.model.ModelException
Message: Could not create classloader.
----
cause ---------------------------------------------------------------------
Exception: org.apache.avalon.repository.RepositoryException
Message: Failed to download artifact to local cache file
C:\Projekte\OBergner\EclipseWorkspace\merlin-aspects\file:\C:\Data\OBergner\
Maven\repository\avalon-framework\jars\avalon-framework-impl-4.1.5.jar from
hosts:
  file:///C:/Data/OBergner/Maven/repository/
  http://dpml.net/
  http://www.ibiblio.org/maven/
----
cause ---------------------------------------------------------------------
Exception: java.io.FileNotFoundException
Message:
file:\C:\Data\OBergner\Maven\repository\avalon-framework\jars\avalon-framewo
rk-impl-4.1.5.jar (Die Syntax f�r den Dateinamen, Verzeichnisnamen oder die
Datentr�gerbezeichnung ist falsch)
---- stack
trace ---------------------------------------------------------------
java.io.FileNotFoundException:
file:\C:\Data\OBergner\Maven\repository\avalon-framework\jars\avalon-framewo
rk-impl-4.1.5.jar (Die Syntax f�r den Dateinamen, Verzeichnisnamen oder die
Datentr�gerbezeichnung ist falsch)
java.io.FileOutputStream.open(Native Method)
java.io.FileOutputStream.<init>(Unknown Source)
java.io.FileOutputStream.<init>(Unknown Source)
org.apache.avalon.repository.util.LOADER.getResource(LOADER.java:353)
org.apache.avalon.repository.util.LOADER.getResource(LOADER.java:112)
org.apache.avalon.repository.impl.DefaultRepository.getResource(DefaultRepos
itory.java:170)
org.apache.avalon.composition.model.impl.DefaultClassLoaderModel.createClass
Path(DefaultClassLoaderModel.java:467)
org.apache.avalon.composition.model.impl.DefaultClassLoaderModel.<init>(Defa
ultClassLoaderModel.java:212)
org.apache.avalon.composition.model.impl.DefaultClassLoaderModel.createClass
LoaderModel(DefaultClassLoaderModel.java:129)
org.apache.avalon.composition.model.impl.DefaultContainmentModel.createConta
inmentModel(DefaultContainmentModel.java:464)
org.apache.avalon.composition.model.impl.DefaultContainmentModel.createConta
inmentModel(DefaultContainmentModel.java:427)
org.apache.avalon.composition.model.impl.DefaultContainmentModel.createConta
inmentModel(DefaultContainmentModel.java:663)
org.apache.avalon.composition.model.impl.DefaultContainmentModel.addContainm
entModel(DefaultContainmentModel.java:288)
org.apache.avalon.composition.model.impl.DefaultContainmentModel.addModel(De
faultContainmentModel.java:282)
org.apache.avalon.merlin.impl.DefaultFactory.create(DefaultFactory.java:488)
org.merlinaop.main.Main.main(Main.java:131)
----------------------------------------------------------------------------
----


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

Reply via email to