You are viewing a plain text version of this content. The canonical link for it is here.
Posted to site-dev@james.apache.org by ba...@apache.org on 2006/09/24 17:35:10 UTC

svn commit: r449415 [7/18] - in /james/site/trunk/www/jspf: ./ apidocs/ apidocs/org/apache/james/jspf/ apidocs/org/apache/james/jspf/class-use/ apidocs/org/apache/james/jspf/core/ apidocs/org/apache/james/jspf/core/class-use/ apidocs/org/apache/james/j...

Modified: james/site/trunk/www/jspf/source-repository.html
URL: http://svn.apache.org/viewvc/james/site/trunk/www/jspf/source-repository.html?view=diff&rev=449415&r1=449414&r2=449415
==============================================================================
--- james/site/trunk/www/jspf/source-repository.html (original)
+++ james/site/trunk/www/jspf/source-repository.html Sun Sep 24 08:35:04 2006
@@ -45,19 +45,19 @@
   
   
             <div class="xleft">
-        Last Published: 07/26/2006
+        Last Published: 09/24/2006
                       </div>
-            <div class="xright">      <a href="http://james.apache.org/index.html">JAMES Project</a>
+            <div class="xright">      <a href="../index.html">JAMES Project</a>
           |
-          <a href="http://james.apache.org/server/index.html">Server</a>
+          <a href="../server/index.html">Server</a>
           |
-          <a href="index.html">jSPF</a>
+          <a href="../jspf/index.html">jSPF</a>
           |
-          <a href="http://james.apache.org/mime4j/index.html">Mime4J</a>
+          <a href="../mime4j/index.html">Mime4J</a>
           |
-          <a href="http://james.apache.org/jsieve/index.html">JSieve</a>
+          <a href="../jsieve/index.html">JSieve</a>
           |
-          <a href="http://james.apache.org/postage/index.html">Postage</a>
+          <a href="../postage/index.html">Postage</a>
           
   
 
@@ -199,6 +199,21 @@
               <a href="project-reports.html">Project Reports</a>
               </li>
           </ul>
+          <h5>Downloads</h5>
+        <ul>
+              
+    <li class="none">
+              <a href="../download.cgi">Stable releases</a>
+        </li>
+              
+    <li class="none">
+              <a href="http://people.apache.org/dist/james">Test builds</a>
+        </li>
+              
+    <li class="none">
+              <a href="http://people.apache.org/builds/james/nightly/">Nightly builds</a>
+        </li>
+          </ul>
                                        <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
             <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
           </a>
@@ -226,7 +241,7 @@
       <div class="xright">&#169;  
           2006
     
-          Apache Software Foundation
+          The Apache Software Foundation
           
   
 

Modified: james/site/trunk/www/jspf/taglist.html
URL: http://svn.apache.org/viewvc/james/site/trunk/www/jspf/taglist.html?view=diff&rev=449415&r1=449414&r2=449415
==============================================================================
--- james/site/trunk/www/jspf/taglist.html (original)
+++ james/site/trunk/www/jspf/taglist.html Sun Sep 24 08:35:04 2006
@@ -45,19 +45,19 @@
   
   
             <div class="xleft">
-        Last Published: 07/26/2006
+        Last Published: 09/24/2006
                       </div>
-            <div class="xright">      <a href="http://james.apache.org/index.html">JAMES Project</a>
+            <div class="xright">      <a href="../index.html">JAMES Project</a>
           |
-          <a href="http://james.apache.org/server/index.html">Server</a>
+          <a href="../server/index.html">Server</a>
           |
-          <a href="index.html">jSPF</a>
+          <a href="../jspf/index.html">jSPF</a>
           |
-          <a href="http://james.apache.org/mime4j/index.html">Mime4J</a>
+          <a href="../mime4j/index.html">Mime4J</a>
           |
-          <a href="http://james.apache.org/jsieve/index.html">JSieve</a>
+          <a href="../jsieve/index.html">JSieve</a>
           |
-          <a href="http://james.apache.org/postage/index.html">Postage</a>
+          <a href="../postage/index.html">Postage</a>
           
   
 
@@ -187,6 +187,21 @@
               </ul>
         </li>
           </ul>
+          <h5>Downloads</h5>
+        <ul>
+              
+    <li class="none">
+              <a href="../download.cgi">Stable releases</a>
+        </li>
+              
+    <li class="none">
+              <a href="http://people.apache.org/dist/james">Test builds</a>
+        </li>
+              
+    <li class="none">
+              <a href="http://people.apache.org/builds/james/nightly/">Nightly builds</a>
+        </li>
+          </ul>
                                        <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
             <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
           </a>
@@ -201,7 +216,7 @@
     </div>
     <div id="bodyColumn">
       <div id="contentBox">
-        <div class="section"><h2>Tag List Report</h2><p>The following document contains the listing of user tags found in the code. Below is the summary of the occurences per tag.</p><table class="bodyTable"><tr class="a"><th>Tag</th><th>Total number of occurences</th></tr><tr class="b"><td><a href="#@todo">@todo</a></td><td>0</td></tr><tr class="a"><td><a href="#TODO">TODO</a></td><td>3</td></tr></table><p>Each tag is detailed below:</p><div class="section"><h3><a name="@todo">@todo</a></h3><p><b>Number of occurences found in the code: 0</b></p></div><div class="section"><h3><a name="TODO">TODO</a></h3><p><b>Number of occurences found in the code: 3</b></p><table class="bodyTable"><tr class="b"><th>org.apache.james.jspf.core.DNSService</th><th>Line</th></tr><tr class="a"><td>support SPF Records too. This will be done if dnsjava support it!</td><td><a href="./xref/org/apache/james/jspf/core/DNSService.html#38">38</a></td></tr></table><table class="bodyTable"><tr class="b"><t
 h>org.apache.james.jspf.macro.MacroExpand</th><th>Line</th></tr><tr class="a"><td>URLEncoder method is not RFC2396 compatible, known difference is Space character gets converted to &quot;+&quot; rather than &quot;%20&quot; Is there anything else which is not correct with URLEncoder? Couldn't find a RFC2396 encoder</td><td><a href="./xref/org/apache/james/jspf/macro/MacroExpand.html#376">376</a></td></tr></table><table class="bodyTable"><tr class="b"><th>org.apache.james.jspf.parser.SPF1Parser</th><th>Line</th></tr><tr class="a"><td>doubts about the specification - redirect or exp with no domain-spec are evaluated as an unknown-modifiers according to the current spec (it does not make too much sense) - top-label is defined differently in various specs. We'll have to review the code. - http://data.iana.org/TLD/tlds-alpha-by-domain.txt (we should probably beeter use and alpha sequence being at least 2 chars - Somewhere is defined as &quot;.&quot; TLD [ &quot;.&quot; ] - Otherwi
 se defined as ( *alphanum ALPHA *alphanum ) / ( 1*alphanum &quot;-&quot; *( * alphanum / &quot;-&quot; ) alphanum )</td><td><a href="./xref/org/apache/james/jspf/parser/SPF1Parser.html#70">70</a></td></tr></table></div></div>
