1 /*
2 * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25 package com.sun.media.sound;
26
27 import java.io.BufferedReader;
28 import java.io.File;
29 import java.io.IOException;
30 import java.io.InputStream;
31 import java.io.InputStreamReader;
32 import java.net.URL;
33 import java.net.URLClassLoader;
34 import java.util.ArrayList;
35 import javax.sound.midi.InvalidMidiDataException;
36 import javax.sound.midi.Soundbank;
37 import javax.sound.midi.spi.SoundbankReader;
38
39 import sun.reflect.misc.ReflectUtil;
40
41 /**
42 * JarSoundbankReader is used to read soundbank object from jar files.
43 *
44 * @author Karl Helgason
45 */
46 public final class JARSoundbankReader extends SoundbankReader {
47
48 private static boolean isZIP(URL url) {
49 boolean ok = false;
50 try {
51 InputStream stream = url.openStream();
52 try {
53 byte[] buff = new byte[4];
54 ok = stream.read(buff) == 4;
95 }
96 line = r.readLine();
97 }
98 }
99 finally
100 {
101 stream.close();
102 }
103 if (soundbanks.size() == 0)
104 return null;
105 if (soundbanks.size() == 1)
106 return soundbanks.get(0);
107 SimpleSoundbank sbk = new SimpleSoundbank();
108 for (Soundbank soundbank : soundbanks)
109 sbk.addAllInstruments(soundbank);
110 return sbk;
111 }
112
113 public Soundbank getSoundbank(InputStream stream)
114 throws InvalidMidiDataException, IOException {
115 return null;
116 }
117
118 public Soundbank getSoundbank(File file)
119 throws InvalidMidiDataException, IOException {
120 return getSoundbank(file.toURI().toURL());
121 }
122 }
|
1 /*
2 * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.media.sound;
27
28 import java.io.BufferedReader;
29 import java.io.File;
30 import java.io.IOException;
31 import java.io.InputStream;
32 import java.io.InputStreamReader;
33 import java.net.URL;
34 import java.net.URLClassLoader;
35 import java.util.ArrayList;
36 import java.util.Objects;
37
38 import javax.sound.midi.InvalidMidiDataException;
39 import javax.sound.midi.Soundbank;
40 import javax.sound.midi.spi.SoundbankReader;
41
42 import sun.reflect.misc.ReflectUtil;
43
44 /**
45 * JarSoundbankReader is used to read soundbank object from jar files.
46 *
47 * @author Karl Helgason
48 */
49 public final class JARSoundbankReader extends SoundbankReader {
50
51 private static boolean isZIP(URL url) {
52 boolean ok = false;
53 try {
54 InputStream stream = url.openStream();
55 try {
56 byte[] buff = new byte[4];
57 ok = stream.read(buff) == 4;
98 }
99 line = r.readLine();
100 }
101 }
102 finally
103 {
104 stream.close();
105 }
106 if (soundbanks.size() == 0)
107 return null;
108 if (soundbanks.size() == 1)
109 return soundbanks.get(0);
110 SimpleSoundbank sbk = new SimpleSoundbank();
111 for (Soundbank soundbank : soundbanks)
112 sbk.addAllInstruments(soundbank);
113 return sbk;
114 }
115
116 public Soundbank getSoundbank(InputStream stream)
117 throws InvalidMidiDataException, IOException {
118 Objects.requireNonNull(stream);
119 return null;
120 }
121
122 public Soundbank getSoundbank(File file)
123 throws InvalidMidiDataException, IOException {
124 return getSoundbank(file.toURI().toURL());
125 }
126 }
|