Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4713900

default Sequencer allows to set Mute for invalid track

XMLWordPrintable

    • mantis
    • generic
    • generic



      Name: vtR10009 Date: 07/11/2002


        Specification for the method Sequencer.getTrackMute() from the
      package javax.sound.midi reads:
      ".. This applies if the sequencer does not support muting of tracks, and
      if the specified track index is not valid.
      Parameters:
         track - the track number. Tracks in the current sequence are numbered
         from 0 to the number of tracks in the sequence minus 1."

      But default Sequencer erroneously allows to set Mute state for
      nonexistent track.

      This bug causes failure of new JCK test:
        api/javax_sound/midi/Sequencer/index.html#MuteSolo
      To reproduce the bug run the following test with JDK build 1.4.1-rc-b16:
      ------------------------------- test.java --------------------------------
      import java.io.*;
      import java.net.*;
      import javax.sound.midi.*;

      public class test {

          public static void main(String args[]) {
              boolean failed = false;
              Sequencer seq = null;
          
              Sequence midiData = null;
              URL seqURL = null;
              int numTracks;
          
              try {
                  seq = MidiSystem.getSequencer();
                  seq.open();
          
                  seqURL = new URL(args[0]);
                  midiData = MidiSystem.getSequence(seqURL);
                  seq.setSequence(midiData);
                  numTracks = midiData.getTracks().length;
                  System.err.println("TrackMute state was: " +
      seq.getTrackMute(numTracks));
                  seq.setTrackMute(numTracks, true);
                  if (seq.getTrackMute(numTracks)) {
                      System.err.println("TrackMute state must not be set for
      nonexistent "
                              + "track! " + seq.getTrackMute(numTracks));
                      failed = true;
                  }
          
              } catch (MidiUnavailableException mue) {
                  System.err.println("MidiUnavailableException was thrown: " + mue);
                  System.err.println("could not test.");
                  failed = true;
              } catch (InvalidMidiDataException imEx) {
                  imEx.printStackTrace();
                  System.err.println("InvalidMidiDataException was thrown.");
                  failed = true;
              } catch (IOException ioe) {
                  System.err.println("Could not open the midi file.");
                  failed = true;
              } finally {
                  if (seq != null) seq.close();
              }
              
              if( failed ) {
                  System.err.println("test failed");
                  System.exit(1);
              } else {
                  System.out.println("OKAY");
                  System.exit(0);
              }
              
          }
      }

      ---------------------------Logs-------------------------------------------
      novo101:templates$ javac test.java; java -showversion test
      file://`pwd`/metatest.mid
      java version "1.4.1-rc"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-rc-b16)
      Java HotSpot(TM) Client VM (build 1.4.1-rc-b16, mixed mode)

      TrackMute state was: false
      TrackMute state must not be set for nonexistent track! true
      test failed
      --------------------------------------------------------------------------
      ======================================================================

            fbomerssunw Florian Bomers (Inactive)
            vitcsunw Vitc Vitc (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: