I believe the problem is because ZVerseBackend is not thread-safe. Being a singleton, it starts sharing all its arrays declared as member variables. As a result, when two passages from the same &quot;Book&quot; (for e.g. KJV) are used, there is corruption, since the data read for Thread A might also be shared by Thread B! <div>
<br></div><div>A few solutions I can think of:</div><div>- do they need to be singletons? I guess it makes sense, but what is the cost involved in them being singletons? Don&#39;t know the code base well enough yet.</div>
<div>- do the member variables need to member variables, or can be make them local variables? Do they share state across methods?</div><div>- If the option above doesn&#39;t work, then synchronising the method might be worth looking at, however, in a web environment, that would potentially cause serious bottlenecks, especially if there is a default version (and default passage) that is displayed when the user brings the page up.</div>
<div><br></div><div>Any thoughts?</div><div>Chris</div><div><br></div><div><br><br><div class="gmail_quote">On 7 November 2010 00:04, Chris Burrell <span dir="ltr">&lt;<a href="mailto:chris@burrell.me.uk">chris@burrell.me.uk</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">On this last note, I believe we have concurrency issues. I have a two column page, displaying one passage each. On load of the page they load up a passage each, but then this once, the passage on the right (only verse 1) has gone to the left (which was requesting just one verse but from a different passage:<div>

<br></div><div>left pane: requested Acts 2:10, got Romans 1:1</div><div>right pane: corrupt XML in verse 1, verse 2 seems to be Romans 1:2-following</div><div><br></div><div>Anyone else come across those issues?</div><div>

Chris</div><div><div></div><div class="h5"><div><br><div class="gmail_quote">On 6 November 2010 20:53, Chris Burrell <span dir="ltr">&lt;<a href="mailto:chris@burrell.me.uk" target="_blank">chris@burrell.me.uk</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Another question too. It seems sometimes, both in bible desktop and my current application, the html rendered is broken?<div><br></div><div>Any ideas why that might be?</div><div><br></div><div>For example, I get:</div><div>


&quot;&lt;div class=&quot;passageText ui-widget&quot;&gt;&lt;div&gt;&lt;h2 class=&quot;heading&quot;&gt;Acts 2:10&lt;/h2&gt;&lt;span class=&quot;verse&quot;&gt;&lt;span class=&quot;w&quot;&gt;&lt;sup class=&quot;verseNumber&quot;&gt;10&lt;/sup&gt;&lt;/span&gt;&lt;span class=&quot;w&quot;<b>&gt;&lt;span class=&quot;text&quot;&gt;emma=&quot;strong:G1909&quot; morph=&quot;robinson:PREP</b>&quot; src=&quot;4&quot;&amp;gt;upon every soul of man that doeth evil, of the Jew first, and also of the Gentile;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&quot;</div>


<div><br></div><div>The above in bold shows that it didn&#39;t get XSLTed properly.</div><div><br></div><div>Instead of &quot;&lt;div class=&quot;passageText ui-widget&quot;&gt;&lt;div&gt;&lt;h2 class=&quot;heading&quot;&gt;Acts 2:10&lt;/h2&gt;&lt;span class=&quot;verse&quot;&gt;&lt;sup class=&quot;verseNumber&quot;&gt;10&lt;/sup&gt;&lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;Phrygia&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;and&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;Pamphylia&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;in Egypt&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;and&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;in the parts&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;of Libya&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;about&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;Cyrene&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;and&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;strangers&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;of Rome&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;Jews&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;and&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;w&quot;&gt;&lt;span class=&quot;text&quot;&gt;proselytes&lt;/span&gt;&lt;/span&gt;,&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&quot;</div>


<div><br></div><div>So somehow it lost a whole load on the way out of the XSLT? The only difference is that the first one is on startup of the server, the second is with a refresh in the browser. Perhaps something hasn&#39;t loaded up correctly/entirely?</div>


<div><br></div><font color="#888888"><div>Chris</div></font><div><div></div><div><div><br><div class="gmail_quote">On 5 November 2010 23:10, Chris Burrell <span dir="ltr">&lt;<a href="mailto:chris@burrell.me.uk" target="_blank">chris@burrell.me.uk</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks DM. So I found this page (again)! <a href="http://www.crosswire.org/~dmsmith/interlinear/" target="_blank">http://www.crosswire.org/~dmsmith/interlinear/</a><div><br></div><div><a href="http://www.crosswire.org/~dmsmith/interlinear/" target="_blank"></a>And managed to replicate (and solve?) the issues I found originally when I looked at it before:</div>



<div><br></div><div>1st When lines in the interlinear only have 1 line (i.e. no 2nd/3rd or 4th line). As a result, when the text wraps, it floats below the first line. As a hack (although on could argue that there is an empty spot there, rather than nothing), I think we can put a &lt;span&gt;&amp;nbsp;&lt;/span&gt; or we could use a height maybe? (not quite so good, unless we specify in ems and exs). And the second thing is that within a particular word stack, the words might wrap. I believe this particular issue is only visible in IE. For IE 8, the fix is to put a whitespace: nowrap CSS directive. Not sure if that helps on IE6 and 7 though? Spec says it should be supported on both browsers.</div>



