Package com.sun.media.sound

Source Code of com.sun.media.sound.JDK13Services

/*
* This file is modified by Ivan Maidanski <ivmai@ivmaisoft.com>
* Project name: JCGO-SUNAWT (http://www.ivmaisoft.com/jcgo/)
*/

/*
* @(#)JDK13Services.java       1.16 03/03/17
*
* Copyright 2003 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/

package com.sun.media.sound;

import java.util.Vector;
import java.util.Iterator;
import java.security.AccessController;
import java.security.PrivilegedAction;
import sun.misc.Service;

import javax.sound.sampled.spi.AudioFileReader;
import javax.sound.sampled.spi.AudioFileWriter;
import javax.sound.sampled.spi.FormatConversionProvider;
import javax.sound.sampled.spi.MixerProvider;

import javax.sound.midi.spi.MidiFileReader;
import javax.sound.midi.spi.MidiFileWriter;
import javax.sound.midi.spi.SoundbankReader;
import javax.sound.midi.spi.MidiDeviceProvider;

/**
* JDK13Services uses the Service class in JDK 1.3
* to discover a list of service providers installed
* in the system.  This class will not be loaded in
* an environment less than JDK 1.3
*
* @version 1.16 03/03/17
* @author Jan Borgersen
*/
public class JDK13Services {


    /**
     * Private, no-args constructor to ensure against instantiation
     */
    private JDK13Services() {
    }


    /**
     * Obtains a Vector containing installed instances of the
     * providers for the requested service.
     */

