<!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 << "tzinfo"
</span><span class="cx"> # config.gems["rails"] = "1.2.3"
</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 = "java -jar"
</del><ins>+ cmd = "java "
</ins><span class="cx"> cmd << " #{@config[:java_options]}" if @config[:java_options]
</span><span class="cx"> cmd << " -Dsolr.solr.home=#{@config[:home_dir]}" if @config[:home_dir]
</span><span class="cx"> cmd << " -Dsolr.data.dir=#{@config[:data_dir]}" if @config[:data_dir]
</span><span class="cx"> cmd << " -Djetty.port=#{@config[:port]}" or 8983
</span><del>- cmd << " start.jar"
</del><ins>+ cmd << " -jar start.jar"
</ins><span class="cx"> end
</span><span class="cx">
</span><span class="cx"> class << 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 "Start the solr server"
</ins><span class="cx"> task :start=>:environment do
</span><span class="cx"> su = SolrUtil.new
</span><del>- cmd="cd ./jetty; #{su.start_cmd}; cd ../;"
</del><ins>+ cmd="cd jetty && #{su.start_cmd} && cd .."
</ins><span class="cx"> puts "** 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 "require 'java'"
- #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, "#{j}.jar")
- #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 "require 'zoom'"
</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("F")
- zclient.cmdFormat("usmarc")
- 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("F")
+ zclient.cmdFormat("usmarc")
+ rawrecord = zclient.getStringByIDNum(ckey.gsub(/[^0-9]+/, '').to_i)
+                        print rawrecord
+                        return rawrecord
+ else
+         raise "Z3950ConnectionException"
+ end
</ins><span class="cx"> else
</span><span class="cx"> connect {|c| c.search("@attr 1=1016 ^C#{ckey}") }
</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 <= 10
- sleep 0.5
- retry
</del><ins>+ if ($! == "Z3950ConnectionException")
+         tries += 1
+ if tries <= 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>