< prev index next >

src/java.desktop/share/classes/com/sun/media/sound/JARSoundbankReader.java

Print this page




  72     public Soundbank getSoundbank(URL url)
  73             throws InvalidMidiDataException, IOException {
  74         if (!isZIP(url))
  75             return null;
  76         ArrayList<Soundbank> soundbanks = new ArrayList<Soundbank>();
  77         URLClassLoader ucl = URLClassLoader.newInstance(new URL[]{url});
  78         InputStream stream = ucl.getResourceAsStream(
  79                 "META-INF/services/javax.sound.midi.Soundbank");
  80         if (stream == null)
  81             return null;
  82         try
  83         {
  84             BufferedReader r = new BufferedReader(new InputStreamReader(stream));
  85             String line = r.readLine();
  86             while (line != null) {
  87                 if (!line.startsWith("#")) {
  88                     try {
  89                         Class<?> c = Class.forName(line.trim(), false, ucl);
  90                         if (Soundbank.class.isAssignableFrom(c)) {
  91                             ReflectUtil.checkPackageAccess(c);

  92                             Object o = c.newInstance();
  93                             soundbanks.add((Soundbank) o);
  94                         }
  95                     } catch (ClassNotFoundException ignored) {
  96                     } catch (InstantiationException ignored) {
  97                     } catch (IllegalAccessException ignored) {
  98                     }
  99                 }
 100                 line = r.readLine();
 101             }
 102         }
 103         finally
 104         {
 105             stream.close();
 106         }
 107         if (soundbanks.size() == 0)
 108             return null;
 109         if (soundbanks.size() == 1)
 110             return soundbanks.get(0);
 111         SimpleSoundbank sbk = new SimpleSoundbank();
 112         for (Soundbank soundbank : soundbanks)
 113             sbk.addAllInstruments(soundbank);
 114         return sbk;
 115     }
 116 
 117     public Soundbank getSoundbank(InputStream stream)


  72     public Soundbank getSoundbank(URL url)
  73             throws InvalidMidiDataException, IOException {
  74         if (!isZIP(url))
  75             return null;
  76         ArrayList<Soundbank> soundbanks = new ArrayList<Soundbank>();
  77         URLClassLoader ucl = URLClassLoader.newInstance(new URL[]{url});
  78         InputStream stream = ucl.getResourceAsStream(
  79                 "META-INF/services/javax.sound.midi.Soundbank");
  80         if (stream == null)
  81             return null;
  82         try
  83         {
  84             BufferedReader r = new BufferedReader(new InputStreamReader(stream));
  85             String line = r.readLine();
  86             while (line != null) {
  87                 if (!line.startsWith("#")) {
  88                     try {
  89                         Class<?> c = Class.forName(line.trim(), false, ucl);
  90                         if (Soundbank.class.isAssignableFrom(c)) {
  91                             ReflectUtil.checkPackageAccess(c);
  92                             @SuppressWarnings("deprecation")
  93                             Object o = c.newInstance();
  94                             soundbanks.add((Soundbank) o);
  95                         }
  96                     } catch (ClassNotFoundException |
  97                              InstantiationException |
  98                              IllegalAccessException ignored) {
  99                     }
 100                 }
 101                 line = r.readLine();
 102             }
 103         }
 104         finally
 105         {
 106             stream.close();
 107         }
 108         if (soundbanks.size() == 0)
 109             return null;
 110         if (soundbanks.size() == 1)
 111             return soundbanks.get(0);
 112         SimpleSoundbank sbk = new SimpleSoundbank();
 113         for (Soundbank soundbank : soundbanks)
 114             sbk.addAllInstruments(soundbank);
 115         return sbk;
 116     }
 117 
 118     public Soundbank getSoundbank(InputStream stream)
< prev index next >