Cross Reference: SequencerImplicitSynthOpen.java
xref
: /
openjdk7
/
jdk
/
test
/
javax
/
sound
/
midi
/
Sequencer
/
SequencerImplicitSynthOpen.java
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
3631
N/A
/**
3631
N/A
*
@test
3631
N/A
*
@bug
6660470
3631
N/A
*
@summary
Tests that sequencer correctly
opens
/
closes
(implicitly) devices
3631
N/A
*
@author
Alex Menkov
3631
N/A
*/
3631
N/A
3631
N/A
import
java
.
util
.
List
;
3631
N/A
import
javax
.
sound
.
midi
.
MidiDevice
;
3631
N/A
import
javax
.
sound
.
midi
.
MidiDeviceReceiver
;
3631
N/A
import
javax
.
sound
.
midi
.
MidiSystem
;
3631
N/A
import
javax
.
sound
.
midi
.
MidiUnavailableException
;
3631
N/A
import
javax
.
sound
.
midi
.
Receiver
;
3631
N/A
import
javax
.
sound
.
midi
.
Sequencer
;
3631
N/A
import
javax
.
sound
.
midi
.
Transmitter
;
3631
N/A
3631
N/A
public
class
SequencerImplicitSynthOpen
{
3631
N/A
3631
N/A
static
int
TEST_COUNT
=
5
;
3631
N/A
3631
N/A
public
static
void
main
(
String
[]
args
) {
3631
N/A
try
{
3631
N/A
log
(
"getting sequencer..."
);
3631
N/A
Sequencer
sequencer
=
MidiSystem
.
getSequencer
();
3631
N/A
log
(
" - got "
+
getDeviceStr
(
sequencer
));
3631
N/A
3631
N/A
// obtain connected device (usually synthesizer)
3631
N/A
MidiDevice
synth
=
getConnectedDevice
(
sequencer
);
3631
N/A
if
(
synth
==
null
) {
3631
N/A
log
(
"could not get connected device, returning"
);
3631
N/A
return
;
3631
N/A
}
3631
N/A
3631
N/A
log
(
"connected device: "
+
getDeviceStr
(
synth
));
3631
N/A
3631
N/A
int
success
=
0
;
3631
N/A
for
(
int
i=
0
; i<
TEST_COUNT
; i++) {
3631
N/A
if
(
test
(
sequencer
)) {
3631
N/A
success
++;
3631
N/A
}
3631
N/A
}
3631
N/A
3631
N/A
if
(
success
!=
TEST_COUNT
) {
3631
N/A
throw
new
RuntimeException
(
"test FAILS"
);
3631
N/A
}
3631
N/A
}
catch
(
MidiUnavailableException
ex
) {
3631
N/A
// this is not a failure
3631
N/A
log
(
"Could not get Sequencer"
);
3631
N/A
}
3631
N/A
log
(
"test PASSED."
);
3631
N/A
}
3631
N/A
3631
N/A
static
boolean
test
(
Sequencer
sequencer
)
throws
MidiUnavailableException
{
3631
N/A
log
(
""
);
3631
N/A
log
(
"opening sequencer..."
);
3631
N/A
sequencer
.
open
();
// opens connected synthesizer implicitly
3631
N/A
MidiDevice
synth
=
getConnectedDevice
(
sequencer
);
3631
N/A
log
(
" connected device: "
+
getDeviceStr
(
synth
));
3631
N/A
3631
N/A
log
(
"closing sequencer..."
);
3631
N/A
sequencer
.
close
();
// closes the synth implicitly
3631
N/A
log
(
" synth is "
+
getDeviceStr
(
synth
));
3631
N/A
MidiDevice
synth2
=
getConnectedDevice
(
sequencer
);
3631
N/A
log
(
" currently connected device: "
+
getDeviceStr
(
synth2
));
3631
N/A
3631
N/A
if
(
synth
!=
null
&&
synth
.
isOpen
()) {
3631
N/A
log
(
"FAIL."
);
3631
N/A
return
false
;
3631
N/A
}
3631
N/A
log
(
"OK."
);
3631
N/A
return
true
;
3631
N/A
}
3631
N/A
3631
N/A
static
MidiDevice
getConnectedDevice
(
Sequencer
sequencer
) {
3631
N/A
List
<
Transmitter
>
trans
=
sequencer
.
getTransmitters
();
3631
N/A
log
(
" sequencer has "
+
trans
.
size
() +
" opened transmitters:"
);
3631
N/A
for
(
Transmitter
tr
:
trans
) {
3631
N/A
Receiver
r =
tr
.
getReceiver
();
3631
N/A
log
(
" "
+
getClassStr
(
tr
) +
" connected to "
+
getClassStr
(r));
3631
N/A
if
(r
instanceof
MidiDeviceReceiver
) {
3631
N/A
MidiDeviceReceiver
recv
= (
MidiDeviceReceiver
)r;
3631
N/A
MidiDevice
dev
=
recv
.
getMidiDevice
();
3631
N/A
log
(
" - receiver of "
+
getClassStr
(
dev
));
3631
N/A
return
dev
;
3631
N/A
}
else
{
3631
N/A
log
(
" - does NOT implement MidiDeviceReceiver"
);
3631
N/A
}
3631
N/A
}
3631
N/A
return
null
;
3631
N/A
}
3631
N/A
3631
N/A
static
String
getClassStr
(
Object
o) {
3631
N/A
if
(o ==
null
) {
3631
N/A
return
"<null>"
;
3631
N/A
}
3631
N/A
return
o.
getClass
().
getName
();
3631
N/A
}
3631
N/A
3631
N/A
static
String
getDeviceStr
(
MidiDevice
dev
) {
3631
N/A
if
(
dev
==
null
) {
3631
N/A
return
"NULL"
;
3631
N/A
}
3631
N/A
return
getClassStr
(
dev
) +
", "
+ (
dev
.
isOpen
() ?
"OPENED"
:
"CLOSED"
);
3631
N/A
}
3631
N/A
3631
N/A
static
void
log
(
String
s) {
3631
N/A
System
.
out
.
println
(s);
3631
N/A
}
3631
N/A
3631
N/A
}