[CVS jcontainer] Renamed org.jcontainer.loom -> org.codehaus.loom
mauro-yCVjj/[email protected] Mon, 19 Apr 2004 17:19:30 -0500
| Newsgroups | gmane.comp.java.jcontainer.cvs |
|---|---|
| Message-ID | <[email protected]> |
<html>
<head>
<style><!--
body {background-color:#ffffff;}
.file {border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;}
.pathname {font-family:monospace; float:right;}
.fileheader {margin-bottom:.5em;}
.diff {margin:0;}
.tasklist {padding:4px;border:1px dashed #000000;margin-top:1em;}
.tasklist ul {margin-top:0;margin-bottom:0;}
tr.alt {background-color:#eeeeee}
#added {background-color:#ddffdd;}
#addedchars {background-color:#99ff99;font-weight:bolder;}
tr.alt #added {background-color:#ccf7cc;}
#removed {background-color:#ffdddd;}
#removedchars {background-color:#ff9999;font-weight:bolder;}
tr.alt #removed {background-color:#f7cccc;}
#info {color:#888888;}
#context {background-color:#eeeeee;}
td {padding-left:.3em;padding-right:.3em;}
tr.head {border-bottom-width:1px;border-bottom-style:solid;}
tr.head td {padding:0;padding-top:.2em;}
.task {background-color:#ffff00;}
.comment {padding:4px;border:1px dashed #000000;background-color:#ffffdd}
.error {color:red;}
hr {border-width:0px;height:2px;background:black;}
--></style>
</head>
<body>
<table cellspacing="0" cellpadding="0" border="0" rules="cols">
<tr class="head"><td colspan="4">Commit in <b><tt>jcontainer/loom/support/classman</tt></b><span id="info"> on MAIN</span></td></tr>
<tr><td><tt>src/test/org/codehaus/loom/classman/reader/test/<a href="#file1"><span id="added">config5.xml</span></a></tt></td><td align="right" id="added">+14</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/config5.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file2"><span id="added">config3.xml</span></a></tt></td><td align="right" id="added">+4</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/config3.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file3"><span id="added">ReaderTestCase.java</span></a></tt></td><td align="right" id="added">+187</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/ReaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file4"><span id="added">config2.xml</span></a></tt></td><td align="right" id="added">+4</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/config2.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file5"><span id="added">config1.xml</span></a></tt></td><td align="right" id="added">+35</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file6"><span id="added">config4.xml</span></a></tt></td><td align="right" id="added">+4</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/config4.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt><a href="#file7">maven.xml</a></tt></td><td align="right" id="added">+1</td><td align="right" id="removed">-1</td><td nowrap="nowrap" align="center"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/maven.xml?rev=1.7&content-type=text/vnd.viewcvs-markup">1.7</a> <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/maven.xml.diff?r1=1.7&r2=1.8">-></a> <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/maven.xml?rev=1.8&content-type=text/vnd.viewcvs-markup">1.8</a></td></tr>
<tr class="alt"><td><tt><a href="#file8">project.xml</a></tt></td><td align="right" id="added">+1</td><td align="right" id="removed">-1</td><td nowrap="nowrap" align="center"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/project.xml?rev=1.17&content-type=text/vnd.viewcvs-markup">1.17</a> <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/project.xml.diff?r1=1.17&r2=1.18">-></a> <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/project.xml?rev=1.18&content-type=text/vnd.viewcvs-markup">1.18</a></td></tr>
<tr><td><tt>src/java/org/jcontainer/loom/classman/metadata/<a href="#file9"><span id="removed">FileSetMetaData.java</span></a></tt></td><td></td><td align="right" id="removed">-81</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata/FileSetMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file10"><span id="removed">ClassLoaderSetMetaData.java</span></a></tt></td><td></td><td align="right" id="removed">-159</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata/ClassLoaderSetMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file11"><span id="removed">ClassLoaderMetaData.java</span></a></tt></td><td></td><td align="right" id="removed">-101</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata/ClassLoaderMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file12"><span id="removed">JoinMetaData.java</span></a></tt></td><td></td><td align="right" id="removed">-59</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata/JoinMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt>src/java/org/jcontainer/loom/classman/reader/<a href="#file13"><span id="removed">ClassLoaderSetReader.java</span></a></tt></td><td></td><td align="right" id="removed">-1</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/reader/ClassLoaderSetReader.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file14"><span id="removed">classloader.dtd</span></a></tt></td><td></td><td align="right" id="removed">-138</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/reader/classloader.dtd?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt>src/test/org/codehaus/loom/classman/verifier/test/<a href="#file15"><span id="added">config12.xml</span></a></tt></td><td align="right" id="added">+6</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config12.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file16"><span id="added">config13.xml</span></a></tt></td><td align="right" id="added">+5</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config13.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file17"><span id="added">config7.xml</span></a></tt></td><td align="right" id="added">+9</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config7.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file18"><span id="added">config5.xml</span></a></tt></td><td align="right" id="added">+4</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config5.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file19"><span id="added">config3.xml</span></a></tt></td><td align="right" id="added">+6</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config3.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file20"><span id="added">config15.xml</span></a></tt></td><td align="right" id="added">+7</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config15.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file21"><span id="added">config8.xml</span></a></tt></td><td align="right" id="added">+7</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config8.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file22"><span id="added">config17.xml</span></a></tt></td><td align="right" id="added">+35</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config17.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file23"><span id="added">config1.xml</span></a></tt></td><td align="right" id="added">+7</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file24"><span id="added">config11.xml</span></a></tt></td><td align="right" id="added">+7</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config11.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file25"><span id="added">VerifierTestCase.java</span></a></tt></td><td align="right" id="added">+316</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/VerifierTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file26"><span id="added">config2.xml</span></a></tt></td><td align="right" id="added">+7</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config2.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file27"><span id="added">config4.xml</span></a></tt></td><td align="right" id="added">+8</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config4.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file28"><span id="added">config16.xml</span></a></tt></td><td align="right" id="added">+5</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config16.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file29"><span id="added">config6.xml</span></a></tt></td><td align="right" id="added">+9</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config6.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file30"><span id="added">config14.xml</span></a></tt></td><td align="right" id="added">+7</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config14.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file31"><span id="added">config9.xml</span></a></tt></td><td align="right" id="added">+8</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config9.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file32"><span id="added">config10.xml</span></a></tt></td><td align="right" id="added">+6</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config10.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt>src/test/org/jcontainer/loom/classman/verifier/test/<a href="#file33"><span id="removed">config11.xml</span></a></tt></td><td></td><td align="right" id="removed">-7</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config11.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file34"><span id="removed">config15.xml</span></a></tt></td><td></td><td align="right" id="removed">-7</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config15.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file35"><span id="removed">config10.xml</span></a></tt></td><td></td><td align="right" id="removed">-6</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config10.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file36"><span id="removed">config4.xml</span></a></tt></td><td></td><td align="right" id="removed">-8</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config4.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file37"><span id="removed">config13.xml</span></a></tt></td><td></td><td align="right" id="removed">-5</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config13.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file38"><span id="removed">config1.xml</span></a></tt></td><td></td><td align="right" id="removed">-7</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file39"><span id="removed">config9.xml</span></a></tt></td><td></td><td align="right" id="removed">-8</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config9.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file40"><span id="removed">config14.xml</span></a></tt></td><td></td><td align="right" id="removed">-7</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config14.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file41"><span id="removed">config8.xml</span></a></tt></td><td></td><td align="right" id="removed">-7</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config8.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file42"><span id="removed">config2.xml</span></a></tt></td><td></td><td align="right" id="removed">-7</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config2.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file43"><span id="removed">config5.xml</span></a></tt></td><td></td><td align="right" id="removed">-4</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config5.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file44"><span id="removed">config12.xml</span></a></tt></td><td></td><td align="right" id="removed">-6</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config12.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file45"><span id="removed">VerifierTestCase.java</span></a></tt></td><td></td><td align="right" id="removed">-316</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/VerifierTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file46"><span id="removed">config17.xml</span></a></tt></td><td></td><td align="right" id="removed">-35</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config17.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file47"><span id="removed">config3.xml</span></a></tt></td><td></td><td align="right" id="removed">-6</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config3.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file48"><span id="removed">config7.xml</span></a></tt></td><td></td><td align="right" id="removed">-9</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config7.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file49"><span id="removed">config6.xml</span></a></tt></td><td></td><td align="right" id="removed">-9</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config6.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file50"><span id="removed">config16.xml</span></a></tt></td><td></td><td align="right" id="removed">-5</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config16.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt>src/test/org/codehaus/loom/classman/test/<a href="#file51"><span id="added">config1.xml</span></a></tt></td><td align="right" id="added">+43</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file52"><span id="added">DataConstants.java</span></a></tt></td><td align="right" id="added">+28</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test/DataConstants.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file53"><span id="added">AbstractLoaderTestCase.java</span></a></tt></td><td align="right" id="added">+82</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test/AbstractLoaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file54"><span id="added">IntegrationTestCase.java</span></a></tt></td><td align="right" id="added">+142</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test/IntegrationTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt>src/testdata/org/codehaus/loom/classman/test/data/cl1/<a href="#file55"><span id="added">Resource.properties</span></a></tt></td><td align="right" id="added">+1</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl1/Resource.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file56"><span id="added">Data2.java</span></a></tt></td><td align="right" id="added">+18</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl1/Data2.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file57"><span id="added">Data1.java</span></a></tt></td><td align="right" id="added">+17</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl1/Data1.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt>src/testdata/org/jcontainer/loom/classman/test/data/cl1/<a href="#file58"><span id="removed">Data1.java</span></a></tt></td><td></td><td align="right" id="removed">-17</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl1/Data1.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file59"><span id="removed">Data2.java</span></a></tt></td><td></td><td align="right" id="removed">-18</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl1/Data2.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file60"><span id="removed">Resource.properties</span></a></tt></td><td></td><td align="right" id="removed">-1</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl1/Resource.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt>src/testdata/org/jcontainer/loom/classman/test/data/cl3/<a href="#file61"><span id="removed">CL3Data.java</span></a></tt></td><td></td><td align="right" id="removed">-20</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl3/CL3Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt>src/test/org/jcontainer/loom/classman/runtime/test/<a href="#file62"><span id="removed">JoinClassLoaderTestCase.java</span></a></tt></td><td></td><td align="right" id="removed">-141</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/runtime/test/JoinClassLoaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt>src/test/org/codehaus/loom/classman/builder/test/<a href="#file63"><span id="added">TestLoaderResolver.java</span></a></tt></td><td align="right" id="added">+51</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder/test/TestLoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file64"><span id="added">SimpleLoaderResolverTestCase.java</span></a></tt></td><td align="right" id="added">+46</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder/test/SimpleLoaderResolverTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file65"><span id="added">LoaderBuilderTestCase.java</span></a></tt></td><td align="right" id="added">+112</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder/test/LoaderBuilderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt>src/java/org/codehaus/loom/classman/metadata/<a href="#file66"><span id="added">ClassLoaderMetaData.java</span></a></tt></td><td align="right" id="added">+101</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata/ClassLoaderMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file67"><span id="added">ClassLoaderSetMetaData.java</span></a></tt></td><td align="right" id="added">+159</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata/ClassLoaderSetMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file68"><span id="added">FileSetMetaData.java</span></a></tt></td><td align="right" id="added">+81</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata/FileSetMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file69"><span id="added">JoinMetaData.java</span></a></tt></td><td align="right" id="added">+59</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata/JoinMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt>src/java/org/codehaus/loom/classman/builder/<a href="#file70"><span id="added">LoaderResolver.java</span></a></tt></td><td align="right" id="added">+1</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder/LoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file71"><span id="added">LoaderBuilder.java</span></a></tt></td><td align="right" id="added">+1</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder/LoaderBuilder.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file72"><span id="added">SimpleLoaderResolver.java</span></a></tt></td><td align="right" id="added">+1</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder/SimpleLoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file73"><span id="added">Resources.properties</span></a></tt></td><td align="right" id="added">+8</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder/Resources.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt>src/test/org/jcontainer/loom/classman/reader/test/<a href="#file74"><span id="removed">config4.xml</span></a></tt></td><td></td><td align="right" id="removed">-4</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/config4.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file75"><span id="removed">config5.xml</span></a></tt></td><td></td><td align="right" id="removed">-14</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/config5.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file76"><span id="removed">config1.xml</span></a></tt></td><td></td><td align="right" id="removed">-35</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file77"><span id="removed">config2.xml</span></a></tt></td><td></td><td align="right" id="removed">-4</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/config2.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file78"><span id="removed">config3.xml</span></a></tt></td><td></td><td align="right" id="removed">-4</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/config3.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file79"><span id="removed">ReaderTestCase.java</span></a></tt></td><td></td><td align="right" id="removed">-187</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/ReaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt>src/test/org/jcontainer/loom/classman/builder/test/<a href="#file80"><span id="removed">TestLoaderResolver.java</span></a></tt></td><td></td><td align="right" id="removed">-50</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder/test/TestLoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file81"><span id="removed">SimpleLoaderResolverTestCase.java</span></a></tt></td><td></td><td align="right" id="removed">-45</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder/test/SimpleLoaderResolverTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file82"><span id="removed">LoaderBuilderTestCase.java</span></a></tt></td><td></td><td align="right" id="removed">-111</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder/test/LoaderBuilderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt>src/java/org/codehaus/loom/classman/reader/<a href="#file83"><span id="added">classloader.dtd</span></a></tt></td><td align="right" id="added">+138</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/reader/classloader.dtd?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt> /<a href="#file84"><span id="added">ClassLoaderSetReader.java</span></a></tt></td><td align="right" id="added">+1</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/reader/ClassLoaderSetReader.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt>src/testdata/org/jcontainer/loom/classman/test/data/cl2/<a href="#file85"><span id="removed">CL2Data.java</span></a></tt></td><td></td><td align="right" id="removed">-17</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl2/CL2Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt>src/java/org/jcontainer/loom/classman/builder/<a href="#file86"><span id="removed">LoaderBuilder.java</span></a></tt></td><td></td><td align="right" id="removed">-1</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder/LoaderBuilder.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file87"><span id="removed">Resources.properties</span></a></tt></td><td></td><td align="right" id="removed">-8</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder/Resources.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file88"><span id="removed">SimpleLoaderResolver.java</span></a></tt></td><td></td><td align="right" id="removed">-1</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder/SimpleLoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file89"><span id="removed">LoaderResolver.java</span></a></tt></td><td></td><td align="right" id="removed">-1</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder/LoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt>src/testdata/org/codehaus/loom/classman/test/data/cl3/<a href="#file90"><span id="added">CL3Data.java</span></a></tt></td><td align="right" id="added">+20</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl3/CL3Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt>src/java/org/jcontainer/loom/classman/runtime/<a href="#file91"><span id="removed">JoinClassLoader.java</span></a></tt></td><td></td><td align="right" id="removed">-157</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/runtime/JoinClassLoader.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt>src/test/org/jcontainer/loom/classman/test/<a href="#file92"><span id="removed">AbstractLoaderTestCase.java</span></a></tt></td><td></td><td align="right" id="removed">-81</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test/AbstractLoaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file93"><span id="removed">IntegrationTestCase.java</span></a></tt></td><td></td><td align="right" id="removed">-141</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test/IntegrationTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file94"><span id="removed">config1.xml</span></a></tt></td><td></td><td align="right" id="removed">-43</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt> /<a href="#file95"><span id="removed">DataConstants.java</span></a></tt></td><td></td><td align="right" id="removed">-28</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test/DataConstants.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt>src/java/org/codehaus/loom/classman/runtime/<a href="#file96"><span id="added">JoinClassLoader.java</span></a></tt></td><td align="right" id="added">+157</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/runtime/JoinClassLoader.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt>src/test/org/jcontainer/loom/classman/metadata/test/<a href="#file97"><span id="removed">MetaDataTestCase.java</span></a></tt></td><td></td><td align="right" id="removed">-120</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/metadata/test/MetaDataTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt>src/java/org/codehaus/loom/classman/verifier/<a href="#file98"><span id="added">ClassLoaderVerifier.java</span></a></tt></td><td align="right" id="added">+490</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/verifier/ClassLoaderVerifier.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt> /<a href="#file99"><span id="added">Resources.properties</span></a></tt></td><td align="right" id="added">+22</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/verifier/Resources.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt>src/test/org/codehaus/loom/classman/metadata/test/<a href="#file100"><span id="added">MetaDataTestCase.java</span></a></tt></td><td align="right" id="added">+121</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/metadata/test/MetaDataTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt>src/java/org/jcontainer/loom/classman/verifier/<a href="#file101"><span id="removed">ClassLoaderVerifier.java</span></a></tt></td><td></td><td align="right" id="removed">-490</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/verifier/ClassLoaderVerifier.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr class="alt"><td><tt> /<a href="#file102"><span id="removed">Resources.properties</span></a></tt></td><td></td><td align="right" id="removed">-22</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/verifier/Resources.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td><tt>src/testdata/org/codehaus/loom/classman/test/data/cl4/<a href="#file103"><span id="added">CL4Data.java</span></a></tt></td><td align="right" id="added">+17</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl4/CL4Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt>src/test/org/codehaus/loom/classman/runtime/test/<a href="#file104"><span id="added">JoinClassLoaderTestCase.java</span></a></tt></td><td align="right" id="added">+142</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/runtime/test/JoinClassLoaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr><td><tt>src/testdata/org/codehaus/loom/classman/test/data/cl2/<a href="#file105"><span id="added">CL2Data.java</span></a></tt></td><td align="right" id="added">+17</td><td></td><td nowrap="nowrap" align="right">added <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl2/CL2Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></td></tr>
<tr class="alt"><td><tt>src/testdata/org/jcontainer/loom/classman/test/data/cl4/<a href="#file106"><span id="removed">CL4Data.java</span></a></tt></td><td></td><td align="right" id="removed">-17</td><td nowrap="nowrap"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl4/CL4Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a> removed</td></tr>
<tr><td></td><td align="right" id="added">+2785</td><td align="right" id="removed">-2778</td><td></td></tr>
</table>
<small id="info">52 added + 52 removed + 2 modified, total 106 files</small><br />
<div class="tasklist"><ul>
<li><a href="#task1">TODO: Verify that the joins form a directed graph with no loops</a></li>
</ul></div>
<pre class="comment">
Renamed org.jcontainer.loom -> org.codehaus.loom
</pre>
<hr /><a name="file1" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config5.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/config5.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config5.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config5.xml 19 Apr 2004 22:19:23 -0000 1.1
@@ -0,0 +1,14 @@
</small></pre><pre class="diff" id="added">+<classloaders default="cl1" version="1.0">
+ <predefined name="*system*"/>
+
+ <classloader name="cl1" parent="*system*">
+ <extension
+ specification-version="4.1"
+ specification-vendor="Apache"
+ implementation-version="4.1"
+ implementation-vendor="Apache"
+ implementation-vendor-id="Apache"
+ implementation-url="http://jakarta..."/>
+ </classloader>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file2" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config3.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/config3.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config3.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config3.xml 19 Apr 2004 22:19:23 -0000 1.1
@@ -0,0 +1,4 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*">
+ <predefined name="*system*"/>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file3" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>ReaderTestCase.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/ReaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N ReaderTestCase.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ReaderTestCase.java 19 Apr 2004 22:19:23 -0000 1.1
@@ -0,0 +1,187 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.reader.test;
+
+import org.codehaus.loom.classman.metadata.ClassLoaderSetMetaData;
+import org.codehaus.loom.classman.test.AbstractLoaderTestCase;
+
+/**
+ * TestCase for {@link org.codehaus.loom.classman.reader.ClassLoaderSetReader}.
+ *
+ * @author Peter Donald
+ */
+public class ReaderTestCase
+ extends AbstractLoaderTestCase
+{
+ public void testConfig1()
+ throws Exception
+ {
+ final ClassLoaderSetMetaData defs =
+ buildFromResource( "config1.xml" );
+
+ assertEquals( "ClassLoader Predefined Count",
+ 1,
+ defs.getPredefined().length );
+ assertEquals( "ClassLoader Predefined",
+ "*system*",
+ defs.getPredefined()[ 0 ] );
+ assertEquals( "ClassLoader Default",
+ "join2",
+ defs.getDefault() );
+ assertEquals( "ClassLoader Count",
+ 2,
+ defs.getClassLoaders().length );
+ assertEquals( "Join Count",
+ 2,
+ defs.getJoins().length );
+ assertNotNull( "ClassLoader cl1",
+ defs.getClassLoader( "cl1" ) );
+ assertNotNull( "ClassLoader cl2",
+ defs.getClassLoader( "cl2" ) );
+ assertNotNull( "Join join1",
+ defs.getJoin( "join1" ) );
+ assertNotNull( "Join join2",
+ defs.getJoin( "join2" ) );
+
+ assertEquals( "ClassLoader cl1.entrys Name",
+ defs.getClassLoader( "cl1" ).getName(),
+ "cl1" );
+ assertEquals( "ClassLoader cl1.entrys Count",
+ defs.getClassLoader( "cl1" ).getEntrys().length,
+ 2 );
+ assertEquals( "ClassLoader cl1.filesets Count",
+ defs.getClassLoader( "cl1" ).getFilesets().length,
+ 1 );
+ assertEquals( "ClassLoader cl1.extensions Count",
+ defs.getClassLoader( "cl1" ).getExtensions().length,
+ 1 );
+ assertEquals( "ClassLoader cl1.fileset[0] Dir",
+ defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getBaseDirectory(),
+ "someDir" );
+ assertEquals( "ClassLoader cl1.fileset[0] Include count",
+ defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getIncludes().length,
+ 2 );
+ assertEquals( "ClassLoader cl1.fileset[0] Exclude count",
+ defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getExcludes().length,
+ 1 );
+ assertEquals( "ClassLoader cl1.fileset[0].include[0] name",
+ defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getIncludes()[ 0 ],
+ "**/*.jar" );
+ assertEquals( "ClassLoader cl1.fileset[0].include[1] name",
+ defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getIncludes()[ 1 ],
+ "**/*.bar" );
+ assertEquals( "ClassLoader cl1.fileset[0].exclude[0] name",
+ defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getExcludes()[ 0 ],
+ "**/unwanted/*" );
+ assertEquals( "ClassLoader cl1.entrys[0] Location",
+ defs.getClassLoader( "cl1" ).getEntrys()[ 0 ],
+ "someFile.jar" );
+ assertEquals( "ClassLoader cl1.entrys[1] Location",
+ defs.getClassLoader( "cl1" ).getEntrys()[ 1 ],
+ "someOtherFile.jar" );
+
+ assertEquals( "ClassLoader cl2.entrys Name",
+ defs.getClassLoader( "cl2" ).getName(),
+ "cl2" );
+ assertEquals( "ClassLoader cl2.entrys Count",
+ defs.getClassLoader( "cl2" ).getEntrys().length,
+ 1 );
+ assertEquals( "ClassLoader cl2.filesets Count",
+ defs.getClassLoader( "cl2" ).getFilesets().length,
+ 0 );
+ assertEquals( "ClassLoader cl2.extensions Count",
+ defs.getClassLoader( "cl2" ).getExtensions().length,
+ 0 );
+ assertEquals( "ClassLoader cl2.entrys[0] Location",
+ defs.getClassLoader( "cl2" ).getEntrys()[ 0 ],
+ "aFile.jar" );
+
+ assertEquals( "Join join1.refs Name",
+ defs.getJoin( "join1" ).getName(),
+ "join1" );
+ assertEquals( "Join join1.refs Count",
+ defs.getJoin( "join1" ).getClassloaders().length,
+ 1 );
+ assertEquals( "Join join1.refs[0] Name",
+ defs.getJoin( "join1" ).getClassloaders()[ 0 ],
+ "cl1" );
+
+ assertEquals( "Join join2.refs Name",
+ defs.getJoin( "join2" ).getName(),
+ "join2" );
+ assertEquals( "Join join2.refs Count",
+ defs.getJoin( "join2" ).getClassloaders().length,
+ 2 );
+ assertEquals( "Join join2.refs[0] Name",
+ defs.getJoin( "join2" ).getClassloaders()[ 0 ],
+ "cl1" );
+ assertEquals( "Join join2.refs[1] Name",
+ defs.getJoin( "join2" ).getClassloaders()[ 1 ],
+ "cl2" );
+ }
+
+ public void testConfig2()
+ throws Exception
+ {
+ try
+ {
+ buildFromResource( "config2.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+ fail( "Should have failed as loaded a " +
+ "configuration with no default set" );
+ }
+
+ public void testConfig3()
+ throws Exception
+ {
+ try
+ {
+ buildFromResource( "config3.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+ fail( "Should have failed as loaded a " +
+ "configuration with no version set" );
+ }
+
+ public void testConfig4()
+ throws Exception
+ {
+ try
+ {
+ buildFromResource( "config4.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+ fail( "Should have failed as loaded a " +
+ "configuration with bad version" );
+ }
+
+ public void testConfig5()
+ throws Exception
+ {
+ try
+ {
+ buildFromResource( "config5.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+ fail( "Should have failed as loaded a " +
+ "configuration with extension with null name" );
+ }
+}
</pre></div>
<hr /><a name="file4" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config2.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/config2.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config2.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config2.xml 19 Apr 2004 22:19:23 -0000 1.1
@@ -0,0 +1,4 @@
</small></pre><pre class="diff" id="added">+<classloaders version="1.0">
+ <predefined name="*system*"/>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file5" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config1.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config1.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config1.xml 19 Apr 2004 22:19:23 -0000 1.1
@@ -0,0 +1,35 @@
</small></pre><pre class="diff" id="added">+<classloaders default="join2" version="1.0">
+ <predefined name="*system*"/>
+
+ <classloader name="cl1" parent="*system*">
+ <entry location="someFile.jar"/>
+ <entry location="someOtherFile.jar"/>
+ <fileset dir="someDir">
+ <include name="**/*.jar"/>
+ <include name="**/*.bar"/>
+ <exclude name="**/unwanted/*"/>
+ </fileset>
+ <extension
+ name="Avalon.Framework"
+ specification-version="4.1"
+ specification-vendor="Apache"
+ implementation-version="4.1"
+ implementation-vendor="Apache"
+ implementation-vendor-id="Apache"
+ implementation-url="http://jakarta..." />
+ </classloader>
+
+ <classloader name="cl2" parent="*system*">
+ <entry location="aFile.jar"/>
+ </classloader>
+
+ <join name="join1">
+ <classloader-ref name="cl1"/>
+ </join>
+
+ <join name="join2">
+ <classloader-ref name="cl1"/>
+ <classloader-ref name="cl2"/>
+ </join>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file6" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config4.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/reader/test/config4.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config4.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config4.xml 19 Apr 2004 22:19:23 -0000 1.1
@@ -0,0 +1,4 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.2">
+ <predefined name="*system*"/>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file7" /><div class="file">
<span class="pathname"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a><br /></span>
<div class="fileheader"><big><b>maven.xml</b></big> <small id="info"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/maven.xml?rev=1.7&content-type=text/vnd.viewcvs-markup">1.7</a> <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/maven.xml.diff?r1=1.7&r2=1.8">-></a> <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/maven.xml?rev=1.8&content-type=text/vnd.viewcvs-markup">1.8</a></small></div>
<pre class="diff"><small id="info">diff -u -r1.7 -r1.8
--- maven.xml 31 Mar 2004 03:39:04 -0000 1.7
+++ maven.xml 19 Apr 2004 22:19:24 -0000 1.8
@@ -18,7 +18,7 @@
</small></pre><pre class="diff" id="context">
<preGoal name="xdoc:copy-user-resources">
<ant:mkdir dir="${basedir}/xdocs"/>
</pre><pre class="diff" id="removed">- <ant:copy file="${basedir}/src/java/org/<span id="removedchars">jcontainer</span>/loom/classman/reader/classloader.dtd"
</pre><pre class="diff" id="added">+ <ant:copy file="${basedir}/src/java/org/<span id="addedchars">codehaus</span>/loom/classman/reader/classloader.dtd"
</pre><pre class="diff" id="context"> todir="${basedir}/target/docs"/>
</preGoal>
</pre></div>
<hr /><a name="file8" /><div class="file">
<span class="pathname"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a><br /></span>
<div class="fileheader"><big><b>project.xml</b></big> <small id="info"><a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/project.xml?rev=1.17&content-type=text/vnd.viewcvs-markup">1.17</a> <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/project.xml.diff?r1=1.17&r2=1.18">-></a> <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/project.xml?rev=1.18&content-type=text/vnd.viewcvs-markup">1.18</a></small></div>
<pre class="diff"><small id="info">diff -u -r1.17 -r1.18
--- project.xml 31 Mar 2004 02:43:55 -0000 1.17
+++ project.xml 19 Apr 2004 22:19:24 -0000 1.18
@@ -3,7 +3,7 @@
</small></pre><pre class="diff" id="context"> <extend>${basedir}/../../project.xml</extend>
<name>ClassMan</name>
<id>loom-classman</id>
</pre><pre class="diff" id="removed">- <package>org.<span id="removedchars">jcontainer</span>.loom.classman</package>
</pre><pre class="diff" id="added">+ <package>org.<span id="addedchars">codehaus</span>.loom.classman</package>
</pre><pre class="diff" id="context"> <inceptionYear>2002</inceptionYear>
<shortDescription>Toolkit to construct ClassLoader lattices from an XML descriptor.</shortDescription>
</pre></div>
<hr /><a name="file9" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata">metadata</a><br /></span>
<div class="fileheader" id="removed"><big><b>FileSetMetaData.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata/FileSetMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N FileSetMetaData.java
--- FileSetMetaData.java 31 Mar 2004 03:18:53 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,81 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.metadata;
-
-/**
- * This class represent a set of files anchored in a base directory. The set of
- * files is determined by the include and excludes that are specified for
- * fileset. If no includes or excludes are specified then all files in base
- * directory are added to fileset.
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:53 $
- */
-public class FileSetMetaData
-{
- /** The base directory from which to apply all the includes/excludes. */
- private final String m_baseDirectory;
-
- /** The set of patterns to include in fileset. */
- private final String[] m_includes;
-
- /** The set of patterns to exclude from fileset. */
- private final String[] m_excludes;
-
- public FileSetMetaData( final String baseDirectory,
- final String[] includes,
- final String[] excludes )
- {
- if( null == baseDirectory )
- {
- throw new NullPointerException( "baseDirectory" );
- }
- if( null == includes )
- {
- throw new NullPointerException( "includes" );
- }
- if( null == excludes )
- {
- throw new NullPointerException( "excludes" );
- }
-
- m_baseDirectory = baseDirectory;
- m_includes = includes;
- m_excludes = excludes;
- }
-
- /**
- * Return the base directory of fileset.
- *
- * @return the base directory of fileset.
- */
- public String getBaseDirectory()
- {
- return m_baseDirectory;
- }
-
- /**
- * Return the list of includes for fileset.
- *
- * @return the list of includes for fileset.
- */
- public String[] getIncludes()
- {
- return m_includes;
- }
-
- /**
- * Return the list of excludes for fileset.
- *
- * @return the list of excludes for fileset.
- */
- public String[] getExcludes()
- {
- return m_excludes;
- }
-}
</pre></div>
<hr /><a name="file10" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata">metadata</a><br /></span>
<div class="fileheader" id="removed"><big><b>ClassLoaderSetMetaData.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata/ClassLoaderSetMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N ClassLoaderSetMetaData.java
--- ClassLoaderSetMetaData.java 31 Mar 2004 03:18:53 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,159 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.metadata;
-
-/**
- * This class defines a set of ClassLoaders and the default ClassLoader to use.
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:53 $
- */
-public class ClassLoaderSetMetaData
-{
- /**
- * The name of the current classloader. This may be used by other
- * ClassLoader definitions to refer to this ClassLoader.
- */
- private final String m_default;
-
- /** The set of ClassLoaders predefined by the application. */
- private final String[] m_predefined;
-
- /** The classloaders defined in set. */
- private final ClassLoaderMetaData[] m_classLoaders;
-
- /** The joining classloaders defined in set. */
- private final JoinMetaData[] m_joins;
-
- /**
- * Construct set with specified set and ClassLoaders.
- *
- * @param aDefault the name of default ClassLoader
- * @param classLoaders the ClassLoaders in set
- */
- public ClassLoaderSetMetaData( final String aDefault,
- final String[] predefined,
- final ClassLoaderMetaData[] classLoaders,
- final JoinMetaData[] joins )
- {
- if( null == aDefault )
- {
- throw new NullPointerException( "aDefault" );
- }
- if( null == classLoaders )
- {
- throw new NullPointerException( "classLoaders" );
- }
- if( null == joins )
- {
- throw new NullPointerException( "joins" );
- }
- if( null == predefined )
- {
- throw new NullPointerException( "predefined" );
- }
-
- m_default = aDefault;
- m_predefined = predefined;
- m_classLoaders = classLoaders;
- m_joins = joins;
- }
-
- /**
- * Return the default ClassLoader name.
- *
- * @return the default ClassLoader name.
- */
- public String getDefault()
- {
- return m_default;
- }
-
- /**
- * Return the set of predefined ClassLoaders.
- *
- * @return the set of predefined ClassLoaders.
- */
- public String[] getPredefined()
- {
- return m_predefined;
- }
-
- /**
- * Return the classloaders in set.
- *
- * @return the classloaders in set.
- */
- public ClassLoaderMetaData[] getClassLoaders()
- {
- return m_classLoaders;
- }
-
- /**
- * Return the "join" classloaders in set.
- *
- * @return the "join" classloaders in set.
- */
- public JoinMetaData[] getJoins()
- {
- return m_joins;
- }
-
- /**
- * Return true if specified name, designates a predefined ClassLoader.
- *
- * @return true if specified name, designates a predefined ClassLoader.
- */
- public boolean isPredefined( final String name )
- {
- for( int i = 0; i < m_predefined.length; i++ )
- {
- if( m_predefined[ i ].equals( name ) )
- {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Return the classloader with specified name.
- *
- * @return the classloader with specified name
- */
- public ClassLoaderMetaData getClassLoader( final String name )
- {
- for( int i = 0; i < m_classLoaders.length; i++ )
- {
- final ClassLoaderMetaData classLoader = m_classLoaders[ i ];
- if( classLoader.getName().equals( name ) )
- {
- return classLoader;
- }
- }
- return null;
- }
-
- /**
- * Return the "join" classloader with specified name.
- *
- * @return the "join" classloader with specified name
- */
- public JoinMetaData getJoin( final String name )
- {
- for( int i = 0; i < m_joins.length; i++ )
- {
- final JoinMetaData join = m_joins[ i ];
- if( join.getName().equals( name ) )
- {
- return join;
- }
- }
- return null;
- }
-}
</pre></div>
<hr /><a name="file11" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata">metadata</a><br /></span>
<div class="fileheader" id="removed"><big><b>ClassLoaderMetaData.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata/ClassLoaderMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N ClassLoaderMetaData.java
--- ClassLoaderMetaData.java 31 Mar 2004 03:18:53 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,101 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.metadata;
-
-import org.jcontainer.loom.extension.Extension;
-
-/**
- * This class defines a specific classloader, made up of entrys, Extension and
- * FileSetMetaData objects.
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:53 $
- */
-public class ClassLoaderMetaData
-{
- /**
- * The name of the current classloader. This may be used by other
- * ClassLoader definitions to refer to this ClassLoader.
- */
- private final String m_name;
-
- /** The name of the parent classloader. */
- private final String m_parent;
-
- /** The Entrys that are added to this ClassLoader. */
- private final String[] m_entrys;
-
- /** The Entrys that are required by this ClassLoader. */
- private final Extension[] m_extensions;
-
- /** The Filesets that are added to this ClassLoader. */
- private final FileSetMetaData[] m_filesets;
-
- public ClassLoaderMetaData( final String name,
- final String parent,
- final String[] entrys,
- final Extension[] extensions,
- final FileSetMetaData[] filesets )
- {
- m_name = name;
- m_parent = parent;
- m_entrys = entrys;
- m_extensions = extensions;
- m_filesets = filesets;
- }
-
- /**
- * Return the name of Classloader.
- *
- * @return the name of Classloader.
- */
- public String getName()
- {
- return m_name;
- }
-
- /**
- * Return the name of parent Classloader.
- *
- * @return the name of parent Classloader.
- */
- public String getParent()
- {
- return m_parent;
- }
-
- /**
- * Return the elements added to Classloader.
- *
- * @return the elements added to Classloader.
- */
- public String[] getEntrys()
- {
- return m_entrys;
- }
-
- /**
- * Return the extensions added to Classloader.
- *
- * @return the extensions added to Classloader.
- */
- public Extension[] getExtensions()
- {
- return m_extensions;
- }
-
- /**
- * Return the filesets added to Classloader.
- *
- * @return the filesets added to Classloader.
- */
- public FileSetMetaData[] getFilesets()
- {
- return m_filesets;
- }
-}
</pre></div>
<hr /><a name="file12" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata">metadata</a><br /></span>
<div class="fileheader" id="removed"><big><b>JoinMetaData.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/metadata/JoinMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N JoinMetaData.java
--- JoinMetaData.java 31 Mar 2004 03:18:53 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,59 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.metadata;
-
-/**
- * This class defines a classloader that "merges" multiple classloaders. For
- * this to be successful, it is required that the ClassLoaders contain disjoint
- * sets of classes (with the exception of classes loaded from the system
- * classpath).
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:53 $
- */
-public class JoinMetaData
-{
- /**
- * The name of the current classloader. This may be used by other
- * ClassLoader definitions to refer to this ClassLoader.
- */
- private final String m_name;
-
- /** The list of classloaders that are merged in this classloader. */
- private final String[] m_classloaders;
-
- /**
- * The definition for set of classloaders
- */
- public JoinMetaData( final String name,
- final String[] classloaders )
- {
- m_name = name;
- m_classloaders = classloaders;
- }
-
- /**
- * Return the name of Classloader.
- *
- * @return the name of Classloader.
- */
- public String getName()
- {
- return m_name;
- }
-
- /**
- * Return the list of classloaders that are merged in this classloader
- *
- * @return the list of classloaders that are merged in this classloader
- */
- public String[] getClassloaders()
- {
- return m_classloaders;
- }
-}
</pre></div>
<hr /><a name="file13" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/reader">reader</a><br /></span>
<div class="fileheader" id="removed"><big><b>ClassLoaderSetReader.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/reader/ClassLoaderSetReader.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N ClassLoaderSetReader.java
--- ClassLoaderSetReader.java 31 Mar 2004 03:18:53 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
* Copyright (C) The Spice Group. All rights reserved.
*
* This software is published under the terms of the Spice
* Software License version 1.1, a copy of which has been included
* with this distribution in the LICENSE.txt file.
*/
package org.jcontainer.loom.classman.reader;
import java.util.ArrayList;
import org.jcontainer.loom.classman.metadata.ClassLoaderMetaData;
import org.jcontainer.loom.classman.metadata.ClassLoaderSetMetaData;
import org.jcontainer.loom.classman.metadata.FileSetMetaData;
import org.jcontainer.loom.classman.metadata.JoinMetaData;
import org.jcontainer.loom.extension.Extension;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
/**
* This class builds a {@link ClassLoaderSetMetaData} object from specified
* configuration.
*
* @author Peter Donald
* @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:53 $
*/
public class ClassLoaderSetReader
{
/**
* Build ClassLoader MetaData from a DOM tree.
*
* @param config the root element
* @return the meta data
* @throws Exception if malformed DOM
*/
public ClassLoaderSetMetaData build( final Element config )
throws Exception
{
final String defaultClassLoader =
config.getAttribute( "default" );
if( isUnspecified( defaultClassLoader ) )
{
final String message = "Default classloader not specified.";
throw new Exception( message );
}
final String version =
config.getAttribute( "version" );
if( !"1.0".equals( version ) )
{
final String message = "Bad version:" + version;
throw new Exception( message );
}
final NodeList joinConfigs =
config.getElementsByTagName( "join" );
final JoinMetaData[] joins = buildJoins( joinConfigs );
final NodeList clConfigs =
config.getElementsByTagName( "classloader" );
final ClassLoaderMetaData[] classloaders =
buildClassLoaders( clConfigs );
final NodeList predefinedConfigs =
config.getElementsByTagName( "predefined" );
final String[] predefined =
buildPredefined( predefinedConfigs );
return new ClassLoaderSetMetaData( defaultClassLoader,
predefined,
classloaders,
joins );
}
/**
* Parse out a set of predefined classloaders from specified nodes.
*
* @param configs the nodes to process
* @return the predefined classloaders
*/
private String[] buildPredefined( final NodeList configs )
{
final ArrayList predefines = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element element = (Element)configs.item( i );
final String predefined = element.getAttribute( "name" );
predefines.add( predefined );
}
return (String[])predefines.toArray( new String[ predefines.size() ] );
}
/**
* Build an array of ClassLoader meta datas from node list.
*
* @param configs the nodes to process
* @return the classloaders
*/
private ClassLoaderMetaData[] buildClassLoaders( final NodeList configs )
throws Exception
{
final ArrayList loaders = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element item = (Element)configs.item( i );
final ClassLoaderMetaData loader = buildLoader( item );
loaders.add( loader );
}
return (ClassLoaderMetaData[])loaders.toArray(
new ClassLoaderMetaData[ loaders.size() ] );
}
/**
* Build a ClassLoader meta datas from element.
*
* @param config the nodes to process
* @return the classloader
*/
private ClassLoaderMetaData buildLoader( final Element config )
throws Exception
{
final String name = config.getAttribute( "name" );
final String parent = config.getAttribute( "parent" );
final String[] entrys =
buildEntrys( config.getElementsByTagName( "entry" ) );
final Extension[] extensions =
buildExtensions( config.getElementsByTagName( "extension" ) );
final FileSetMetaData[] fileSets =
buildFileSets( config.getElementsByTagName( "fileset" ) );
return new ClassLoaderMetaData( name, parent, entrys,
extensions, fileSets );
}
/**
* Build and array of extensions
*
* @param configs the nodes to process
* @return an array of extensions
*/
private Extension[] buildExtensions( final NodeList configs )
throws Exception
{
final ArrayList extensions = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Extension extension =
buildExtension( (Element)configs.item( i ) );
extensions.add( extension );
}
return (Extension[])extensions.toArray(
new Extension[ extensions.size() ] );
}
/**
* Build an extension from a DOM element.
*
* @param config the node to process
* @return an extension
*/
private Extension buildExtension( final Element config )
throws Exception
{
final String name = config.getAttribute( "name" );
if( isUnspecified( name ) )
{
final String message = "Missing name from extension";
throw new Exception( message );
}
final String specVersion =
config.getAttribute( "specification-version" );
final String specVendor =
config.getAttribute( "specification-vendor" );
final String implVersion =
config.getAttribute( "implementation-version" );
final String implVendor =
config.getAttribute( "implementation-vendor" );
final String implVendorID =
config.getAttribute( "implementation-vendor-id" );
final String implURL =
config.getAttribute( "implementation-url" );
return new Extension( name, specVersion, specVendor,
implVersion, implVendor, implVendorID,
implURL );
}
/**
* Build and array of file sets.
*
* @param configs the nodes to process
* @return an array of file sets
*/
private FileSetMetaData[] buildFileSets( final NodeList configs )
{
final ArrayList fileSets = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final FileSetMetaData fileSet =
buildFileSet( (Element)configs.item( i ) );
fileSets.add( fileSet );
}
return (FileSetMetaData[])fileSets.toArray(
new FileSetMetaData[ fileSets.size() ] );
}
/**
* Build a fileset from a DOM element.
*
* @param config the node to process
* @return a fileset
*/
private FileSetMetaData buildFileSet( final Element config )
{
final String dir = config.getAttribute( "dir" );
final String[] includes =
buildSelectors( config.getElementsByTagName( "include" ) );
final String[] excludes =
buildSelectors( config.getElementsByTagName( "exclude" ) );
return new FileSetMetaData( dir, includes, excludes );
}
/**
* Build and array of selectors (ie includes/excludes).
*
* @param configs the nodes to process
* @return an array of selectors
*/
private String[] buildSelectors( final NodeList configs )
{
final ArrayList selectors = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element element = (Element)configs.item( i );
final String name = element.getAttribute( "name" );
selectors.add( name );
}
return (String[])selectors.toArray( new String[ selectors.size() ] );
}
/**
* Build file entrys from a nodelist.
*
* @param configs the nodes to procexx
* @return an array of file entrys
*/
private String[] buildEntrys( final NodeList configs )
{
final ArrayList entrys = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element config = (Element)configs.item( i );
final String entry = config.getAttribute( "location" );
entrys.add( entry );
}
return (String[])entrys.toArray( new String[ entrys.size() ] );
}
/**
* Build an array of Join classloaders out of supplied nodes.
*
* @param configs the nodes to process
* @return the join meta data array
*/
private JoinMetaData[] buildJoins( final NodeList configs )
{
final ArrayList joins = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element config = (Element)configs.item( i );
final JoinMetaData join = buildJoin( config );
joins.add( join );
}
return (JoinMetaData[])joins.toArray( new JoinMetaData[ joins.size() ] );
}
/**
* Build a Join classloader out of supplied Element.
*
* @param config the config element
* @return the join meta data
*/
private JoinMetaData buildJoin( final Element config )
{
final String name = config.getAttribute( "name" );
final NodeList children =
config.getElementsByTagName( "classloader-ref" );
final String[] classloaders =
buildClassLoaderRefs( children );
return new JoinMetaData( name, classloaders );
}
/**
* Create a set of strings for ClassLoader references in a Join
* classloader.
*
* @param configs the nodes to process
* @return the strings for class loader refs
*/
private String[] buildClassLoaderRefs( final NodeList configs )
{
final ArrayList refs = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element element = (Element)configs.item( i );
final String ref = element.getAttribute( "name" );
refs.add( ref );
}
return (String[])refs.toArray( new String[ refs.size() ] );
}
/**
* Utility class to test if attribute is unspecified (by testing if it is
* equal to empty string).
*
* @param attribute the attribute
* @return true if equal to empty string
*/
private boolean isUnspecified( final String attribute )
{
return "".equals( attribute );
}
}
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file14" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/reader">reader</a><br /></span>
<div class="fileheader" id="removed"><big><b>classloader.dtd</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/reader/classloader.dtd?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N classloader.dtd
--- classloader.dtd 31 Mar 2004 03:18:53 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,138 +0,0 @@
</small></pre><pre class="diff" id="removed">-<!--
-
- This is the DTD defining the ClassLoader 1.0
- descriptor (XML) file format/syntax.
-
- Author: Peter Donald
-
- This descriptor is used to describe a mechanism of defining
- a set of ClassLoaders and the arrangment of specified ClassLoaders.
-
- Copyright (C) The Spice Group. All rights reserved.
-
- This software is published under the terms of the Spice
- Software License version 1.1, a copy of which has been included
- with this distribution in the LICENSE.txt file.
-
- -->
-
-<!--
-The classloaders is the document root, it defines:
-
-join the join classloaders
-classloader the regular classloaders
--->
-<!ELEMENT classloaders (predefined*,classloader*,join*)>
-<!ATTLIST classloaders id ID #IMPLIED
-xmlns CDATA #FIXED "http://jakarta.apache.org/avalon/dtds/phoenix/classloaders_1_0.dtd" >
-<!ATTLIST classloaders
-default CDATA #REQUIRED
-version CDATA #REQUIRED >
-
-<!--
-The classloader element describes a regular classloader It defines:
-
-Attributes:
-name the name of classloader type. Must be a string
- containing alphanumeric characters, '.', '-', '_' and
- starting with a letter or a '_'.
-parent the name of the parent classloader
-
-Elements:
-entry an entry in classloader
-fileset an fileset in classloader
-extension an extension in classloader
--->
-<!ELEMENT classloader (entry*,fileset*,extension*)>
-<!ATTLIST classloader
-name CDATA #REQUIRED
-parent CDATA #REQUIRED >
-
-<!--
-The predefined element defines a predefined classloader. It defines:
-
-Attributes:
-name the name of classloader.
--->
-<!ELEMENT predefined EMPTY>
-<!ATTLIST predefined name CDATA #REQUIRED >
-
-<!--
-The classloader element describes a regular classloader It defines:
-
-Attributes:
-name the name of classloader type. Must be a string
- containing alphanumeric characters, '.', '-', '_' and
- starting with a letter or a '_'.
-
-Elements:
-classloader-ref a reference to all classloaders that are joined
--->
-<!ELEMENT join (classloader-ref*)>
-<!ATTLIST join name CDATA #REQUIRED >
-
-<!--
-The classloader-ref defines a ClassLoader that are part of join.
-It defines:
-
-Attributes:
-name the name of other classloader that will join with
--->
-<!ELEMENT classloader-ref EMPTY>
-<!ATTLIST classloader-ref name CDATA #REQUIRED>
-
-<!--
-The entry describes a entry in ClassLoader. It defines:
-
-Attributes:
-location the location (URL) to add to classloader
--->
-<!ELEMENT entry EMPTY>
-<!ATTLIST entry location CDATA #REQUIRED>
-
-<!--
-The classloader element describes a regular classloader It defines:
-
-Attributes:
-name the name of classloader type. Must be a string
- containing alphanumeric characters, '.', '-', '_' and
- starting with a letter or a '_'.
-
-Elements:
-classloader-ref a reference to all classloaders that are joined
--->
-<!ELEMENT fileset ((include|exclude)*)>
-<!ATTLIST fileset dir CDATA #REQUIRED >
-
-<!--
-The entry describes a include for fileset. It defines:
-
-Attributes:
-name the pattern to include
--->
-<!ELEMENT include EMPTY>
-<!ATTLIST include name CDATA #REQUIRED>
-
-<!--
-The entry describes a exclude for fileset. It defines:
-
-Attributes:
-name the pattern to exclude
--->
-<!ELEMENT exclude EMPTY>
-<!ATTLIST exclude name CDATA #REQUIRED>
-
-
-<!--
-The extension describes a extension for ClassLoader.
--->
-<!ELEMENT extension EMPTY>
-<!ATTLIST extension
-name CDATA #REQUIRED
-specification-version CDATA #IMPLIED
-specification-vendor CDATA #IMPLIED
-implementation-version CDATA #IMPLIED
-implementation-vendor CDATA #IMPLIED
-implementation-vendor-id CDATA #IMPLIED
-implementation-url CDATA #IMPLIED
->
</pre></div>
<hr /><a name="file15" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config12.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config12.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config12.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config12.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,6 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <classloader name="*system*" parent="*system*"/>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file16" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config13.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config13.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config13.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config13.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,5 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+ <predefined name="*system*"/>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file17" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config7.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config7.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config7.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config7.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,9 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <classloader name="cl" parent="*system*">
+ <entry location="someFile.jar"/>
+ <entry location="someFile.jar"/>
+ </classloader>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file18" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config5.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config5.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config5.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config5.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,4 @@
</small></pre><pre class="diff" id="added">+<classloaders default="iNoExist" version="1.0">
+ <predefined name="*system*"/>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file19" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config3.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config3.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config3.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config3.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,6 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <classloader name="cl" parent="missing-parent"/>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file20" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config15.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config15.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config15.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config15.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,7 @@
</small></pre><pre class="diff" id="added">+<classloaders default="X" version="1.0">
+ <predefined name="X"/>
+
+ <join name="X">
+ </join>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file21" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config8.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config8.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config8.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config8.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,7 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <join name="jl"/>
+ <join name="jl"/>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file22" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config17.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config17.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config17.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config17.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,35 @@
</small></pre><pre class="diff" id="added">+<classloaders default="join2" version="1.0">
+ <predefined name="*system*"/>
+
+ <classloader name="cl1" parent="*system*">
+ <entry location="someFile.jar"/>
+ <entry location="someOtherFile.jar"/>
+ <fileset dir="someDir">
+ <include name="**/*.jar"/>
+ <include name="**/*.bar"/>
+ <exclude name="**/unwanted/*"/>
+ </fileset>
+ <extension
+ name="Avalon.Framework"
+ specification-version="4.1"
+ specification-vendor="Apache"
+ implementation-version="4.1"
+ implementation-vendor="Apache"
+ implementation-vendor-id="Apache"
+ implementation-url="http://jakarta..."/>
+ </classloader>
+
+ <classloader name="cl2" parent="*system*">
+ <entry location="aFile.jar"/>
+ </classloader>
+
+ <join name="join1">
+ <classloader-ref name="cl1"/>
+ </join>
+
+ <join name="join2">
+ <classloader-ref name="cl1"/>
+ <classloader-ref name="cl2"/>
+ </join>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file23" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config1.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config1.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config1.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,7 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <join name="join$3">
+ </join>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file24" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config11.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config11.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config11.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config11.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,7 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <classloader name="X" parent="*system*"/>
+ <classloader name="X" parent="*system*"/>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file25" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>VerifierTestCase.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/VerifierTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N VerifierTestCase.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ VerifierTestCase.java 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,316 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.verifier.test;
+
+import org.codehaus.loom.classman.metadata.ClassLoaderSetMetaData;
+import org.codehaus.loom.classman.test.AbstractLoaderTestCase;
+import org.codehaus.loom.classman.verifier.ClassLoaderVerifier;
+
+/**
+ * TestCase for {@link org.codehaus.loom.classman.reader.ClassLoaderSetReader}.
+ *
+ * @author Peter Donald
+ */
+public class VerifierTestCase
+ extends AbstractLoaderTestCase
+{
+ public void testConfig1()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config1.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as specified " +
+ "bad name for join" );
+ }
+
+ public void testConfig2()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config2.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as specified " +
+ "bad name for classloader" );
+ }
+
+ public void testConfig3()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config3.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as specified " +
+ "bad parent for classloader" );
+ }
+
+ public void testConfig4()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config4.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as specified " +
+ "non existing ClassLoader in Join " +
+ "classloader-ref" );
+ }
+
+ public void testConfig5()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config5.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as specified " +
+ "default classloader does not exist." );
+ }
+
+ public void testConfig6()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config6.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as specified " +
+ "join classloader links against same " +
+ "classloader multiple times." );
+ }
+
+ public void testConfig7()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config7.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as specified " +
+ "classloader has entry multiple times." );
+ }
+
+ public void testConfig8()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config8.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as a " +
+ "join had same name as another join." );
+ }
+
+ public void testConfig9()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config9.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as a " +
+ "join had same name as a " +
+ "classloader." );
+ }
+
+ public void testConfig10()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config10.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as a " +
+ "join had same name as another " +
+ "predefined classloader." );
+ }
+
+ public void testConfig11()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config11.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as a " +
+ "classloader had same name as another " +
+ "classloader." );
+ }
+
+ public void testConfig12()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config12.xml" );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as a " +
+ "classloader had same name as a " +
+ "predefined classloader." );
+ }
+
+ public void testConfig13()
+ throws Exception
+ {
+ try
+ {
+ final ClassLoaderSetMetaData defs =
+ buildFromResource( "config13.xml" );
+ verify( defs );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as a " +
+ "predefined had same name as another " +
+ "predefined." );
+ }
+
+ public void testConfig14()
+ throws Exception
+ {
+ try
+ {
+ final ClassLoaderSetMetaData defs =
+ buildFromResource( "config14.xml" );
+ verify( defs );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as a " +
+ "predefined an empty name." );
+ }
+
+ public void testConfig15()
+ throws Exception
+ {
+ try
+ {
+ final ClassLoaderSetMetaData defs =
+ buildFromResource( "config15.xml" );
+ verify( defs );
+ }
+ catch( final Throwable t )
+ {
+ return;
+ }
+
+ fail( "Expected verify to fail as a " +
+ "predefined has same name as join." );
+ }
+
+ public void testConfig16()
+ throws Exception
+ {
+ try
+ {
+ final ClassLoaderSetMetaData defs =
+ buildFromResource( "config16.xml" );
+ verify( defs );
+ }
+ catch( final Throwable t )
+ {
+ fail( "Should be able to have a join as default classloader." );
+ }
+ }
+
+ public void testConfig17()
+ throws Exception
+ {
+ try
+ {
+ verifyResource( "config17.xml" );
+ }
+ catch( final Throwable t )
+ {
+ fail( "Expected verify to pass" );
+ }
+ }
+
+ private void verifyResource( final String resource )
+ throws Exception
+ {
+ final ClassLoaderSetMetaData defs = buildFromResource( resource );
+ verify( defs );
+ }
+
+ private void verify( final ClassLoaderSetMetaData defs )
+ throws Exception
+ {
+ final ClassLoaderVerifier verifier = new ClassLoaderVerifier();
+ verifier.verifyClassLoaderSet( defs );
+ }
+}
</pre></div>
<hr /><a name="file26" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config2.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config2.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config2.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config2.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,7 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <classloader name="cl+" parent="*system*">
+ </classloader>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file27" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config4.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config4.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config4.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config4.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,8 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <join name="jl">
+ <classloader-ref name="non-existent"/>
+ </join>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file28" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config16.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config16.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config16.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config16.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,5 @@
</small></pre><pre class="diff" id="added">+<classloaders default="X" version="1.0">
+ <join name="X">
+ </join>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file29" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config6.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config6.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config6.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config6.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,9 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <join name="jl">
+ <classloader-ref name="*system*"/>
+ <classloader-ref name="*system*"/>
+ </join>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file30" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config14.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config14.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config14.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config14.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,7 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <join name="">
+ </join>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file31" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config9.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config9.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config9.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config9.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,8 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <join name="j1"/>
+
+ <classloader name="j1" parent="*system*"/>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file32" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config10.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/verifier/test/config10.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config10.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config10.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,6 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <join name="*system*"/>
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file33" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config11.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config11.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config11.xml
--- config11.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,7 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <classloader name="X" parent="*system*"/>
- <classloader name="X" parent="*system*"/>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file34" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config15.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config15.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config15.xml
--- config15.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,7 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="X" version="1.0">
- <predefined name="X"/>
-
- <join name="X">
- </join>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file35" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config10.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config10.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config10.xml
--- config10.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,6 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <join name="*system*"/>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file36" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config4.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config4.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config4.xml
--- config4.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,8 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <join name="jl">
- <classloader-ref name="non-existent"/>
- </join>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file37" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config13.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config13.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config13.xml
--- config13.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,5 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
- <predefined name="*system*"/>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file38" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config1.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config1.xml
--- config1.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,7 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <join name="join$3">
- </join>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file39" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config9.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config9.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config9.xml
--- config9.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,8 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <join name="j1"/>
-
- <classloader name="j1" parent="*system*"/>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file40" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config14.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config14.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config14.xml
--- config14.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,7 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <join name="">
- </join>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file41" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config8.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config8.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config8.xml
--- config8.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,7 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <join name="jl"/>
- <join name="jl"/>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file42" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config2.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config2.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config2.xml
--- config2.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,7 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <classloader name="cl+" parent="*system*">
- </classloader>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file43" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config5.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config5.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config5.xml
--- config5.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,4 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="iNoExist" version="1.0">
- <predefined name="*system*"/>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file44" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config12.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config12.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config12.xml
--- config12.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,6 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <classloader name="*system*" parent="*system*"/>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file45" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>VerifierTestCase.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/VerifierTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N VerifierTestCase.java
--- VerifierTestCase.java 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,316 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.verifier.test;
-
-import org.jcontainer.loom.classman.metadata.ClassLoaderSetMetaData;
-import org.jcontainer.loom.classman.test.AbstractLoaderTestCase;
-import org.jcontainer.loom.classman.verifier.ClassLoaderVerifier;
-
-/**
- * TestCase for {@link org.jcontainer.loom.classman.reader.ClassLoaderSetReader}.
- *
- * @author Peter Donald
- */
-public class VerifierTestCase
- extends AbstractLoaderTestCase
-{
- public void testConfig1()
- throws Exception
- {
- try
- {
- verifyResource( "config1.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as specified " +
- "bad name for join" );
- }
-
- public void testConfig2()
- throws Exception
- {
- try
- {
- verifyResource( "config2.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as specified " +
- "bad name for classloader" );
- }
-
- public void testConfig3()
- throws Exception
- {
- try
- {
- verifyResource( "config3.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as specified " +
- "bad parent for classloader" );
- }
-
- public void testConfig4()
- throws Exception
- {
- try
- {
- verifyResource( "config4.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as specified " +
- "non existing ClassLoader in Join " +
- "classloader-ref" );
- }
-
- public void testConfig5()
- throws Exception
- {
- try
- {
- verifyResource( "config5.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as specified " +
- "default classloader does not exist." );
- }
-
- public void testConfig6()
- throws Exception
- {
- try
- {
- verifyResource( "config6.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as specified " +
- "join classloader links against same " +
- "classloader multiple times." );
- }
-
- public void testConfig7()
- throws Exception
- {
- try
- {
- verifyResource( "config7.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as specified " +
- "classloader has entry multiple times." );
- }
-
- public void testConfig8()
- throws Exception
- {
- try
- {
- verifyResource( "config8.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as a " +
- "join had same name as another join." );
- }
-
- public void testConfig9()
- throws Exception
- {
- try
- {
- verifyResource( "config9.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as a " +
- "join had same name as a " +
- "classloader." );
- }
-
- public void testConfig10()
- throws Exception
- {
- try
- {
- verifyResource( "config10.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as a " +
- "join had same name as another " +
- "predefined classloader." );
- }
-
- public void testConfig11()
- throws Exception
- {
- try
- {
- verifyResource( "config11.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as a " +
- "classloader had same name as another " +
- "classloader." );
- }
-
- public void testConfig12()
- throws Exception
- {
- try
- {
- verifyResource( "config12.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as a " +
- "classloader had same name as a " +
- "predefined classloader." );
- }
-
- public void testConfig13()
- throws Exception
- {
- try
- {
- final ClassLoaderSetMetaData defs =
- buildFromResource( "config13.xml" );
- verify( defs );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as a " +
- "predefined had same name as another " +
- "predefined." );
- }
-
- public void testConfig14()
- throws Exception
- {
- try
- {
- final ClassLoaderSetMetaData defs =
- buildFromResource( "config14.xml" );
- verify( defs );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as a " +
- "predefined an empty name." );
- }
-
- public void testConfig15()
- throws Exception
- {
- try
- {
- final ClassLoaderSetMetaData defs =
- buildFromResource( "config15.xml" );
- verify( defs );
- }
- catch( final Throwable t )
- {
- return;
- }
-
- fail( "Expected verify to fail as a " +
- "predefined has same name as join." );
- }
-
- public void testConfig16()
- throws Exception
- {
- try
- {
- final ClassLoaderSetMetaData defs =
- buildFromResource( "config16.xml" );
- verify( defs );
- }
- catch( final Throwable t )
- {
- fail( "Should be able to have a join as default classloader." );
- }
- }
-
- public void testConfig17()
- throws Exception
- {
- try
- {
- verifyResource( "config17.xml" );
- }
- catch( final Throwable t )
- {
- fail( "Expected verify to pass" );
- }
- }
-
- private void verifyResource( final String resource )
- throws Exception
- {
- final ClassLoaderSetMetaData defs = buildFromResource( resource );
- verify( defs );
- }
-
- private void verify( final ClassLoaderSetMetaData defs )
- throws Exception
- {
- final ClassLoaderVerifier verifier = new ClassLoaderVerifier();
- verifier.verifyClassLoaderSet( defs );
- }
-}
</pre></div>
<hr /><a name="file46" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config17.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config17.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config17.xml
--- config17.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,35 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="join2" version="1.0">
- <predefined name="*system*"/>
-
- <classloader name="cl1" parent="*system*">
- <entry location="someFile.jar"/>
- <entry location="someOtherFile.jar"/>
- <fileset dir="someDir">
- <include name="**/*.jar"/>
- <include name="**/*.bar"/>
- <exclude name="**/unwanted/*"/>
- </fileset>
- <extension
- name="Avalon.Framework"
- specification-version="4.1"
- specification-vendor="Apache"
- implementation-version="4.1"
- implementation-vendor="Apache"
- implementation-vendor-id="Apache"
- implementation-url="http://jakarta..."/>
- </classloader>
-
- <classloader name="cl2" parent="*system*">
- <entry location="aFile.jar"/>
- </classloader>
-
- <join name="join1">
- <classloader-ref name="cl1"/>
- </join>
-
- <join name="join2">
- <classloader-ref name="cl1"/>
- <classloader-ref name="cl2"/>
- </join>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file47" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config3.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config3.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config3.xml
--- config3.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,6 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <classloader name="cl" parent="missing-parent"/>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file48" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config7.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config7.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config7.xml
--- config7.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,9 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <classloader name="cl" parent="*system*">
- <entry location="someFile.jar"/>
- <entry location="someFile.jar"/>
- </classloader>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file49" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config6.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config6.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config6.xml
--- config6.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,9 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <join name="jl">
- <classloader-ref name="*system*"/>
- <classloader-ref name="*system*"/>
- </join>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file50" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier">verifier</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config16.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/verifier/test/config16.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config16.xml
--- config16.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,5 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="X" version="1.0">
- <join name="X">
- </join>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file51" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>config1.xml</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config1.xml
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config1.xml 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,43 @@
</small></pre><pre class="diff" id="added">+<classloaders default="*system*" version="1.0">
+ <predefined name="*system*"/>
+
+ <classloader name="LOADER_1" parent="*system*">
+ <entry location="cl1.jar"/>
+ </classloader>
+
+ <classloader name="LOADER_2" parent="*system*">
+ <entry location="cl2.jar"/>
+ </classloader>
+
+ <classloader name="LOADER_3" parent="*system*">
+ <fileset dir=".">
+ <include name="**/*.jar"/>
+ <exclude name="SAR-INF/lib/*.jar"/>
+ </fileset>
+ </classloader>
+
+ <classloader name="LOADER_4" parent="LOADER_1">
+ <fileset dir=".">
+ <include name="SAR-INF/lib/*.jar"/>
+ </fileset>
+ </classloader>
+
+ <classloader name="LOADER_5" parent="LOADER_1">
+ <fileset dir=".">
+ <include name="SAR-INF/**/cl4.jar"/>
+ </fileset>
+ </classloader>
+
+ <classloader name="LOADER_6" parent="LOADER_1">
+ <fileset dir="SAR-INF">
+ <include name="lib/cl4.jar"/>
+ </fileset>
+ </classloader>
+
+ <join name="JOIN_1">
+ <classloader-ref name="LOADER_1"/>
+ <classloader-ref name="LOADER_2"/>
+ </join>
+
+
+</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file52" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>DataConstants.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test/DataConstants.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N DataConstants.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ DataConstants.java 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,28 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.test;
+
+import org.codehaus.loom.extension.Extension;
+
+/**
+ * Constants used in the tests.
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:24 $
+ */
+public interface DataConstants
+{
+ String DATA1_RESOURCE = "org/codehaus/loom/classman/test/data/cl1/Resource.properties";
+ String DATA1_CLASS = "org.codehaus.loom.classman.test.data.cl1.Data1";
+ String DATA1_CLASS2 = "org.codehaus.loom.classman.test.data.cl1.Data2";
+ String DATA2_CLASS = "org.codehaus.loom.classman.test.data.cl2.CL2Data";
+ String DATA3_CLASS = "org.codehaus.loom.classman.test.data.cl3.CL3Data";
+ String DATA4_CLASS = "org.codehaus.loom.classman.test.data.cl4.CL4Data";
+ Extension EXTENSION =
+ new Extension( "Foo-Ext", null, null, null, null, null, null );
+}
</pre></div>
<hr /><a name="file53" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>AbstractLoaderTestCase.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test/AbstractLoaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N AbstractLoaderTestCase.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ AbstractLoaderTestCase.java 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,82 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.test;
+
+import java.io.File;
+import java.io.InputStream;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import junit.framework.TestCase;
+
+import org.codehaus.loom.classman.metadata.ClassLoaderSetMetaData;
+import org.codehaus.loom.classman.reader.ClassLoaderSetReader;
+import org.w3c.dom.Document;
+
+/**
+ * An abstract base class for all the tests that performed on loaders.
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:24 $
+ */
+public abstract class AbstractLoaderTestCase
+ extends TestCase
+{
+ protected ClassLoaderSetMetaData buildFromStream( final InputStream stream )
+ throws Exception
+ {
+ try
+ {
+ final ClassLoaderSetReader builder = new ClassLoaderSetReader();
+ final Document config = load( stream );
+ return builder.build( config.getDocumentElement() );
+ }
+ catch( final Exception e )
+ {
+ fail( "Error building ClassLoaderSet: " + e );
+ return null;
+ }
+ }
+
+ protected Document load( final InputStream stream )
+ throws Exception
+ {
+ final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ //factory.setValidating(true);
+ //factory.setNamespaceAware(true);
+ final DocumentBuilder builder = factory.newDocumentBuilder();
+ return builder.parse( stream );
+ }
+
+ protected ClassLoaderSetMetaData buildFromResource( final String resource )
+ throws Exception
+ {
+ final InputStream stream = getClass().getResourceAsStream( resource );
+ if( null == stream )
+ {
+ fail( "Missing resource " + resource );
+ }
+ return buildFromStream( stream );
+ }
+
+ protected File getBaseDirectory()
+ {
+ final String basedir = System.getProperty( "basedir", "." );
+ final File root = new File( basedir );
+ File baseDirectory = new File( root, "target/test-classes" );
+ if( !baseDirectory.exists() )
+ {
+ baseDirectory = new File( root, "target/classes" );
+ }
+
+ if( !baseDirectory.exists() )
+ {
+ fail( "Unable to locate base test directory" );
+ }
+ return baseDirectory;
+ }
+}
</pre></div>
<hr /><a name="file54" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>IntegrationTestCase.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/test/IntegrationTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N IntegrationTestCase.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ IntegrationTestCase.java 19 Apr 2004 22:19:24 -0000 1.1
@@ -0,0 +1,142 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.test;
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.codehaus.loom.classman.builder.LoaderBuilder;
+import org.codehaus.loom.classman.builder.SimpleLoaderResolver;
+import org.codehaus.loom.classman.metadata.ClassLoaderSetMetaData;
+import org.codehaus.loom.classman.verifier.ClassLoaderVerifier;
+
+/**
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:24 $
+ */
+public class IntegrationTestCase
+ extends AbstractLoaderTestCase
+{
+ public void testPresence()
+ throws Exception
+ {
+ final Map map = buildClassLoaders( "config1.xml" );
+
+ assertPresent( map, "LOADER_1" );
+ assertPresent( map, "LOADER_2" );
+ assertPresent( map, "LOADER_3" );
+ assertPresent( map, "LOADER_4" );
+ assertPresent( map, "LOADER_5" );
+ assertPresent( map, "LOADER_6" );
+ assertPresent( map, "JOIN_1" );
+
+ final String[] files1 = new String[]{"cl1.jar"};
+ final String[] files2 = new String[]{"cl2.jar"};
+ final String[] files3 = new String[]{"cl1.jar", "cl2.jar"};
+ final String[] files4 =
+ new String[]{"SAR-INF/lib/cl3.jar", "SAR-INF/lib/cl4.jar"};
+ final String[] files5 = new String[]{"SAR-INF/lib/cl4.jar"};
+ final String[] files6 = new String[]{"SAR-INF/lib/cl4.jar"};
+
+ assertURLsPresent( map, "LOADER_1", files1 );
+ assertURLsPresent( map, "LOADER_2", files2 );
+ assertURLsPresent( map, "LOADER_3", files3 );
+ assertURLsPresent( map, "LOADER_4", files4 );
+ assertURLsPresent( map, "LOADER_5", files5 );
+ assertURLsPresent( map, "LOADER_6", files6 );
+
+ assertClassPresent( map, "LOADER_1", DataConstants.DATA1_CLASS );
+ assertClassPresent( map, "LOADER_1", DataConstants.DATA1_CLASS2 );
+ assertClassPresent( map, "LOADER_2", DataConstants.DATA2_CLASS );
+ assertClassPresent( map, "LOADER_3", DataConstants.DATA1_CLASS );
+ assertClassPresent( map, "LOADER_3", DataConstants.DATA1_CLASS2 );
+ assertClassPresent( map, "LOADER_3", DataConstants.DATA2_CLASS );
+ assertClassPresent( map, "LOADER_4", DataConstants.DATA1_CLASS );
+ assertClassPresent( map, "LOADER_4", DataConstants.DATA1_CLASS2 );
+ assertClassPresent( map, "LOADER_4", DataConstants.DATA3_CLASS );
+ assertClassPresent( map, "LOADER_4", DataConstants.DATA4_CLASS );
+ assertClassPresent( map, "LOADER_5", DataConstants.DATA1_CLASS );
+ assertClassPresent( map, "LOADER_5", DataConstants.DATA1_CLASS2 );
+ assertClassPresent( map, "LOADER_5", DataConstants.DATA4_CLASS );
+ assertClassPresent( map, "LOADER_6", DataConstants.DATA1_CLASS );
+ assertClassPresent( map, "LOADER_6", DataConstants.DATA1_CLASS2 );
+ assertClassPresent( map, "LOADER_6", DataConstants.DATA4_CLASS );
+ assertClassPresent( map, "JOIN_1", DataConstants.DATA1_CLASS );
+ assertClassPresent( map, "JOIN_1", DataConstants.DATA1_CLASS2 );
+ assertClassPresent( map, "JOIN_1", DataConstants.DATA2_CLASS );
+ }
+
+ private void assertClassPresent( final Map map,
+ final String name,
+ final String classname )
+ {
+ final ClassLoader classLoader = (ClassLoader)map.get( name );
+ try
+ {
+ classLoader.loadClass( classname );
+ }
+ catch( ClassNotFoundException e )
+ {
+ fail( "Unable to load " + classname + " from " +
+ name + " classloader" );
+ }
+ }
+
+ private void assertURLsPresent( final Map map,
+ final String name,
+ final String[] files )
+ {
+ final URLClassLoader classLoader = (URLClassLoader)map.get( name );
+ final URL[] urls = classLoader.getURLs();
+
+ assertEquals( "URL count:", files.length, urls.length );
+ for( int i = 0; i < urls.length; i++ )
+ {
+ final URL url = urls[ i ];
+ final String file = files[ i ];
+ assertTrue( "url=" + url + " ends with " + file,
+ url.getFile().endsWith( file ) );
+ }
+ }
+
+ private void assertPresent( final Map map,
+ final String name )
+ {
+ assertTrue( "map.containsKey( '" + name + "' )",
+ map.containsKey( name ) );
+ /*
+ final Object object = map.get( name );
+ if( object instanceof URLClassLoader )
+ {
+ final URLClassLoader classLoader = (URLClassLoader)object;
+ final URL[] urls = classLoader.getURLs();
+ System.out.println( name + ": " + Arrays.asList( urls ) );
+ }
+ */
+ }
+
+ private Map buildClassLoaders( final String resource )
+ throws Exception
+ {
+ final ClassLoaderSetMetaData metaData =
+ buildFromResource( resource );
+ final ClassLoaderVerifier verifier = new ClassLoaderVerifier();
+ verifier.verifyClassLoaderSet( metaData );
+ final LoaderBuilder builder = new LoaderBuilder();
+ final HashMap predefined = new HashMap();
+ predefined.put( "*system*", ClassLoader.getSystemClassLoader() );
+ final File baseDirectory = getBaseDirectory();
+ final SimpleLoaderResolver resolver =
+ new SimpleLoaderResolver( baseDirectory );
+ return builder.buildClassLoaders( metaData, resolver, predefined );
+ }
+}
</pre></div>
<hr /><a name="file55" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontai
ner/loom/support/classman/src/testdata/org/codehaus/loom/classman">classman</a>/<a href="!
http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl1">cl1</a><br /></span>
<div class="fileheader" id="added"><big><b>Resource.properties</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl1/Resource.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N Resource.properties
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Resource.properties 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1 @@
</small></pre><pre class="diff" id="added">+Some random resource!
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file56" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontai
ner/loom/support/classman/src/testdata/org/codehaus/loom/classman">classman</a>/<a href="!
http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl1">cl1</a><br /></span>
<div class="fileheader" id="added"><big><b>Data2.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl1/Data2.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N Data2.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Data2.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1,18 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.test.data.cl1;
+
+/**
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
+ */
+public class Data2
+{
+ public final static String CROSS_REF = Data1.class.getName();
+}
</pre></div>
<hr /><a name="file57" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontai
ner/loom/support/classman/src/testdata/org/codehaus/loom/classman">classman</a>/<a href="!
http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl1">cl1</a><br /></span>
<div class="fileheader" id="added"><big><b>Data1.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl1/Data1.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N Data1.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Data1.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1,17 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.test.data.cl1;
+
+/**
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
+ */
+public class Data1
+{
+}
</pre></div>
<hr /><a name="file58" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org
/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman">classman</a>!
/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl1">cl1</a><br /></span>
<div class="fileheader" id="removed"><big><b>Data1.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl1/Data1.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N Data1.java
--- Data1.java 31 Mar 2004 03:18:56 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,17 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.test.data.cl1;
-
-/**
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:56 $
- */
-public class Data1
-{
-}
</pre></div>
<hr /><a name="file59" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org
/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman">classman</a>!
/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl1">cl1</a><br /></span>
<div class="fileheader" id="removed"><big><b>Data2.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl1/Data2.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N Data2.java
--- Data2.java 31 Mar 2004 03:18:56 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,18 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.test.data.cl1;
-
-/**
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:56 $
- */
-public class Data2
-{
- public final static String CROSS_REF = Data1.class.getName();
-}
</pre></div>
<hr /><a name="file60" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org
/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman">classman</a>!
/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl1">cl1</a><br /></span>
<div class="fileheader" id="removed"><big><b>Resource.properties</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl1/Resource.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N Resource.properties
--- Resource.properties 31 Mar 2004 03:18:56 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1 +0,0 @@
</small></pre><pre class="diff" id="removed">-Some random resource!
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file61" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org
/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman">classman</a>!
/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl3">cl3</a><br /></span>
<div class="fileheader" id="removed"><big><b>CL3Data.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl3/CL3Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N CL3Data.java
--- CL3Data.java 31 Mar 2004 03:18:56 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,20 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.test.data.cl3;
-
-import org.jcontainer.loom.classman.test.data.cl1.Data1;
-
-/**
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:56 $
- */
-public class CL3Data
-{
- public final static String CROSS_REF = Data1.class.getName();
-}
</pre></div>
<hr /><a name="file62" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/runtime">runtime</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/runtime/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>JoinClassLoaderTestCase.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/runtime/test/JoinClassLoaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N JoinClassLoaderTestCase.java
--- JoinClassLoaderTestCase.java 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,141 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.runtime.test;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Enumeration;
-import org.jcontainer.loom.classman.runtime.JoinClassLoader;
-import org.jcontainer.loom.classman.test.AbstractLoaderTestCase;
-import org.jcontainer.loom.classman.test.DataConstants;
-
-/**
- * Unit test for join classloader.
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:55 $
- */
-public class JoinClassLoaderTestCase
- extends AbstractLoaderTestCase
-{
- public void testJoinClassLoader()
- throws Exception
- {
- if( System.getProperty( "gump", "false" ).equals( "true" ) )
- {
- //Can't test the rest of this as it requires
- //explicit classloader setup that gump ignores.
- return;
- }
-
- final URLClassLoader cl1 = createClassLoader( "cl1.jar" );
- final URLClassLoader cl2 = createClassLoader( "cl2.jar" );
- final ClassLoader[] cls = new ClassLoader[]{cl1, cl2};
- final JoinClassLoader join =
- new JoinClassLoader( cls, ClassLoader.getSystemClassLoader() );
- try
- {
- join.loadClass( DataConstants.DATA1_CLASS );
- }
- catch( ClassNotFoundException e )
- {
- fail( "Unable to load Data1 from cl1 classloader" );
- }
- try
- {
- join.loadClass( DataConstants.DATA2_CLASS );
- }
- catch( ClassNotFoundException e )
- {
- fail( "Unable to load CL2Data from cl2 classloader" );
- }
- try
- {
- join.loadClass( "i.no.exist" );
- fail( "Expected that would be unable to load non-existent class" );
- }
- catch( ClassNotFoundException e )
- {
- }
-
- try
- {
- assertEquals( "Loading from system classloader",
- Integer.class,
- join.loadClass( Integer.class.getName() ) );
- }
- catch( ClassNotFoundException e )
- {
- fail( "Unable to load Integer from classloader" );
- }
-
- final URL url1 = join.getResource( DataConstants.DATA1_RESOURCE );
- assertNotNull( "Loading " + DataConstants.DATA1_RESOURCE + " from c1 classloader",
- url1 );
- final URL url2 = join.getResource( "noexist.txt" );
- assertNull( "Loading noexist.txt from c1 classloader", url2 );
-
- final Enumeration resources1 = join.getResources( DataConstants.DATA1_RESOURCE );
- assertNotNull( "Loading set of " + DataConstants.DATA1_RESOURCE + " from c1 classloader",
- resources1 );
- assertTrue( "Count of resource from classloader", resources1.hasMoreElements() );
- assertEquals( "Resource found from classloader", url1, resources1.nextElement() );
-
- assertTrue( "Second Count of resource from classloader", !resources1.hasMoreElements() );
-
- final Enumeration resources2 = join.getResources( "noexist.txt" );
- assertNotNull( "Loading set of noexist.txt from c1 classloader", resources2 );
- assertTrue( "Count of noexist.txt from classloader", !resources2.hasMoreElements() );
-
- try
- {
- ClassLoader.getSystemClassLoader().loadClass( DataConstants.DATA1_CLASS );
- }
- catch( ClassNotFoundException e )
- {
- return;
- }
- fail( "Able to load Data1 from system classloader" );
- }
-
- public void testCtorNullsInClassLoaderSet()
- throws Exception
- {
- try
- {
- new JoinClassLoader( null,
- ClassLoader.getSystemClassLoader() );
- fail( "Expected a NPE" );
- }
- catch( NullPointerException e )
- {
- assertEquals( "NPE type", "classLoaders", e.getMessage() );
- }
- try
- {
- new JoinClassLoader( new ClassLoader[]{null},
- ClassLoader.getSystemClassLoader() );
- fail( "Expected a NPE" );
- }
- catch( NullPointerException e )
- {
- assertEquals( "NPE type", "classLoaders[0]", e.getMessage() );
- }
- }
-
- private URLClassLoader createClassLoader( final String filename ) throws MalformedURLException
- {
- final File baseDirectory = getBaseDirectory();
- final File file = new File( baseDirectory, filename );
- final URL url = file.toURL();
- final URL[] urls = new URL[]{url};
- return new URLClassLoader( urls, ClassLoader.getSystemClassLoader() );
- }
-}
</pre></div>
<hr /><a name="file63" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder">builder</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>TestLoaderResolver.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder/test/TestLoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N TestLoaderResolver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TestLoaderResolver.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1,51 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.builder.test;
+
+import org.codehaus.loom.classman.builder.SimpleLoaderResolver;
+import org.codehaus.loom.classman.test.DataConstants;
+import org.codehaus.loom.extension.Extension;
+
+import java.io.File;
+import java.net.URL;
+import java.util.Set;
+
+/**
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
+ */
+class TestLoaderResolver
+ extends SimpleLoaderResolver
+{
+ public TestLoaderResolver( final File baseDirectory )
+ {
+ super( baseDirectory );
+ }
+
+ public URL resolveExtension( final Extension extension )
+ throws Exception
+ {
+ if( extension == DataConstants.EXTENSION )
+ {
+ return new URL( "file:/" );
+ }
+ else
+ {
+ return super.resolveExtension( extension );
+ }
+ }
+
+ protected void scanDependencies( Extension[] required,
+ Extension[] available,
+ Set dependencies,
+ Set unsatisfied )
+ {
+ super.scanDependencies( required, available, dependencies, unsatisfied );
+ }
+}
</pre></div>
<hr /><a name="file64" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder">builder</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>SimpleLoaderResolverTestCase.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder/test/SimpleLoaderResolverTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N SimpleLoaderResolverTestCase.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SimpleLoaderResolverTestCase.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1,46 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.builder.test;
+
+import java.net.URL;
+
+import org.codehaus.loom.classman.builder.SimpleLoaderResolver;
+import org.codehaus.loom.classman.test.AbstractLoaderTestCase;
+import org.codehaus.loom.classman.test.DataConstants;
+
+/**
+ * Unit test for join classloader.
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
+ */
+public class SimpleLoaderResolverTestCase
+ extends AbstractLoaderTestCase
+{
+ public void testNullBaseDirectory()
+ throws Exception
+ {
+ final SimpleLoaderResolver resolver = new SimpleLoaderResolver( null );
+ final URL url = resolver.resolveURL( "." );
+ assertTrue( "URL is a dir", url.toString().endsWith( "/" ) );
+ }
+
+ public void testNullManager()
+ throws Exception
+ {
+ final SimpleLoaderResolver resolver = new SimpleLoaderResolver( null );
+ try
+ {
+ resolver.resolveExtension( DataConstants.EXTENSION );
+ fail( "Expected resolve extension as resolver unable to implement" );
+ }
+ catch( UnsupportedOperationException e )
+ {
+ }
+ }
+}
</pre></div>
<hr /><a name="file65" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder">builder</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>LoaderBuilderTestCase.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/builder/test/LoaderBuilderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N LoaderBuilderTestCase.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ LoaderBuilderTestCase.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1,112 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.builder.test;
+
+import java.io.File;
+import java.util.HashMap;
+
+import org.codehaus.loom.classman.builder.LoaderBuilder;
+import org.codehaus.loom.classman.builder.SimpleLoaderResolver;
+import org.codehaus.loom.classman.metadata.ClassLoaderMetaData;
+import org.codehaus.loom.classman.metadata.ClassLoaderSetMetaData;
+import org.codehaus.loom.classman.metadata.FileSetMetaData;
+import org.codehaus.loom.classman.metadata.JoinMetaData;
+import org.codehaus.loom.classman.test.AbstractLoaderTestCase;
+import org.codehaus.loom.classman.test.DataConstants;
+import org.codehaus.loom.extension.Extension;
+
+/**
+ * Unit test for join classloader.
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
+ */
+public class LoaderBuilderTestCase
+ extends AbstractLoaderTestCase
+{
+ public void testMissingClassLoader()
+ throws Exception
+ {
+ final LoaderBuilder builder = new LoaderBuilder();
+ final ClassLoaderMetaData classLoader =
+ new ClassLoaderMetaData( "blah",
+ "bad-parent",
+ new String[ 0 ],
+ new Extension[ 0 ],
+ new FileSetMetaData[ 0 ] );
+ final ClassLoaderSetMetaData metadata =
+ new ClassLoaderSetMetaData( "blah",
+ new String[ 0 ],
+ new ClassLoaderMetaData[]{classLoader},
+ new JoinMetaData[ 0 ] );
+ final SimpleLoaderResolver resolver = new SimpleLoaderResolver( null );
+ final HashMap predefined = new HashMap();
+ try
+ {
+ builder.buildClassLoaders( metadata, resolver, predefined );
+ fail( "Expected to fail as unable to find classloader 'bad-parent'" );
+ }
+ catch( Exception e )
+ {
+ assertTrue( "Exception message", -1 != e.getMessage().indexOf( "bad-parent" ) );
+ return;
+ }
+ }
+
+ public void testMissingPredefined()
+ throws Exception
+ {
+ final LoaderBuilder builder = new LoaderBuilder();
+ final ClassLoaderSetMetaData metadata =
+ new ClassLoaderSetMetaData( "*system*",
+ new String[]{"*system*"},
+ new ClassLoaderMetaData[ 0 ],
+ new JoinMetaData[ 0 ] );
+ final SimpleLoaderResolver resolver = new SimpleLoaderResolver( null );
+ final HashMap predefined = new HashMap();
+ try
+ {
+ builder.buildClassLoaders( metadata, resolver, predefined );
+ fail( "Expected to fail as predefined list did " +
+ "not container predefined specified in metadata" );
+ }
+ catch( Exception e )
+ {
+ assertTrue( "Exception message", -1 != e.getMessage().indexOf( "*system*" ) );
+ return;
+ }
+ }
+
+ public void testExtensions()
+ throws Exception
+ {
+ final LoaderBuilder builder = new LoaderBuilder();
+ final ClassLoaderMetaData classLoader =
+ new ClassLoaderMetaData( "ext",
+ "*system*",
+ new String[ 0 ],
+ new Extension[]{DataConstants.EXTENSION},
+ new FileSetMetaData[ 0 ] );
+ final ClassLoaderSetMetaData metadata =
+ new ClassLoaderSetMetaData( "ext",
+ new String[]{"*system*"},
+ new ClassLoaderMetaData[]{classLoader},
+ new JoinMetaData[ 0 ] );
+ final SimpleLoaderResolver resolver = new TestLoaderResolver( new File( "." ) );
+ final HashMap predefined = new HashMap();
+ predefined.put( "*system*", ClassLoader.getSystemClassLoader() );
+ try
+ {
+ builder.buildClassLoaders( metadata, resolver, predefined );
+ }
+ catch( Exception e )
+ {
+ fail( "Unexpected failure to build classloaders with extension: " + e );
+ }
+ }
+}
</pre></div>
<hr /><a name="file66" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata">metadata</a><br /></span>
<div class="fileheader" id="added"><big><b>ClassLoaderMetaData.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata/ClassLoaderMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N ClassLoaderMetaData.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ClassLoaderMetaData.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1,101 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.metadata;
+
+import org.codehaus.loom.extension.Extension;
+
+/**
+ * This class defines a specific classloader, made up of entrys, Extension and
+ * FileSetMetaData objects.
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
+ */
+public class ClassLoaderMetaData
+{
+ /**
+ * The name of the current classloader. This may be used by other
+ * ClassLoader definitions to refer to this ClassLoader.
+ */
+ private final String m_name;
+
+ /** The name of the parent classloader. */
+ private final String m_parent;
+
+ /** The Entrys that are added to this ClassLoader. */
+ private final String[] m_entrys;
+
+ /** The Entrys that are required by this ClassLoader. */
+ private final Extension[] m_extensions;
+
+ /** The Filesets that are added to this ClassLoader. */
+ private final FileSetMetaData[] m_filesets;
+
+ public ClassLoaderMetaData( final String name,
+ final String parent,
+ final String[] entrys,
+ final Extension[] extensions,
+ final FileSetMetaData[] filesets )
+ {
+ m_name = name;
+ m_parent = parent;
+ m_entrys = entrys;
+ m_extensions = extensions;
+ m_filesets = filesets;
+ }
+
+ /**
+ * Return the name of Classloader.
+ *
+ * @return the name of Classloader.
+ */
+ public String getName()
+ {
+ return m_name;
+ }
+
+ /**
+ * Return the name of parent Classloader.
+ *
+ * @return the name of parent Classloader.
+ */
+ public String getParent()
+ {
+ return m_parent;
+ }
+
+ /**
+ * Return the elements added to Classloader.
+ *
+ * @return the elements added to Classloader.
+ */
+ public String[] getEntrys()
+ {
+ return m_entrys;
+ }
+
+ /**
+ * Return the extensions added to Classloader.
+ *
+ * @return the extensions added to Classloader.
+ */
+ public Extension[] getExtensions()
+ {
+ return m_extensions;
+ }
+
+ /**
+ * Return the filesets added to Classloader.
+ *
+ * @return the filesets added to Classloader.
+ */
+ public FileSetMetaData[] getFilesets()
+ {
+ return m_filesets;
+ }
+}
</pre></div>
<hr /><a name="file67" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata">metadata</a><br /></span>
<div class="fileheader" id="added"><big><b>ClassLoaderSetMetaData.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata/ClassLoaderSetMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N ClassLoaderSetMetaData.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ClassLoaderSetMetaData.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1,159 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.metadata;
+
+/**
+ * This class defines a set of ClassLoaders and the default ClassLoader to use.
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
+ */
+public class ClassLoaderSetMetaData
+{
+ /**
+ * The name of the current classloader. This may be used by other
+ * ClassLoader definitions to refer to this ClassLoader.
+ */
+ private final String m_default;
+
+ /** The set of ClassLoaders predefined by the application. */
+ private final String[] m_predefined;
+
+ /** The classloaders defined in set. */
+ private final ClassLoaderMetaData[] m_classLoaders;
+
+ /** The joining classloaders defined in set. */
+ private final JoinMetaData[] m_joins;
+
+ /**
+ * Construct set with specified set and ClassLoaders.
+ *
+ * @param aDefault the name of default ClassLoader
+ * @param classLoaders the ClassLoaders in set
+ */
+ public ClassLoaderSetMetaData( final String aDefault,
+ final String[] predefined,
+ final ClassLoaderMetaData[] classLoaders,
+ final JoinMetaData[] joins )
+ {
+ if( null == aDefault )
+ {
+ throw new NullPointerException( "aDefault" );
+ }
+ if( null == classLoaders )
+ {
+ throw new NullPointerException( "classLoaders" );
+ }
+ if( null == joins )
+ {
+ throw new NullPointerException( "joins" );
+ }
+ if( null == predefined )
+ {
+ throw new NullPointerException( "predefined" );
+ }
+
+ m_default = aDefault;
+ m_predefined = predefined;
+ m_classLoaders = classLoaders;
+ m_joins = joins;
+ }
+
+ /**
+ * Return the default ClassLoader name.
+ *
+ * @return the default ClassLoader name.
+ */
+ public String getDefault()
+ {
+ return m_default;
+ }
+
+ /**
+ * Return the set of predefined ClassLoaders.
+ *
+ * @return the set of predefined ClassLoaders.
+ */
+ public String[] getPredefined()
+ {
+ return m_predefined;
+ }
+
+ /**
+ * Return the classloaders in set.
+ *
+ * @return the classloaders in set.
+ */
+ public ClassLoaderMetaData[] getClassLoaders()
+ {
+ return m_classLoaders;
+ }
+
+ /**
+ * Return the "join" classloaders in set.
+ *
+ * @return the "join" classloaders in set.
+ */
+ public JoinMetaData[] getJoins()
+ {
+ return m_joins;
+ }
+
+ /**
+ * Return true if specified name, designates a predefined ClassLoader.
+ *
+ * @return true if specified name, designates a predefined ClassLoader.
+ */
+ public boolean isPredefined( final String name )
+ {
+ for( int i = 0; i < m_predefined.length; i++ )
+ {
+ if( m_predefined[ i ].equals( name ) )
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Return the classloader with specified name.
+ *
+ * @return the classloader with specified name
+ */
+ public ClassLoaderMetaData getClassLoader( final String name )
+ {
+ for( int i = 0; i < m_classLoaders.length; i++ )
+ {
+ final ClassLoaderMetaData classLoader = m_classLoaders[ i ];
+ if( classLoader.getName().equals( name ) )
+ {
+ return classLoader;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Return the "join" classloader with specified name.
+ *
+ * @return the "join" classloader with specified name
+ */
+ public JoinMetaData getJoin( final String name )
+ {
+ for( int i = 0; i < m_joins.length; i++ )
+ {
+ final JoinMetaData join = m_joins[ i ];
+ if( join.getName().equals( name ) )
+ {
+ return join;
+ }
+ }
+ return null;
+ }
+}
</pre></div>
<hr /><a name="file68" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata">metadata</a><br /></span>
<div class="fileheader" id="added"><big><b>FileSetMetaData.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata/FileSetMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N FileSetMetaData.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ FileSetMetaData.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1,81 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.metadata;
+
+/**
+ * This class represent a set of files anchored in a base directory. The set of
+ * files is determined by the include and excludes that are specified for
+ * fileset. If no includes or excludes are specified then all files in base
+ * directory are added to fileset.
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
+ */
+public class FileSetMetaData
+{
+ /** The base directory from which to apply all the includes/excludes. */
+ private final String m_baseDirectory;
+
+ /** The set of patterns to include in fileset. */
+ private final String[] m_includes;
+
+ /** The set of patterns to exclude from fileset. */
+ private final String[] m_excludes;
+
+ public FileSetMetaData( final String baseDirectory,
+ final String[] includes,
+ final String[] excludes )
+ {
+ if( null == baseDirectory )
+ {
+ throw new NullPointerException( "baseDirectory" );
+ }
+ if( null == includes )
+ {
+ throw new NullPointerException( "includes" );
+ }
+ if( null == excludes )
+ {
+ throw new NullPointerException( "excludes" );
+ }
+
+ m_baseDirectory = baseDirectory;
+ m_includes = includes;
+ m_excludes = excludes;
+ }
+
+ /**
+ * Return the base directory of fileset.
+ *
+ * @return the base directory of fileset.
+ */
+ public String getBaseDirectory()
+ {
+ return m_baseDirectory;
+ }
+
+ /**
+ * Return the list of includes for fileset.
+ *
+ * @return the list of includes for fileset.
+ */
+ public String[] getIncludes()
+ {
+ return m_includes;
+ }
+
+ /**
+ * Return the list of excludes for fileset.
+ *
+ * @return the list of excludes for fileset.
+ */
+ public String[] getExcludes()
+ {
+ return m_excludes;
+ }
+}
</pre></div>
<hr /><a name="file69" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata">metadata</a><br /></span>
<div class="fileheader" id="added"><big><b>JoinMetaData.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/metadata/JoinMetaData.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N JoinMetaData.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ JoinMetaData.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1,59 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.metadata;
+
+/**
+ * This class defines a classloader that "merges" multiple classloaders. For
+ * this to be successful, it is required that the ClassLoaders contain disjoint
+ * sets of classes (with the exception of classes loaded from the system
+ * classpath).
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
+ */
+public class JoinMetaData
+{
+ /**
+ * The name of the current classloader. This may be used by other
+ * ClassLoader definitions to refer to this ClassLoader.
+ */
+ private final String m_name;
+
+ /** The list of classloaders that are merged in this classloader. */
+ private final String[] m_classloaders;
+
+ /**
+ * The definition for set of classloaders
+ */
+ public JoinMetaData( final String name,
+ final String[] classloaders )
+ {
+ m_name = name;
+ m_classloaders = classloaders;
+ }
+
+ /**
+ * Return the name of Classloader.
+ *
+ * @return the name of Classloader.
+ */
+ public String getName()
+ {
+ return m_name;
+ }
+
+ /**
+ * Return the list of classloaders that are merged in this classloader
+ *
+ * @return the list of classloaders that are merged in this classloader
+ */
+ public String[] getClassloaders()
+ {
+ return m_classloaders;
+ }
+}
</pre></div>
<hr /><a name="file70" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder">builder</a><br /></span>
<div class="fileheader" id="added"><big><b>LoaderResolver.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder/LoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N LoaderResolver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ LoaderResolver.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1 @@
</small></pre><pre class="diff" id="added">+/*
* Copyright (C) The Spice Group. All rights reserved.
*
* This software is published under the terms of the Spice
* Software License version 1.1, a copy of which has been included
* with this distribution in the LICENSE.txt file.
*/
package org.codehaus.loom.classman.builder;
import java.net.URL;
import org.codehaus.loom.extension.Extension;
/**
* This is the class that clients provide to implement a specific policy with
* respect to how ClassLoader hierarchy is constructed.
*
* @author Peter Donald
* @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
*/
public interface LoaderResolver
{
/**
* Resolve an Extension to a URL. The URL that locates the "Optional
* Package" that provides specified Extension.
*
* @param extension the extension
* @return the URL that locates the "Optional Package" that provides
* specified Extension.
* @throws Exception if unable to locate Extension
*/
URL resolveExtension( Extension extension )
throws Exception;
/**
* Resolve a string into a URL. This allows resolvers to anchor URLs using
* relative URL or by handling non-standard URL protocols (such as
* "sar:/SAR-INF/lib/cornerstone.jar").
*
* @param location the location to transform into a URL
* @return the URL
* @throws Exception if unable to resolve URL
*/
URL resolveURL( String location )
throws Exception;
/**
* Resolve a fileset to a set of URLs.
*
* @param baseDirectory the Base directory of fileset
* @return the set of URLs making up fileset
* @throws Exception if unable to resolve fileset
*/
URL[] resolveFileSet( String baseDirectory,
String[] includes,
String[] excludes )
throws Exception;
/**
* Create a Join ClassLoader for specified ClassLoaders.
*
* @param classLoaders the ClassLoaders to "join"
* @return the joined ClassLoader
* @throws Exception if unable to create classloader
*/
ClassLoader createJoinClassLoader( ClassLoader[] classLoaders )
throws Exception;
/**
* Create a ClassLoader with specified parent and containing specified
* URLs.
*
* @param parent the parent classloader
* @param urls the URLs that the ClassLoader should contain
* @return the newly created ClassLoader
* @throws Exception if unable to create classloader
*/
ClassLoader createClassLoader( ClassLoader parent, URL[] urls )
throws Exception;
}
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file71" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder">builder</a><br /></span>
<div class="fileheader" id="added"><big><b>LoaderBuilder.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder/LoaderBuilder.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N LoaderBuilder.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ LoaderBuilder.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1 @@
</small></pre><pre class="diff" id="added">+/*
* Copyright (C) The Spice Group. All rights reserved.
*
* This software is published under the terms of the Spice
* Software License version 1.1, a copy of which has been included
* with this distribution in the LICENSE.txt file.
*/
package org.codehaus.loom.classman.builder;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.codehaus.loom.classman.metadata.ClassLoaderMetaData;
import org.codehaus.loom.classman.metadata.ClassLoaderSetMetaData;
import org.codehaus.loom.classman.metadata.FileSetMetaData;
import org.codehaus.loom.classman.metadata.JoinMetaData;
import org.codehaus.loom.extension.Extension;
/**
* This class is responsible for building the set of actual {@link
* java.lang.ClassLoader}s out of the {@link ClassLoaderSetMetaData} objects.
*
* @author Peter Donald
* @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
*/
public class LoaderBuilder
{
/**
* Build a map of all the classloaders defined by the metadata.
*
* @param metadata the metadata
* @param resolver the reoslver to use to resolve files/urls etc
* @param predefined the map containing all the predefined classloaders.
* @return the map of created classloaders
* @throws Exception if unable to create some classloaders
*/
public Map buildClassLoaders( final ClassLoaderSetMetaData metadata,
final LoaderResolver resolver,
final Map predefined )
throws Exception
{
final HashMap classLoaders = new HashMap();
addPredefined( metadata.getPredefined(), predefined, classLoaders );
addAllClassLoaders( metadata, resolver, classLoaders );
addAllJoins( metadata, resolver, classLoaders );
return classLoaders;
}
/**
* Add all the classloaders to the result metaData.
*
* @param metaData the metadata
* @param resolver the resolver to use
* @param classLoaders the result map of classloaders
* @throws Exception if unable to create the classloaders
*/
private void addAllClassLoaders( final ClassLoaderSetMetaData metaData,
final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
final ClassLoaderMetaData[] classLoaderDefs = metaData.getClassLoaders();
for( int i = 0; i < classLoaderDefs.length; i++ )
{
final String name = classLoaderDefs[ i ].getName();
processClassLoader( name, metaData, resolver, classLoaders );
}
}
/**
* Add all the classloaders to the result metaData.
*
* @param metaData the metadata
* @param resolver the resolver to use
* @param classLoaders the result map of classloaders
* @throws Exception if unable to create the classloaders
*/
private void addAllJoins( final ClassLoaderSetMetaData metaData,
final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
final JoinMetaData[] joins = metaData.getJoins();
for( int i = 0; i < joins.length; i++ )
{
final String name = joins[ i ].getName();
processClassLoader( name, metaData, resolver, classLoaders );
}
}
/**
* Process a ClassLoader entry, create ClassLoader and add it to result
* map.
*
* @param name the name of classloader
* @param set the set of metatadata
* @param resolver the resolver for construction
* @param classLoaders the result map of classloaders
* @throws Exception if unable to process classloader
*/
private void processClassLoader( final String name,
final ClassLoaderSetMetaData set,
final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
if( classLoaders.containsKey( name ) )
{
return;
}
final ClassLoaderMetaData regular = set.getClassLoader( name );
if( null != regular )
{
//Make sure parent classloader is built
processClassLoader( regular.getParent(),
set,
resolver,
classLoaders );
final ClassLoader classLoader =
buildRegularClassLoader( regular, resolver, classLoaders );
classLoaders.put( name, classLoader );
}
else
{
final JoinMetaData join = set.getJoin( name );
if( null == join )
{
final String message = "Unknown classloader " + name;
throw new Exception( message );
}
//Make sure all our dependencies are processed
final String[] names = join.getClassloaders();
for( int i = 0; i < names.length; i++ )
{
processClassLoader( names[ i ], set, resolver, classLoaders );
}
final ClassLoader classLoader =
buildJoinClassLoader( join, resolver, classLoaders );
classLoaders.put( name, classLoader );
}
}
/**
* Create a Join ClassLoader.
*
* @param join the metadata
* @param resolver the resolver to use to resolve URLs etc
* @param classLoaders the already created ClassLoaders
* @return the created JoinClassLoader
*/
private ClassLoader buildJoinClassLoader( final JoinMetaData join,
final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
final ArrayList list = new ArrayList();
final String[] names = join.getClassloaders();
for( int i = 0; i < names.length; i++ )
{
list.add( classLoaders.get( names[ i ] ) );
}
final ClassLoader[] elements =
(ClassLoader[])list.toArray( new ClassLoader[ list.size() ] );
return resolver.createJoinClassLoader( elements );
}
/**
* Build a regular classloader with entries, extensions and filesets fully
* resolved.
*
* @param metaData the classloader definition
* @param resolver the resolver to use when creating URLs/Extensions etc
* @param classLoaders the already created ClassLoaders
* @return the created ClassLoader
* @throws Exception if unable to create ClassLoader
*/
private ClassLoader buildRegularClassLoader(
final ClassLoaderMetaData metaData,
final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
final ClassLoader parent =
(ClassLoader)classLoaders.get( metaData.getParent() );
final ArrayList urlSet = new ArrayList();
final String[] entrys = metaData.getEntrys();
for( int i = 0; i < entrys.length; i++ )
{
final URL url = resolver.resolveURL( entrys[ i ] );
urlSet.add( url );
}
//Add all filesets defined for classloader
final FileSetMetaData[] filesets = metaData.getFilesets();
for( int i = 0; i < filesets.length; i++ )
{
final FileSetMetaData fileset = filesets[ i ];
final String baseDirectory = fileset.getBaseDirectory();
final String[] includes = fileset.getIncludes();
final String[] excludes = fileset.getExcludes();
final URL[] urls =
resolver.resolveFileSet( baseDirectory,
includes,
excludes );
for( int j = 0; j < urls.length; j++ )
{
urlSet.add( urls[ j ] );
}
}
final Extension[] extensions = metaData.getExtensions();
for( int i = 0; i < extensions.length; i++ )
{
final URL url = resolver.resolveExtension( extensions[ i ] );
urlSet.add( url );
}
final URL[] urls = (URL[])urlSet.toArray( new URL[ urlSet.size() ] );
return resolver.createClassLoader( parent, urls );
}
/**
* Add all the predefined classloaders to the set of available
* ClassLoaders.
*
* @param entrys the names of predefined classloaders
* @param predefined the map containg predefined classloaders
* @param classLoaders the destination map of classloaders
*/
private void addPredefined( final String[] entrys,
final Map predefined,
final HashMap classLoaders )
{
for( int i = 0; i < entrys.length; i++ )
{
final String name = entrys[ i ];
final ClassLoader classLoader =
(ClassLoader)predefined.get( name );
if( null == classLoader )
{
final String message =
"Missing predefined ClassLoader " + name;
throw new IllegalArgumentException( message );
}
classLoaders.put( name, classLoader );
}
}
}
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file72" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder">builder</a><br /></span>
<div class="fileheader" id="added"><big><b>SimpleLoaderResolver.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder/SimpleLoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N SimpleLoaderResolver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SimpleLoaderResolver.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1 @@
</small></pre><pre class="diff" id="added">+/*
* Copyright (C) The Spice Group. All rights reserved.
*
* This software is published under the terms of the Spice
* Software License version 1.1, a copy of which has been included
* with this distribution in the LICENSE.txt file.
*/
package org.codehaus.loom.classman.builder;
import java.io.File;
import java.io.IOException;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.jar.Manifest;
import org.codehaus.loom.classman.runtime.JoinClassLoader;
import org.codehaus.loom.extension.Extension;
import org.codehaus.spice.salt.i18n.ResourceManager;
import org.codehaus.spice.salt.i18n.Resources;
import org.codehaus.spice.salt.io.FileUtil;
import org.codehaus.spice.salt.io.PathMatcher;
/**
* This is a class that performs resolver that; <ul> <li>creates "Join"
* ClassLoaders using the {@link JoinClassLoader} class</li> <li>creates normal
* ClassLoaders using a {@link URLClassLoader}. It also makes sure that all
* dependencies of jars (as declared using the JDK1.3 "Optional Pakcages" Spec)
* are present in classloader.</li> <li>The locations are resolved to a single
* base directiory.</li> <li>The Extensions are not resolved but may be by
* subclasses.</li> <li>FileSets are currently unsupported and throw a {@link
* UnsupportedOperationException} if attempt to be constructed.</li> </ul>
*
* @author Peter Donald
* @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
*/
public class SimpleLoaderResolver
implements LoaderResolver
{
/** i18n utils for presenting messages. */
private static final Resources REZ =
ResourceManager.getPackageResources( SimpleLoaderResolver.class );
/** The base directory relative to which to aquire files. */
private File m_baseDirectory;
/**
* Create a resolver that resolves all files according to specied
* baseDirectory.
*
* @param baseDirectory the base directory
*/
public SimpleLoaderResolver( final File baseDirectory )
{
setBaseDirectory( baseDirectory );
}
/**
* Retrieve a URL for specified extension.
*
* @param extension the extension
* @return the URL
* @throws Exception if unable to locate URL for extension
*/
public URL resolveExtension( final Extension extension )
throws Exception
{
throw new UnsupportedOperationException();
}
/**
* Resolve a location to a particular URL.
*
* @param location the location
* @return the URL
* @throws Exception if unable to resolve location
*/
public URL resolveURL( final String location )
throws Exception
{
final File file = getFileFor( location );
String url = file.toURL().toString();
if( file.isDirectory() )
{
url += "/";
}
return new URL( url );
}
/**
* Resolve a fileset.
*
* @param baseDirectory the base directory of fileset
* @param includes the list of ant-style includes
* @param excludes the list of ant style excludes
* @return the URLs contained within fileset
* @throws Exception if unable to resolve fileset
*/
public URL[] resolveFileSet( final String baseDirectory,
final String[] includes,
final String[] excludes )
throws Exception
{
final File base = getFileFor( "." );
return resolveFileSet( base, baseDirectory, includes, excludes );
}
/**
* Create a Join ClassLoader for specified ClassLoaders. Use {@link
* JoinClassLoader} to implement functionality.
*
* @param classLoaders the ClassLoaders to "join"
* @return the joined ClassLoader
* @throws Exception if unable to create classloader
*/
public ClassLoader createJoinClassLoader( final ClassLoader[] classLoaders )
throws Exception
{
return new JoinClassLoader( classLoaders,
ClassLoader.getSystemClassLoader() );
}
/**
* Create a ClassLoader with specified parent and containing specified URLs.
* This implementation just creates it using the default URLClassLoader.
*
* @param parent the parent classloader
* @param urls the URLs that the ClassLoader should contain
* @return the newly created ClassLoader
* @throws Exception if unable to create classloader
*/
public ClassLoader createClassLoader( final ClassLoader parent,
final URL[] urls )
throws Exception
{
final URL[] classpath = determineCompleteClasspath( urls );
return new URLClassLoader( classpath, parent );
}
/**
* Retrieve the complete classpath given an input set of URLs. The complete
* classpath includes all URLs for extensions required by the jars
* (according to the "Optional Package" Spec).
*
* @param urls the urls
* @return the complete set of URLs for classpath
* @throws Exception if unable to determine complete classpath set
*/
protected final URL[] determineCompleteClasspath( final URL[] urls )
throws Exception
{
final ArrayList classpathSet = new ArrayList();
//Add all supplied URLS to classpath
for( int i = 0; i < urls.length; i++ )
{
final URL url = urls[ i ];
classpathSet.add( url );
}
//Add all the optional packages that are declared as
// dependencies of class path elements
final File[] files = getOptionalPackagesFor( urls );
for( int i = 0; i < files.length; i++ )
{
final File file = files[ i ];
classpathSet.add( file.toURL() );
}
//Define final classpath with all dependencies added
return (URL[])classpathSet.toArray( new URL[ classpathSet.size() ] );
}
/**
* Utility class to retrieve a file object for specified location.
*
* @param location which to get file for.
* @return the file for specified location
*/
protected File getFileFor( final String location )
throws IOException
{
File base = getBaseDirectory();
if( null == base )
{
base = new File( "." );
}
return new File( base, location ).getCanonicalFile();
}
/**
* Return the base directory against which to resolve relative files.
*
* @return the base directory against which to resolve relative files.
*/
protected File getBaseDirectory()
{
return m_baseDirectory;
}
/**
* Set the base directory.
*
* @param baseDirectory the base directory.
*/
protected void setBaseDirectory( File baseDirectory )
{
m_baseDirectory = baseDirectory;
}
/**
* Retrieve the files for the optional packages required by the jars in
* ClassPath.
*
* @param classPath the Classpath array
* @return the files that need to be added to ClassLoader
*/
protected final File[] getOptionalPackagesFor( final URL[] classPath )
throws Exception
{
final Manifest[] manifests = getManifests( classPath );
final Extension[] available = Extension.getAvailable( manifests );
final Extension[] required = Extension.getRequired( manifests );
if( isDebugEnabled() )
{
final String message1 =
REZ.format( "available-extensions",
Arrays.asList( available ) );
debug( message1 );
final String message2 =
REZ.format( "required-extensions",
Arrays.asList( required ) );
debug( message2 );
}
if( 0 == required.length )
{
return new File[ 0 ];
}
final Set dependencies = new HashSet();
final Set unsatisfied = new HashSet();
scanDependencies( required,
available,
dependencies,
unsatisfied );
final int size = unsatisfied.size();
if( 0 != size )
{
final Iterator iterator = unsatisfied.iterator();
while( iterator.hasNext() )
{
final Extension extension = (Extension)iterator.next();
final Object[] params = new Object[]
{
extension.getExtensionName(),
extension.getSpecificationVendor(),
extension.getSpecificationVersion(),
extension.getImplementationVendor(),
extension.getImplementationVendorID(),
extension.getImplementationVersion(),
extension.getImplementationURL()
};
final String message = REZ.format( "missing.extension",
params );
warn( message );
}
final String message =
REZ.format( "unsatisfied.extensions", new Integer( size ) );
throw new Exception( message );
}
if( isDebugEnabled() )
{
final String message =
REZ.format( "optional-packages-added", dependencies );
debug( message );
}
return (File[])dependencies.toArray( new File[ dependencies.size() ] );
}
/**
* Attempt to locate a set of dependencies that transitively satisfy all
* required extensions.
*
* @param required the required extensions
* @param available the extensions already available
* @param dependencies the set of dependencies collected by this method
* @param unsatisfied this method should place any unsatisfied depenencies
* into this set
*/
protected void scanDependencies( final Extension[] required,
final Extension[] available,
final Set dependencies,
final Set unsatisfied )
{
throw new UnsupportedOperationException();
}
/**
* write out a warning message. Subclasses may overide this method to
* redirect logging as appropriate.
*
* @param message the warning message
*/
protected void warn( final String message )
{
}
/**
* Determine if debug messages are turned on. Subclasses should overide this
* method.
*
* @return true if debugging enabled.
*/
protected boolean isDebugEnabled()
{
return false;
}
/**
* write out a debug message. Subclasses may overide this method to redirect
* logging as appropriate.
*
* @param message the debug message
*/
protected void debug( final String message )
{
}
/**
* Retrieve all the Manifests from the specified Classlpath.
*
* @param classPath the classpath
* @return the set of manifests on the classpath
* @throws Exception if there is an error reading manifests from files on
* classpath
*/
private Manifest[] getManifests( final URL[] classPath )
throws Exception
{
final ArrayList manifests = new ArrayList();
for( int i = 0; i < classPath.length; i++ )
{
final URL element = classPath[ i ];
if( element.getFile().endsWith( ".jar" ) )
{
try
{
final URL url = new URL( "jar:" + element + "!/" );
final JarURLConnection connection =
(JarURLConnection)url.openConnection();
final Manifest manifest = connection.getManifest();
if( null != manifest )
{
manifests.add( manifest );
}
}
catch( final IOException ioe )
{
final String message =
REZ.format( "bad-classpath-entry", element );
throw new Exception( message );
}
}
}
return (Manifest[])manifests.toArray( new Manifest[ 0 ] );
}
/**
* Resolve a fileset in a particular hierarchy.
*
* @param base the file hierarchy to use
* @param baseDirectory the base directory (relative to base)
* @param includes the ant-style include patterns
* @param excludes the ant-style exclude patterns
* @return the resolved URLs for fileset
*/
protected final URL[] resolveFileSet( final File base,
final String baseDirectory,
final String[] includes,
final String[] excludes )
{
//woefully inefficient .. but then again - no need
//for efficency here
final String newBaseDirectory = FileUtil.normalize( baseDirectory );
final String[] newIncludes = prefixPatterns( newBaseDirectory,
includes );
final String[] newExcludes = prefixPatterns( newBaseDirectory,
excludes );
final PathMatcher matcher = new PathMatcher( newIncludes,
newExcludes );
final File[] files = FileUtil.resolveFileSet( base, matcher );
try
{
return FileUtil.toURLs( files );
}
catch( IOException ioe )
{
throw new IllegalArgumentException( ioe.getMessage() );
}
}
/**
* Return a new array with specified prefix added to start of every element
* in supplied array.
*
* @param prefix the prefix
* @param patterns the source array
* @return a new array with all elements having prefix added
*/
private String[] prefixPatterns( final String prefix,
final String[] patterns )
{
if( 0 == prefix.length() || ".".equals( prefix ) )
{
return patterns;
}
final String[] newPatterns = new String[ patterns.length ];
for( int i = 0; i < newPatterns.length; i++ )
{
newPatterns[ i ] = prefix + "/" + patterns[ i ];
}
return newPatterns;
}
}
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file73" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder">builder</a><br /></span>
<div class="fileheader" id="added"><big><b>Resources.properties</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/builder/Resources.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N Resources.properties
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Resources.properties 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1,8 @@
</small></pre><pre class="diff" id="added">+missing.extension=Unable to locate an extension that is required by application.\nExtension Name: {0}\nSpecification Vendor: {1}\nSpecification Version: {2}\nImplementation Vendor: {3}\nImplementation Vendor-Id: {4}\nImplementation Version: {5}\nImplementation URL: {6}
+unsatisfied.extensions=Missing {0} extensions and thus can not build ClassLoader for application.
+bad-classpath-entry=There is a bad entry ("{0}") on classpath that made it impossible to load a manifest.
+available-extensions=The list of available extensions for application includes; {0}
+required-extensions=The list of required extensions for application includes; {0}
+optional-packages-added=The list of "Optional Packages" added to the application includes; {0}
+classpath-entries=The list of classpath entries for the application includes; {0}
+missing-packagemanager=Unable to resolve Extension as no PackageManager has been specified.
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file74" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config4.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/config4.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config4.xml
--- config4.xml 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,4 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.2">
- <predefined name="*system*"/>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file75" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config5.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/config5.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config5.xml
--- config5.xml 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="cl1" version="1.0">
- <predefined name="*system*"/>
-
- <classloader name="cl1" parent="*system*">
- <extension
- specification-version="4.1"
- specification-vendor="Apache"
- implementation-version="4.1"
- implementation-vendor="Apache"
- implementation-vendor-id="Apache"
- implementation-url="http://jakarta..."/>
- </classloader>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file76" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config1.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config1.xml
--- config1.xml 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,35 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="join2" version="1.0">
- <predefined name="*system*"/>
-
- <classloader name="cl1" parent="*system*">
- <entry location="someFile.jar"/>
- <entry location="someOtherFile.jar"/>
- <fileset dir="someDir">
- <include name="**/*.jar"/>
- <include name="**/*.bar"/>
- <exclude name="**/unwanted/*"/>
- </fileset>
- <extension
- name="Avalon.Framework"
- specification-version="4.1"
- specification-vendor="Apache"
- implementation-version="4.1"
- implementation-vendor="Apache"
- implementation-vendor-id="Apache"
- implementation-url="http://jakarta..." />
- </classloader>
-
- <classloader name="cl2" parent="*system*">
- <entry location="aFile.jar"/>
- </classloader>
-
- <join name="join1">
- <classloader-ref name="cl1"/>
- </join>
-
- <join name="join2">
- <classloader-ref name="cl1"/>
- <classloader-ref name="cl2"/>
- </join>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file77" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config2.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/config2.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config2.xml
--- config2.xml 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,4 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders version="1.0">
- <predefined name="*system*"/>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file78" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config3.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/config3.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config3.xml
--- config3.xml 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,4 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*">
- <predefined name="*system*"/>
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file79" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader">reader</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>ReaderTestCase.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/reader/test/ReaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N ReaderTestCase.java
--- ReaderTestCase.java 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,187 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.reader.test;
-
-import org.jcontainer.loom.classman.metadata.ClassLoaderSetMetaData;
-import org.jcontainer.loom.classman.test.AbstractLoaderTestCase;
-
-/**
- * TestCase for {@link org.jcontainer.loom.classman.reader.ClassLoaderSetReader}.
- *
- * @author Peter Donald
- */
-public class ReaderTestCase
- extends AbstractLoaderTestCase
-{
- public void testConfig1()
- throws Exception
- {
- final ClassLoaderSetMetaData defs =
- buildFromResource( "config1.xml" );
-
- assertEquals( "ClassLoader Predefined Count",
- 1,
- defs.getPredefined().length );
- assertEquals( "ClassLoader Predefined",
- "*system*",
- defs.getPredefined()[ 0 ] );
- assertEquals( "ClassLoader Default",
- "join2",
- defs.getDefault() );
- assertEquals( "ClassLoader Count",
- 2,
- defs.getClassLoaders().length );
- assertEquals( "Join Count",
- 2,
- defs.getJoins().length );
- assertNotNull( "ClassLoader cl1",
- defs.getClassLoader( "cl1" ) );
- assertNotNull( "ClassLoader cl2",
- defs.getClassLoader( "cl2" ) );
- assertNotNull( "Join join1",
- defs.getJoin( "join1" ) );
- assertNotNull( "Join join2",
- defs.getJoin( "join2" ) );
-
- assertEquals( "ClassLoader cl1.entrys Name",
- defs.getClassLoader( "cl1" ).getName(),
- "cl1" );
- assertEquals( "ClassLoader cl1.entrys Count",
- defs.getClassLoader( "cl1" ).getEntrys().length,
- 2 );
- assertEquals( "ClassLoader cl1.filesets Count",
- defs.getClassLoader( "cl1" ).getFilesets().length,
- 1 );
- assertEquals( "ClassLoader cl1.extensions Count",
- defs.getClassLoader( "cl1" ).getExtensions().length,
- 1 );
- assertEquals( "ClassLoader cl1.fileset[0] Dir",
- defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getBaseDirectory(),
- "someDir" );
- assertEquals( "ClassLoader cl1.fileset[0] Include count",
- defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getIncludes().length,
- 2 );
- assertEquals( "ClassLoader cl1.fileset[0] Exclude count",
- defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getExcludes().length,
- 1 );
- assertEquals( "ClassLoader cl1.fileset[0].include[0] name",
- defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getIncludes()[ 0 ],
- "**/*.jar" );
- assertEquals( "ClassLoader cl1.fileset[0].include[1] name",
- defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getIncludes()[ 1 ],
- "**/*.bar" );
- assertEquals( "ClassLoader cl1.fileset[0].exclude[0] name",
- defs.getClassLoader( "cl1" ).getFilesets()[ 0 ].getExcludes()[ 0 ],
- "**/unwanted/*" );
- assertEquals( "ClassLoader cl1.entrys[0] Location",
- defs.getClassLoader( "cl1" ).getEntrys()[ 0 ],
- "someFile.jar" );
- assertEquals( "ClassLoader cl1.entrys[1] Location",
- defs.getClassLoader( "cl1" ).getEntrys()[ 1 ],
- "someOtherFile.jar" );
-
- assertEquals( "ClassLoader cl2.entrys Name",
- defs.getClassLoader( "cl2" ).getName(),
- "cl2" );
- assertEquals( "ClassLoader cl2.entrys Count",
- defs.getClassLoader( "cl2" ).getEntrys().length,
- 1 );
- assertEquals( "ClassLoader cl2.filesets Count",
- defs.getClassLoader( "cl2" ).getFilesets().length,
- 0 );
- assertEquals( "ClassLoader cl2.extensions Count",
- defs.getClassLoader( "cl2" ).getExtensions().length,
- 0 );
- assertEquals( "ClassLoader cl2.entrys[0] Location",
- defs.getClassLoader( "cl2" ).getEntrys()[ 0 ],
- "aFile.jar" );
-
- assertEquals( "Join join1.refs Name",
- defs.getJoin( "join1" ).getName(),
- "join1" );
- assertEquals( "Join join1.refs Count",
- defs.getJoin( "join1" ).getClassloaders().length,
- 1 );
- assertEquals( "Join join1.refs[0] Name",
- defs.getJoin( "join1" ).getClassloaders()[ 0 ],
- "cl1" );
-
- assertEquals( "Join join2.refs Name",
- defs.getJoin( "join2" ).getName(),
- "join2" );
- assertEquals( "Join join2.refs Count",
- defs.getJoin( "join2" ).getClassloaders().length,
- 2 );
- assertEquals( "Join join2.refs[0] Name",
- defs.getJoin( "join2" ).getClassloaders()[ 0 ],
- "cl1" );
- assertEquals( "Join join2.refs[1] Name",
- defs.getJoin( "join2" ).getClassloaders()[ 1 ],
- "cl2" );
- }
-
- public void testConfig2()
- throws Exception
- {
- try
- {
- buildFromResource( "config2.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
- fail( "Should have failed as loaded a " +
- "configuration with no default set" );
- }
-
- public void testConfig3()
- throws Exception
- {
- try
- {
- buildFromResource( "config3.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
- fail( "Should have failed as loaded a " +
- "configuration with no version set" );
- }
-
- public void testConfig4()
- throws Exception
- {
- try
- {
- buildFromResource( "config4.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
- fail( "Should have failed as loaded a " +
- "configuration with bad version" );
- }
-
- public void testConfig5()
- throws Exception
- {
- try
- {
- buildFromResource( "config5.xml" );
- }
- catch( final Throwable t )
- {
- return;
- }
- fail( "Should have failed as loaded a " +
- "configuration with extension with null name" );
- }
-}
</pre></div>
<hr /><a name="file80" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder">builder</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>TestLoaderResolver.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder/test/TestLoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N TestLoaderResolver.java
--- TestLoaderResolver.java 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,50 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.builder.test;
-
-import org.jcontainer.loom.classman.builder.SimpleLoaderResolver;
-import org.jcontainer.loom.classman.test.DataConstants;
-import org.jcontainer.loom.extension.Extension;
-import java.io.File;
-import java.net.URL;
-import java.util.Set;
-
-/**
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:54 $
- */
-class TestLoaderResolver
- extends SimpleLoaderResolver
-{
- public TestLoaderResolver( final File baseDirectory )
- {
- super( baseDirectory );
- }
-
- public URL resolveExtension( final Extension extension )
- throws Exception
- {
- if( extension == DataConstants.EXTENSION )
- {
- return new URL( "file:/" );
- }
- else
- {
- return super.resolveExtension( extension );
- }
- }
-
- protected void scanDependencies( Extension[] required,
- Extension[] available,
- Set dependencies,
- Set unsatisfied )
- {
- super.scanDependencies( required, available, dependencies, unsatisfied );
- }
-}
</pre></div>
<hr /><a name="file81" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder">builder</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>SimpleLoaderResolverTestCase.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder/test/SimpleLoaderResolverTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N SimpleLoaderResolverTestCase.java
--- SimpleLoaderResolverTestCase.java 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,45 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.builder.test;
-
-import java.net.URL;
-import org.jcontainer.loom.classman.builder.SimpleLoaderResolver;
-import org.jcontainer.loom.classman.test.AbstractLoaderTestCase;
-import org.jcontainer.loom.classman.test.DataConstants;
-
-/**
- * Unit test for join classloader.
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:54 $
- */
-public class SimpleLoaderResolverTestCase
- extends AbstractLoaderTestCase
-{
- public void testNullBaseDirectory()
- throws Exception
- {
- final SimpleLoaderResolver resolver = new SimpleLoaderResolver( null );
- final URL url = resolver.resolveURL( "." );
- assertTrue( "URL is a dir", url.toString().endsWith( "/" ) );
- }
-
- public void testNullManager()
- throws Exception
- {
- final SimpleLoaderResolver resolver = new SimpleLoaderResolver( null );
- try
- {
- resolver.resolveExtension( DataConstants.EXTENSION );
- fail( "Expected resolve extension as resolver unable to implement" );
- }
- catch( UnsupportedOperationException e )
- {
- }
- }
-}
</pre></div>
<hr /><a name="file82" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder">builder</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>LoaderBuilderTestCase.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/builder/test/LoaderBuilderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N LoaderBuilderTestCase.java
--- LoaderBuilderTestCase.java 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,111 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.builder.test;
-
-import java.io.File;
-import java.util.HashMap;
-import org.jcontainer.loom.classman.builder.LoaderBuilder;
-import org.jcontainer.loom.classman.builder.SimpleLoaderResolver;
-import org.jcontainer.loom.classman.metadata.ClassLoaderMetaData;
-import org.jcontainer.loom.classman.metadata.ClassLoaderSetMetaData;
-import org.jcontainer.loom.classman.metadata.FileSetMetaData;
-import org.jcontainer.loom.classman.metadata.JoinMetaData;
-import org.jcontainer.loom.classman.test.AbstractLoaderTestCase;
-import org.jcontainer.loom.classman.test.DataConstants;
-import org.jcontainer.loom.extension.Extension;
-
-/**
- * Unit test for join classloader.
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:54 $
- */
-public class LoaderBuilderTestCase
- extends AbstractLoaderTestCase
-{
- public void testMissingClassLoader()
- throws Exception
- {
- final LoaderBuilder builder = new LoaderBuilder();
- final ClassLoaderMetaData classLoader =
- new ClassLoaderMetaData( "blah",
- "bad-parent",
- new String[ 0 ],
- new Extension[ 0 ],
- new FileSetMetaData[ 0 ] );
- final ClassLoaderSetMetaData metadata =
- new ClassLoaderSetMetaData( "blah",
- new String[ 0 ],
- new ClassLoaderMetaData[]{classLoader},
- new JoinMetaData[ 0 ] );
- final SimpleLoaderResolver resolver = new SimpleLoaderResolver( null );
- final HashMap predefined = new HashMap();
- try
- {
- builder.buildClassLoaders( metadata, resolver, predefined );
- fail( "Expected to fail as unable to find classloader 'bad-parent'" );
- }
- catch( Exception e )
- {
- assertTrue( "Exception message", -1 != e.getMessage().indexOf( "bad-parent" ) );
- return;
- }
- }
-
- public void testMissingPredefined()
- throws Exception
- {
- final LoaderBuilder builder = new LoaderBuilder();
- final ClassLoaderSetMetaData metadata =
- new ClassLoaderSetMetaData( "*system*",
- new String[]{"*system*"},
- new ClassLoaderMetaData[ 0 ],
- new JoinMetaData[ 0 ] );
- final SimpleLoaderResolver resolver = new SimpleLoaderResolver( null );
- final HashMap predefined = new HashMap();
- try
- {
- builder.buildClassLoaders( metadata, resolver, predefined );
- fail( "Expected to fail as predefined list did " +
- "not container predefined specified in metadata" );
- }
- catch( Exception e )
- {
- assertTrue( "Exception message", -1 != e.getMessage().indexOf( "*system*" ) );
- return;
- }
- }
-
- public void testExtensions()
- throws Exception
- {
- final LoaderBuilder builder = new LoaderBuilder();
- final ClassLoaderMetaData classLoader =
- new ClassLoaderMetaData( "ext",
- "*system*",
- new String[ 0 ],
- new Extension[]{DataConstants.EXTENSION},
- new FileSetMetaData[ 0 ] );
- final ClassLoaderSetMetaData metadata =
- new ClassLoaderSetMetaData( "ext",
- new String[]{"*system*"},
- new ClassLoaderMetaData[]{classLoader},
- new JoinMetaData[ 0 ] );
- final SimpleLoaderResolver resolver = new TestLoaderResolver( new File( "." ) );
- final HashMap predefined = new HashMap();
- predefined.put( "*system*", ClassLoader.getSystemClassLoader() );
- try
- {
- builder.buildClassLoaders( metadata, resolver, predefined );
- }
- catch( Exception e )
- {
- fail( "Unexpected failure to build classloaders with extension: " + e );
- }
- }
-}
</pre></div>
<hr /><a name="file83" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/reader">reader</a><br /></span>
<div class="fileheader" id="added"><big><b>classloader.dtd</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/reader/classloader.dtd?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N classloader.dtd
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ classloader.dtd 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1,138 @@
</small></pre><pre class="diff" id="added">+<!--
+
+ This is the DTD defining the ClassLoader 1.0
+ descriptor (XML) file format/syntax.
+
+ Author: Peter Donald
+
+ This descriptor is used to describe a mechanism of defining
+ a set of ClassLoaders and the arrangment of specified ClassLoaders.
+
+ Copyright (C) The Spice Group. All rights reserved.
+
+ This software is published under the terms of the Spice
+ Software License version 1.1, a copy of which has been included
+ with this distribution in the LICENSE.txt file.
+
+ -->
+
+<!--
+The classloaders is the document root, it defines:
+
+join the join classloaders
+classloader the regular classloaders
+-->
+<!ELEMENT classloaders (predefined*,classloader*,join*)>
+<!ATTLIST classloaders id ID #IMPLIED
+xmlns CDATA #FIXED "http://jakarta.apache.org/avalon/dtds/phoenix/classloaders_1_0.dtd" >
+<!ATTLIST classloaders
+default CDATA #REQUIRED
+version CDATA #REQUIRED >
+
+<!--
+The classloader element describes a regular classloader It defines:
+
+Attributes:
+name the name of classloader type. Must be a string
+ containing alphanumeric characters, '.', '-', '_' and
+ starting with a letter or a '_'.
+parent the name of the parent classloader
+
+Elements:
+entry an entry in classloader
+fileset an fileset in classloader
+extension an extension in classloader
+-->
+<!ELEMENT classloader (entry*,fileset*,extension*)>
+<!ATTLIST classloader
+name CDATA #REQUIRED
+parent CDATA #REQUIRED >
+
+<!--
+The predefined element defines a predefined classloader. It defines:
+
+Attributes:
+name the name of classloader.
+-->
+<!ELEMENT predefined EMPTY>
+<!ATTLIST predefined name CDATA #REQUIRED >
+
+<!--
+The classloader element describes a regular classloader It defines:
+
+Attributes:
+name the name of classloader type. Must be a string
+ containing alphanumeric characters, '.', '-', '_' and
+ starting with a letter or a '_'.
+
+Elements:
+classloader-ref a reference to all classloaders that are joined
+-->
+<!ELEMENT join (classloader-ref*)>
+<!ATTLIST join name CDATA #REQUIRED >
+
+<!--
+The classloader-ref defines a ClassLoader that are part of join.
+It defines:
+
+Attributes:
+name the name of other classloader that will join with
+-->
+<!ELEMENT classloader-ref EMPTY>
+<!ATTLIST classloader-ref name CDATA #REQUIRED>
+
+<!--
+The entry describes a entry in ClassLoader. It defines:
+
+Attributes:
+location the location (URL) to add to classloader
+-->
+<!ELEMENT entry EMPTY>
+<!ATTLIST entry location CDATA #REQUIRED>
+
+<!--
+The classloader element describes a regular classloader It defines:
+
+Attributes:
+name the name of classloader type. Must be a string
+ containing alphanumeric characters, '.', '-', '_' and
+ starting with a letter or a '_'.
+
+Elements:
+classloader-ref a reference to all classloaders that are joined
+-->
+<!ELEMENT fileset ((include|exclude)*)>
+<!ATTLIST fileset dir CDATA #REQUIRED >
+
+<!--
+The entry describes a include for fileset. It defines:
+
+Attributes:
+name the pattern to include
+-->
+<!ELEMENT include EMPTY>
+<!ATTLIST include name CDATA #REQUIRED>
+
+<!--
+The entry describes a exclude for fileset. It defines:
+
+Attributes:
+name the pattern to exclude
+-->
+<!ELEMENT exclude EMPTY>
+<!ATTLIST exclude name CDATA #REQUIRED>
+
+
+<!--
+The extension describes a extension for ClassLoader.
+-->
+<!ELEMENT extension EMPTY>
+<!ATTLIST extension
+name CDATA #REQUIRED
+specification-version CDATA #IMPLIED
+specification-vendor CDATA #IMPLIED
+implementation-version CDATA #IMPLIED
+implementation-vendor CDATA #IMPLIED
+implementation-vendor-id CDATA #IMPLIED
+implementation-url CDATA #IMPLIED
+>
</pre></div>
<hr /><a name="file84" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/reader">reader</a><br /></span>
<div class="fileheader" id="added"><big><b>ClassLoaderSetReader.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/reader/ClassLoaderSetReader.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N ClassLoaderSetReader.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ClassLoaderSetReader.java 19 Apr 2004 22:19:25 -0000 1.1
@@ -0,0 +1 @@
</small></pre><pre class="diff" id="added">+/*
* Copyright (C) The Spice Group. All rights reserved.
*
* This software is published under the terms of the Spice
* Software License version 1.1, a copy of which has been included
* with this distribution in the LICENSE.txt file.
*/
package org.codehaus.loom.classman.reader;
import java.util.ArrayList;
import org.codehaus.loom.classman.metadata.ClassLoaderMetaData;
import org.codehaus.loom.classman.metadata.ClassLoaderSetMetaData;
import org.codehaus.loom.classman.metadata.FileSetMetaData;
import org.codehaus.loom.classman.metadata.JoinMetaData;
import org.codehaus.loom.extension.Extension;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
/**
* This class builds a {@link ClassLoaderSetMetaData} object from specified
* configuration.
*
* @author Peter Donald
* @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:25 $
*/
public class ClassLoaderSetReader
{
/**
* Build ClassLoader MetaData from a DOM tree.
*
* @param config the root element
* @return the meta data
* @throws Exception if malformed DOM
*/
public ClassLoaderSetMetaData build( final Element config )
throws Exception
{
final String defaultClassLoader =
config.getAttribute( "default" );
if( isUnspecified( defaultClassLoader ) )
{
final String message = "Default classloader not specified.";
throw new Exception( message );
}
final String version =
config.getAttribute( "version" );
if( !"1.0".equals( version ) )
{
final String message = "Bad version:" + version;
throw new Exception( message );
}
final NodeList joinConfigs =
config.getElementsByTagName( "join" );
final JoinMetaData[] joins = buildJoins( joinConfigs );
final NodeList clConfigs =
config.getElementsByTagName( "classloader" );
final ClassLoaderMetaData[] classloaders =
buildClassLoaders( clConfigs );
final NodeList predefinedConfigs =
config.getElementsByTagName( "predefined" );
final String[] predefined =
buildPredefined( predefinedConfigs );
return new ClassLoaderSetMetaData( defaultClassLoader,
predefined,
classloaders,
joins );
}
/**
* Parse out a set of predefined classloaders from specified nodes.
*
* @param configs the nodes to process
* @return the predefined classloaders
*/
private String[] buildPredefined( final NodeList configs )
{
final ArrayList predefines = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element element = (Element)configs.item( i );
final String predefined = element.getAttribute( "name" );
predefines.add( predefined );
}
return (String[])predefines.toArray( new String[ predefines.size() ] );
}
/**
* Build an array of ClassLoader meta datas from node list.
*
* @param configs the nodes to process
* @return the classloaders
*/
private ClassLoaderMetaData[] buildClassLoaders( final NodeList configs )
throws Exception
{
final ArrayList loaders = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element item = (Element)configs.item( i );
final ClassLoaderMetaData loader = buildLoader( item );
loaders.add( loader );
}
return (ClassLoaderMetaData[])loaders.toArray(
new ClassLoaderMetaData[ loaders.size() ] );
}
/**
* Build a ClassLoader meta datas from element.
*
* @param config the nodes to process
* @return the classloader
*/
private ClassLoaderMetaData buildLoader( final Element config )
throws Exception
{
final String name = config.getAttribute( "name" );
final String parent = config.getAttribute( "parent" );
final String[] entrys =
buildEntrys( config.getElementsByTagName( "entry" ) );
final Extension[] extensions =
buildExtensions( config.getElementsByTagName( "extension" ) );
final FileSetMetaData[] fileSets =
buildFileSets( config.getElementsByTagName( "fileset" ) );
return new ClassLoaderMetaData( name, parent, entrys,
extensions, fileSets );
}
/**
* Build and array of extensions
*
* @param configs the nodes to process
* @return an array of extensions
*/
private Extension[] buildExtensions( final NodeList configs )
throws Exception
{
final ArrayList extensions = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Extension extension =
buildExtension( (Element)configs.item( i ) );
extensions.add( extension );
}
return (Extension[])extensions.toArray(
new Extension[ extensions.size() ] );
}
/**
* Build an extension from a DOM element.
*
* @param config the node to process
* @return an extension
*/
private Extension buildExtension( final Element config )
throws Exception
{
final String name = config.getAttribute( "name" );
if( isUnspecified( name ) )
{
final String message = "Missing name from extension";
throw new Exception( message );
}
final String specVersion =
config.getAttribute( "specification-version" );
final String specVendor =
config.getAttribute( "specification-vendor" );
final String implVersion =
config.getAttribute( "implementation-version" );
final String implVendor =
config.getAttribute( "implementation-vendor" );
final String implVendorID =
config.getAttribute( "implementation-vendor-id" );
final String implURL =
config.getAttribute( "implementation-url" );
return new Extension( name, specVersion, specVendor,
implVersion, implVendor, implVendorID,
implURL );
}
/**
* Build and array of file sets.
*
* @param configs the nodes to process
* @return an array of file sets
*/
private FileSetMetaData[] buildFileSets( final NodeList configs )
{
final ArrayList fileSets = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final FileSetMetaData fileSet =
buildFileSet( (Element)configs.item( i ) );
fileSets.add( fileSet );
}
return (FileSetMetaData[])fileSets.toArray(
new FileSetMetaData[ fileSets.size() ] );
}
/**
* Build a fileset from a DOM element.
*
* @param config the node to process
* @return a fileset
*/
private FileSetMetaData buildFileSet( final Element config )
{
final String dir = config.getAttribute( "dir" );
final String[] includes =
buildSelectors( config.getElementsByTagName( "include" ) );
final String[] excludes =
buildSelectors( config.getElementsByTagName( "exclude" ) );
return new FileSetMetaData( dir, includes, excludes );
}
/**
* Build and array of selectors (ie includes/excludes).
*
* @param configs the nodes to process
* @return an array of selectors
*/
private String[] buildSelectors( final NodeList configs )
{
final ArrayList selectors = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element element = (Element)configs.item( i );
final String name = element.getAttribute( "name" );
selectors.add( name );
}
return (String[])selectors.toArray( new String[ selectors.size() ] );
}
/**
* Build file entrys from a nodelist.
*
* @param configs the nodes to procexx
* @return an array of file entrys
*/
private String[] buildEntrys( final NodeList configs )
{
final ArrayList entrys = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element config = (Element)configs.item( i );
final String entry = config.getAttribute( "location" );
entrys.add( entry );
}
return (String[])entrys.toArray( new String[ entrys.size() ] );
}
/**
* Build an array of Join classloaders out of supplied nodes.
*
* @param configs the nodes to process
* @return the join meta data array
*/
private JoinMetaData[] buildJoins( final NodeList configs )
{
final ArrayList joins = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element config = (Element)configs.item( i );
final JoinMetaData join = buildJoin( config );
joins.add( join );
}
return (JoinMetaData[])joins.toArray( new JoinMetaData[ joins.size() ] );
}
/**
* Build a Join classloader out of supplied Element.
*
* @param config the config element
* @return the join meta data
*/
private JoinMetaData buildJoin( final Element config )
{
final String name = config.getAttribute( "name" );
final NodeList children =
config.getElementsByTagName( "classloader-ref" );
final String[] classloaders =
buildClassLoaderRefs( children );
return new JoinMetaData( name, classloaders );
}
/**
* Create a set of strings for ClassLoader references in a Join
* classloader.
*
* @param configs the nodes to process
* @return the strings for class loader refs
*/
private String[] buildClassLoaderRefs( final NodeList configs )
{
final ArrayList refs = new ArrayList();
final int length = configs.getLength();
for( int i = 0; i < length; i++ )
{
final Element element = (Element)configs.item( i );
final String ref = element.getAttribute( "name" );
refs.add( ref );
}
return (String[])refs.toArray( new String[ refs.size() ] );
}
/**
* Utility class to test if attribute is unspecified (by testing if it is
* equal to empty string).
*
* @param attribute the attribute
* @return true if equal to empty string
*/
private boolean isUnspecified( final String attribute )
{
return "".equals( attribute );
}
}
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file85" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org
/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman">classman</a>!
/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl2">cl2</a><br /></span>
<div class="fileheader" id="removed"><big><b>CL2Data.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl2/CL2Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N CL2Data.java
--- CL2Data.java 31 Mar 2004 03:18:56 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,17 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.test.data.cl2;
-
-/**
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:56 $
- */
-public class CL2Data
-{
-}
</pre></div>
<hr /><a name="file86" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder">builder</a><br /></span>
<div class="fileheader" id="removed"><big><b>LoaderBuilder.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder/LoaderBuilder.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N LoaderBuilder.java
--- LoaderBuilder.java 31 Mar 2004 03:18:53 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
* Copyright (C) The Spice Group. All rights reserved.
*
* This software is published under the terms of the Spice
* Software License version 1.1, a copy of which has been included
* with this distribution in the LICENSE.txt file.
*/
package org.jcontainer.loom.classman.builder;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.jcontainer.loom.classman.metadata.ClassLoaderMetaData;
import org.jcontainer.loom.classman.metadata.ClassLoaderSetMetaData;
import org.jcontainer.loom.classman.metadata.FileSetMetaData;
import org.jcontainer.loom.classman.metadata.JoinMetaData;
import org.jcontainer.loom.extension.Extension;
/**
* This class is responsible for building the set of actual {@link
* java.lang.ClassLoader}s out of the {@link ClassLoaderSetMetaData} objects.
*
* @author Peter Donald
* @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:53 $
*/
public class LoaderBuilder
{
/**
* Build a map of all the classloaders defined by the metadata.
*
* @param metadata the metadata
* @param resolver the reoslver to use to resolve files/urls etc
* @param predefined the map containing all the predefined classloaders.
* @return the map of created classloaders
* @throws Exception if unable to create some classloaders
*/
public Map buildClassLoaders( final ClassLoaderSetMetaData metadata,
final LoaderResolver resolver,
final Map predefined )
throws Exception
{
final HashMap classLoaders = new HashMap();
addPredefined( metadata.getPredefined(), predefined, classLoaders );
addAllClassLoaders( metadata, resolver, classLoaders );
addAllJoins( metadata, resolver, classLoaders );
return classLoaders;
}
/**
* Add all the classloaders to the result metaData.
*
* @param metaData the metadata
* @param resolver the resolver to use
* @param classLoaders the result map of classloaders
* @throws Exception if unable to create the classloaders
*/
private void addAllClassLoaders( final ClassLoaderSetMetaData metaData,
final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
final ClassLoaderMetaData[] classLoaderDefs = metaData.getClassLoaders();
for( int i = 0; i < classLoaderDefs.length; i++ )
{
final String name = classLoaderDefs[ i ].getName();
processClassLoader( name, metaData, resolver, classLoaders );
}
}
/**
* Add all the classloaders to the result metaData.
*
* @param metaData the metadata
* @param resolver the resolver to use
* @param classLoaders the result map of classloaders
* @throws Exception if unable to create the classloaders
*/
private void addAllJoins( final ClassLoaderSetMetaData metaData,
final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
final JoinMetaData[] joins = metaData.getJoins();
for( int i = 0; i < joins.length; i++ )
{
final String name = joins[ i ].getName();
processClassLoader( name, metaData, resolver, classLoaders );
}
}
/**
* Process a ClassLoader entry, create ClassLoader and add it to result
* map.
*
* @param name the name of classloader
* @param set the set of metatadata
* @param resolver the resolver for construction
* @param classLoaders the result map of classloaders
* @throws Exception if unable to process classloader
*/
private void processClassLoader( final String name,
final ClassLoaderSetMetaData set,
final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
if( classLoaders.containsKey( name ) )
{
return;
}
final ClassLoaderMetaData regular = set.getClassLoader( name );
if( null != regular )
{
//Make sure parent classloader is built
processClassLoader( regular.getParent(),
set,
resolver,
classLoaders );
final ClassLoader classLoader =
buildRegularClassLoader( regular, resolver, classLoaders );
classLoaders.put( name, classLoader );
}
else
{
final JoinMetaData join = set.getJoin( name );
if( null == join )
{
final String message = "Unknown classloader " + name;
throw new Exception( message );
}
//Make sure all our dependencies are processed
final String[] names = join.getClassloaders();
for( int i = 0; i < names.length; i++ )
{
processClassLoader( names[ i ], set, resolver, classLoaders );
}
final ClassLoader classLoader =
buildJoinClassLoader( join, resolver, classLoaders );
classLoaders.put( name, classLoader );
}
}
/**
* Create a Join ClassLoader.
*
* @param join the metadata
* @param resolver the resolver to use to resolve URLs etc
* @param classLoaders the already created ClassLoaders
* @return the created JoinClassLoader
*/
private ClassLoader buildJoinClassLoader( final JoinMetaData join,
final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
final ArrayList list = new ArrayList();
final String[] names = join.getClassloaders();
for( int i = 0; i < names.length; i++ )
{
list.add( classLoaders.get( names[ i ] ) );
}
final ClassLoader[] elements =
(ClassLoader[])list.toArray( new ClassLoader[ list.size() ] );
return resolver.createJoinClassLoader( elements );
}
/**
* Build a regular classloader with entries, extensions and filesets fully
* resolved.
*
* @param metaData the classloader definition
* @param resolver the resolver to use when creating URLs/Extensions etc
* @param classLoaders the already created ClassLoaders
* @return the created ClassLoader
* @throws Exception if unable to create ClassLoader
*/
private ClassLoader buildRegularClassLoader(
final ClassLoaderMetaData metaData,
final LoaderResolver resolver,
final Map classLoaders )
throws Exception
{
final ClassLoader parent =
(ClassLoader)classLoaders.get( metaData.getParent() );
final ArrayList urlSet = new ArrayList();
final String[] entrys = metaData.getEntrys();
for( int i = 0; i < entrys.length; i++ )
{
final URL url = resolver.resolveURL( entrys[ i ] );
urlSet.add( url );
}
//Add all filesets defined for classloader
final FileSetMetaData[] filesets = metaData.getFilesets();
for( int i = 0; i < filesets.length; i++ )
{
final FileSetMetaData fileset = filesets[ i ];
final String baseDirectory = fileset.getBaseDirectory();
final String[] includes = fileset.getIncludes();
final String[] excludes = fileset.getExcludes();
final URL[] urls =
resolver.resolveFileSet( baseDirectory,
includes,
excludes );
for( int j = 0; j < urls.length; j++ )
{
urlSet.add( urls[ j ] );
}
}
final Extension[] extensions = metaData.getExtensions();
for( int i = 0; i < extensions.length; i++ )
{
final URL url = resolver.resolveExtension( extensions[ i ] );
urlSet.add( url );
}
final URL[] urls = (URL[])urlSet.toArray( new URL[ urlSet.size() ] );
return resolver.createClassLoader( parent, urls );
}
/**
* Add all the predefined classloaders to the set of available
* ClassLoaders.
*
* @param entrys the names of predefined classloaders
* @param predefined the map containg predefined classloaders
* @param classLoaders the destination map of classloaders
*/
private void addPredefined( final String[] entrys,
final Map predefined,
final HashMap classLoaders )
{
for( int i = 0; i < entrys.length; i++ )
{
final String name = entrys[ i ];
final ClassLoader classLoader =
(ClassLoader)predefined.get( name );
if( null == classLoader )
{
final String message =
"Missing predefined ClassLoader " + name;
throw new IllegalArgumentException( message );
}
classLoaders.put( name, classLoader );
}
}
}
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file87" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder">builder</a><br /></span>
<div class="fileheader" id="removed"><big><b>Resources.properties</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder/Resources.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N Resources.properties
--- Resources.properties 31 Mar 2004 03:18:53 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,8 +0,0 @@
</small></pre><pre class="diff" id="removed">-missing.extension=Unable to locate an extension that is required by application.\nExtension Name: {0}\nSpecification Vendor: {1}\nSpecification Version: {2}\nImplementation Vendor: {3}\nImplementation Vendor-Id: {4}\nImplementation Version: {5}\nImplementation URL: {6}
-unsatisfied.extensions=Missing {0} extensions and thus can not build ClassLoader for application.
-bad-classpath-entry=There is a bad entry ("{0}") on classpath that made it impossible to load a manifest.
-available-extensions=The list of available extensions for application includes; {0}
-required-extensions=The list of required extensions for application includes; {0}
-optional-packages-added=The list of "Optional Packages" added to the application includes; {0}
-classpath-entries=The list of classpath entries for the application includes; {0}
-missing-packagemanager=Unable to resolve Extension as no PackageManager has been specified.
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file88" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder">builder</a><br /></span>
<div class="fileheader" id="removed"><big><b>SimpleLoaderResolver.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder/SimpleLoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N SimpleLoaderResolver.java
--- SimpleLoaderResolver.java 31 Mar 2004 03:18:53 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
* Copyright (C) The Spice Group. All rights reserved.
*
* This software is published under the terms of the Spice
* Software License version 1.1, a copy of which has been included
* with this distribution in the LICENSE.txt file.
*/
package org.jcontainer.loom.classman.builder;
import java.io.File;
import java.io.IOException;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.jar.Manifest;
import org.codehaus.spice.salt.i18n.ResourceManager;
import org.codehaus.spice.salt.i18n.Resources;
import org.codehaus.spice.salt.io.FileUtil;
import org.codehaus.spice.salt.io.PathMatcher;
import org.jcontainer.loom.classman.runtime.JoinClassLoader;
import org.jcontainer.loom.extension.Extension;
/**
* This is a class that performs resolver that; <ul> <li>creates "Join"
* ClassLoaders using the {@link JoinClassLoader} class</li> <li>creates normal
* ClassLoaders using a {@link URLClassLoader}. It also makes sure that all
* dependencies of jars (as declared using the JDK1.3 "Optional Pakcages" Spec)
* are present in classloader.</li> <li>The locations are resolved to a single
* base directiory.</li> <li>The Extensions are not resolved but may be by
* subclasses.</li> <li>FileSets are currently unsupported and throw a {@link
* UnsupportedOperationException} if attempt to be constructed.</li> </ul>
*
* @author Peter Donald
* @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:53 $
*/
public class SimpleLoaderResolver
implements LoaderResolver
{
/** i18n utils for presenting messages. */
private static final Resources REZ =
ResourceManager.getPackageResources( SimpleLoaderResolver.class );
/** The base directory relative to which to aquire files. */
private File m_baseDirectory;
/**
* Create a resolver that resolves all files according to specied
* baseDirectory.
*
* @param baseDirectory the base directory
*/
public SimpleLoaderResolver( final File baseDirectory )
{
setBaseDirectory( baseDirectory );
}
/**
* Retrieve a URL for specified extension.
*
* @param extension the extension
* @return the URL
* @throws Exception if unable to locate URL for extension
*/
public URL resolveExtension( final Extension extension )
throws Exception
{
throw new UnsupportedOperationException();
}
/**
* Resolve a location to a particular URL.
*
* @param location the location
* @return the URL
* @throws Exception if unable to resolve location
*/
public URL resolveURL( final String location )
throws Exception
{
final File file = getFileFor( location );
String url = file.toURL().toString();
if( file.isDirectory() )
{
url += "/";
}
return new URL( url );
}
/**
* Resolve a fileset.
*
* @param baseDirectory the base directory of fileset
* @param includes the list of ant-style includes
* @param excludes the list of ant style excludes
* @return the URLs contained within fileset
* @throws Exception if unable to resolve fileset
*/
public URL[] resolveFileSet( final String baseDirectory,
final String[] includes,
final String[] excludes )
throws Exception
{
final File base = getFileFor( "." );
return resolveFileSet( base, baseDirectory, includes, excludes );
}
/**
* Create a Join ClassLoader for specified ClassLoaders. Use {@link
* JoinClassLoader} to implement functionality.
*
* @param classLoaders the ClassLoaders to "join"
* @return the joined ClassLoader
* @throws Exception if unable to create classloader
*/
public ClassLoader createJoinClassLoader( final ClassLoader[] classLoaders )
throws Exception
{
return new JoinClassLoader( classLoaders,
ClassLoader.getSystemClassLoader() );
}
/**
* Create a ClassLoader with specified parent and containing specified URLs.
* This implementation just creates it using the default URLClassLoader.
*
* @param parent the parent classloader
* @param urls the URLs that the ClassLoader should contain
* @return the newly created ClassLoader
* @throws Exception if unable to create classloader
*/
public ClassLoader createClassLoader( final ClassLoader parent,
final URL[] urls )
throws Exception
{
final URL[] classpath = determineCompleteClasspath( urls );
return new URLClassLoader( classpath, parent );
}
/**
* Retrieve the complete classpath given an input set of URLs. The complete
* classpath includes all URLs for extensions required by the jars
* (according to the "Optional Package" Spec).
*
* @param urls the urls
* @return the complete set of URLs for classpath
* @throws Exception if unable to determine complete classpath set
*/
protected final URL[] determineCompleteClasspath( final URL[] urls )
throws Exception
{
final ArrayList classpathSet = new ArrayList();
//Add all supplied URLS to classpath
for( int i = 0; i < urls.length; i++ )
{
final URL url = urls[ i ];
classpathSet.add( url );
}
//Add all the optional packages that are declared as
// dependencies of class path elements
final File[] files = getOptionalPackagesFor( urls );
for( int i = 0; i < files.length; i++ )
{
final File file = files[ i ];
classpathSet.add( file.toURL() );
}
//Define final classpath with all dependencies added
return (URL[])classpathSet.toArray( new URL[ classpathSet.size() ] );
}
/**
* Utility class to retrieve a file object for specified location.
*
* @param location which to get file for.
* @return the file for specified location
*/
protected File getFileFor( final String location )
throws IOException
{
File base = getBaseDirectory();
if( null == base )
{
base = new File( "." );
}
return new File( base, location ).getCanonicalFile();
}
/**
* Return the base directory against which to resolve relative files.
*
* @return the base directory against which to resolve relative files.
*/
protected File getBaseDirectory()
{
return m_baseDirectory;
}
/**
* Set the base directory.
*
* @param baseDirectory the base directory.
*/
protected void setBaseDirectory( File baseDirectory )
{
m_baseDirectory = baseDirectory;
}
/**
* Retrieve the files for the optional packages required by the jars in
* ClassPath.
*
* @param classPath the Classpath array
* @return the files that need to be added to ClassLoader
*/
protected final File[] getOptionalPackagesFor( final URL[] classPath )
throws Exception
{
final Manifest[] manifests = getManifests( classPath );
final Extension[] available = Extension.getAvailable( manifests );
final Extension[] required = Extension.getRequired( manifests );
if( isDebugEnabled() )
{
final String message1 =
REZ.format( "available-extensions",
Arrays.asList( available ) );
debug( message1 );
final String message2 =
REZ.format( "required-extensions",
Arrays.asList( required ) );
debug( message2 );
}
if( 0 == required.length )
{
return new File[ 0 ];
}
final Set dependencies = new HashSet();
final Set unsatisfied = new HashSet();
scanDependencies( required,
available,
dependencies,
unsatisfied );
final int size = unsatisfied.size();
if( 0 != size )
{
final Iterator iterator = unsatisfied.iterator();
while( iterator.hasNext() )
{
final Extension extension = (Extension)iterator.next();
final Object[] params = new Object[]
{
extension.getExtensionName(),
extension.getSpecificationVendor(),
extension.getSpecificationVersion(),
extension.getImplementationVendor(),
extension.getImplementationVendorID(),
extension.getImplementationVersion(),
extension.getImplementationURL()
};
final String message = REZ.format( "missing.extension",
params );
warn( message );
}
final String message =
REZ.format( "unsatisfied.extensions", new Integer( size ) );
throw new Exception( message );
}
if( isDebugEnabled() )
{
final String message =
REZ.format( "optional-packages-added", dependencies );
debug( message );
}
return (File[])dependencies.toArray( new File[ dependencies.size() ] );
}
/**
* Attempt to locate a set of dependencies that transitively satisfy all
* required extensions.
*
* @param required the required extensions
* @param available the extensions already available
* @param dependencies the set of dependencies collected by this method
* @param unsatisfied this method should place any unsatisfied depenencies
* into this set
*/
protected void scanDependencies( final Extension[] required,
final Extension[] available,
final Set dependencies,
final Set unsatisfied )
{
throw new UnsupportedOperationException();
}
/**
* write out a warning message. Subclasses may overide this method to
* redirect logging as appropriate.
*
* @param message the warning message
*/
protected void warn( final String message )
{
}
/**
* Determine if debug messages are turned on. Subclasses should overide this
* method.
*
* @return true if debugging enabled.
*/
protected boolean isDebugEnabled()
{
return false;
}
/**
* write out a debug message. Subclasses may overide this method to redirect
* logging as appropriate.
*
* @param message the debug message
*/
protected void debug( final String message )
{
}
/**
* Retrieve all the Manifests from the specified Classlpath.
*
* @param classPath the classpath
* @return the set of manifests on the classpath
* @throws Exception if there is an error reading manifests from files on
* classpath
*/
private Manifest[] getManifests( final URL[] classPath )
throws Exception
{
final ArrayList manifests = new ArrayList();
for( int i = 0; i < classPath.length; i++ )
{
final URL element = classPath[ i ];
if( element.getFile().endsWith( ".jar" ) )
{
try
{
final URL url = new URL( "jar:" + element + "!/" );
final JarURLConnection connection =
(JarURLConnection)url.openConnection();
final Manifest manifest = connection.getManifest();
if( null != manifest )
{
manifests.add( manifest );
}
}
catch( final IOException ioe )
{
final String message =
REZ.format( "bad-classpath-entry", element );
throw new Exception( message );
}
}
}
return (Manifest[])manifests.toArray( new Manifest[ 0 ] );
}
/**
* Resolve a fileset in a particular hierarchy.
*
* @param base the file hierarchy to use
* @param baseDirectory the base directory (relative to base)
* @param includes the ant-style include patterns
* @param excludes the ant-style exclude patterns
* @return the resolved URLs for fileset
*/
protected final URL[] resolveFileSet( final File base,
final String baseDirectory,
final String[] includes,
final String[] excludes )
{
//woefully inefficient .. but then again - no need
//for efficency here
final String newBaseDirectory = FileUtil.normalize( baseDirectory );
final String[] newIncludes = prefixPatterns( newBaseDirectory,
includes );
final String[] newExcludes = prefixPatterns( newBaseDirectory,
excludes );
final PathMatcher matcher = new PathMatcher( newIncludes,
newExcludes );
final File[] files = FileUtil.resolveFileSet( base, matcher );
try
{
return FileUtil.toURLs( files );
}
catch( IOException ioe )
{
throw new IllegalArgumentException( ioe.getMessage() );
}
}
/**
* Return a new array with specified prefix added to start of every element
* in supplied array.
*
* @param prefix the prefix
* @param patterns the source array
* @return a new array with all elements having prefix added
*/
private String[] prefixPatterns( final String prefix,
final String[] patterns )
{
if( 0 == prefix.length() || ".".equals( prefix ) )
{
return patterns;
}
final String[] newPatterns = new String[ patterns.length ];
for( int i = 0; i < newPatterns.length; i++ )
{
newPatterns[ i ] = prefix + "/" + patterns[ i ];
}
return newPatterns;
}
}
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file89" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder">builder</a><br /></span>
<div class="fileheader" id="removed"><big><b>LoaderResolver.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/builder/LoaderResolver.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N LoaderResolver.java
--- LoaderResolver.java 31 Mar 2004 03:18:53 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
* Copyright (C) The Spice Group. All rights reserved.
*
* This software is published under the terms of the Spice
* Software License version 1.1, a copy of which has been included
* with this distribution in the LICENSE.txt file.
*/
package org.jcontainer.loom.classman.builder;
import java.net.URL;
import org.jcontainer.loom.extension.Extension;
/**
* This is the class that clients provide to implement a specific policy with
* respect to how ClassLoader hierarchy is constructed.
*
* @author Peter Donald
* @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:53 $
*/
public interface LoaderResolver
{
/**
* Resolve an Extension to a URL. The URL that locates the "Optional
* Package" that provides specified Extension.
*
* @param extension the extension
* @return the URL that locates the "Optional Package" that provides
* specified Extension.
* @throws Exception if unable to locate Extension
*/
URL resolveExtension( Extension extension )
throws Exception;
/**
* Resolve a string into a URL. This allows resolvers to anchor URLs using
* relative URL or by handling non-standard URL protocols (such as
* "sar:/SAR-INF/lib/cornerstone.jar").
*
* @param location the location to transform into a URL
* @return the URL
* @throws Exception if unable to resolve URL
*/
URL resolveURL( String location )
throws Exception;
/**
* Resolve a fileset to a set of URLs.
*
* @param baseDirectory the Base directory of fileset
* @return the set of URLs making up fileset
* @throws Exception if unable to resolve fileset
*/
URL[] resolveFileSet( String baseDirectory,
String[] includes,
String[] excludes )
throws Exception;
/**
* Create a Join ClassLoader for specified ClassLoaders.
*
* @param classLoaders the ClassLoaders to "join"
* @return the joined ClassLoader
* @throws Exception if unable to create classloader
*/
ClassLoader createJoinClassLoader( ClassLoader[] classLoaders )
throws Exception;
/**
* Create a ClassLoader with specified parent and containing specified
* URLs.
*
* @param parent the parent classloader
* @param urls the URLs that the ClassLoader should contain
* @return the newly created ClassLoader
* @throws Exception if unable to create classloader
*/
ClassLoader createClassLoader( ClassLoader parent, URL[] urls )
throws Exception;
}
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file90" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontai
ner/loom/support/classman/src/testdata/org/codehaus/loom/classman">classman</a>/<a href="!
http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl3">cl3</a><br /></span>
<div class="fileheader" id="added"><big><b>CL3Data.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl3/CL3Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N CL3Data.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ CL3Data.java 19 Apr 2004 22:19:26 -0000 1.1
@@ -0,0 +1,20 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.test.data.cl3;
+
+import org.codehaus.loom.classman.test.data.cl1.Data1;
+
+/**
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:26 $
+ */
+public class CL3Data
+{
+ public final static String CROSS_REF = Data1.class.getName();
+}
</pre></div>
<hr /><a name="file91" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/runtime">runtime</a><br /></span>
<div class="fileheader" id="removed"><big><b>JoinClassLoader.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/runtime/JoinClassLoader.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N JoinClassLoader.java
--- JoinClassLoader.java 31 Mar 2004 03:18:53 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,157 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.runtime;
-
-import java.io.IOException;
-import java.net.URL;
-import java.security.SecureClassLoader;
-import java.util.Enumeration;
-import java.util.Vector;
-
-/**
- * The <tt>JoinClassLoader</tt> is a {@link ClassLoader} that joins a list of
- * ClassLoaders together. The JoinClassLoader has a list of ClassLoaders
- * specified from which resources and classes can be loaded from. The
- * JoinClassLoader will attempt to load the Class or resources from each
- * ClassLoader in succession.
- *
- * <p>Note that it is recomended that each ClassLoader be made up of distinct,
- * non-overlapping sets of resources or else ClassCastExceptions may result
- * along with other undersired behaviour. </p>
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:53 $
- */
-public class JoinClassLoader
- extends SecureClassLoader
-{
- /**
- * The list of classLoaders to search through each time a class or resource
- * is requested.
- */
- private final ClassLoader[] m_classLoaders;
-
- /**
- * Construct a join ClassLoader that defines parent ClassLoader and list of
- * ClassLoaders to search for classes or resources when requested.
- *
- * @param parent the parent classloader
- * @param classLoaders the classloaders to search
- */
- public JoinClassLoader( final ClassLoader[] classLoaders,
- final ClassLoader parent )
- {
- super( parent );
- if( null == classLoaders )
- {
- throw new NullPointerException( "classLoaders" );
- }
- for( int i = 0; i < classLoaders.length; i++ )
- {
- if( null == classLoaders[ i ] )
- {
- throw new NullPointerException( "classLoaders[" + i + "]" );
- }
- }
- m_classLoaders = classLoaders;
- }
-
- /**
- * Overide findClass to find a class by searching all the ClassLoaders for
- * class.
- *
- * @param name the name of class
- * @return the Class instance
- * @throws ClassNotFoundException if unable to find class
- * @see ClassLoader#findClass
- */
- protected Class findClass( final String name )
- throws ClassNotFoundException
- {
- for( int i = 0; i < m_classLoaders.length; i++ )
- {
- try
- {
- return m_classLoaders[ i ].loadClass( name );
- }
- catch( final ClassNotFoundException cnfe )
- {
- //Not in that classloader
- }
- }
-
- return super.findClass( name );
- }
-
- /**
- * Overide findResources to retrieve all the resources from all classloaders
- * with a particular name.
- *
- * @param name the resources to search for
- * @return an enumeration of all resources with specified name
- * @throws IOException if unable to find resources
- * @see ClassLoader#findResources
- */
- protected Enumeration findResources( final String name )
- throws IOException
- {
- final Vector result = new Vector();
-
- for( int i = 0; i < m_classLoaders.length; i++ )
- {
- try
- {
- final Enumeration resources =
- m_classLoaders[ i ].getResources( name );
- addAll( result, resources );
- }
- catch( final IOException ioe )
- {
- //Not in that classloader
- }
- }
- final Enumeration resources = super.findResources( name );
- addAll( result, resources );
- return result.elements();
- }
-
- /**
- * Add all resources specified into result vector.
- *
- * @param result the result vector
- * @param resources the enumeration of resources
- */
- private void addAll( final Vector result,
- final Enumeration resources )
- {
- while( resources.hasMoreElements() )
- {
- result.add( resources.nextElement() );
- }
- }
-
- /**
- * Overide findResource to search through all classloaders.
- *
- * @param name the resources to search for
- * @return the resource URL
- * @see ClassLoader#findResource
- */
- protected URL findResource( final String name )
- {
- for( int i = 0; i < m_classLoaders.length; i++ )
- {
- final URL resource = m_classLoaders[ i ].getResource( name );
- if( null != resource )
- {
- return resource;
- }
- }
- return super.findResource( name );
- }
-}
</pre></div>
<hr /><a name="file92" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>AbstractLoaderTestCase.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test/AbstractLoaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N AbstractLoaderTestCase.java
--- AbstractLoaderTestCase.java 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,81 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.test;
-
-import java.io.File;
-import java.io.InputStream;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import junit.framework.TestCase;
-import org.jcontainer.loom.classman.metadata.ClassLoaderSetMetaData;
-import org.jcontainer.loom.classman.reader.ClassLoaderSetReader;
-import org.w3c.dom.Document;
-
-/**
- * An abstract base class for all the tests that performed on loaders.
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:55 $
- */
-public abstract class AbstractLoaderTestCase
- extends TestCase
-{
- protected ClassLoaderSetMetaData buildFromStream( final InputStream stream )
- throws Exception
- {
- try
- {
- final ClassLoaderSetReader builder = new ClassLoaderSetReader();
- final Document config = load( stream );
- return builder.build( config.getDocumentElement() );
- }
- catch( final Exception e )
- {
- fail( "Error building ClassLoaderSet: " + e );
- return null;
- }
- }
-
- protected Document load( final InputStream stream )
- throws Exception
- {
- final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- //factory.setValidating(true);
- //factory.setNamespaceAware(true);
- final DocumentBuilder builder = factory.newDocumentBuilder();
- return builder.parse( stream );
- }
-
- protected ClassLoaderSetMetaData buildFromResource( final String resource )
- throws Exception
- {
- final InputStream stream = getClass().getResourceAsStream( resource );
- if( null == stream )
- {
- fail( "Missing resource " + resource );
- }
- return buildFromStream( stream );
- }
-
- protected File getBaseDirectory()
- {
- final String basedir = System.getProperty( "basedir", "." );
- final File root = new File( basedir );
- File baseDirectory = new File( root, "target/test-classes" );
- if( !baseDirectory.exists() )
- {
- baseDirectory = new File( root, "target/classes" );
- }
-
- if( !baseDirectory.exists() )
- {
- fail( "Unable to locate base test directory" );
- }
- return baseDirectory;
- }
-}
</pre></div>
<hr /><a name="file93" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>IntegrationTestCase.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test/IntegrationTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N IntegrationTestCase.java
--- IntegrationTestCase.java 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,141 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.test;
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.HashMap;
-import java.util.Map;
-import org.jcontainer.loom.classman.builder.LoaderBuilder;
-import org.jcontainer.loom.classman.builder.SimpleLoaderResolver;
-import org.jcontainer.loom.classman.metadata.ClassLoaderSetMetaData;
-import org.jcontainer.loom.classman.verifier.ClassLoaderVerifier;
-
-/**
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:55 $
- */
-public class IntegrationTestCase
- extends AbstractLoaderTestCase
-{
- public void testPresence()
- throws Exception
- {
- final Map map = buildClassLoaders( "config1.xml" );
-
- assertPresent( map, "LOADER_1" );
- assertPresent( map, "LOADER_2" );
- assertPresent( map, "LOADER_3" );
- assertPresent( map, "LOADER_4" );
- assertPresent( map, "LOADER_5" );
- assertPresent( map, "LOADER_6" );
- assertPresent( map, "JOIN_1" );
-
- final String[] files1 = new String[]{"cl1.jar"};
- final String[] files2 = new String[]{"cl2.jar"};
- final String[] files3 = new String[]{"cl1.jar", "cl2.jar"};
- final String[] files4 =
- new String[]{"SAR-INF/lib/cl3.jar", "SAR-INF/lib/cl4.jar"};
- final String[] files5 = new String[]{"SAR-INF/lib/cl4.jar"};
- final String[] files6 = new String[]{"SAR-INF/lib/cl4.jar"};
-
- assertURLsPresent( map, "LOADER_1", files1 );
- assertURLsPresent( map, "LOADER_2", files2 );
- assertURLsPresent( map, "LOADER_3", files3 );
- assertURLsPresent( map, "LOADER_4", files4 );
- assertURLsPresent( map, "LOADER_5", files5 );
- assertURLsPresent( map, "LOADER_6", files6 );
-
- assertClassPresent( map, "LOADER_1", DataConstants.DATA1_CLASS );
- assertClassPresent( map, "LOADER_1", DataConstants.DATA1_CLASS2 );
- assertClassPresent( map, "LOADER_2", DataConstants.DATA2_CLASS );
- assertClassPresent( map, "LOADER_3", DataConstants.DATA1_CLASS );
- assertClassPresent( map, "LOADER_3", DataConstants.DATA1_CLASS2 );
- assertClassPresent( map, "LOADER_3", DataConstants.DATA2_CLASS );
- assertClassPresent( map, "LOADER_4", DataConstants.DATA1_CLASS );
- assertClassPresent( map, "LOADER_4", DataConstants.DATA1_CLASS2 );
- assertClassPresent( map, "LOADER_4", DataConstants.DATA3_CLASS );
- assertClassPresent( map, "LOADER_4", DataConstants.DATA4_CLASS );
- assertClassPresent( map, "LOADER_5", DataConstants.DATA1_CLASS );
- assertClassPresent( map, "LOADER_5", DataConstants.DATA1_CLASS2 );
- assertClassPresent( map, "LOADER_5", DataConstants.DATA4_CLASS );
- assertClassPresent( map, "LOADER_6", DataConstants.DATA1_CLASS );
- assertClassPresent( map, "LOADER_6", DataConstants.DATA1_CLASS2 );
- assertClassPresent( map, "LOADER_6", DataConstants.DATA4_CLASS );
- assertClassPresent( map, "JOIN_1", DataConstants.DATA1_CLASS );
- assertClassPresent( map, "JOIN_1", DataConstants.DATA1_CLASS2 );
- assertClassPresent( map, "JOIN_1", DataConstants.DATA2_CLASS );
- }
-
- private void assertClassPresent( final Map map,
- final String name,
- final String classname )
- {
- final ClassLoader classLoader = (ClassLoader)map.get( name );
- try
- {
- classLoader.loadClass( classname );
- }
- catch( ClassNotFoundException e )
- {
- fail( "Unable to load " + classname + " from " +
- name + " classloader" );
- }
- }
-
- private void assertURLsPresent( final Map map,
- final String name,
- final String[] files )
- {
- final URLClassLoader classLoader = (URLClassLoader)map.get( name );
- final URL[] urls = classLoader.getURLs();
-
- assertEquals( "URL count:", files.length, urls.length );
- for( int i = 0; i < urls.length; i++ )
- {
- final URL url = urls[ i ];
- final String file = files[ i ];
- assertTrue( "url=" + url + " ends with " + file,
- url.getFile().endsWith( file ) );
- }
- }
-
- private void assertPresent( final Map map,
- final String name )
- {
- assertTrue( "map.containsKey( '" + name + "' )",
- map.containsKey( name ) );
- /*
- final Object object = map.get( name );
- if( object instanceof URLClassLoader )
- {
- final URLClassLoader classLoader = (URLClassLoader)object;
- final URL[] urls = classLoader.getURLs();
- System.out.println( name + ": " + Arrays.asList( urls ) );
- }
- */
- }
-
- private Map buildClassLoaders( final String resource )
- throws Exception
- {
- final ClassLoaderSetMetaData metaData =
- buildFromResource( resource );
- final ClassLoaderVerifier verifier = new ClassLoaderVerifier();
- verifier.verifyClassLoaderSet( metaData );
- final LoaderBuilder builder = new LoaderBuilder();
- final HashMap predefined = new HashMap();
- predefined.put( "*system*", ClassLoader.getSystemClassLoader() );
- final File baseDirectory = getBaseDirectory();
- final SimpleLoaderResolver resolver =
- new SimpleLoaderResolver( baseDirectory );
- return builder.buildClassLoaders( metaData, resolver, predefined );
- }
-}
</pre></div>
<hr /><a name="file94" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>config1.xml</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test/config1.xml?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N config1.xml
--- config1.xml 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,43 +0,0 @@
</small></pre><pre class="diff" id="removed">-<classloaders default="*system*" version="1.0">
- <predefined name="*system*"/>
-
- <classloader name="LOADER_1" parent="*system*">
- <entry location="cl1.jar"/>
- </classloader>
-
- <classloader name="LOADER_2" parent="*system*">
- <entry location="cl2.jar"/>
- </classloader>
-
- <classloader name="LOADER_3" parent="*system*">
- <fileset dir=".">
- <include name="**/*.jar"/>
- <exclude name="SAR-INF/lib/*.jar"/>
- </fileset>
- </classloader>
-
- <classloader name="LOADER_4" parent="LOADER_1">
- <fileset dir=".">
- <include name="SAR-INF/lib/*.jar"/>
- </fileset>
- </classloader>
-
- <classloader name="LOADER_5" parent="LOADER_1">
- <fileset dir=".">
- <include name="SAR-INF/**/cl4.jar"/>
- </fileset>
- </classloader>
-
- <classloader name="LOADER_6" parent="LOADER_1">
- <fileset dir="SAR-INF">
- <include name="lib/cl4.jar"/>
- </fileset>
- </classloader>
-
- <join name="JOIN_1">
- <classloader-ref name="LOADER_1"/>
- <classloader-ref name="LOADER_2"/>
- </join>
-
-
-</classloaders>
</pre><pre class="diff"><small id="info">\ No newline at end of file
</small></pre></div>
<hr /><a name="file95" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>DataConstants.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/test/DataConstants.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N DataConstants.java
--- DataConstants.java 31 Mar 2004 03:18:55 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,28 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.test;
-
-import org.jcontainer.loom.extension.Extension;
-
-/**
- * Constants used in the tests.
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:55 $
- */
-public interface DataConstants
-{
- String DATA1_RESOURCE = "org/jcontainer/loom/classman/test/data/cl1/Resource.properties";
- String DATA1_CLASS = "org.jcontainer.loom.classman.test.data.cl1.Data1";
- String DATA1_CLASS2 = "org.jcontainer.loom.classman.test.data.cl1.Data2";
- String DATA2_CLASS = "org.jcontainer.loom.classman.test.data.cl2.CL2Data";
- String DATA3_CLASS = "org.jcontainer.loom.classman.test.data.cl3.CL3Data";
- String DATA4_CLASS = "org.jcontainer.loom.classman.test.data.cl4.CL4Data";
- Extension EXTENSION =
- new Extension( "Foo-Ext", null, null, null, null, null, null );
-}
</pre></div>
<hr /><a name="file96" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/runtime">runtime</a><br /></span>
<div class="fileheader" id="added"><big><b>JoinClassLoader.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/runtime/JoinClassLoader.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N JoinClassLoader.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ JoinClassLoader.java 19 Apr 2004 22:19:26 -0000 1.1
@@ -0,0 +1,157 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.runtime;
+
+import java.io.IOException;
+import java.net.URL;
+import java.security.SecureClassLoader;
+import java.util.Enumeration;
+import java.util.Vector;
+
+/**
+ * The <tt>JoinClassLoader</tt> is a {@link ClassLoader} that joins a list of
+ * ClassLoaders together. The JoinClassLoader has a list of ClassLoaders
+ * specified from which resources and classes can be loaded from. The
+ * JoinClassLoader will attempt to load the Class or resources from each
+ * ClassLoader in succession.
+ *
+ * <p>Note that it is recomended that each ClassLoader be made up of distinct,
+ * non-overlapping sets of resources or else ClassCastExceptions may result
+ * along with other undersired behaviour. </p>
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:26 $
+ */
+public class JoinClassLoader
+ extends SecureClassLoader
+{
+ /**
+ * The list of classLoaders to search through each time a class or resource
+ * is requested.
+ */
+ private final ClassLoader[] m_classLoaders;
+
+ /**
+ * Construct a join ClassLoader that defines parent ClassLoader and list of
+ * ClassLoaders to search for classes or resources when requested.
+ *
+ * @param parent the parent classloader
+ * @param classLoaders the classloaders to search
+ */
+ public JoinClassLoader( final ClassLoader[] classLoaders,
+ final ClassLoader parent )
+ {
+ super( parent );
+ if( null == classLoaders )
+ {
+ throw new NullPointerException( "classLoaders" );
+ }
+ for( int i = 0; i < classLoaders.length; i++ )
+ {
+ if( null == classLoaders[ i ] )
+ {
+ throw new NullPointerException( "classLoaders[" + i + "]" );
+ }
+ }
+ m_classLoaders = classLoaders;
+ }
+
+ /**
+ * Overide findClass to find a class by searching all the ClassLoaders for
+ * class.
+ *
+ * @param name the name of class
+ * @return the Class instance
+ * @throws ClassNotFoundException if unable to find class
+ * @see ClassLoader#findClass
+ */
+ protected Class findClass( final String name )
+ throws ClassNotFoundException
+ {
+ for( int i = 0; i < m_classLoaders.length; i++ )
+ {
+ try
+ {
+ return m_classLoaders[ i ].loadClass( name );
+ }
+ catch( final ClassNotFoundException cnfe )
+ {
+ //Not in that classloader
+ }
+ }
+
+ return super.findClass( name );
+ }
+
+ /**
+ * Overide findResources to retrieve all the resources from all classloaders
+ * with a particular name.
+ *
+ * @param name the resources to search for
+ * @return an enumeration of all resources with specified name
+ * @throws IOException if unable to find resources
+ * @see ClassLoader#findResources
+ */
+ protected Enumeration findResources( final String name )
+ throws IOException
+ {
+ final Vector result = new Vector();
+
+ for( int i = 0; i < m_classLoaders.length; i++ )
+ {
+ try
+ {
+ final Enumeration resources =
+ m_classLoaders[ i ].getResources( name );
+ addAll( result, resources );
+ }
+ catch( final IOException ioe )
+ {
+ //Not in that classloader
+ }
+ }
+ final Enumeration resources = super.findResources( name );
+ addAll( result, resources );
+ return result.elements();
+ }
+
+ /**
+ * Add all resources specified into result vector.
+ *
+ * @param result the result vector
+ * @param resources the enumeration of resources
+ */
+ private void addAll( final Vector result,
+ final Enumeration resources )
+ {
+ while( resources.hasMoreElements() )
+ {
+ result.add( resources.nextElement() );
+ }
+ }
+
+ /**
+ * Overide findResource to search through all classloaders.
+ *
+ * @param name the resources to search for
+ * @return the resource URL
+ * @see ClassLoader#findResource
+ */
+ protected URL findResource( final String name )
+ {
+ for( int i = 0; i < m_classLoaders.length; i++ )
+ {
+ final URL resource = m_classLoaders[ i ].getResource( name );
+ if( null != resource )
+ {
+ return resource;
+ }
+ }
+ return super.findResource( name );
+ }
+}
</pre></div>
<hr /><a name="file97" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/test/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/metadata">metadata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/metadata/test">test</a><br /></span>
<div class="fileheader" id="removed"><big><b>MetaDataTestCase.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/jcontainer/loom/classman/metadata/test/MetaDataTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N MetaDataTestCase.java
--- MetaDataTestCase.java 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,120 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.metadata.test;
-
-import junit.framework.TestCase;
-import org.jcontainer.loom.classman.metadata.ClassLoaderMetaData;
-import org.jcontainer.loom.classman.metadata.ClassLoaderSetMetaData;
-import org.jcontainer.loom.classman.metadata.FileSetMetaData;
-import org.jcontainer.loom.classman.metadata.JoinMetaData;
-
-/**
- * Unit test for join classloader.
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:54 $
- */
-public class MetaDataTestCase
- extends TestCase
-{
- public void testCtorNullsInClassLoaderSet()
- throws Exception
- {
- try
- {
- new ClassLoaderSetMetaData( null,
- new String[ 0 ],
- new ClassLoaderMetaData[ 0 ],
- new JoinMetaData[ 0 ] );
- fail( "Expected a NPE" );
- }
- catch( NullPointerException e )
- {
- assertEquals( "NPE type", "aDefault", e.getMessage() );
- }
-
- try
- {
- new ClassLoaderSetMetaData( "",
- null,
- new ClassLoaderMetaData[ 0 ],
- new JoinMetaData[ 0 ] );
- fail( "Expected a NPE" );
- }
- catch( NullPointerException e )
- {
- assertEquals( "NPE type", "predefined", e.getMessage() );
- }
-
- try
- {
- new ClassLoaderSetMetaData( "",
- new String[ 0 ],
- new ClassLoaderMetaData[ 0 ],
- null );
- fail( "Expected a NPE" );
- }
- catch( NullPointerException e )
- {
- assertEquals( "NPE type", "joins", e.getMessage() );
- }
-
- try
- {
- new ClassLoaderSetMetaData( "",
- new String[ 0 ],
- null,
- new JoinMetaData[ 0 ] );
- fail( "Expected a NPE" );
- }
- catch( NullPointerException e )
- {
- assertEquals( "NPE type", "classLoaders", e.getMessage() );
- }
- }
-
- public void testCtorNullsInFileSet()
- throws Exception
- {
- try
- {
- new FileSetMetaData( null,
- new String[ 0 ],
- new String[ 0 ] );
- fail( "Expected a NPE" );
- }
- catch( NullPointerException e )
- {
- assertEquals( "NPE type", "baseDirectory", e.getMessage() );
- }
-
- try
- {
- new FileSetMetaData( ".",
- null,
- new String[ 0 ] );
- fail( "Expected a NPE" );
- }
- catch( NullPointerException e )
- {
- assertEquals( "NPE type", "includes", e.getMessage() );
- }
-
- try
- {
- new FileSetMetaData( ".",
- new String[ 0 ],
- null );
- fail( "Expected a NPE" );
- }
- catch( NullPointerException e )
- {
- assertEquals( "NPE type", "excludes", e.getMessage() );
- }
- }
-}
</pre></div>
<hr /><a name="file98" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/verifier">verifier</a><br /></span>
<div class="fileheader" id="added"><big><b>ClassLoaderVerifier.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/verifier/ClassLoaderVerifier.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N ClassLoaderVerifier.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ClassLoaderVerifier.java 19 Apr 2004 22:19:26 -0000 1.1
@@ -0,0 +1,490 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.verifier;
+
+import org.codehaus.loom.classman.metadata.ClassLoaderMetaData;
+import org.codehaus.loom.classman.metadata.ClassLoaderSetMetaData;
+import org.codehaus.loom.classman.metadata.JoinMetaData;
+import org.codehaus.spice.salt.i18n.ResourceManager;
+import org.codehaus.spice.salt.i18n.Resources;
+
+/**
+ * Verify ClassLoader set is valid. Validity is defined as <ul> <li>With
+ * exception of predefined names, all ClassLoader names should be defined
+ * starting with letters or '_' and then continuing with Alpha-Numeric
+ * characters, '-', '.' or '_'.</li> <li>No ClassLoader can have a parent
+ * ClassLoader that is not predefined or not defined in ClassLoaderSet.</li>
+ * <li>No "join" ClassLoader can link against a non-existent ClassLoader.</li>
+ * <li>No "join" ClassLoader can join multiple instances of same
+ * ClassLoader.</li> <li>No ClassLoader can have multiple entrys that point to
+ * the same location.</li> <li>No ClassLoader (either predefined, join or
+ * regular) can have the same name.</li> <li>The default ClassLoader must
+ * exist.</li> <li>There must be no circular dependencies between join
+ * classloaders.</li> </ul>
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:26 $
+ */
+public class ClassLoaderVerifier
+{
+ /** i18n resources for used to present messages. */
+ private static final Resources REZ =
+ ResourceManager.getPackageResources( ClassLoaderVerifier.class );
+
+ public void verifyClassLoaderSet( final ClassLoaderSetMetaData set )
+ throws Exception
+ {
+ String message = null;
+
+ message = REZ.getString( "valid-names.notice" );
+ info( message );
+ verifyNames( set );
+
+ message = REZ.getString( "valid-parents.notice" );
+ info( message );
+ verifyParents( set );
+
+ message = REZ.getString( "valid-links.notice" );
+ info( message );
+ verifyLinks( set );
+
+ message = REZ.getString( "default-loader.notice" );
+ info( message );
+ verifyDefaultLoaderExists( set );
+
+ message = REZ.getString( "unique-classloader.notice" );
+ info( message );
+ verifyUniqueClassLoaderNames( set );
+
+ message = REZ.getString( "unique-joins.notice" );
+ info( message );
+ verifyUniqueJoinNames( set );
+
+ message = REZ.getString( "unique-predefined.notice" );
+ info( message );
+ verifyUniquePredefinedNames( set );
+
+ message = REZ.getString( "unique-joins-entrys.notice" );
+ info( message );
+ verifyUniqueJoinEntrys( set );
+
+ message = REZ.getString( "unique-classpath-entrys.notice" );
+ info( message );
+ verifyUniqueClassLoaderEntrys( set );
+
<a name="task1" />+ //<span class="task">TODO</span>: Verify that the joins form a directed graph with no loops
+ }
+
+ /**
+ * Log an informational message. Sub-classes should overide this.
+ *
+ * @param message the message
+ */
+ protected void info( final String message )
+ {
+ //noop
+ }
+
+ /**
+ * Verify that all the classloaders have valid names.
+ *
+ * @throws Exception if validity check fails
+ */
+ private void verifyNames( ClassLoaderSetMetaData set )
+ throws Exception
+ {
+ final ClassLoaderMetaData[] classLoaders = set.getClassLoaders();
+ for( int i = 0; i < classLoaders.length; i++ )
+ {
+ final String name = classLoaders[ i ].getName();
+ verifyName( name );
+ }
+
+ final JoinMetaData[] joins = set.getJoins();
+ for( int i = 0; i < joins.length; i++ )
+ {
+ final String name = joins[ i ].getName();
+ verifyName( name );
+ }
+ }
+
+ /**
+ * Verify that all the classloaders have valid parents.
+ *
+ * @throws Exception if validity check fails
+ */
+ private void verifyParents( ClassLoaderSetMetaData set )
+ throws Exception
+ {
+ final ClassLoaderMetaData[] classLoaders = set.getClassLoaders();
+ for( int i = 0; i < classLoaders.length; i++ )
+ {
+ final ClassLoaderMetaData classLoader = classLoaders[ i ];
+ final String parent = classLoader.getParent();
+ if( !isLoaderDefined( parent, set ) )
+ {
+ final String message =
+ REZ.format( "invalid-parent.error",
+ classLoader.getName(),
+ parent );
+ throw new Exception( message );
+ }
+ }
+ }
+
+ /**
+ * Verify that each join ClassLoader only links to ClassLoaders that exist.
+ *
+ * @throws Exception if validity check fails
+ */
+ private void verifyLinks( final ClassLoaderSetMetaData set )
+ throws Exception
+ {
+ final JoinMetaData[] joins = set.getJoins();
+ for( int i = 0; i < joins.length; i++ )
+ {
+ verifyLinks( joins[ i ], set );
+ }
+ }
+
+ /**
+ * Verify that each join ClassLoader only links to ClassLoaders that exist.
+ *
+ * @throws Exception if validity check fails
+ */
+ private void verifyLinks( final JoinMetaData join,
+ final ClassLoaderSetMetaData set )
+ throws Exception
+ {
+ final String[] classloaders = join.getClassloaders();
+ for( int i = 0; i < classloaders.length; i++ )
+ {
+ final String classloader = classloaders[ i ];
+ if( !isLoaderDefined( classloader, set ) )
+ {
+ final String message =
+ REZ.format( "bad-join-link.error",
+ join.getName(),
+ classloader );
+ throw new Exception( message );
+ }
+ }
+ }
+
+ /**
+ * Verify that all the classloaders have valid names.
+ *
+ * @throws Exception if validity check fails
+ */
+ private void verifyName( final String name )
+ throws Exception
+ {
+ final int size = name.length();
+ if( 0 == size )
+ {
+ final String message =
+ REZ.format( "empty-name.error",
+ name );
+ throw new Exception( message );
+ }
+ final char ch = name.charAt( 0 );
+ if( !Character.isLetter( ch ) &&
+ '_' != ch )
+ {
+ final String message =
+ REZ.format( "name-invalid-start.error",
+ name );
+ throw new Exception( message );
+ }
+
+ for( int i = 1; i < size; i++ )
+ {
+ final char c = name.charAt( i );
+ if( !Character.isLetterOrDigit( c ) &&
+ '_' != c &&
+ '-' != c &&
+ '.' != c )
+ {
+ final String message =
+ REZ.format( "name-invalid-char.error",
+ name,
+ String.valueOf( c ) );
+ throw new Exception( message );
+ }
+ }
+ }
+
+ /**
+ * Verify that each regular ClassLoader only contains unique entrys.
+ *
+ * @throws Exception if validity check fails
+ */
+ private void verifyUniqueClassLoaderEntrys(
+ final ClassLoaderSetMetaData set )
+ throws Exception
+ {
+ final ClassLoaderMetaData[] classLoaders = set.getClassLoaders();
+ for( int i = 0; i < classLoaders.length; i++ )
+ {
+ verifyUniqueClassLoaderEntrys( classLoaders[ i ] );
+ }
+ }
+
+ /**
+ * Verify that each regular ClassLoader only contains unique entrys.
+ *
+ * @throws Exception if validity check fails
+ */
+ private void verifyUniqueClassLoaderEntrys(
+ final ClassLoaderMetaData classLoader )
+ throws Exception
+ {
+ final String[] entrys = classLoader.getEntrys();
+ for( int i = 0; i < entrys.length; i++ )
+ {
+ final String location = entrys[ i ];
+ for( int j = i + 1; j < entrys.length; j++ )
+ {
+ if( location.equals( entrys[ j ] ) )
+ {
+ final String message =
+ REZ.format( "classloader-dup-entrys.error",
+ classLoader.getName(),
+ location );
+ throw new Exception( message );
+ }
+ }
+ }
+ }
+
+ /**
+ * Verify that each join only contains unique classloaders.
+ *
+ * @throws Exception if validity check fails
+ */
+ private void verifyUniqueJoinEntrys( final ClassLoaderSetMetaData set )
+ throws Exception
+ {
+ final JoinMetaData[] joins = set.getJoins();
+ for( int i = 0; i < joins.length; i++ )
+ {
+ verifyUniqueJoinEntrys( joins[ i ] );
+ }
+ }
+
+ /**
+ * Verify that specified join only contains unique classloaders.
+ *
+ * @throws Exception if validity check fails
+ */
+ private void verifyUniqueJoinEntrys( final JoinMetaData join )
+ throws Exception
+ {
+ final String[] classloaders = join.getClassloaders();
+ for( int j = 0; j < classloaders.length; j++ )
+ {
+ final String name = classloaders[ j ];
+ for( int k = j + 1; k < classloaders.length; k++ )
+ {
+ final String other = classloaders[ k ];
+ if( other.equals( name ) )
+ {
+ final String message =
+ REZ.format( "join-dup-entrys.error",
+ join.getName(),
+ name );
+ throw new Exception( message );
+ }
+ }
+ }
+ }
+
+ /**
+ * Verify that the Predefined names are unique set.
+ *
+ * @throws Exception if validity check fails
+ */
+ private void verifyUniquePredefinedNames( final ClassLoaderSetMetaData set )
+ throws Exception
+ {
+ final String[] predefined = set.getPredefined();
+ for( int i = 0; i < predefined.length; i++ )
+ {
+ final String name = predefined[ i ];
+ for( int j = i + 1; j < predefined.length; j++ )
+ {
+ final String other = predefined[ j ];
+ if( other.equals( name ) )
+ {
+ final String message =
+ REZ.format( "duplicate-name.error",
+ "predefined",
+ "predefined",
+ name );
+ throw new Exception( message );
+ }
+ }
+ }
+ }
+
+ /**
+ * Verify that the ClassLoader names are unique throughout the set.
+ *
+ * @param set the set of ClassLoader defs to search in
+ * @throws Exception if validity check fails
+ */
+ private void verifyUniqueClassLoaderNames(
+ final ClassLoaderSetMetaData set )
+ throws Exception
+ {
+ final ClassLoaderMetaData[] classLoaders = set.getClassLoaders();
+ for( int i = 0; i < classLoaders.length; i++ )
+ {
+ final ClassLoaderMetaData classLoader = classLoaders[ i ];
+ verifyUniqueName( set,
+ classLoader.getName(),
+ "classloader",
+ classLoader );
+ }
+ }
+
+ /**
+ * Verify that the specified name is unique in set except for specified
+ * entity.
+ *
+ * @param set the set of classloaders
+ * @param name the name
+ * @param type the type of classloder (used for exception messages)
+ * @param entity the entity to skip (ie the one the name refers to)
+ * @throws Exception if validity check fails
+ */
+ private void verifyUniqueName( final ClassLoaderSetMetaData set,
+ final String name,
+ final String type,
+ final Object entity )
+ throws Exception
+ {
+ //Make sure our join does not have same name as a
+ //predefined ClassLoader
+ if( set.isPredefined( name ) )
+ {
+ final String message =
+ REZ.format( "duplicate-name.error",
+ type,
+ "predefined",
+ name );
+ throw new Exception( message );
+ }
+
+ //Make sure no joins have same name as our join
+ final JoinMetaData[] joins = set.getJoins();
+ for( int j = 0; j < joins.length; j++ )
+ {
+ final JoinMetaData other = joins[ j ];
+ if( other == entity )
+ {
+ continue;
+ }
+ if( other.getName().equals( name ) )
+ {
+ final String message =
+ REZ.format( "duplicate-name.error",
+ type,
+ "join",
+ name );
+ throw new Exception( message );
+ }
+ }
+
+ final ClassLoaderMetaData[] classLoaders = set.getClassLoaders();
+ for( int j = 0; j < classLoaders.length; j++ )
+ {
+ final ClassLoaderMetaData other = classLoaders[ j ];
+ if( other == entity )
+ {
+ continue;
+ }
+ if( other.getName().equals( name ) )
+ {
+ final String message =
+ REZ.format( "duplicate-name.error",
+ type,
+ "classloader",
+ name );
+ throw new Exception( message );
+ }
+ }
+ }
+
+ /**
+ * Verify that the join names are unique throughout the set.
+ *
+ * @param set the set of ClassLoader defs to search in
+ * @throws Exception if validity check fails
+ */
+ private void verifyUniqueJoinNames( final ClassLoaderSetMetaData set )
+ throws Exception
+ {
+ final JoinMetaData[] joins = set.getJoins();
+ for( int i = 0; i < joins.length; i++ )
+ {
+ final JoinMetaData join = joins[ i ];
+ verifyUniqueName( set,
+ join.getName(),
+ "join",
+ join );
+ }
+ }
+
+ /**
+ * Verify that the default loader is defined.
+ *
+ * @param set the set of ClassLoader defs to search in
+ * @throws Exception if validity check fails
+ */
+ private void verifyDefaultLoaderExists( final ClassLoaderSetMetaData set )
+ throws Exception
+ {
+ final String name = set.getDefault();
+ if( !isLoaderDefined( name, set ) )
+ {
+ final String message =
+ REZ.format( "missing-default-loader.error",
+ name );
+ throw new Exception( message );
+ }
+ }
+
+ /**
+ * Return true if specified loader is defined in set.
+ *
+ * @param name the name of loader
+ * @param set the set to search
+ * @return true if specified loader is defined in set.
+ */
+ private boolean isLoaderDefined( final String name,
+ final ClassLoaderSetMetaData set )
+ {
+ if( set.isPredefined( name ) )
+ {
+ return true;
+ }
+ else if( null != set.getClassLoader( name ) )
+ {
+ return true;
+ }
+ else if( null != set.getJoin( name ) )
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+}
</pre></div>
<hr /><a name="file99" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/java/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/verifier">verifier</a><br /></span>
<div class="fileheader" id="added"><big><b>Resources.properties</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/codehaus/loom/classman/verifier/Resources.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N Resources.properties
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Resources.properties 19 Apr 2004 22:19:26 -0000 1.1
@@ -0,0 +1,22 @@
</small></pre><pre class="diff" id="added">+valid-names.notice=Verifying that all ClassLoaders have valid names.
+valid-parents.notice=Verifying that all ClassLoaders have valid parents.
+valid-links.notice=Verifying that all "Join" ClassLoaders link against existing ClassLoaders.
+default-loader.notice=Verifying that the default ClassLoader exists.
+unique-classloader.notice=Verifying that all Regular ClassLoaders have a unique name.
+unique-joins.notice=Verifying that all Join ClassLoaders have a unique name.
+unique-predefined.notice=Verifying that all predefined ClassLoaders have a unique name.
+unique-joins-entrys.notice=Verifying that all "Join" ClassLoaders link with other classLoaders no more than once.
+unique-classpath-entrys.notice=Verifying that all Regular ClassLoaders have unique entrys.
+unique-classpath-entrys.notice=Verifying that all Regular ClassLoaders have unique entrys.
+
+
+invalid-parent.error=ClassLoader named "{0}" specified a non-existent parent "{1}".
+bad-join-link.error="Join" ClassLoader named "{0}" specified a non-existent classloader-ref "{1}".
+empty-name.error=Invalid empty ClassLoader name.
+name-invalid-start.error=ClassLoader name "{0}" begins with invalid name. Must begin with a letter or the '_' character.
+name-invalid-char.error=ClassLoader name "{0}" contains invalid character "{1}".
+classloader-dup-entrys.error=Duplicate entry "{1}" detected for regular ClassLoader named "{0}".
+join-dup-entrys.error=Duplicate classloader-ref "{1}" detected for "Join" ClassLoader named "{0}".
+join-dup-entrys.error=Duplicate classloader-ref "{1}" detected for "Join" ClassLoader named "{0}".
+missing-default-loader.error=Unable to locate default ClassLoader named "{0}".
+duplicate-name.error=Multiple ClassLoaders exist with name "{2}". (One is a {0,choice,classloader#Regular|predefined#Predefined|join#Join} ClassLoader, the other is a {1,choice,classloader#Regular|predefined#Predefined|join#Join} ClassLoader).
</pre></div>
<hr /><a name="file100" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/metadata">metadata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/metadata/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>MetaDataTestCase.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/metadata/test/MetaDataTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N MetaDataTestCase.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ MetaDataTestCase.java 19 Apr 2004 22:19:26 -0000 1.1
@@ -0,0 +1,121 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.metadata.test;
+
+import junit.framework.TestCase;
+
+import org.codehaus.loom.classman.metadata.ClassLoaderMetaData;
+import org.codehaus.loom.classman.metadata.ClassLoaderSetMetaData;
+import org.codehaus.loom.classman.metadata.FileSetMetaData;
+import org.codehaus.loom.classman.metadata.JoinMetaData;
+
+/**
+ * Unit test for join classloader.
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:26 $
+ */
+public class MetaDataTestCase
+ extends TestCase
+{
+ public void testCtorNullsInClassLoaderSet()
+ throws Exception
+ {
+ try
+ {
+ new ClassLoaderSetMetaData( null,
+ new String[ 0 ],
+ new ClassLoaderMetaData[ 0 ],
+ new JoinMetaData[ 0 ] );
+ fail( "Expected a NPE" );
+ }
+ catch( NullPointerException e )
+ {
+ assertEquals( "NPE type", "aDefault", e.getMessage() );
+ }
+
+ try
+ {
+ new ClassLoaderSetMetaData( "",
+ null,
+ new ClassLoaderMetaData[ 0 ],
+ new JoinMetaData[ 0 ] );
+ fail( "Expected a NPE" );
+ }
+ catch( NullPointerException e )
+ {
+ assertEquals( "NPE type", "predefined", e.getMessage() );
+ }
+
+ try
+ {
+ new ClassLoaderSetMetaData( "",
+ new String[ 0 ],
+ new ClassLoaderMetaData[ 0 ],
+ null );
+ fail( "Expected a NPE" );
+ }
+ catch( NullPointerException e )
+ {
+ assertEquals( "NPE type", "joins", e.getMessage() );
+ }
+
+ try
+ {
+ new ClassLoaderSetMetaData( "",
+ new String[ 0 ],
+ null,
+ new JoinMetaData[ 0 ] );
+ fail( "Expected a NPE" );
+ }
+ catch( NullPointerException e )
+ {
+ assertEquals( "NPE type", "classLoaders", e.getMessage() );
+ }
+ }
+
+ public void testCtorNullsInFileSet()
+ throws Exception
+ {
+ try
+ {
+ new FileSetMetaData( null,
+ new String[ 0 ],
+ new String[ 0 ] );
+ fail( "Expected a NPE" );
+ }
+ catch( NullPointerException e )
+ {
+ assertEquals( "NPE type", "baseDirectory", e.getMessage() );
+ }
+
+ try
+ {
+ new FileSetMetaData( ".",
+ null,
+ new String[ 0 ] );
+ fail( "Expected a NPE" );
+ }
+ catch( NullPointerException e )
+ {
+ assertEquals( "NPE type", "includes", e.getMessage() );
+ }
+
+ try
+ {
+ new FileSetMetaData( ".",
+ new String[ 0 ],
+ null );
+ fail( "Expected a NPE" );
+ }
+ catch( NullPointerException e )
+ {
+ assertEquals( "NPE type", "excludes", e.getMessage() );
+ }
+ }
+}
</pre></div>
<hr /><a name="file101" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/verifier">verifier</a><br /></span>
<div class="fileheader" id="removed"><big><b>ClassLoaderVerifier.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/verifier/ClassLoaderVerifier.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N ClassLoaderVerifier.java
--- ClassLoaderVerifier.java 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,490 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.verifier;
-
-import org.codehaus.spice.salt.i18n.ResourceManager;
-import org.codehaus.spice.salt.i18n.Resources;
-import org.jcontainer.loom.classman.metadata.ClassLoaderMetaData;
-import org.jcontainer.loom.classman.metadata.ClassLoaderSetMetaData;
-import org.jcontainer.loom.classman.metadata.JoinMetaData;
-
-/**
- * Verify ClassLoader set is valid. Validity is defined as <ul> <li>With
- * exception of predefined names, all ClassLoader names should be defined
- * starting with letters or '_' and then continuing with Alpha-Numeric
- * characters, '-', '.' or '_'.</li> <li>No ClassLoader can have a parent
- * ClassLoader that is not predefined or not defined in ClassLoaderSet.</li>
- * <li>No "join" ClassLoader can link against a non-existent ClassLoader.</li>
- * <li>No "join" ClassLoader can join multiple instances of same
- * ClassLoader.</li> <li>No ClassLoader can have multiple entrys that point to
- * the same location.</li> <li>No ClassLoader (either predefined, join or
- * regular) can have the same name.</li> <li>The default ClassLoader must
- * exist.</li> <li>There must be no circular dependencies between join
- * classloaders.</li> </ul>
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:54 $
- */
-public class ClassLoaderVerifier
-{
- /** i18n resources for used to present messages. */
- private static final Resources REZ =
- ResourceManager.getPackageResources( ClassLoaderVerifier.class );
-
- public void verifyClassLoaderSet( final ClassLoaderSetMetaData set )
- throws Exception
- {
- String message = null;
-
- message = REZ.getString( "valid-names.notice" );
- info( message );
- verifyNames( set );
-
- message = REZ.getString( "valid-parents.notice" );
- info( message );
- verifyParents( set );
-
- message = REZ.getString( "valid-links.notice" );
- info( message );
- verifyLinks( set );
-
- message = REZ.getString( "default-loader.notice" );
- info( message );
- verifyDefaultLoaderExists( set );
-
- message = REZ.getString( "unique-classloader.notice" );
- info( message );
- verifyUniqueClassLoaderNames( set );
-
- message = REZ.getString( "unique-joins.notice" );
- info( message );
- verifyUniqueJoinNames( set );
-
- message = REZ.getString( "unique-predefined.notice" );
- info( message );
- verifyUniquePredefinedNames( set );
-
- message = REZ.getString( "unique-joins-entrys.notice" );
- info( message );
- verifyUniqueJoinEntrys( set );
-
- message = REZ.getString( "unique-classpath-entrys.notice" );
- info( message );
- verifyUniqueClassLoaderEntrys( set );
-
- //TODO: Verify that the joins form a directed graph with no loops
- }
-
- /**
- * Log an informational message. Sub-classes should overide this.
- *
- * @param message the message
- */
- protected void info( final String message )
- {
- //noop
- }
-
- /**
- * Verify that all the classloaders have valid names.
- *
- * @throws Exception if validity check fails
- */
- private void verifyNames( ClassLoaderSetMetaData set )
- throws Exception
- {
- final ClassLoaderMetaData[] classLoaders = set.getClassLoaders();
- for( int i = 0; i < classLoaders.length; i++ )
- {
- final String name = classLoaders[ i ].getName();
- verifyName( name );
- }
-
- final JoinMetaData[] joins = set.getJoins();
- for( int i = 0; i < joins.length; i++ )
- {
- final String name = joins[ i ].getName();
- verifyName( name );
- }
- }
-
- /**
- * Verify that all the classloaders have valid parents.
- *
- * @throws Exception if validity check fails
- */
- private void verifyParents( ClassLoaderSetMetaData set )
- throws Exception
- {
- final ClassLoaderMetaData[] classLoaders = set.getClassLoaders();
- for( int i = 0; i < classLoaders.length; i++ )
- {
- final ClassLoaderMetaData classLoader = classLoaders[ i ];
- final String parent = classLoader.getParent();
- if( !isLoaderDefined( parent, set ) )
- {
- final String message =
- REZ.format( "invalid-parent.error",
- classLoader.getName(),
- parent );
- throw new Exception( message );
- }
- }
- }
-
- /**
- * Verify that each join ClassLoader only links to ClassLoaders that exist.
- *
- * @throws Exception if validity check fails
- */
- private void verifyLinks( final ClassLoaderSetMetaData set )
- throws Exception
- {
- final JoinMetaData[] joins = set.getJoins();
- for( int i = 0; i < joins.length; i++ )
- {
- verifyLinks( joins[ i ], set );
- }
- }
-
- /**
- * Verify that each join ClassLoader only links to ClassLoaders that exist.
- *
- * @throws Exception if validity check fails
- */
- private void verifyLinks( final JoinMetaData join,
- final ClassLoaderSetMetaData set )
- throws Exception
- {
- final String[] classloaders = join.getClassloaders();
- for( int i = 0; i < classloaders.length; i++ )
- {
- final String classloader = classloaders[ i ];
- if( !isLoaderDefined( classloader, set ) )
- {
- final String message =
- REZ.format( "bad-join-link.error",
- join.getName(),
- classloader );
- throw new Exception( message );
- }
- }
- }
-
- /**
- * Verify that all the classloaders have valid names.
- *
- * @throws Exception if validity check fails
- */
- private void verifyName( final String name )
- throws Exception
- {
- final int size = name.length();
- if( 0 == size )
- {
- final String message =
- REZ.format( "empty-name.error",
- name );
- throw new Exception( message );
- }
- final char ch = name.charAt( 0 );
- if( !Character.isLetter( ch ) &&
- '_' != ch )
- {
- final String message =
- REZ.format( "name-invalid-start.error",
- name );
- throw new Exception( message );
- }
-
- for( int i = 1; i < size; i++ )
- {
- final char c = name.charAt( i );
- if( !Character.isLetterOrDigit( c ) &&
- '_' != c &&
- '-' != c &&
- '.' != c )
- {
- final String message =
- REZ.format( "name-invalid-char.error",
- name,
- String.valueOf( c ) );
- throw new Exception( message );
- }
- }
- }
-
- /**
- * Verify that each regular ClassLoader only contains unique entrys.
- *
- * @throws Exception if validity check fails
- */
- private void verifyUniqueClassLoaderEntrys(
- final ClassLoaderSetMetaData set )
- throws Exception
- {
- final ClassLoaderMetaData[] classLoaders = set.getClassLoaders();
- for( int i = 0; i < classLoaders.length; i++ )
- {
- verifyUniqueClassLoaderEntrys( classLoaders[ i ] );
- }
- }
-
- /**
- * Verify that each regular ClassLoader only contains unique entrys.
- *
- * @throws Exception if validity check fails
- */
- private void verifyUniqueClassLoaderEntrys(
- final ClassLoaderMetaData classLoader )
- throws Exception
- {
- final String[] entrys = classLoader.getEntrys();
- for( int i = 0; i < entrys.length; i++ )
- {
- final String location = entrys[ i ];
- for( int j = i + 1; j < entrys.length; j++ )
- {
- if( location.equals( entrys[ j ] ) )
- {
- final String message =
- REZ.format( "classloader-dup-entrys.error",
- classLoader.getName(),
- location );
- throw new Exception( message );
- }
- }
- }
- }
-
- /**
- * Verify that each join only contains unique classloaders.
- *
- * @throws Exception if validity check fails
- */
- private void verifyUniqueJoinEntrys( final ClassLoaderSetMetaData set )
- throws Exception
- {
- final JoinMetaData[] joins = set.getJoins();
- for( int i = 0; i < joins.length; i++ )
- {
- verifyUniqueJoinEntrys( joins[ i ] );
- }
- }
-
- /**
- * Verify that specified join only contains unique classloaders.
- *
- * @throws Exception if validity check fails
- */
- private void verifyUniqueJoinEntrys( final JoinMetaData join )
- throws Exception
- {
- final String[] classloaders = join.getClassloaders();
- for( int j = 0; j < classloaders.length; j++ )
- {
- final String name = classloaders[ j ];
- for( int k = j + 1; k < classloaders.length; k++ )
- {
- final String other = classloaders[ k ];
- if( other.equals( name ) )
- {
- final String message =
- REZ.format( "join-dup-entrys.error",
- join.getName(),
- name );
- throw new Exception( message );
- }
- }
- }
- }
-
- /**
- * Verify that the Predefined names are unique set.
- *
- * @throws Exception if validity check fails
- */
- private void verifyUniquePredefinedNames( final ClassLoaderSetMetaData set )
- throws Exception
- {
- final String[] predefined = set.getPredefined();
- for( int i = 0; i < predefined.length; i++ )
- {
- final String name = predefined[ i ];
- for( int j = i + 1; j < predefined.length; j++ )
- {
- final String other = predefined[ j ];
- if( other.equals( name ) )
- {
- final String message =
- REZ.format( "duplicate-name.error",
- "predefined",
- "predefined",
- name );
- throw new Exception( message );
- }
- }
- }
- }
-
- /**
- * Verify that the ClassLoader names are unique throughout the set.
- *
- * @param set the set of ClassLoader defs to search in
- * @throws Exception if validity check fails
- */
- private void verifyUniqueClassLoaderNames(
- final ClassLoaderSetMetaData set )
- throws Exception
- {
- final ClassLoaderMetaData[] classLoaders = set.getClassLoaders();
- for( int i = 0; i < classLoaders.length; i++ )
- {
- final ClassLoaderMetaData classLoader = classLoaders[ i ];
- verifyUniqueName( set,
- classLoader.getName(),
- "classloader",
- classLoader );
- }
- }
-
- /**
- * Verify that the specified name is unique in set except for specified
- * entity.
- *
- * @param set the set of classloaders
- * @param name the name
- * @param type the type of classloder (used for exception messages)
- * @param entity the entity to skip (ie the one the name refers to)
- * @throws Exception if validity check fails
- */
- private void verifyUniqueName( final ClassLoaderSetMetaData set,
- final String name,
- final String type,
- final Object entity )
- throws Exception
- {
- //Make sure our join does not have same name as a
- //predefined ClassLoader
- if( set.isPredefined( name ) )
- {
- final String message =
- REZ.format( "duplicate-name.error",
- type,
- "predefined",
- name );
- throw new Exception( message );
- }
-
- //Make sure no joins have same name as our join
- final JoinMetaData[] joins = set.getJoins();
- for( int j = 0; j < joins.length; j++ )
- {
- final JoinMetaData other = joins[ j ];
- if( other == entity )
- {
- continue;
- }
- if( other.getName().equals( name ) )
- {
- final String message =
- REZ.format( "duplicate-name.error",
- type,
- "join",
- name );
- throw new Exception( message );
- }
- }
-
- final ClassLoaderMetaData[] classLoaders = set.getClassLoaders();
- for( int j = 0; j < classLoaders.length; j++ )
- {
- final ClassLoaderMetaData other = classLoaders[ j ];
- if( other == entity )
- {
- continue;
- }
- if( other.getName().equals( name ) )
- {
- final String message =
- REZ.format( "duplicate-name.error",
- type,
- "classloader",
- name );
- throw new Exception( message );
- }
- }
- }
-
- /**
- * Verify that the join names are unique throughout the set.
- *
- * @param set the set of ClassLoader defs to search in
- * @throws Exception if validity check fails
- */
- private void verifyUniqueJoinNames( final ClassLoaderSetMetaData set )
- throws Exception
- {
- final JoinMetaData[] joins = set.getJoins();
- for( int i = 0; i < joins.length; i++ )
- {
- final JoinMetaData join = joins[ i ];
- verifyUniqueName( set,
- join.getName(),
- "join",
- join );
- }
- }
-
- /**
- * Verify that the default loader is defined.
- *
- * @param set the set of ClassLoader defs to search in
- * @throws Exception if validity check fails
- */
- private void verifyDefaultLoaderExists( final ClassLoaderSetMetaData set )
- throws Exception
- {
- final String name = set.getDefault();
- if( !isLoaderDefined( name, set ) )
- {
- final String message =
- REZ.format( "missing-default-loader.error",
- name );
- throw new Exception( message );
- }
- }
-
- /**
- * Return true if specified loader is defined in set.
- *
- * @param name the name of loader
- * @param set the set to search
- * @return true if specified loader is defined in set.
- */
- private boolean isLoaderDefined( final String name,
- final ClassLoaderSetMetaData set )
- {
- if( set.isPredefined( name ) )
- {
- return true;
- }
- else if( null != set.getClassLoader( name ) )
- {
- return true;
- }
- else if( null != set.getJoin( name ) )
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-}
</pre></div>
<hr /><a name="file102" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java">java</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/sup
port/classman/src/java/org/jcontainer/loom/classman">classman</a>/<a href="http://xstream!
.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/verifier">verifier</a><br /></span>
<div class="fileheader" id="removed"><big><b>Resources.properties</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/java/org/jcontainer/loom/classman/verifier/Resources.properties?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N Resources.properties
--- Resources.properties 31 Mar 2004 03:18:54 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,22 +0,0 @@
</small></pre><pre class="diff" id="removed">-valid-names.notice=Verifying that all ClassLoaders have valid names.
-valid-parents.notice=Verifying that all ClassLoaders have valid parents.
-valid-links.notice=Verifying that all "Join" ClassLoaders link against existing ClassLoaders.
-default-loader.notice=Verifying that the default ClassLoader exists.
-unique-classloader.notice=Verifying that all Regular ClassLoaders have a unique name.
-unique-joins.notice=Verifying that all Join ClassLoaders have a unique name.
-unique-predefined.notice=Verifying that all predefined ClassLoaders have a unique name.
-unique-joins-entrys.notice=Verifying that all "Join" ClassLoaders link with other classLoaders no more than once.
-unique-classpath-entrys.notice=Verifying that all Regular ClassLoaders have unique entrys.
-unique-classpath-entrys.notice=Verifying that all Regular ClassLoaders have unique entrys.
-
-
-invalid-parent.error=ClassLoader named "{0}" specified a non-existent parent "{1}".
-bad-join-link.error="Join" ClassLoader named "{0}" specified a non-existent classloader-ref "{1}".
-empty-name.error=Invalid empty ClassLoader name.
-name-invalid-start.error=ClassLoader name "{0}" begins with invalid name. Must begin with a letter or the '_' character.
-name-invalid-char.error=ClassLoader name "{0}" contains invalid character "{1}".
-classloader-dup-entrys.error=Duplicate entry "{1}" detected for regular ClassLoader named "{0}".
-join-dup-entrys.error=Duplicate classloader-ref "{1}" detected for "Join" ClassLoader named "{0}".
-join-dup-entrys.error=Duplicate classloader-ref "{1}" detected for "Join" ClassLoader named "{0}".
-missing-default-loader.error=Unable to locate default ClassLoader named "{0}".
-duplicate-name.error=Multiple ClassLoaders exist with name "{2}". (One is a {0,choice,classloader#Regular|predefined#Predefined|join#Join} ClassLoader, the other is a {1,choice,classloader#Regular|predefined#Predefined|join#Join} ClassLoader).
</pre></div>
<hr /><a name="file103" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontai
ner/loom/support/classman/src/testdata/org/codehaus/loom/classman">classman</a>/<a href="!
http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl4">cl4</a><br /></span>
<div class="fileheader" id="added"><big><b>CL4Data.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl4/CL4Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N CL4Data.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ CL4Data.java 19 Apr 2004 22:19:26 -0000 1.1
@@ -0,0 +1,17 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.test.data.cl4;
+
+/**
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:26 $
+ */
+public class CL4Data
+{
+}
</pre></div>
<hr /><a name="file104" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/cla
ssman/src/test/org/codehaus/loom/classman">classman</a>/<a href="http://xstream.cvs.codeh!
aus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/runtime">runtime</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/runtime/test">test</a><br /></span>
<div class="fileheader" id="added"><big><b>JoinClassLoaderTestCase.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/test/org/codehaus/loom/classman/runtime/test/JoinClassLoaderTestCase.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N JoinClassLoaderTestCase.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ JoinClassLoaderTestCase.java 19 Apr 2004 22:19:26 -0000 1.1
@@ -0,0 +1,142 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.runtime.test;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Enumeration;
+
+import org.codehaus.loom.classman.runtime.JoinClassLoader;
+import org.codehaus.loom.classman.test.AbstractLoaderTestCase;
+import org.codehaus.loom.classman.test.DataConstants;
+
+/**
+ * Unit test for join classloader.
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:26 $
+ */
+public class JoinClassLoaderTestCase
+ extends AbstractLoaderTestCase
+{
+ public void testJoinClassLoader()
+ throws Exception
+ {
+ if( System.getProperty( "gump", "false" ).equals( "true" ) )
+ {
+ //Can't test the rest of this as it requires
+ //explicit classloader setup that gump ignores.
+ return;
+ }
+
+ final URLClassLoader cl1 = createClassLoader( "cl1.jar" );
+ final URLClassLoader cl2 = createClassLoader( "cl2.jar" );
+ final ClassLoader[] cls = new ClassLoader[]{cl1, cl2};
+ final JoinClassLoader join =
+ new JoinClassLoader( cls, ClassLoader.getSystemClassLoader() );
+ try
+ {
+ join.loadClass( DataConstants.DATA1_CLASS );
+ }
+ catch( ClassNotFoundException e )
+ {
+ fail( "Unable to load Data1 from cl1 classloader" );
+ }
+ try
+ {
+ join.loadClass( DataConstants.DATA2_CLASS );
+ }
+ catch( ClassNotFoundException e )
+ {
+ fail( "Unable to load CL2Data from cl2 classloader" );
+ }
+ try
+ {
+ join.loadClass( "i.no.exist" );
+ fail( "Expected that would be unable to load non-existent class" );
+ }
+ catch( ClassNotFoundException e )
+ {
+ }
+
+ try
+ {
+ assertEquals( "Loading from system classloader",
+ Integer.class,
+ join.loadClass( Integer.class.getName() ) );
+ }
+ catch( ClassNotFoundException e )
+ {
+ fail( "Unable to load Integer from classloader" );
+ }
+
+ final URL url1 = join.getResource( DataConstants.DATA1_RESOURCE );
+ assertNotNull( "Loading " + DataConstants.DATA1_RESOURCE + " from c1 classloader",
+ url1 );
+ final URL url2 = join.getResource( "noexist.txt" );
+ assertNull( "Loading noexist.txt from c1 classloader", url2 );
+
+ final Enumeration resources1 = join.getResources( DataConstants.DATA1_RESOURCE );
+ assertNotNull( "Loading set of " + DataConstants.DATA1_RESOURCE + " from c1 classloader",
+ resources1 );
+ assertTrue( "Count of resource from classloader", resources1.hasMoreElements() );
+ assertEquals( "Resource found from classloader", url1, resources1.nextElement() );
+
+ assertTrue( "Second Count of resource from classloader", !resources1.hasMoreElements() );
+
+ final Enumeration resources2 = join.getResources( "noexist.txt" );
+ assertNotNull( "Loading set of noexist.txt from c1 classloader", resources2 );
+ assertTrue( "Count of noexist.txt from classloader", !resources2.hasMoreElements() );
+
+ try
+ {
+ ClassLoader.getSystemClassLoader().loadClass( DataConstants.DATA1_CLASS );
+ }
+ catch( ClassNotFoundException e )
+ {
+ return;
+ }
+ fail( "Able to load Data1 from system classloader" );
+ }
+
+ public void testCtorNullsInClassLoaderSet()
+ throws Exception
+ {
+ try
+ {
+ new JoinClassLoader( null,
+ ClassLoader.getSystemClassLoader() );
+ fail( "Expected a NPE" );
+ }
+ catch( NullPointerException e )
+ {
+ assertEquals( "NPE type", "classLoaders", e.getMessage() );
+ }
+ try
+ {
+ new JoinClassLoader( new ClassLoader[]{null},
+ ClassLoader.getSystemClassLoader() );
+ fail( "Expected a NPE" );
+ }
+ catch( NullPointerException e )
+ {
+ assertEquals( "NPE type", "classLoaders[0]", e.getMessage() );
+ }
+ }
+
+ private URLClassLoader createClassLoader( final String filename ) throws MalformedURLException
+ {
+ final File baseDirectory = getBaseDirectory();
+ final File file = new File( baseDirectory, filename );
+ final URL url = file.toURL();
+ final URL[] urls = new URL[]{url};
+ return new URLClassLoader( urls, ClassLoader.getSystemClassLoader() );
+ }
+}
</pre></div>
<hr /><a name="file105" /><div class="file">
<span class="pathname" id="added"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus">codehaus</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontai
ner/loom/support/classman/src/testdata/org/codehaus/loom/classman">classman</a>/<a href="!
http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl2">cl2</a><br /></span>
<div class="fileheader" id="added"><big><b>CL2Data.java</b></big> <small id="info">added at <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/codehaus/loom/classman/test/data/cl2/CL2Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N CL2Data.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ CL2Data.java 19 Apr 2004 22:19:26 -0000 1.1
@@ -0,0 +1,17 @@
</small></pre><pre class="diff" id="added">+/*
+ * Copyright (C) The Spice Group. All rights reserved.
+ *
+ * This software is published under the terms of the Spice
+ * Software License version 1.1, a copy of which has been included
+ * with this distribution in the LICENSE.txt file.
+ */
+package org.codehaus.loom.classman.test.data.cl2;
+
+/**
+ *
+ * @author Peter Donald
+ * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:26 $
+ */
+public class CL2Data
+{
+}
</pre></div>
<hr /><a name="file106" /><div class="file">
<span class="pathname" id="removed"><a href="http://xstream.cvs.codehaus.org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support">support</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman">classman</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src">src</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata">testdata</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org">org</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer">jcontainer</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom">loom</a>/<a href="http://xstream.cvs.codehaus.org
/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman">classman</a>!
/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test">test</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data">data</a>/<a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl4">cl4</a><br /></span>
<div class="fileheader" id="removed"><big><b>CL4Data.java</b></big> <small id="info">removed after <a href="http://xstream.cvs.codehaus.org/jcontainer/loom/support/classman/src/testdata/org/jcontainer/loom/classman/test/data/cl4/CL4Data.java?rev=1.1&content-type=text/vnd.viewcvs-markup">1.1</a></small></div>
<pre class="diff"><small id="info">diff -N CL4Data.java
--- CL4Data.java 31 Mar 2004 03:18:56 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,17 +0,0 @@
</small></pre><pre class="diff" id="removed">-/*
- * Copyright (C) The Spice Group. All rights reserved.
- *
- * This software is published under the terms of the Spice
- * Software License version 1.1, a copy of which has been included
- * with this distribution in the LICENSE.txt file.
- */
-package org.jcontainer.loom.classman.test.data.cl4;
-
-/**
- *
- * @author Peter Donald
- * @version $Revision: 1.1 $ $Date: 2004/03/31 03:18:56 $
- */
-public class CL4Data
-{
-}
</pre></div>
<center><small><a href="http://www.badgers-in-foil.co.uk/projects/cvsspam/" title="commit -> email">CVSspam</a> 0.2.8</small></center>
</body></html>