+        <div class="section"><h2>Tag List Report</h2><p>The following document contains the listing of user tags found in the code. Below is the summary of the occurences per tag.</p><table class="bodyTable"><tr class="a"><th>Tag</th><th>Total number of occurences</th></tr><tr class="b"><td><a href="#@todo">@todo</a></td><td>0</td></tr><tr class="a"><td><a href="#TODO">TODO</a></td><td>4</td></tr></table><p>Each tag is detailed below:</p><div class="section"><h3><a name="@todo">@todo</a></h3><p><b>Number of occurences found in the code: 0</b></p></div><div class="section"><h3><a name="TODO">TODO</a></h3><p><b>Number of occurences found in the code: 4</b></p><table class="bodyTable"><tr class="b"><th>org.apache.james.jspf.core.DNSService</th><th>Line</th></tr><tr class="a"><td>support SPF Records too. This will be done if dnsjava support it!</td><td><a href="./xref/org/apache/james/jspf/core/DNSService.html#38">38</a></td></tr></table><table class="bodyTable"><tr class="b"><t
 h>org.apache.james.jspf.macro.MacroExpand</th><th>Line</th></tr><tr class="a"><td>URLEncoder method is not RFC2396 compatible, known difference is Space character gets converted to &quot;+&quot; rather than &quot;%20&quot; Is there anything else which is not correct with URLEncoder? Couldn't find a RFC2396 encoder</td><td><a href="./xref/org/apache/james/jspf/macro/MacroExpand.html#381">381</a></td></tr></table><table class="bodyTable"><tr class="b"><th>org.apache.james.jspf.parser.SPF1Parser</th><th>Line</th></tr><tr class="a"><td>doubts about the specification - redirect or exp with no domain-spec are evaluated as an unknown-modifiers according to the current spec (it does not make too much sense) - top-label is defined differently in various specs. We'll have to review the code. - http://data.iana.org/TLD/tlds-alpha-by-domain.txt (we should probably beeter use and alpha sequence being at least 2 chars - Somewhere is defined as &quot;.&quot; TLD [ &quot;.&quot; ] - Otherwi
 se defined as ( *alphanum ALPHA *alphanum ) / ( 1*alphanum &quot;-&quot; *( * alphanum / &quot;-&quot; ) alphanum )</td><td><a href="./xref/org/apache/james/jspf/parser/SPF1Parser.html#71">71</a></td></tr></table><table class="bodyTable"><tr class="b"><th>org.apache.james.jspf.terms.AMechanism</th><th>Line</th></tr><tr class="a"><td>should we use cidr from the parameters or the input checkAddress cidr?</td><td><a href="./xref/org/apache/james/jspf/terms/AMechanism.html#154">154</a></td></tr></table></div></div>
       </div>
     </div>
     <div class="clear">
@@ -211,7 +226,7 @@
       <div class="xright">&#169;  
           2006
     
-          Apache Software Foundation
+          The Apache Software Foundation
           
   
 

Modified: james/site/trunk/www/jspf/team-list.html
URL: http://svn.apache.org/viewvc/james/site/trunk/www/jspf/team-list.html?view=diff&rev=449415&r1=449414&r2=449415
==============================================================================
--- james/site/trunk/www/jspf/team-list.html (original)
+++ james/site/trunk/www/jspf/team-list.html Sun Sep 24 08:35:04 2006
@@ -45,19 +45,19 @@
   
   
             <div class="xleft">
-        Last Published: 07/26/2006
+        Last Published: 09/24/2006
                       </div>
-            <div class="xright">      <a href="http://james.apache.org/index.html">JAMES Project</a>
+            <div class="xright">      <a href="../index.html">JAMES Project</a>
           |
-          <a href="http://james.apache.org/server/index.html">Server</a>
+          <a href="../server/index.html">Server</a>
           |
-          <a href="index.html">jSPF</a>
+          <a href="../jspf/index.html">jSPF</a>
           |
-          <a href="http://james.apache.org/mime4j/index.html">Mime4J</a>
+          <a href="../mime4j/index.html">Mime4J</a>
           |
-          <a href="http://james.apache.org/jsieve/index.html">JSieve</a>
+          <a href="../jsieve/index.html">JSieve</a>
           |
-          <a href="http://james.apache.org/postage/index.html">Postage</a>
+          <a href="../postage/index.html">Postage</a>
           
   
 
@@ -199,6 +199,21 @@
               <a href="project-reports.html">Project Reports</a>
               </li>
           </ul>
+          <h5>Downloads</h5>
+        <ul>
+              
+    <li class="none">
+              <a href="../download.cgi">Stable releases</a>
+        </li>
+              
+    <li class="none">
+              <a href="http://people.apache.org/dist/james">Test builds</a>
+        </li>
+              
+    <li class="none">
+              <a href="http://people.apache.org/builds/james/nightly/">Nightly builds</a>
+        </li>
+          </ul>
                                        <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
             <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
           </a>
@@ -213,7 +228,7 @@
     </div>
     <div id="bodyColumn">
       <div id="contentBox">
-        <div class="section"><h2>The Team</h2><p>A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.</p><p>The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.</p><div class="section"><h3>Members</h3><p>The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.</p><table class="bodyTable"><tr class="a"><th>Id</th><th>Name</th><th>Email</th><th>URL</th><th>Organization</th><th>Organization URL</th><th>Roles</th><th>Time Zone</th><th>Actual Time (GMT)</th><th>Properties</th
 ></tr><tr class="b"><td>bago</td><td>Stefano Bagnara</td><td>apache at bago.org</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>2</td><td><span id="developer-0">2</span></td><td>-</td></tr><tr class="a"><td>norman</td><td>Norman Maurer</td><td>nm at byteaction.de</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>2</td><td><span id="developer-1">2</span></td><td>-</td></tr><tr class="b"><td>serge</td><td>Serge Knystautas</td><td>sergek at lokitech.com</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-2">-</span></td><td>-</td></tr><tr class="a"><td>benrdf</td><td>Bernd Fondermann</td><td>bf_jak at brainlounge.de</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-3">-</span></td><td>-</td></tr><tr class="b"><td>sbrewin</td><td>Steve Brewin</td><td>sbrewin at synsys.com</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-4">-</span></td><td>-</td></tr><tr class
 ="a"><td>hilmer</td><td>Søren Hilmer</td><td>sh at widetrail.dk</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-5">-</span></td><td>-</td></tr><tr class="b"><td>noel</td><td>Noel J. Bergman</td><td>noel at devtech.com</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-6">-</span></td><td>-</td></tr><tr class="a"><td>danny</td><td>Danny Angus</td><td>danny at apache.org</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-7">-</span></td><td>-</td></tr><tr class="b"><td>adc</td><td>Alan D. Cabrera</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-8</td><td><span id="developer-8">-8</span></td><td>-</td></tr></table></div><div class="section"><h3>Contributors</h3><p>The following additional people have contributed to this project through the way of suggestions, patches or documentation.</p><table class="bodyTable"><tr class="a"><th>Name</th><th>Email</th><th>URL<
 /th><th>Organization</th><th>Organization URL</th><th>Roles</th><th>Time Zone</th><th>Actual Time (GMT)</th><th>Properties</th></tr><tr class="b"><td>Roger Fullerton</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td><span id="contributor-0">-</span></td><td>description=Wrote spfjava, the first spf implementation in java</td></tr></table></div></div><script type="text/javascript">
