home *** CD-ROM | disk | FTP | other *** search
/ Australian PC Authority 1999 May / may1999.iso / INTERNET / COMMUNIC / NETCAST.Z / marimb10.jar / netscape / netcast / ApplicationContext.class (.txt) next >
Encoding:
Java Class File  |  1998-02-25  |  9.2 KB  |  395 lines

  1. package netscape.netcast;
  2.  
  3. import java.applet.AudioClip;
  4. import java.awt.Image;
  5. import java.io.File;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.net.MalformedURLException;
  9. import java.net.URL;
  10. import marimba.castanet.client.CastanetChannel;
  11. import marimba.castanet.client.CastanetConstants;
  12. import marimba.castanet.client.CastanetEnvironment;
  13. import marimba.castanet.client.CastanetFile;
  14. import marimba.castanet.client.CastanetObject;
  15. import marimba.channel.Updates;
  16. import marimba.util.Props;
  17. import netscape.security.PrivilegeManager;
  18. import netscape.security.Target;
  19.  
  20. final class ApplicationContext implements marimba.channel.ApplicationContext, CastanetConstants {
  21.    private CastanetChannel channel;
  22.    private String dataDir;
  23.    private CastanetEnvironment env;
  24.    Props param;
  25.  
  26.    ApplicationContext(CastanetChannel channel) {
  27.       this.channel = channel;
  28.       this.env = ((CastanetObject)channel).getEnvironment();
  29.    }
  30.  
  31.    public URL getBase() {
  32.       return this.channel.getBase();
  33.    }
  34.  
  35.    public URL getCodeBase() {
  36.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  37.       if (privMgr != null) {
  38.          Target target = Target.findTarget("MarimbaAppContextTarget");
  39.          if (target != null) {
  40.             privMgr.enablePrivilege(target);
  41.          }
  42.       }
  43.  
  44.       String codebase = this.channel.getChannelProperty("codebase");
  45.       if (codebase != null) {
  46.          if (!codebase.endsWith("/")) {
  47.             codebase = codebase + "/";
  48.          }
  49.  
  50.          try {
  51.             return new URL(this.channel.getBase(), codebase);
  52.          } catch (MalformedURLException var3) {
  53.          }
  54.       }
  55.  
  56.       return this.channel.getBase();
  57.    }
  58.  
  59.    public URL getDataBase() {
  60.       return this.channel.getDataBase();
  61.    }
  62.  
  63.    public boolean channelFileExists(String path) {
  64.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  65.       if (privMgr != null) {
  66.          Target target = Target.findTarget("MarimbaAppContextTarget");
  67.          if (target != null) {
  68.             privMgr.enablePrivilege(target);
  69.          }
  70.       }
  71.  
  72.       return this.channel.fileExists(path);
  73.    }
  74.  
  75.    public String[] listChannelDirectory(String directory) {
  76.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  77.       if (privMgr != null) {
  78.          Target target = Target.findTarget("MarimbaAppContextTarget");
  79.          if (target != null) {
  80.             privMgr.enablePrivilege(target);
  81.          }
  82.       }
  83.  
  84.       return this.channel.listDirectory(directory);
  85.    }
  86.  
  87.    public String getDataDirectory() {
  88.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  89.       if (privMgr != null) {
  90.          Target target = Target.findTarget("MarimbaAppContextTarget");
  91.          if (target != null) {
  92.             privMgr.enablePrivilege(target);
  93.          }
  94.       }
  95.  
  96.       if (this.dataDir == null) {
  97.          this.dataDir = this.channel.getDataDirectoryCreate().getPath() + File.separatorChar;
  98.       }
  99.  
  100.       return this.dataDir;
  101.    }
  102.  
  103.    public Updates getPendingUpdates() {
  104.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  105.       if (privMgr != null) {
  106.          Target target = Target.findTarget("MarimbaAppContextTarget");
  107.          if (target != null) {
  108.             privMgr.enablePrivilege(target);
  109.          }
  110.       }
  111.  
  112.       return this.channel.getPendingUpdates();
  113.    }
  114.  
  115.    public String getChannelDirectory() {
  116.       throw new RuntimeException("getChannelDirectory() no longer supported");
  117.    }
  118.  
  119.    public String getServerName() {
  120.       return this.channel.getTransmitter().getAddress();
  121.    }
  122.  
  123.    public String getChannelName() {
  124.       return this.channel.getName();
  125.    }
  126.  
  127.    public synchronized String getParameter(String nm) {
  128.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  129.       Target target = null;
  130.       if (privMgr != null) {
  131.          target = Target.findTarget("MarimbaAppContextTarget");
  132.          if (target != null) {
  133.             privMgr.enablePrivilege(target);
  134.          }
  135.       }
  136.  
  137.       if (this.param == null) {
  138.          this.param = new Props((String)null, (String)null);
  139.          CastanetFile file = this.channel.getFile("parameters.txt");
  140.          if (file != null) {
  141.             InputStream in = file.getInputStream();
  142.  
  143.             try {
  144.                this.param.load(in);
  145.             } catch (IOException var13) {
  146.             } finally {
  147.                try {
  148.                   in.close();
  149.                } catch (IOException var12) {
  150.                }
  151.  
  152.             }
  153.          }
  154.       }
  155.  
  156.       String val = this.param.getProperty(nm);
  157.       return val != null ? val : this.channel.getChannelProperty(nm);
  158.    }
  159.  
  160.    public void installData(String dir) {
  161.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  162.       if (privMgr != null) {
  163.          Target target = Target.findTarget("MarimbaAppContextTarget");
  164.          if (target != null) {
  165.             privMgr.enablePrivilege(target);
  166.          }
  167.       }
  168.  
  169.       this.channel.install(dir);
  170.    }
  171.  
  172.    public boolean appendLog(byte[] data) {
  173.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  174.       if (privMgr != null) {
  175.          Target target = Target.findTarget("MarimbaAppContextTarget");
  176.          if (target != null) {
  177.             privMgr.enablePrivilege(target);
  178.          }
  179.       }
  180.  
  181.       return this.channel.appendLog(data);
  182.    }
  183.  
  184.    public boolean appendLog(String data) {
  185.       int len = data.length();
  186.       byte[] buf = new byte[len];
  187.       data.getBytes(0, len, buf, 0);
  188.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  189.       if (privMgr != null) {
  190.          Target target = Target.findTarget("MarimbaAppContextTarget");
  191.          if (target != null) {
  192.             privMgr.enablePrivilege(target);
  193.          }
  194.       }
  195.  
  196.       return this.appendLog(buf);
  197.    }
  198.  
  199.    public byte[] getProfile() {
  200.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  201.       if (privMgr != null) {
  202.          Target target = Target.findTarget("MarimbaAppContextTarget");
  203.          if (target != null) {
  204.             privMgr.enablePrivilege(target);
  205.          }
  206.       }
  207.  
  208.       return this.channel.getProfile();
  209.    }
  210.  
  211.    public boolean setProfile(byte[] data) {
  212.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  213.       if (privMgr != null) {
  214.          Target target = Target.findTarget("MarimbaAppContextTarget");
  215.          if (target != null) {
  216.             privMgr.enablePrivilege(target);
  217.          }
  218.       }
  219.  
  220.       return this.channel.setProfile(data);
  221.    }
  222.  
  223.    public long publishTime() {
  224.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  225.       if (privMgr != null) {
  226.          Target target = Target.findTarget("MarimbaAppContextTarget");
  227.          if (target != null) {
  228.             privMgr.enablePrivilege(target);
  229.          }
  230.       }
  231.  
  232.       return this.channel.getPublishTime();
  233.    }
  234.  
  235.    public long updateTime() {
  236.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  237.       if (privMgr != null) {
  238.          Target target = Target.findTarget("MarimbaAppContextTarget");
  239.          if (target != null) {
  240.             privMgr.enablePrivilege(target);
  241.          }
  242.       }
  243.  
  244.       return this.channel.getUpdateTime();
  245.    }
  246.  
  247.    public void restart() {
  248.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  249.       if (privMgr != null) {
  250.          Target target = Target.findTarget("MarimbaInternalTarget");
  251.          if (target != null) {
  252.             privMgr.enablePrivilege(target);
  253.          }
  254.       }
  255.  
  256.       this.channel.restart();
  257.    }
  258.  
  259.    public void stop() {
  260.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  261.       if (privMgr != null) {
  262.          Target target = Target.findTarget("MarimbaInternalTarget");
  263.          if (target != null) {
  264.             privMgr.enablePrivilege(target);
  265.          }
  266.       }
  267.  
  268.       this.channel.stop();
  269.    }
  270.  
  271.    public void update() {
  272.       if (this.env.networkEnabled()) {
  273.          PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  274.          if (privMgr != null) {
  275.             Target target = Target.findTarget("MarimbaInternalTarget");
  276.             if (target != null) {
  277.                privMgr.enablePrivilege(target);
  278.             }
  279.          }
  280.  
  281.          this.channel.update();
  282.       }
  283.  
  284.    }
  285.  
  286.    public void startChannel(String serverName, String channelName) {
  287.       new TunerCommand(this.channel.getWorkspace(), 0, serverName, channelName, new String[0]);
  288.    }
  289.  
  290.    public void startChannel(String serverName, String channelName, String[] argv) {
  291.       new TunerCommand(this.channel.getWorkspace(), 0, serverName, channelName, argv);
  292.    }
  293.  
  294.    public void subscribeChannel(String serverName, String channelName) {
  295.       new TunerCommand(this.channel.getWorkspace(), 3, serverName, channelName);
  296.    }
  297.  
  298.    public void unsubscribeChannel(String channelName) {
  299.       new TunerCommand(this.channel.getWorkspace(), 4, this.getServerName(), channelName);
  300.    }
  301.  
  302.    public void removeChannel(String channelName) {
  303.       new TunerCommand(this.channel.getWorkspace(), 6, this.getServerName(), channelName);
  304.    }
  305.  
  306.    public String[] listChannels() {
  307.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  308.       if (privMgr != null) {
  309.          Target target = Target.findTarget("MarimbaAppContextTarget");
  310.          if (target != null) {
  311.             privMgr.enablePrivilege(target);
  312.          }
  313.       }
  314.  
  315.       CastanetChannel[] channels = this.channel.getTransmitter().getChannels(403);
  316.       String[] str = new String[channels.length];
  317.  
  318.       for(int i = channels.length; i-- > 0; str[i] = channels[i].getName()) {
  319.       }
  320.  
  321.       return str;
  322.    }
  323.  
  324.    public String getChannelStatus(String channelName) {
  325.       PrivilegeManager privMgr = PrivilegeManager.getPrivilegeManager();
  326.       Target target = null;
  327.       if (privMgr != null) {
  328.          target = Target.findTarget("MarimbaAppContextTarget");
  329.          if (target != null) {
  330.             privMgr.enablePrivilege(target);
  331.          }
  332.       }
  333.  
  334.       CastanetChannel ch = this.channel.getTransmitter().getChannel(channelName);
  335.       if (target != null) {
  336.          privMgr.disablePrivilege(target);
  337.       }
  338.  
  339.       if (ch != null) {
  340.          switch (ch.getChannelStatus()) {
  341.             case 401:
  342.                return "listed";
  343.             case 402:
  344.                return "unsubscribed";
  345.             case 403:
  346.                return "subscribed";
  347.             case 404:
  348.             case 405:
  349.             case 406:
  350.             case 407:
  351.             case 408:
  352.                return "running";
  353.          }
  354.       }
  355.  
  356.       return null;
  357.    }
  358.  
  359.    public boolean networkEnabled() {
  360.       return this.env.networkEnabled();
  361.    }
  362.  
  363.    public boolean enableNetwork() {
  364.       return this.env.enableNetwork();
  365.    }
  366.  
  367.    public AudioClip getAudioClip(URL url) {
  368.       return this.env.getAudioClip(url);
  369.    }
  370.  
  371.    public Image getImage(URL url) {
  372.       return this.env.getImage(url);
  373.    }
  374.  
  375.    public void showDocument(URL url) {
  376.       this.env.showDocument(url.toExternalForm(), (String)null);
  377.    }
  378.  
  379.    public void showDocument(URL url, String frame) {
  380.       this.env.showDocument(url.toExternalForm(), frame);
  381.    }
  382.  
  383.    public void showDocument(String url) {
  384.       this.env.showDocument(url, (String)null);
  385.    }
  386.  
  387.    public void showDocument(String url, String frame) {
  388.       this.env.showDocument(url, frame);
  389.    }
  390.  
  391.    public void showStatus(String msg) {
  392.       this.env.showStatus(msg);
  393.    }
  394. }
  395.