<div><br></div><div>And yup, I&#39;m targetting web environments, and also web mobile browsers. </div><div>Chris</div><div><div></div><div><div><br><br><div class="gmail_quote">On 5 November 2010 20:09, DM Smith <span dir="ltr">&lt;<a href="mailto:dmsmith@crosswire.org" target="_blank">dmsmith@crosswire.org</a>&gt;</span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
    
  
  <div bgcolor="#ffffff" text="#000000">
    I&#39;m heading out for the weekend. In a few minutes. <br>
    It&#39;ll probably be Monday evening when I send it.<br>
    <br>
    The solution uses spans with their display set to block.<br><font color="#888888">
    <br>
    -- DM</font><div><div></div><div><br>
    <br>
    On 11/05/2010 03:55 PM, Chris Burrell wrote:
    <blockquote type="cite">DM, you said you might have an intearlinear model that
      worked? I had another look to see how I did mine previously, and
      found that in fact I used tables. I think I struggled for quite a
      while to get a model working across browsers using DIVs, but none
      of them seemed to wrap properly at the end of the line.  But
      unfortunately table layouts are slow and therefore it would be
      better to have divs. 
      <div>
        <br>
      </div>
      <div>Would you be able to let me have your samples?</div>
      <div>Chris<br>
        <br>
        <div class="gmail_quote">On 5 November 2010 19:21, Chris Burrell
          <span dir="ltr">&lt;<a href="mailto:chris@burrell.me.uk" target="_blank">chris@burrell.me.uk</a>&gt;</span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">What&#39;s GNT? Greek New Testament? I think
            we can do more than that too. If other Bible versions have
            strong numbers and/or morphology tags, then we can put those
            in parallel, and end up having French with English
            &quot;subtitles&quot;, or English with English, as well as English
            with Greek, etc.
            <div>
              <br>
            </div>
            <div>So I&#39;ve had a look at the framework so far and it seems
              fairly easy not to use Bible Desktop components and have a
              good XSLT transformation. So all we would need to add is
              some helpers that users can easily integrate into their
              XSLTs. It would nice to have some sample XSLs for people
              to use. So for example, I&#39;ve had to strip out all the CSS
              and font tags from the Bible Desktop one so as to produce
              a good XHTML compliant one. </div>
            <div><br>
            </div>
            <div>Say we give the XSLT a InterlinearProvider initialised
              with its version and passage, as it parses the
              strong/morph option we can then call get($provider,
              @strong, @morph), which would in turn optionally return
              the correct words (or best word since sometimes you may
              have multiple options in modules tagged with strong
              numbers only. In fact it would be better to have something
              like get($provider, osis_verse_id, @strong, @morph). Since
              then, if we don&#39;t have the morphology of the word, at
              least we can limit the lookups to those words that are
              tagged in a particular verse (that assumes that
              versification is comparable between versions).</div>
            <div><br>
            </div>
            <div>We&#39;ll want to add options to have tagged information
              displayed on the side of a word/phrase or below a
              word/phrase. At the moment the XSLT displays morph and
              strong tags next to the text. I&#39;ll add some
              transformations to have it on separate lines. Then we can
              reuse the same transformations to line up text beneath
              it. </div>
            <div><br>
            </div>
            <div>DM, I had a look at <span style="font-family:arial,sans-serif;border-collapse:collapse">&quot;flying
                saucer&quot; , but didn&#39;t quite understand where it comes in?
                Would the idea be instead of the XSLT? And have it
                transform to different UIs?</span></div>
            <div><br>
            </div>
            <font color="#888888">
              <div>Chris</div>
            </font>
            <div>
              <div>
                <div><br>
                  <br>
                  <div class="gmail_quote">On 5 November 2010 03:51,
                    Tonny Kohar <span dir="ltr">&lt;<a href="mailto:tonny.kohar@gmail.com" target="_blank">tonny.kohar@gmail.com</a>&gt;</span>
                    wrote:<br>
                    <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
                      Hi,<br>
                      <div><br>
                        On Thu, Nov 4, 2010 at 11:30 PM, DM Smith &lt;<a href="mailto:dmsmith@crosswire.org" target="_blank">dmsmith@crosswire.org</a>&gt;
                        wrote:<br>
                        &gt; Much of the transformations is done in
                        BibleDesktop. Refactoring these and<br>
                        &gt; putting it into JSword and/or common would
                        be good.<br>
                        &gt;<br>
                        <br>
                      </div>
                      +1<br>
                      Yes it would be nice to have this under JSword
                      instead of BIbleDesktop<br>
                      <br>
                      Sincerely<br>
                      Tonny Kohar<br>
                      <font color="#888888">--<br>
                        Alkitab Bible Study<br>
                        <a href="http://www.kiyut.com/products/alkitab/index.html" target="_blank">http://www.kiyut.com/products/alkitab/index.html</a><br>
                      </font>
                      <div>
                        <div><br>
_______________________________________________<br>
                          jsword-devel mailing list<br>
                          <a href="mailto:jsword-devel@crosswire.org" target="_blank">jsword-devel@crosswire.org</a><br>
                          <a href="http://www.crosswire.org/mailman/listinfo/jsword-devel" target="_blank">http://www.crosswire.org/mailman/listinfo/jsword-devel</a><br>
                        </div>
                      </div>
                    </blockquote>
                  </div>
                  <br>
                </div>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
      </div>
      <pre><fieldset></fieldset>
_______________________________________________
jsword-devel mailing list
<a href="mailto:jsword-devel@crosswire.org" target="_blank">jsword-devel@crosswire.org</a>
<a href="http://www.crosswire.org/mailman/listinfo/jsword-devel" target="_blank">http://www.crosswire.org/mailman/listinfo/jsword-devel</a>
</pre>
    </blockquote>
    <br>
  </div></div></div>

<br>_______________________________________________<br>
jsword-devel mailing list<br>
<a href="mailto:jsword-devel@crosswire.org" target="_blank">jsword-devel@crosswire.org</a><br>
<a href="http://www.crosswire.org/mailman/listinfo/jsword-devel" target="_blank">http://www.crosswire.org/mailman/listinfo/jsword-devel</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>