< prev index next >

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

Print this page




  73     public Soundbank getSoundbank(URL url)
  74             throws InvalidMidiDataException, IOException {
  75         if (!isZIP(url))
  76             return null;
  77         ArrayList<Soundbank> soundbanks = new ArrayList<>();
  78         URLClassLoader ucl = URLClassLoader.newInstance(new URL[]{url});
  79         InputStream stream = ucl.getResourceAsStream(
  80                 "META-INF/services/javax.sound.midi.Soundbank");
  81         if (stream == null)
  82             return null;
  83         try
  84         {
  85             BufferedReader r = new BufferedReader(new InputStreamReader(stream));
  86             String line = r.readLine();
  87             while (line != null) {
  88                 if (!line.startsWith("#")) {
  89                     try {
  90                         Class<?> c = Class.forName(line.trim(), false, ucl);
  91                         if (Soundbank.class.isAssignableFrom(c)) {
  92                             ReflectUtil.checkPackageAccess(c);
  93                             Object o = c.newInstance();
  94                             soundbanks.add((Soundbank) o);
  95                         }
  96                     } catch (ClassNotFoundException ignored) {
  97                     } catch (InstantiationException ignored) {
  98                     } catch (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     @Override


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


  97                     }
  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     @Override
< prev index next >