+        <div class="section"><h2>The Team</h2><p>A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.</p><p>The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.</p><div class="section"><h3>Members</h3><p>The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.</p><table class="bodyTable"><tr class="a"><th>Id</th><th>Name</th><th>Email</th><th>URL</th><th>Organization</th><th>Organization URL</th><th>Roles</th><th>Time Zone</th><th>Actual Time (GMT)</th><th>Properties</th
 ></tr><tr class="b"><td>bago</td><td>Stefano Bagnara</td><td>apache at bago.org</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>2</td><td><span id="developer-0">2</span></td><td>-</td></tr><tr class="a"><td>norman</td><td>Norman Maurer</td><td>nm at byteaction.de</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>2</td><td><span id="developer-1">2</span></td><td>-</td></tr><tr class="b"><td>serge</td><td>Serge Knystautas</td><td>sergek at lokitech.com</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-2">-</span></td><td>-</td></tr><tr class="a"><td>benrdf</td><td>Bernd Fondermann</td><td>bf_jak at brainlounge.de</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-3">-</span></td><td>-</td></tr><tr class="b"><td>sbrewin</td><td>Steve Brewin</td><td>sbrewin at synsys.com</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-4">-</span></td><td>-</td></tr><tr class
 ="a"><td>hilmer</td><td>S�ren Hilmer</td><td>sh at widetrail.dk</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-5">-</span></td><td>-</td></tr><tr class="b"><td>noel</td><td>Noel J. Bergman</td><td>noel at devtech.com</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-6">-</span></td><td>-</td></tr><tr class="a"><td>danny</td><td>Danny Angus</td><td>danny at apache.org</td><td>-</td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-7">-</span></td><td>-</td></tr><tr class="b"><td>adc</td><td>Alan D. Cabrera</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-8</td><td><span id="developer-8">-8</span></td><td>-</td></tr></table></div><div class="section"><h3>Contributors</h3><p>The following additional people have contributed to this project through the way of suggestions, patches or documentation.</p><table class="bodyTable"><tr class="a"><th>Name</th><th>Email</th><th>
 URL</th><th>Organization</th><th>Organization URL</th><th>Roles</th><th>Time Zone</th><th>Actual Time (GMT)</th><th>Properties</th></tr><tr class="b"><td>Roger Fullerton</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td><span id="contributor-0">-</span></td><td>description=Wrote spfjava, the first spf implementation in java</td></tr></table></div></div><script type="text/javascript">
 function offsetDate(id, offset) {
     var now = new Date();
     var nowTime = now.getTime();
@@ -241,7 +256,7 @@
       <div class="xright">&#169;  
           2006
     
-          Apache Software Foundation
+          The Apache Software Foundation
           
   
 

Modified: james/site/trunk/www/jspf/xref-test/allclasses-frame.html
URL: http://svn.apache.org/viewvc/james/site/trunk/www/jspf/xref-test/allclasses-frame.html?view=diff&rev=449415&r1=449414&r2=449415
==============================================================================
--- james/site/trunk/www/jspf/xref-test/allclasses-frame.html (original)
+++ james/site/trunk/www/jspf/xref-test/allclasses-frame.html Sun Sep 24 08:35:04 2006
@@ -12,6 +12,9 @@
 
         <ul>
                         <li>
+                <a href="org/apache/james/jspf/AbstractYamlTest.html" target="classFrame">AbstractYamlTest</a>
+            </li>
+                        <li>
                 <a href="org/apache/james/jspf/ConsoleLogger.html" target="classFrame">ConsoleLogger</a>
             </li>
                         <li>
@@ -27,22 +30,22 @@
                 <a href="org/apache/james/jspf/macro/MacroExpandTest.html" target="classFrame">MacroExpandTest</a>
             </li>
                         <li>
-                <a href="org/apache/james/jspf/core/SPF1DataTest.html" target="classFrame">SPF1DataTest</a>
+                <a href="org/apache/james/jspf/MailZoneYamlTest.html" target="classFrame">MailZoneYamlTest</a>
             </li>
                         <li>
-                <a href="org/apache/james/jspf/SPF1ParserTest.html" target="classFrame">SPF1ParserTest</a>
+                <a href="org/apache/james/jspf/RFC4408YamlTest.html" target="classFrame">RFC4408YamlTest</a>
             </li>
                         <li>
-                <a href="org/apache/james/jspf/SPF1TestMZMockDNSService.html" target="classFrame">SPF1TestMZMockDNSService</a>
+                <a href="org/apache/james/jspf/core/SPF1DataTest.html" target="classFrame">SPF1DataTest</a>
             </li>
                         <li>
-                <a href="org/apache/james/jspf/SPF1TestMockDNSService.html" target="classFrame">SPF1TestMockDNSService</a>
+                <a href="org/apache/james/jspf/SPF1ParserTest.html" target="classFrame">SPF1ParserTest</a>
             </li>
                         <li>
-                <a href="org/apache/james/jspf/SPFMailZoneTest.html" target="classFrame">SPFMailZoneTest</a>
+                <a href="org/apache/james/jspf/SPFYamlTest.html" target="classFrame">SPFYamlTest</a>
             </li>
                         <li>
-                <a href="org/apache/james/jspf/SPFTest.html" target="classFrame">SPFTest</a>
+                <a href="org/apache/james/jspf/YamlTest.html" target="classFrame">YamlTest</a>
             </li>
                   </ul>
 

Modified: james/site/trunk/www/jspf/xref-test/index.html
URL: http://svn.apache.org/viewvc/james/site/trunk/www/jspf/xref-test/index.html?view=diff&rev=449415&r1=449414&r2=449415
==============================================================================
--- james/site/trunk/www/jspf/xref-test/index.html (original)
+++ james/site/trunk/www/jspf/xref-test/index.html Sun Sep 24 08:35:04 2006
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
     <head>
         <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
-        <title>Apache James jSPF 0.9-SNAPSHOT Reference</title>
+        <title>Apache JAMES jSPF 0.9-SNAPSHOT Reference</title>
     </head>
     <frameset cols="20%,80%">
         <frameset rows="30%,70%">

Added: james/site/trunk/www/jspf/xref-test/org/apache/james/jspf/AbstractYamlTest.html
URL: http://svn.apache.org/viewvc/james/site/trunk/www/jspf/xref-test/org/apache/james/jspf/AbstractYamlTest.html?view=auto&rev=449415
==============================================================================
--- james/site/trunk/www/jspf/xref-test/org/apache/james/jspf/AbstractYamlTest.html (added)
+++ james/site/trunk/www/jspf/xref-test/org/apache/james/jspf/AbstractYamlTest.html Sun Sep 24 08:35:04 2006
@@ -0,0 +1,442 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /><title>AbstractYamlTest xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../../../../../apidocs/org/apache/james/jspf/AbstractYamlTest.html">View Javadoc</a></div><pre>
+
+<a name="1" href="#1">1</a>   <em>/**<em>***************************************************************</em></em>
+<a name="2" href="#2">2</a>   <em> * Licensed to the Apache Software Foundation (ASF) under one   *</em>
+<a name="3" href="#3">3</a>   <em> * or more contributor license agreements.  See the NOTICE file *</em>
+<a name="4" href="#4">4</a>   <em> * distributed with this work for additional information        *</em>
+<a name="5" href="#5">5</a>   <em> * regarding copyright ownership.  The ASF licenses this file   *</em>
+<a name="6" href="#6">6</a>   <em> * to you under the Apache License, Version 2.0 (the            *</em>
+<a name="7" href="#7">7</a>   <em> * "License"); you may not use this file except in compliance   *</em>
+<a name="8" href="#8">8</a>   <em> * with the License.  You may obtain a copy of the License at   *</em>
+<a name="9" href="#9">9</a>   <em> *                                                              *</em>
+<a name="10" href="#10">10</a>  <em> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a>                 *</em>
+<a name="11" href="#11">11</a>  <em> *                                                              *</em>
+<a name="12" href="#12">12</a>  <em> * Unless required by applicable law or agreed to in writing,   *</em>
+<a name="13" href="#13">13</a>  <em> * software distributed under the License is distributed on an  *</em>
+<a name="14" href="#14">14</a>  <em> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *</em>
+<a name="15" href="#15">15</a>  <em> * KIND, either express or implied.  See the License for the    *</em>
+<a name="16" href="#16">16</a>  <em> * specific language governing permissions and limitations      *</em>
+<a name="17" href="#17">17</a>  <em> * under the License.                                           *</em>
+<a name="18" href="#18">18</a>  <em> ****************************************************************/</em>
+<a name="19" href="#19">19</a>  
+<a name="20" href="#20">20</a>  <strong>package</strong> org.apache.james.jspf;
+<a name="21" href="#21">21</a>  
+<a name="22" href="#22">22</a>  <strong>import</strong> org.apache.james.jspf.core.DNSService;
+<a name="23" href="#23">23</a>  <strong>import</strong> org.apache.james.jspf.core.IPAddr;
+<a name="24" href="#24">24</a>  <strong>import</strong> org.apache.james.jspf.exceptions.NoneException;
+<a name="25" href="#25">25</a>  <strong>import</strong> org.apache.james.jspf.exceptions.PermErrorException;
+<a name="26" href="#26">26</a>  <strong>import</strong> org.apache.james.jspf.exceptions.TempErrorException;
+<a name="27" href="#27">27</a>  <strong>import</strong> org.jvyaml.Constructor;
+<a name="28" href="#28">28</a>  <strong>import</strong> org.jvyaml.DefaultYAMLFactory;
+<a name="29" href="#29">29</a>  <strong>import</strong> org.jvyaml.YAMLFactory;
+<a name="30" href="#30">30</a>  
+<a name="31" href="#31">31</a>  <strong>import</strong> java.io.BufferedReader;
+<a name="32" href="#32">32</a>  <strong>import</strong> java.io.IOException;
+<a name="33" href="#33">33</a>  <strong>import</strong> java.io.InputStream;
+<a name="34" href="#34">34</a>  <strong>import</strong> java.io.InputStreamReader;
+<a name="35" href="#35">35</a>  <strong>import</strong> java.io.Reader;
+<a name="36" href="#36">36</a>  <strong>import</strong> java.util.ArrayList;
+<a name="37" href="#37">37</a>  <strong>import</strong> java.util.HashMap;
+<a name="38" href="#38">38</a>  <strong>import</strong> java.util.Iterator;
+<a name="39" href="#39">39</a>  <strong>import</strong> java.util.List;
+<a name="40" href="#40">40</a>  
+<a name="41" href="#41">41</a>  <strong>import</strong> junit.framework.TestCase;
+<a name="42" href="#42">42</a>  
+<a name="43" href="#43">43</a>  <strong>public</strong> <strong>abstract</strong> <strong>class</strong> <a href="../../../../org/apache/james/jspf/AbstractYamlTest.html">AbstractYamlTest</a> <strong>extends</strong> TestCase {
+<a name="44" href="#44">44</a>  
+<a name="45" href="#45">45</a>      SPFYamlTestSuite data;
+<a name="46" href="#46">46</a>      String test;
+<a name="47" href="#47">47</a>  
+<a name="48" href="#48">48</a>      <strong>protected</strong> <a href="../../../../org/apache/james/jspf/AbstractYamlTest.html">AbstractYamlTest</a>(SPFYamlTestSuite def, String test) {
+<a name="49" href="#49">49</a>          <strong>super</strong>(def.getComment()+<span class="string">" #"</span>+test);
+<a name="50" href="#50">50</a>          <strong>this</strong>.data = def;
+<a name="51" href="#51">51</a>          <strong>this</strong>.test = test;
+<a name="52" href="#52">52</a>      }
+<a name="53" href="#53">53</a>  
+<a name="54" href="#54">54</a>  
+<a name="55" href="#55">55</a>      <strong>protected</strong> <strong>abstract</strong> String getFilename();
+<a name="56" href="#56">56</a>  
+<a name="57" href="#57">57</a>      <strong>protected</strong> List internalLoadTests(String filename) throws IOException {
+<a name="58" href="#58">58</a>          <strong>return</strong> loadTests(filename);
+<a name="59" href="#59">59</a>      }
+<a name="60" href="#60">60</a>  
+<a name="61" href="#61">61</a>      <strong>protected</strong> <a href="../../../../org/apache/james/jspf/AbstractYamlTest.html">AbstractYamlTest</a>(String name) throws IOException {
+<a name="62" href="#62">62</a>          <strong>super</strong>(name);
+<a name="63" href="#63">63</a>          List tests = internalLoadTests(getFilename());
+<a name="64" href="#64">64</a>          Iterator i = tests.iterator();
+<a name="65" href="#65">65</a>          <strong>while</strong> (i.hasNext() &amp;&amp; data == <strong>null</strong>) {
+<a name="66" href="#66">66</a>              SPFYamlTestSuite def = (SPFYamlTestSuite) i.next();
+<a name="67" href="#67">67</a>              Iterator j = def.getTests().keySet().iterator();
+<a name="68" href="#68">68</a>              <strong>while</strong> (j.hasNext() &amp;&amp; data == <strong>null</strong>) {
+<a name="69" href="#69">69</a>                  String test = (String) j.next();
+<a name="70" href="#70">70</a>                  <strong>if</strong> (name.equals(def.getComment()+ <span class="string">" #"</span>+test)) {
+<a name="71" href="#71">71</a>                      data = def;
+<a name="72" href="#72">72</a>                      <strong>this</strong>.test = test;
+<a name="73" href="#73">73</a>                  }
+<a name="74" href="#74">74</a>              }
+<a name="75" href="#75">75</a>          }
+<a name="76" href="#76">76</a>          assertNotNull(data);
+<a name="77" href="#77">77</a>          assertNotNull(test);
+<a name="78" href="#78">78</a>      }
+<a name="79" href="#79">79</a>  
+<a name="80" href="#80">80</a>      <strong>public</strong> <strong>static</strong> List loadTests(String filename) throws IOException {
+<a name="81" href="#81">81</a>          List tests = <strong>new</strong> ArrayList();
+<a name="82" href="#82">82</a>      
+<a name="83" href="#83">83</a>          <em class="comment">//InputStream is = SPFYamlTest.class.getResourceAsStream("pyspf-tests.yml");</em>
+<a name="84" href="#84">84</a>          InputStream is = SPFYamlTest.<strong>class</strong>.getResourceAsStream(filename);
+<a name="85" href="#85">85</a>          
+<a name="86" href="#86">86</a>          Reader br = <strong>new</strong> BufferedReader(<strong>new</strong> InputStreamReader(is)) {
+<a name="87" href="#87">87</a>      
+<a name="88" href="#88">88</a>              <strong>public</strong> <strong>int</strong> read(<strong>char</strong>[] arg0) throws IOException {
+<a name="89" href="#89">89</a>                  <strong>int</strong> rl = <strong>super</strong>.read(arg0);
+<a name="90" href="#90">90</a>                  <em class="comment">// System.out.println("&lt;&lt;&lt; "+new String(arg0));</em>
+<a name="91" href="#91">91</a>                  <strong>return</strong> rl;
+<a name="92" href="#92">92</a>              }
+<a name="93" href="#93">93</a>              
+<a name="94" href="#94">94</a>          };
+<a name="95" href="#95">95</a>          
+<a name="96" href="#96">96</a>          YAMLFactory fact = <strong>new</strong> DefaultYAMLFactory();
+<a name="97" href="#97">97</a>          
+<a name="98" href="#98">98</a>          Constructor ctor = fact.createConstructor(fact.createComposer(fact.createParser(fact.createScanner(br)),fact.createResolver()));
+<a name="99" href="#99">99</a>          <strong>int</strong> i = 1;
+<a name="100" href="#100">100</a>         <strong>while</strong>(ctor.checkData()) {
+<a name="101" href="#101">101</a>             Object o = ctor.getData();
+<a name="102" href="#102">102</a>             <strong>if</strong> (o instanceof HashMap) {
+<a name="103" href="#103">103</a>               HashMap m = (HashMap) o;
+<a name="104" href="#104">104</a>               SPFYamlTestSuite ts = <strong>new</strong> SPFYamlTestSuite(m, i);
+<a name="105" href="#105">105</a>               tests.add(ts);
+<a name="106" href="#106">106</a>             }
+<a name="107" href="#107">107</a>             i++;
+<a name="108" href="#108">108</a>         }
+<a name="109" href="#109">109</a>     
+<a name="110" href="#110">110</a>         <strong>return</strong> tests;
+<a name="111" href="#111">111</a>     }
+<a name="112" href="#112">112</a> 
+<a name="113" href="#113">113</a>     <strong>protected</strong> <strong>void</strong> runTest() throws Throwable {
+<a name="114" href="#114">114</a>         String next = test;
+<a name="115" href="#115">115</a>         HashMap currentTest = (HashMap) data.getTests().get(next);
+<a name="116" href="#116">116</a>         
+<a name="117" href="#117">117</a>         System.out.println(<span class="string">"testing "</span>+next+<span class="string">": "</span>+currentTest.get(<span class="string">"description"</span>));
+<a name="118" href="#118">118</a>     
+<a name="119" href="#119">119</a>         SPF spf = <strong>new</strong> SPF(getDNSService(), <strong>new</strong> ConsoleLogger());
+<a name="120" href="#120">120</a>         
+<a name="121" href="#121">121</a>         String ip = <strong>null</strong>;
+<a name="122" href="#122">122</a>         String sender = <strong>null</strong>;
+<a name="123" href="#123">123</a>         String helo = <strong>null</strong>;
+<a name="124" href="#124">124</a>     
+<a name="125" href="#125">125</a>         <strong>if</strong> (currentTest.get(<span class="string">"helo"</span>) != <strong>null</strong>) {
+<a name="126" href="#126">126</a>             helo = (String) currentTest.get(<span class="string">"helo"</span>);
+<a name="127" href="#127">127</a>         }
+<a name="128" href="#128">128</a>         <strong>if</strong> (currentTest.get(<span class="string">"host"</span>) != <strong>null</strong>) {
+<a name="129" href="#129">129</a>             ip = (String) currentTest.get(<span class="string">"host"</span>);
+<a name="130" href="#130">130</a>         }
+<a name="131" href="#131">131</a>         <strong>if</strong> (currentTest.get(<span class="string">"mailfrom"</span>) != <strong>null</strong>) {
+<a name="132" href="#132">132</a>             sender = (String) currentTest.get(<span class="string">"mailfrom"</span>);
+<a name="133" href="#133">133</a>         } <strong>else</strong> {
+<a name="134" href="#134">134</a>             sender = <span class="string">""</span>;
+<a name="135" href="#135">135</a>         }
+<a name="136" href="#136">136</a>     
+<a name="137" href="#137">137</a>         SPFResult res = spf.checkSPF(ip, sender, helo);
+<a name="138" href="#138">138</a>         String resultSPF = res.getResult();
+<a name="139" href="#139">139</a>         
+<a name="140" href="#140">140</a>         <strong>if</strong> (currentTest.get(<span class="string">"result"</span>) instanceof String) {
+<a name="141" href="#141">141</a>             <strong>if</strong> (<span class="string">"permerror"</span>.equals(currentTest.get(<span class="string">"result"</span>))) {
+<a name="142" href="#142">142</a>                 assertEquals(<span class="string">"Test "</span>+next+<span class="string">" ("</span>+currentTest.get(<span class="string">"description"</span>)+<span class="string">") failed. Returned: "</span>+res.getResult()+<span class="string">" Expected: "</span>+currentTest.get(<span class="string">"result"</span>)+<span class="string">" [["</span>+res.getResultChar()+<span class="string">"||"</span>+res.getHeaderText()+<span class="string">"]]"</span>, <span class="string">"error"</span>, res.getResult());
+<a name="143" href="#143">143</a>             } <strong>else</strong> {
+<a name="144" href="#144">144</a>                 assertEquals(<span class="string">"Test "</span>+next+<span class="string">" ("</span>+currentTest.get(<span class="string">"description"</span>)+<span class="string">") failed. Returned: "</span>+res.getResult()+<span class="string">" Expected: "</span>+currentTest.get(<span class="string">"result"</span>)+<span class="string">" [["</span>+res.getResultChar()+<span class="string">"||"</span>+res.getHeaderText()+<span class="string">"]]"</span>, currentTest.get(<span class="string">"result"</span>), res.getResult());
+<a name="145" href="#145">145</a>             }
+<a name="146" href="#146">146</a>         } <strong>else</strong> {
+<a name="147" href="#147">147</a>             ArrayList results = (ArrayList) currentTest.get(<span class="string">"result"</span>);
+<a name="148" href="#148">148</a>             <strong>boolean</strong> match = false;
+<a name="149" href="#149">149</a>             <strong>for</strong> (<strong>int</strong> i = 0; i &lt; results.size(); i++) {
+<a name="150" href="#150">150</a>                 <strong>if</strong> (results.get(i).equals(resultSPF) || (results.get(i).equals(<span class="string">"permerror"</span>) &amp;&amp; resultSPF.equals(<span class="string">"error"</span>))) match = <strong>true</strong>;
+<a name="151" href="#151">151</a>                 System.err.println(<span class="string">"checking "</span>+results.get(i)+<span class="string">" => "</span>+resultSPF);
+<a name="152" href="#152">152</a>             }
+<a name="153" href="#153">153</a>             assertTrue(match);
+<a name="154" href="#154">154</a>         }
+<a name="155" href="#155">155</a>         
+<a name="156" href="#156">156</a>         <strong>if</strong> (currentTest.get(<span class="string">"explanation"</span>) != <strong>null</strong>) {
+<a name="157" href="#157">157</a>             
+<a name="158" href="#158">158</a>             <em class="comment">// Check for our default explanation!</em>
+<a name="159" href="#159">159</a>             <strong>if</strong> (currentTest.get(<span class="string">"explanation"</span>).equals(<span class="string">"DEFAULT"</span>) || currentTest.get(<span class="string">"explanation"</span>).equals(<span class="string">"postmaster"</span>) ) {
+<a name="160" href="#160">160</a>                 assertTrue(res.getExplanation().startsWith(<span class="string">"http://www.openspf.org/why.html?sender="</span>));
+<a name="161" href="#161">161</a>             } <strong>else</strong> {
+<a name="162" href="#162">162</a>                 assertEquals(currentTest.get(<span class="string">"explanation"</span>),res.getExplanation());
+<a name="163" href="#163">163</a>             }
+<a name="164" href="#164">164</a>     
+<a name="165" href="#165">165</a>         }
+<a name="166" href="#166">166</a>     
+<a name="167" href="#167">167</a>     }
+<a name="168" href="#168">168</a> 
+<a name="169" href="#169">169</a>     <em>/**<em>*</em></em>
+<a name="170" href="#170">170</a> <em>     * @return</em>
+<a name="171" href="#171">171</a> <em>     */</em>
+<a name="172" href="#172">172</a>     <strong>protected</strong> DNSService getDNSService() {
+<a name="173" href="#173">173</a>         SPFYamlDNSService yamlDNSService = <strong>new</strong> SPFYamlDNSService((HashMap) data.getZonedata());
+<a name="174" href="#174">174</a>         <strong>return</strong> yamlDNSService;
+<a name="175" href="#175">175</a>     }
+<a name="176" href="#176">176</a> 
+<a name="177" href="#177">177</a>     <strong>public</strong> <a href="../../../../org/apache/james/jspf/AbstractYamlTest.html">AbstractYamlTest</a>() {
+<a name="178" href="#178">178</a>         <strong>super</strong>();
+<a name="179" href="#179">179</a>     }
+<a name="180" href="#180">180</a> 
+<a name="181" href="#181">181</a>     <strong>final</strong> <strong>class</strong> SPFYamlDNSService implements DNSService {
+<a name="182" href="#182">182</a> 
+<a name="183" href="#183">183</a>         <strong>private</strong> HashMap zonedata;
+<a name="184" href="#184">184</a>         <strong>private</strong> <strong>int</strong> recordLimit;
+<a name="185" href="#185">185</a> 
+<a name="186" href="#186">186</a>         <strong>public</strong> SPFYamlDNSService(HashMap zonedata) {
+<a name="187" href="#187">187</a>             <strong>this</strong>.zonedata = zonedata;
+<a name="188" href="#188">188</a>             <strong>this</strong>.recordLimit = 10;
+<a name="189" href="#189">189</a>         }
+<a name="190" href="#190">190</a> 
+<a name="191" href="#191">191</a>         <strong>public</strong> List getAAAARecords(String strServer) throws NoneException, PermErrorException, TempErrorException {
+<a name="192" href="#192">192</a>             ArrayList res = <strong>new</strong> ArrayList();
+<a name="193" href="#193">193</a>             <strong>if</strong> (zonedata.get(strServer) != <strong>null</strong>) {
+<a name="194" href="#194">194</a>                 List l = (List) zonedata.get(strServer);
+<a name="195" href="#195">195</a>                 Iterator i = l.iterator();
+<a name="196" href="#196">196</a> 
+<a name="197" href="#197">197</a>                 <strong>while</strong> (i.hasNext()) {
+<a name="198" href="#198">198</a>                     HashMap hm = (HashMap) i.next();
+<a name="199" href="#199">199</a>                     <strong>if</strong> (hm.get(<span class="string">"AAAA"</span>) != <strong>null</strong>) {
+<a name="200" href="#200">200</a>                         String a = (String) hm.get(<span class="string">"AAAA"</span>);
+<a name="201" href="#201">201</a>                         res.add(IPAddr.getAddress(a));
+<a name="202" href="#202">202</a>                     }
+<a name="203" href="#203">203</a>                 }
+<a name="204" href="#204">204</a>             }
+<a name="205" href="#205">205</a>             <strong>if</strong> (res.size() > 0 ) <strong>return</strong> res;
+<a name="206" href="#206">206</a>             
+<a name="207" href="#207">207</a>             <strong>throw</strong> <strong>new</strong> NoneException(<span class="string">"No AAAA Record found"</span>);
+<a name="208" href="#208">208</a>         }
+<a name="209" href="#209">209</a> 
+<a name="210" href="#210">210</a>         <strong>public</strong> List getARecords(String strServer) throws NoneException, PermErrorException, TempErrorException {
+<a name="211" href="#211">211</a>             ArrayList res = <strong>new</strong> ArrayList();
+<a name="212" href="#212">212</a>        
+<a name="213" href="#213">213</a>             <strong>if</strong> (zonedata.get(strServer) != <strong>null</strong>) {
+<a name="214" href="#214">214</a>                 List l = (List) zonedata.get(strServer);
+<a name="215" href="#215">215</a>                 Iterator i = l.iterator();
+<a name="216" href="#216">216</a>                 <strong>while</strong> (i.hasNext()) {
+<a name="217" href="#217">217</a>                     HashMap hm = (HashMap) i.next();
+<a name="218" href="#218">218</a>                     <strong>if</strong> (hm.get(<span class="string">"A"</span>) != <strong>null</strong>) {
+<a name="219" href="#219">219</a>                         String a = (String) hm.get(<span class="string">"A"</span>);
+<a name="220" href="#220">220</a>                         res.add(IPAddr.getAddress(a));
+<a name="221" href="#221">221</a>                         
+<a name="222" href="#222">222</a>                     }
+<a name="223" href="#223">223</a>                 }
+<a name="224" href="#224">224</a>             }
+<a name="225" href="#225">225</a>             <strong>if</strong> (res.size() > 0 ) <strong>return</strong> res;
+<a name="226" href="#226">226</a>             
+<a name="227" href="#227">227</a>             <strong>throw</strong> <strong>new</strong> NoneException(<span class="string">"No A Record found for: "</span> + strServer);
+<a name="228" href="#228">228</a>         }
+<a name="229" href="#229">229</a> 
+<a name="230" href="#230">230</a>         <strong>public</strong> List getLocalDomainNames() {
+<a name="231" href="#231">231</a>             List l = <strong>new</strong> ArrayList();
+<a name="232" href="#232">232</a>             l.add(<span class="string">"localdomain.foo.bar"</span>);
+<a name="233" href="#233">233</a>             <strong>return</strong> l; 
+<a name="234" href="#234">234</a>         }
+<a name="235" href="#235">235</a> 
+<a name="236" href="#236">236</a>         <strong>public</strong> List getMXRecords(String domainName) throws PermErrorException, NoneException, TempErrorException {
+<a name="237" href="#237">237</a>             <strong>if</strong> (zonedata.get(domainName) != <strong>null</strong>) {
+<a name="238" href="#238">238</a>                 List l = (List) zonedata.get(domainName);
+<a name="239" href="#239">239</a>                 Iterator i = l.iterator();
+<a name="240" href="#240">240</a>                 ArrayList res = <strong>new</strong> ArrayList();
+<a name="241" href="#241">241</a>                 <strong>while</strong> (i.hasNext()) {
+<a name="242" href="#242">242</a>                     HashMap hm = (HashMap) i.next();
+<a name="243" href="#243">243</a>                     <strong>if</strong> (hm.get(<span class="string">"MX"</span>) != <strong>null</strong>) {
+<a name="244" href="#244">244</a>                         List mxList = (List) hm.get(<span class="string">"MX"</span>);
+<a name="245" href="#245">245</a>                          
+<a name="246" href="#246">246</a>                         Iterator mxs = mxList.iterator();
+<a name="247" href="#247">247</a>                 
+<a name="248" href="#248">248</a>                         <strong>while</strong> (mxs.hasNext()) {
+<a name="249" href="#249">249</a>                             <em class="comment">// skip the MX priority</em>
+<a name="250" href="#250">250</a>                             mxs.next();
+<a name="251" href="#251">251</a>                             String mx = (String) mxs.next();
+<a name="252" href="#252">252</a>                            
+<a name="253" href="#253">253</a>                             <em class="comment">// resolv the record</em>
+<a name="254" href="#254">254</a>                             List records = getARecords(mx);
+<a name="255" href="#255">255</a>                             <strong>for</strong> (<strong>int</strong> i2 = 0; i2 &lt; records.size();i2++ ) {
+<a name="256" href="#256">256</a>                                 res.add(records.get(i2));
+<a name="257" href="#257">257</a>                             }
+<a name="258" href="#258">258</a>                         }
+<a name="259" href="#259">259</a>                     }
+<a name="260" href="#260">260</a>                 }
+<a name="261" href="#261">261</a>                 <em class="comment">// check if the maximum lookup count is reached</em>
+<a name="262" href="#262">262</a>                 <strong>if</strong> (recordLimit > 0 &amp;&amp; res.size() > recordLimit) <strong>throw</strong> <strong>new</strong> PermErrorException(<span class="string">"Maximum MX lookup count reached"</span>);
+<a name="263" href="#263">263</a> 
+<a name="264" href="#264">264</a>                 <strong>return</strong> res.size() > 0 ? res : <strong>null</strong>;
+<a name="265" href="#265">265</a>             }
+<a name="266" href="#266">266</a>             <strong>throw</strong> <strong>new</strong> NoneException(<span class="string">"No MX Record found"</span>);
+<a name="267" href="#267">267</a>         }
+<a name="268" href="#268">268</a> 
+<a name="269" href="#269">269</a>         <strong>public</strong> List getPTRRecords(String ipAddress) throws PermErrorException, NoneException, TempErrorException {
+<a name="270" href="#270">270</a>             ArrayList res = <strong>new</strong> ArrayList();
+<a name="271" href="#271">271</a>             
+<a name="272" href="#272">272</a>             <strong>if</strong> (zonedata.get(ipAddress) != <strong>null</strong>) {
+<a name="273" href="#273">273</a>                 List l = (List) zonedata.get(ipAddress);
+<a name="274" href="#274">274</a>                 Iterator i = l.iterator();
+<a name="275" href="#275">275</a>                 <strong>while</strong> (i.hasNext()) {
+<a name="276" href="#276">276</a>                     HashMap hm = (HashMap) i.next();
+<a name="277" href="#277">277</a>                     <strong>if</strong> (hm.get(<span class="string">"PTR"</span>) != <strong>null</strong>) {
+<a name="278" href="#278">278</a>                         String a = (String) hm.get(<span class="string">"PTR"</span>);
+<a name="279" href="#279">279</a>                         res.add(a);
+<a name="280" href="#280">280</a>                         
+<a name="281" href="#281">281</a>                     }
+<a name="282" href="#282">282</a>                 }
+<a name="283" href="#283">283</a>             }
+<a name="284" href="#284">284</a>             <strong>if</strong> (res.size() > 0 ) <strong>return</strong> res;
+<a name="285" href="#285">285</a>             
+<a name="286" href="#286">286</a>             <strong>throw</strong> <strong>new</strong> NoneException(<span class="string">"No PTR Record found: "</span>+ipAddress);
+<a name="287" href="#287">287</a>         }
+<a name="288" href="#288">288</a> 
+<a name="289" href="#289">289</a>         <strong>public</strong> String getSpfRecord(String hostname, String spfVersion) throws PermErrorException, NoneException, TempErrorException {
+<a name="290" href="#290">290</a>             <strong>if</strong> (hostname.endsWith(<span class="string">"."</span>)) hostname = hostname.substring(0, hostname.length()-1);
+<a name="291" href="#291">291</a>             <strong>if</strong> (zonedata.get(hostname) != <strong>null</strong>) {
+<a name="292" href="#292">292</a>                 List l = (List) zonedata.get(hostname);
+<a name="293" href="#293">293</a>                 Iterator i = l.iterator();
+<a name="294" href="#294">294</a>                 String res = <strong>null</strong>;
+<a name="295" href="#295">295</a>                 <strong>boolean</strong> SPFexists = false;
+<a name="296" href="#296">296</a>                 <strong>while</strong> (i.hasNext()) {
+<a name="297" href="#297">297</a>                     Object o = i.next();
+<a name="298" href="#298">298</a>                     <strong>if</strong> (o instanceof HashMap) {
+<a name="299" href="#299">299</a>                         HashMap hm = (HashMap) o;
+<a name="300" href="#300">300</a>                         <strong>if</strong> (hm.get(<span class="string">"SPF"</span>) != <strong>null</strong>) {
+<a name="301" href="#301">301</a>                             SPFexists = <strong>true</strong>;
+<a name="302" href="#302">302</a>                             String spfrecord = (String) hm.get(<span class="string">"SPF"</span>);
+<a name="303" href="#303">303</a>                             <strong>if</strong> (spfrecord.startsWith(spfVersion+<span class="string">" "</span>) || spfrecord.equals(spfVersion)) {
+<a name="304" href="#304">304</a>                                 <strong>if</strong> (res != <strong>null</strong>) {
+<a name="305" href="#305">305</a>                                     <strong>throw</strong> <strong>new</strong> PermErrorException(<span class="string">"Multiple SPF records!"</span>);
+<a name="306" href="#306">306</a>                                 } <strong>else</strong> {
+<a name="307" href="#307">307</a>                                     res = spfrecord;
+<a name="308" href="#308">308</a>                                 }
+<a name="309" href="#309">309</a>                             } <strong>else</strong> {
+<a name="310" href="#310">310</a>                                 System.err.println(<span class="string">"#####1 unmatched: "</span>+spfrecord);
+<a name="311" href="#311">311</a>                             }
+<a name="312" href="#312">312</a>                         }
+<a name="313" href="#313">313</a>                     } <strong>else</strong> {
+<a name="314" href="#314">314</a>                         System.err.println(<span class="string">"[[[[[[[[[[[[[[[[[[[[1 "</span>+o.getClass().toString()+<span class="string">" ! "</span>+o);
+<a name="315" href="#315">315</a>                     }
+<a name="316" href="#316">316</a>                 }
+<a name="317" href="#317">317</a>                 <strong>if</strong> (!SPFexists) {
+<a name="318" href="#318">318</a>                     i = l.iterator();
+<a name="319" href="#319">319</a>                     <strong>while</strong> (i.hasNext()) {
+<a name="320" href="#320">320</a>                         Object o = i.next();
+<a name="321" href="#321">321</a>                         <strong>if</strong> (o instanceof HashMap) {
+<a name="322" href="#322">322</a>                             HashMap hm = (HashMap) o;
+<a name="323" href="#323">323</a>                             <strong>if</strong> (hm.get(<span class="string">"TXT"</span>) != <strong>null</strong>) {
+<a name="324" href="#324">324</a>                                 String spfrecord = (String) hm.get(<span class="string">"TXT"</span>);
+<a name="325" href="#325">325</a>                                 <strong>if</strong> (spfrecord.startsWith(spfVersion+<span class="string">" "</span>) || spfrecord.equals(spfVersion)) {
+<a name="326" href="#326">326</a>                                     <strong>if</strong> (res != <strong>null</strong>) {
+<a name="327" href="#327">327</a>                                         <strong>throw</strong> <strong>new</strong> PermErrorException(<span class="string">"Multiple TXT records!"</span>);
+<a name="328" href="#328">328</a>                                     } <strong>else</strong> {
+<a name="329" href="#329">329</a>                                         res = spfrecord;
+<a name="330" href="#330">330</a>                                     }
+<a name="331" href="#331">331</a>                                 } <strong>else</strong> {
+<a name="332" href="#332">332</a>                                     System.err.println(<span class="string">"#####2 unmatched: "</span>+spfrecord);
+<a name="333" href="#333">333</a>                                 }
+<a name="334" href="#334">334</a>                             }
+<a name="335" href="#335">335</a>                         } <strong>else</strong> <strong>if</strong> (o.toString().equals(<span class="string">"TIMEOUT"</span>)) {
+<a name="336" href="#336">336</a>                             <strong>throw</strong> <strong>new</strong> TempErrorException(<span class="string">"Timeout"</span>);
+<a name="337" href="#337">337</a>                         } <strong>else</strong> {
+<a name="338" href="#338">338</a>                             System.err.println(<span class="string">"[[[[[[[[[[[[[[[[[[[[2 "</span>+o.getClass().toString()+<span class="string">" ! "</span>+o);
+<a name="339" href="#339">339</a>                         }
+<a name="340" href="#340">340</a>                     }
+<a name="341" href="#341">341</a>                 }
+<a name="342" href="#342">342</a>                 <strong>if</strong> (res != <strong>null</strong>) <strong>return</strong> res;
+<a name="343" href="#343">343</a>             }
+<a name="344" href="#344">344</a>             <strong>int</strong> p = hostname.indexOf(<span class="string">"."</span>);
+<a name="345" href="#345">345</a>             <strong>if</strong> (p > 0) {
+<a name="346" href="#346">346</a>                 hostname = hostname.substring(p+1);
+<a name="347" href="#347">347</a>                 <strong>if</strong> (zonedata.get(hostname) != <strong>null</strong>) {
+<a name="348" href="#348">348</a>                     <strong>if</strong> (((List) zonedata.get(hostname)).iterator().next().equals(<span class="string">"TIMEOUT"</span>)) {
+<a name="349" href="#349">349</a>                         <strong>throw</strong> <strong>new</strong> NoneException(<span class="string">"TIMEOUT"</span>);
+<a name="350" href="#350">350</a>                     }
+<a name="351" href="#351">351</a>                 }
+<a name="352" href="#352">352</a>             }
+<a name="353" href="#353">353</a>             <strong>throw</strong> <strong>new</strong> NoneException(<span class="string">"No SPF Record for : "</span> + hostname);
+<a name="354" href="#354">354</a>         }
+<a name="355" href="#355">355</a> 
+<a name="356" href="#356">356</a>         <strong>public</strong> String getTxtCatType(String strServer) throws NoneException, PermErrorException, TempErrorException {
+<a name="357" href="#357">357</a>             String res = <strong>null</strong>;
+<a name="358" href="#358">358</a>             <strong>if</strong> (strServer.endsWith(<span class="string">"."</span>)) strServer = strServer.substring(0, strServer.length()-1);
+<a name="359" href="#359">359</a>             <strong>if</strong> (zonedata.get(strServer) != <strong>null</strong>) {
+<a name="360" href="#360">360</a>                 List l = (List) zonedata.get(strServer);
+<a name="361" href="#361">361</a>                 Iterator i = l.iterator();
+<a name="362" href="#362">362</a> 
+<a name="363" href="#363">363</a>                 <strong>while</strong> (i.hasNext()) {
+<a name="364" href="#364">364</a>                     HashMap hm = (HashMap) i.next();
+<a name="365" href="#365">365</a>                     <strong>if</strong> (hm.get(<span class="string">"TXT"</span>) != <strong>null</strong>) {
+<a name="366" href="#366">366</a>                         String spfrecord = (String) hm.get(<span class="string">"TXT"</span>);
+<a name="367" href="#367">367</a>                         <strong>if</strong> (res != <strong>null</strong>) res+=<span class="string">" "</span>; <strong>else</strong> res = <span class="string">""</span>;
+<a name="368" href="#368">368</a>                         res += spfrecord;
+<a name="369" href="#369">369</a>                     }
+<a name="370" href="#370">370</a>                 }
+<a name="371" href="#371">371</a> 
+<a name="372" href="#372">372</a>             }
+<a name="373" href="#373">373</a>             <strong>return</strong> res;
+<a name="374" href="#374">374</a>         }
+<a name="375" href="#375">375</a> 
+<a name="376" href="#376">376</a>         <strong>public</strong> <strong>void</strong> setTimeOut(<strong>int</strong> timeOut) {
+<a name="377" href="#377">377</a>             <strong>try</strong> {
+<a name="378" href="#378">378</a>                 <strong>throw</strong> <strong>new</strong> UnsupportedOperationException(<span class="string">"setTimeOut()"</span>);
+<a name="379" href="#379">379</a>             } <strong>catch</strong> (UnsupportedOperationException e) {
+<a name="380" href="#380">380</a>                 e.printStackTrace();
+<a name="381" href="#381">381</a>                 <strong>throw</strong> e;
+<a name="382" href="#382">382</a>             }
+<a name="383" href="#383">383</a>         }
+<a name="384" href="#384">384</a> 
+<a name="385" href="#385">385</a>         <strong>public</strong> <strong>int</strong> getRecordLimit() {
+<a name="386" href="#386">386</a>             <strong>return</strong> recordLimit;
+<a name="387" href="#387">387</a>         }
+<a name="388" href="#388">388</a> 
+<a name="389" href="#389">389</a>         <strong>public</strong> <strong>void</strong> setRecordLimit(<strong>int</strong> recordLimit) {
+<a name="390" href="#390">390</a>             <strong>this</strong>.recordLimit = recordLimit;
+<a name="391" href="#391">391</a>         }
+<a name="392" href="#392">392</a>     }
+<a name="393" href="#393">393</a> 
+<a name="394" href="#394">394</a> 
+<a name="395" href="#395">395</a>     <strong>protected</strong> <strong>static</strong> <strong>class</strong> SPFYamlTestSuite {
+<a name="396" href="#396">396</a>         <strong>public</strong> String comment;
+<a name="397" href="#397">397</a>         <strong>public</strong> HashMap tests;
+<a name="398" href="#398">398</a>         <strong>public</strong> HashMap zonedata;
+<a name="399" href="#399">399</a>         <strong>public</strong> String getComment() {
+<a name="400" href="#400">400</a>             <strong>return</strong> comment;
+<a name="401" href="#401">401</a>         }
+<a name="402" href="#402">402</a>         
+<a name="403" href="#403">403</a>         <strong>public</strong> SPFYamlTestSuite(HashMap source, <strong>int</strong> i) {
+<a name="404" href="#404">404</a>             <strong>this</strong>.comment = (String) source.get(<span class="string">"description"</span>);
+<a name="405" href="#405">405</a>             <strong>if</strong> (<strong>this</strong>.comment == <strong>null</strong>) {
+<a name="406" href="#406">406</a>                 <strong>this</strong>.comment = <span class="string">"Test #"</span>+i; 
+<a name="407" href="#407">407</a>             }
+<a name="408" href="#408">408</a>             <strong>this</strong>.tests = (HashMap) source.get(<span class="string">"tests"</span>);
+<a name="409" href="#409">409</a>             <strong>this</strong>.zonedata = (HashMap) source.get(<span class="string">"zonedata"</span>);
+<a name="410" href="#410">410</a>         }
+<a name="411" href="#411">411</a>         
+<a name="412" href="#412">412</a>         <strong>public</strong> <strong>void</strong> setComment(String comment) {
+<a name="413" href="#413">413</a>             <strong>this</strong>.comment = comment;
+<a name="414" href="#414">414</a>         }
+<a name="415" href="#415">415</a>         <strong>public</strong> HashMap getTests() {
+<a name="416" href="#416">416</a>             <strong>return</strong> tests;
+<a name="417" href="#417">417</a>         }
+<a name="418" href="#418">418</a>         <strong>public</strong> <strong>void</strong> setTests(HashMap tests) {
+<a name="419" href="#419">419</a>             <strong>this</strong>.tests = tests;
+<a name="420" href="#420">420</a>         }
+<a name="421" href="#421">421</a>         <strong>public</strong> HashMap getZonedata() {
+<a name="422" href="#422">422</a>             <strong>return</strong> zonedata;
+<a name="423" href="#423">423</a>         }
+<a name="424" href="#424">424</a>         <strong>public</strong> <strong>void</strong> setZonedata(HashMap zonedata) {
+<a name="425" href="#425">425</a>             <strong>this</strong>.zonedata = zonedata;
+<a name="426" href="#426">426</a>         }
+<a name="427" href="#427">427</a>     }
+<a name="428" href="#428">428</a> 
+<a name="429" href="#429">429</a> }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

Propchange: james/site/trunk/www/jspf/xref-test/org/apache/james/jspf/AbstractYamlTest.html
------------------------------------------------------------------------------
    svn:eol-style = native