<?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.4/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>
