<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre, #msg p { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[581] trunk/rails: Changed to make blacklight work in PC-land under JRuby</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd>581</dd>
<dt>Author</dt> <dd>haschart</dd>
<dt>Date</dt> <dd>2008-06-06 10:48:47 -0400 (Fri, 06 Jun 2008)</dd>
</dl>

<h3>Log Message</h3>
<pre>Changed to make blacklight work in PC-land under JRuby</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkrailsconfigenvironmentrb">trunk/rails/config/environment.rb</a></li>
<li><a href="#trunkrailsconfigwarblerb">trunk/rails/config/warble.rb</a></li>
<li><a href="#trunkrailslibjavamarc4jjar">trunk/rails/lib/java/marc4j.jar</a></li>
<li><a href="#trunkrailslibjavazclientjar">trunk/rails/lib/java/zclient.jar</a></li>
<li><a href="#trunkrailslibsolr_utilrb">trunk/rails/lib/solr_util.rb</a></li>
<li><a href="#trunkrailslibtaskssolrrake">trunk/rails/lib/tasks/solr.rake</a></li>
<li><a href="#trunkrailslibuvaz3950rb">trunk/rails/lib/uva/z3950.rb</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkrailsconfigenvironmentrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/config/environment.rb (580 => 581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/config/environment.rb        2008-06-02 18:06:17 UTC (rev 580)
+++ trunk/rails/config/environment.rb        2008-06-06 14:48:47 UTC (rev 581)
</span><span class="lines">@@ -78,4 +78,5 @@
</span><span class="cx"> 
</span><span class="cx"> Flare.connection = Solr::Connection.new(SolrUtil.new.config[:url])
</span><span class="cx"> 
</span><ins>+require 'will_paginate'
</ins><span class="cx"> require 'taggable_pagination'# in local lib
</span><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkrailsconfigwarblerb"></a>
<div class="modfile"><h4>Modified: trunk/rails/config/warble.rb (580 => 581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/config/warble.rb        2008-06-02 18:06:17 UTC (rev 580)
+++ trunk/rails/config/warble.rb        2008-06-06 14:48:47 UTC (rev 581)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx">   # config.gems &lt;&lt; &quot;tzinfo&quot;
</span><span class="cx">   # config.gems[&quot;rails&quot;] = &quot;1.2.3&quot;
</span><span class="cx">   
</span><del>-  config.gems = ['rails', 'will_paginate', 'marc', 'jruby-openssl']
</del><ins>+  config.gems = ['rails', 'will_paginate', 'marc', 'jruby-openssl', 'linguistics']
</ins><span class="cx">   
</span><span class="cx">   # Include gem dependencies not mentioned specifically
</span><span class="cx">   config.gem_dependencies = true
</span></span></pre></div>
<a id="trunkrailslibjavamarc4jjar"></a>
<div class="binary"><h4>Modified: trunk/rails/lib/java/marc4j.jar</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkrailslibjavazclientjar"></a>
<div class="binary"><h4>Modified: trunk/rails/lib/java/zclient.jar</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkrailslibsolr_utilrb"></a>
<div class="modfile"><h4>Modified: trunk/rails/lib/solr_util.rb (580 => 581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/lib/solr_util.rb        2008-06-02 18:06:17 UTC (rev 580)
+++ trunk/rails/lib/solr_util.rb        2008-06-06 14:48:47 UTC (rev 581)
</span><span class="lines">@@ -16,12 +16,12 @@
</span><span class="cx">   end
</span><span class="cx">   
</span><span class="cx">   def start_cmd
</span><del>-    cmd = &quot;java -jar&quot;
</del><ins>+    cmd = &quot;java &quot;
</ins><span class="cx">     cmd &lt;&lt; &quot; #{@config[:java_options]}&quot; if @config[:java_options]
</span><span class="cx">     cmd &lt;&lt; &quot; -Dsolr.solr.home=#{@config[:home_dir]}&quot; if @config[:home_dir]
</span><span class="cx">     cmd &lt;&lt; &quot; -Dsolr.data.dir=#{@config[:data_dir]}&quot; if @config[:data_dir]
</span><span class="cx">     cmd &lt;&lt; &quot; -Djetty.port=#{@config[:port]}&quot; or 8983
</span><del>-    cmd &lt;&lt; &quot; start.jar&quot;
</del><ins>+    cmd &lt;&lt; &quot; -jar start.jar&quot;
</ins><span class="cx">   end
</span><span class="cx">   
</span><span class="cx">   class &lt;&lt; self
</span></span></pre></div>
<a id="trunkrailslibtaskssolrrake"></a>
<div class="modfile"><h4>Modified: trunk/rails/lib/tasks/solr.rake (580 => 581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/lib/tasks/solr.rake        2008-06-02 18:06:17 UTC (rev 580)
+++ trunk/rails/lib/tasks/solr.rake        2008-06-06 14:48:47 UTC (rev 581)
</span><span class="lines">@@ -1,8 +1,9 @@
</span><span class="cx"> namespace :solr do
</span><span class="cx">   
</span><ins>+  desc &quot;Start the solr server&quot;
</ins><span class="cx">   task :start=&gt;:environment do
</span><span class="cx">     su = SolrUtil.new
</span><del>-    cmd=&quot;cd ./jetty; #{su.start_cmd}; cd ../;&quot;
</del><ins>+    cmd=&quot;cd jetty &amp;&amp; #{su.start_cmd} &amp;&amp; cd ..&quot;
</ins><span class="cx">     puts &quot;** Executing:
</span><span class="cx">     
</span><span class="cx">     #{cmd}
</span></span></pre></div>
<a id="trunkrailslibuvaz3950rb"></a>
<div class="modfile"><h4>Modified: trunk/rails/lib/uva/z3950.rb (580 => 581)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/rails/lib/uva/z3950.rb        2008-06-02 18:06:17 UTC (rev 580)
+++ trunk/rails/lib/uva/z3950.rb        2008-06-06 14:48:47 UTC (rev 581)
</span><span class="lines">@@ -1,12 +1,19 @@
</span><span class="cx"> require 'rubygems'
</span><span class="cx"> 
</span><ins>+JRUBY_VERSION = 1
+
</ins><span class="cx"> if defined?(JRUBY_VERSION)
</span><del>-  eval &quot;require 'java'&quot;
-  #JAVA_HOME_DIR=File.join(RAILS_ROOT, '..', 'java', 'lib')
-  #%W(commons-logging-api commons-logging log4j-1.2.5 a2jruntime-1_2_3 ki-jzkit-hss-1_2_3 ki-jzkit-iface-1_2_3 ki-jzkit-z3950-1_2_3 ki-util marc4j).each do |j|
-  #  require File.join(JAVA_HOME_DIR, &quot;#{j}.jar&quot;)
-  #end
-  #require File.join(JAVA_HOME_DIR, 'zclient.jar')
</del><ins>+  require 'java'
+  require 'java/commons-logging-api.jar'
+  require 'java/commons-logging.jar'
+  require 'java/log4j-1.2.5.jar'
+  require 'java/a2jruntime-1_2_3.jar'
+  require 'java/ki-jzkit-hss-1_2_3.jar'
+  require 'java/ki-jzkit-iface-1_2_3.jar'
+  require 'java/ki-jzkit-z3950-1_2_3.jar'
+  require 'java/ki-util.jar'
+  require 'java/marc4j.jar'
+  require 'java/zclient.jar'
</ins><span class="cx"> else
</span><span class="cx">   eval &quot;require 'zoom'&quot;
</span><span class="cx"> end
</span><span class="lines">@@ -15,7 +22,7 @@
</span><span class="cx"> require 'stringio'
</span><span class="cx"> 
</span><span class="cx"> module UVA::Z3950
</span><del>-  
</del><ins>+
</ins><span class="cx">   #
</span><span class="cx">   # Blacklight::Z3950 uses the ZOOM::Connection class and provides a few helpful methods
</span><span class="cx">   # See vendor/plugins/blacklight/lib/z3950.rb
</span><span class="lines">@@ -61,11 +68,17 @@
</span><span class="cx">       def find_by_ckey(ckey)
</span><span class="cx">         if defined?(JRUBY_VERSION)
</span><span class="cx">           zclient = Java::ZClient.new
</span><del>-          zclient.openConnection(CONNECTION_PARAMS[0], CONNECTION_PARAMS[1])
-          zclient.cmdBase(CONNECTION_PARAMS[2])
-          zclient.cmdElements(&quot;F&quot;)
-          zclient.cmdFormat(&quot;usmarc&quot;)
-          zclient.getStringByIDNum(ckey.match(/[^0-9]+/).to_i)
</del><ins>+          result = zclient.openConnection(CONNECTION_PARAMS[0], CONNECTION_PARAMS[1])
+          if (result)          
+            zclient.cmdBase(CONNECTION_PARAMS[2])
+            zclient.cmdElements(&quot;F&quot;)
+            zclient.cmdFormat(&quot;usmarc&quot;)
+            rawrecord = zclient.getStringByIDNum(ckey.gsub(/[^0-9]+/, '').to_i)
+                        print rawrecord
+                        return rawrecord
+          else
+                  raise &quot;Z3950ConnectionException&quot; 
+          end
</ins><span class="cx">         else
</span><span class="cx">           connect {|c| c.search(&quot;@attr 1=1016 ^C#{ckey}&quot;) }
</span><span class="cx">         end
</span><span class="lines">@@ -145,10 +158,12 @@
</span><span class="cx">             end
</span><span class="cx">           end
</span><span class="cx">         rescue
</span><del>-          tries += 1
-          if tries &lt;= 10
-            sleep 0.5
-            retry
</del><ins>+          if ($! == &quot;Z3950ConnectionException&quot;)
+                  tries += 1
+            if tries &lt;= 10
+              sleep 0.5
+              retry
+            end
</ins><span class="cx">           end
</span><span class="cx">         end
</span><span class="cx">       end
</span></span></pre>
</div>
</div>

</body>
</html>