    public static Vector getProviders( String service ) {

        Vector v = new Vector();

        //if(Printer.trace)Printer.trace("> JDK13Services.getJDK13Providers: " + service);

        if(service.equals("javax.sound.sampled.spi.AudioFileWriter")) {

            v = (Vector) AccessController.doPrivileged(
                                                       new PrivilegedAction() {
                                                               public Object run() {

                                                                   Vector p = new Vector();
                                                                   Iterator ps = Service.providers(AudioFileWriter.class);
                                                                   while (ps.hasNext()) {
                                                                       try {
                                                                           AudioFileWriter e =
                                                                               (AudioFileWriter)ps.next();
                                                                           p.addElement(e);
                                                                       } catch (Throwable t) {
                                                                           //$$fb 2002-11-07: do not fail on SPI not found
                                                                           if (Printer.err) t.printStackTrace();
                                                                       }
                                                                   }
                                                                   return p;
                                                               }
                                                           }
                                                       );

        } else if(service.equals("javax.sound.sampled.spi.AudioFileReader")) {

            v = (Vector) AccessController.doPrivileged(
                                                       new PrivilegedAction() {
                                                               public Object run() {

                                                                   Vector p = new Vector();
                                                                   Iterator ps = Service.providers(AudioFileReader.class);
                                                                   while (ps.hasNext()) {
                                                                       try {
                                                                           AudioFileReader e =
                                                                               (AudioFileReader)ps.next();
                                                                           p.addElement(e);
                                                                       } catch (Throwable t) {
                                                                           //$$fb 2002-11-07: do not fail on SPI not found
                                                                           if (Printer.err) t.printStackTrace();
                                                                       }
                                                                   }
                                                                   return p;
                                                               }
                                                           }
                                                       );

        } else if(service.equals("javax.sound.sampled.spi.FormatConversionProvider")) {

            v = (Vector) AccessController.doPrivileged(
                                                       new PrivilegedAction() {
                                                               public Object run() {

                                                                   Vector p = new Vector();
                                                                   Iterator ps = Service.providers(FormatConversionProvider.class);
                                                                   while (ps.hasNext()) {
                                                                       try {
                                                                           FormatConversionProvider e =
                                                                               (FormatConversionProvider)ps.next();
                                                                           p.addElement(e);
                                                                       } catch (Throwable t) {
                                                                           //$$fb 2002-11-07: do not fail on SPI not found
                                                                           if (Printer.err) t.printStackTrace();
                                                                       }
                                                                   }
                                                                   return p;
                                                               }
                                                           }
                                                       );

        } else if(service.equals("javax.sound.sampled.spi.MixerProvider")) {

            v = (Vector) AccessController.doPrivileged(
                                                       new PrivilegedAction() {
                                                               public Object run() {

                                                                   Vector p = new Vector();
                                                                   Iterator ps = Service.providers(MixerProvider.class);
                                                                   while (ps.hasNext()) {
                                                                       try {
                                                                           MixerProvider e =
                                                                               (MixerProvider)ps.next();
                                                                           p.addElement(e);
                                                                       } catch (Throwable t) {
                                                                           //$$fb 2002-11-07: do not fail on SPI not found
                                                                           if (Printer.err) t.printStackTrace();
                                                                       }
                                                                   }
                                                                   return p;
                                                               }
                                                           }
                                                       );

        } else if(service.equals("javax.sound.midi.spi.MidiDeviceProvider")) {

            v = (Vector) AccessController.doPrivileged(
                                                       new PrivilegedAction() {
                                                               public Object run() {

                                                                   Vector p = new Vector();
                                                                   Iterator ps = Service.providers(MidiDeviceProvider.class);
                                                                   while (ps.hasNext()) {
                                                                       try {
                                                                           MidiDeviceProvider e =
                                                                               (MidiDeviceProvider)ps.next();
                                                                           p.addElement(e);
                                                                       } catch (Throwable t) {
                                                                           //$$fb 2002-11-07: do not fail on SPI not found
                                                                           if (Printer.err) t.printStackTrace();
                                                                       }
                                                                   }
                                                                   return p;
                                                               }
                                                           }
                                                       );

        } else if(service.equals("javax.sound.midi.spi.MidiFileWriter")) {

            v = (Vector) AccessController.doPrivileged(
                                                       new PrivilegedAction() {
                                                               public Object run() {

                                                                   Vector p = new Vector();
                                                                   Iterator ps = Service.providers(MidiFileWriter.class);
                                                                   while (ps.hasNext()) {
                                                                       try {
                                                                           MidiFileWriter e =
                                                                               (MidiFileWriter)ps.next();
                                                                           p.addElement(e);
                                                                       } catch (Throwable t) {
                                                                           //$$fb 2002-11-07: do not fail on SPI not found
                                                                           if (Printer.err) t.printStackTrace();
                                                                       }
                                                                   }
                                                                   return p;
                                                               }
                                                           }
                                                       );

        } else if(service.equals("javax.sound.midi.spi.MidiFileReader")) {

            v = (Vector) AccessController.doPrivileged(
                                                       new PrivilegedAction() {
                                                               public Object run() {

                                                                   Vector p = new Vector();
                                                                   Iterator ps = Service.providers(MidiFileReader.class);
                                                                   while (ps.hasNext()) {
                                                                       try {
                                                                           MidiFileReader e =
                                                                               (MidiFileReader)ps.next();
                                                                           p.addElement(e);
                                                                       } catch (Throwable t) {
                                                                           //$$fb 2002-11-07: do not fail on SPI not found
                                                                           if (Printer.err) t.printStackTrace();
                                                                       }
                                                                   }
                                                                   return p;
                                                               }
                                                           }
                                                       );

        } else if(service.equals("javax.sound.midi.spi.SoundbankReader")) {

            v = (Vector) AccessController.doPrivileged(
                                                       new PrivilegedAction() {
                                                               public Object run() {

                                                                   Vector p = new Vector();
                                                                   Iterator ps = Service.providers(SoundbankReader.class);
                                                                   while (ps.hasNext()) {
                                                                       try {
                                                                           SoundbankReader e =
                                                                               (SoundbankReader)ps.next();
                                                                           p.addElement(e);
                                                                       } catch (Throwable t) {
                                                                           //$$fb 2002-11-07: do not fail on SPI not found
                                                                           if (Printer.err) t.printStackTrace();
                                                                       }                                                                   }
                                                                   return p;
                                                               }
                                                           }
                                                       );

        }
        //if(Printer.trace)Printer.trace("> JDK13Services.getJDK13Providers done ");
        if (v.size() == 0)
            v = DefaultServices.getProviders(service);
        return v;

    }
}
TOP

Related Classes of com.sun.media.sound.JDK13Services

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.