<?xml version="1.0"?>
<document>

  <properties>
    <author email="">Conor MacNeill</author>
    <author email="chuck@topsail.org">Chuck Murcko</author>
    <title>Having Problems?</title>
  </properties>

  <body>
    <section name="Having Problems?">
        <p>
           This page details some steps you can take to try and resolve
           any problems you may be having with BSF. If you find you can't
           resolve the problem, then this page will help you collect some of
           the relevant information to provide in a bug report. This information
           will help the BSF developers understand and resolve the problem.
           Of course, not all the steps here will make sense for every problem
           you may encounter - these are just some suggestions to point
           you in the right direction.
        </p>
         
      <subsection name="Read the Manual">
         <p>
            The first step to take when you have a problem with BSF is to read
            the <a href="manual.html">manual</a> entry for the task or
            concept that is giving you trouble. In particular, check the
            meaning of a task's attributes and nested elements. Perhaps an
            attribute is available that would provide the behavior you require.
            If you have problems with the manual itself, you can submit a
            documentation bug report (see below) to help us improve the BSF
            documentation.
         </p>
      </subsection>
      <subsection name="Examine Trace Output">
           <p>
            If you're still having a problem, the next step is to try and
            gather additional information about what BSF is doing.
           </p>
           <p>
           The trace output from a BSF run is helpful in determining
           causes of failure, and is useful in bug reports.
           </p>
      </subsection>

      <subsection name="Has It Been Fixed?">
         <p>
            After examining the debug output, if you still believe that the
            problem you are having is caused by BSF, chances are that someone
            else may have already encountered this problem, and perhaps it has
            been fixed. The next step, therefore, may be to try a nightly build
            of BSF to see if the problem has been fixed. Nightly builds for BSF
            are available from the 
            <a href="http://www.apache.org/dist/jakarta/jakarta-bsf/nightly/">
            Jakarta web site</a>. While BSF nightly builds are typically quite
            stable and are used by
            <a href="http://www.apache.org/dist/jakarta/gump/latest/">Gump</a>
            to build many other Jakarta projects, these builds should
            nonetheless be treated as experimental. Note that nightly builds
            do not build many of the optional tasks the come with BSF.
            A snapshot of these optional tasks is occasionally uploaded to
            the nightly download
            <a href="http://www.apache.org/dist/jakarta/jakarta-bsf/nightly/optional/">
            area</a>. However, even this snapshot does not contain every
            optional task.
        </p>
      </subsection>
      
      <subsection name="Has It Been Reported?">
         <p>
            If the current nightly build doesn't resolve your problem, it is
            possible that someone else has reported the issue. It is time to
            look at the <a href="http://issues.apache.org/bugzilla/">
            Apache Bug Database</a>.  This system is easy to use, and it will
            let you search the <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=BSF&amp;short_desc=&amp;short_desc_type=substring&amp;long_desc=&amp;long_desc_type=substring&amp;bug_file_loc=&amp;bug_file_loc_type=substring&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_id">
            currently open</a> and resolved bugs to see if your problem has
            already been reported. If your problem has been reported, you can
            see whether any of the developers have commented, suggesting
            workarounds, or the reason for the bug, etc. Or you may have
            information to add (see about creating and modifying bug reports
            below), in which case, go right ahead and add the information.
            If you don't have any additional information, you may just want
            to vote for this bug, and perhaps
            add yourself to the <code>CC</code> list to follow the progress
            of this bug.
         </p>
      </subsection>
      
      <subsection name="Filing a Bug Report">
         <p>
            By this time, you may have decided that there is an unreported
            bug in BSF. You have a few choices at this point. You can send
            an email to the <nobr><code>bsf-user</code></nobr> mailing list
            to see if
            others have encountered your issue and find out how they may
            have worked around it. If after some discussion, you feel it
            is time to create
            a bug report, this is a simple operation in the bug database.
            Please try to provide as much information as possible in order
            to assist the developers in resolving the bug. Please try to enter
            correct values for the various inputs when creating the bug, such
            as which version of BSF you are running, and on which platform,
            etc. Once the bug is created, you can also add attachments to
            the bug report. 
         </p>
         <p> 
            What information should you include in your bug report? The
            easiest bugs to fix are those that are most easily reproducible,
            so it is really helpful if you can produce a small test case that
            exhibits the problem. In this case, you would attach the build file
            and any other files necessary to reproduce the problem, probably
            packed together in an archive. If you can't produce a test case,
            you should try to include a snippet from your build file and the
            relevant sections from the verbose or debug output from BSF. Try
            to include the header information where BSF states the version,
            the OS and VM information, etc. As debug output is likely to be
            very large, it's best to remove any output that is not
            relevant. Once the bug is entered into the bug database, you
            will be kept informed by email about progress on the bug. If
            you receive email asking for further information, please try to
            respond, as it will aid in the resolution of your bug.
         </p>
      </subsection>

      <subsection name="Asking for an Enhancement">
         <p>
            Sometimes, you may find that BSF just doesn't do what you need it
            to. It isn't a bug, as such, since BSF is working the way it is
            supposed to work. Perhaps it is some additional functionality for
            a task that hasn't been thought of yet, or maybe a completely new
            task. For these situations, you will
            want to raise an <i>enhancement request</i>. Enhancement requests
            are managed using the same Apache Bug Database described above.
            These are just a different type of bug report. If you look in the
            bug database, you will see that one of the severity settings for
            a bug is &quot;Enhancement&quot;. Just fill the bug report in,
            set the severity of the bug to &quot;Enhancement&quot;, and 
            state in the description how you would like to have BSF enhanced.
            Again, you should first check whether there are any existing
            enhancment requests that cover your needs. If so, just add your
            vote to these.
         </p>
      </subsection>
      
      <subsection name="Fixing the Bug">
         <p>
            If you aren't satisfied with just filing a bug report, you can
            try to find the cause of the problem and provide a fix yourself.
            The best way to do that is by working with the latest code from CVS.
            Alternatively, you can work with the source code available from the
            <a href="http://jakarta.apache.org/builds/jakarta-bsf/release/v2.3/src/">
            source distributions</a>. If you
            are going to tackle the problem at this level, you may want to
            discuss some details first on the <nobr><code>bsf-dev</code></nobr>
            mailing list. Once you have a fix for the problem, you may submit
            the fix as a <i>patch</i> to either the
            <nobr><code>bsf-dev</code></nobr> mailing
            list, or enter the bug database as described above and attach the
            patch to the bug report. Using the bug database has the advantage
            of being able to track the progress of your patch.
         </p>
         <p>
            If you have a patch to submit and are sending it to the
            <nobr><code>bsf-dev</code></nobr> mailing list,
            prefix &quot;[PATCH]&quot;
            to your message subject. Please include any relevant bug numbers.
            Patch files should be created with the <nobr><code>-u</code></nobr>
            option of the
            <code>diff</code> or <code>cvs diff</code> command. For
            example:<br></br><br></br>
            <font face="verdana" size="-1">
            diff -u Javac.java.orig Javac.java &gt; javac.diffs<br></br><br></br>
            </font>
            or, if you have source from CVS:<br></br><br></br>
            <font face="verdana" size="-1">
            cvs diff -u Javac.java &gt; javac.diffs<br></br><br></br>
            </font>
           
           Note: You should give your patch files meaningful names. 
           This makes it easier for developers who need to apply a number
           of different patch files.
        </p>
      </subsection>
      
         
    </section>
    
  </body>
</document>
