home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / activation / MailcapCommandMap.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  7.6 KB  |  503 lines

  1. package javax.activation;
  2.  
  3. import com.sun.activation.registries.LogSupport;
  4. import com.sun.activation.registries.MailcapFile;
  5. import java.io.File;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.net.URL;
  9. import java.util.ArrayList;
  10. import java.util.Iterator;
  11. import java.util.List;
  12. import java.util.Map;
  13.  
  14. public class MailcapCommandMap extends CommandMap {
  15.    private static MailcapFile defDB = null;
  16.    // $FF: renamed from: DB com.sun.activation.registries.MailcapFile[]
  17.    private MailcapFile[] field_0;
  18.    private static final int PROG = 0;
  19.  
  20.    public MailcapCommandMap() {
  21.       ArrayList var1 = new ArrayList(5);
  22.       Object var2 = null;
  23.       var1.add((Object)null);
  24.       LogSupport.log("MailcapCommandMap: load HOME");
  25.  
  26.       try {
  27.          String var3 = System.getProperty("user.home");
  28.          if (var3 != null) {
  29.             String var4 = var3 + File.separator + ".mailcap";
  30.             MailcapFile var9 = this.loadFile(var4);
  31.             if (var9 != null) {
  32.                var1.add(var9);
  33.             }
  34.          }
  35.       } catch (SecurityException var7) {
  36.       }
  37.  
  38.       LogSupport.log("MailcapCommandMap: load SYS");
  39.  
  40.       try {
  41.          String var11 = System.getProperty("java.home") + File.separator + "lib" + File.separator + "mailcap";
  42.          MailcapFile var10 = this.loadFile(var11);
  43.          if (var10 != null) {
  44.             var1.add(var10);
  45.          }
  46.       } catch (SecurityException var6) {
  47.       }
  48.  
  49.       LogSupport.log("MailcapCommandMap: load JAR");
  50.       this.loadAllResources(var1, "META-INF/mailcap");
  51.       LogSupport.log("MailcapCommandMap: load DEF");
  52.       synchronized(MailcapCommandMap.class) {
  53.          if (defDB == null) {
  54.             defDB = this.loadResource("/META-INF/mailcap.default");
  55.          }
  56.       }
  57.  
  58.       if (defDB != null) {
  59.          var1.add(defDB);
  60.       }
  61.  
  62.       this.field_0 = new MailcapFile[var1.size()];
  63.       this.field_0 = (MailcapFile[])var1.toArray(this.field_0);
  64.    }
  65.  
  66.    private MailcapFile loadResource(String var1) {
  67.       InputStream var2 = null;
  68.  
  69.       MailcapFile var4;
  70.       try {
  71.          var2 = SecuritySupport.getResourceAsStream(this.getClass(), var1);
  72.          if (var2 == null) {
  73.             if (LogSupport.isLoggable()) {
  74.                LogSupport.log("MailcapCommandMap: not loading mailcap file: " + var1);
  75.             }
  76.  
  77.             return null;
  78.          }
  79.  
  80.          MailcapFile var3 = new MailcapFile(var2);
  81.          if (LogSupport.isLoggable()) {
  82.             LogSupport.log("MailcapCommandMap: successfully loaded mailcap file: " + var1);
  83.          }
  84.  
  85.          var4 = var3;
  86.       } catch (IOException var17) {
  87.          if (LogSupport.isLoggable()) {
  88.             LogSupport.log("MailcapCommandMap: can't load " + var1, var17);
  89.          }
  90.  
  91.          return null;
  92.       } catch (SecurityException var18) {
  93.          if (LogSupport.isLoggable()) {
  94.             LogSupport.log("MailcapCommandMap: can't load " + var1, var18);
  95.          }
  96.  
  97.          return null;
  98.       } finally {
  99.          try {
  100.             if (var2 != null) {
  101.                var2.close();
  102.             }
  103.          } catch (IOException var16) {
  104.          }
  105.  
  106.       }
  107.  
  108.       return var4;
  109.    }
  110.  
  111.    private void loadAllResources(List var1, String var2) {
  112.       boolean var3 = false;
  113.  
  114.       try {
  115.          Object var5 = null;
  116.          ClassLoader var26 = SecuritySupport.getContextClassLoader();
  117.          if (var26 == null) {
  118.             var26 = this.getClass().getClassLoader();
  119.          }
  120.  
  121.          URL[] var4;
  122.          if (var26 != null) {
  123.             var4 = SecuritySupport.getResources(var26, var2);
  124.          } else {
  125.             var4 = SecuritySupport.getSystemResources(var2);
  126.          }
  127.  
  128.          if (var4 != null) {
  129.             if (LogSupport.isLoggable()) {
  130.                LogSupport.log("MailcapCommandMap: getResources");
  131.             }
  132.  
  133.             for(int var6 = 0; var6 < var4.length; ++var6) {
  134.                URL var7 = var4[var6];
  135.                InputStream var8 = null;
  136.                if (LogSupport.isLoggable()) {
  137.                   LogSupport.log("MailcapCommandMap: URL " + var7);
  138.                }
  139.  
  140.                try {
  141.                   var8 = SecuritySupport.openStream(var7);
  142.                   if (var8 != null) {
  143.                      var1.add(new MailcapFile(var8));
  144.                      var3 = true;
  145.                      if (LogSupport.isLoggable()) {
  146.                         LogSupport.log("MailcapCommandMap: successfully loaded mailcap file from URL: " + var7);
  147.                      }
  148.                   } else if (LogSupport.isLoggable()) {
  149.                      LogSupport.log("MailcapCommandMap: not loading mailcap file from URL: " + var7);
  150.                   }
  151.                } catch (IOException var21) {
  152.                   if (LogSupport.isLoggable()) {
  153.                      LogSupport.log("MailcapCommandMap: can't load " + var7, var21);
  154.                   }
  155.                } catch (SecurityException var22) {
  156.                   if (LogSupport.isLoggable()) {
  157.                      LogSupport.log("MailcapCommandMap: can't load " + var7, var22);
  158.                   }
  159.                } finally {
  160.                   try {
  161.                      if (var8 != null) {
  162.                         var8.close();
  163.                      }
  164.                   } catch (IOException var20) {
  165.                   }
  166.  
  167.                }
  168.             }
  169.          }
  170.       } catch (Exception var24) {
  171.          if (LogSupport.isLoggable()) {
  172.             LogSupport.log("MailcapCommandMap: can't load " + var2, var24);
  173.          }
  174.       }
  175.  
  176.       if (!var3) {
  177.          if (LogSupport.isLoggable()) {
  178.             LogSupport.log("MailcapCommandMap: !anyLoaded");
  179.          }
  180.  
  181.          MailcapFile var25 = this.loadResource("/" + var2);
  182.          if (var25 != null) {
  183.             var1.add(var25);
  184.          }
  185.       }
  186.  
  187.    }
  188.  
  189.    private MailcapFile loadFile(String var1) {
  190.       MailcapFile var2 = null;
  191.  
  192.       try {
  193.          var2 = new MailcapFile(var1);
  194.       } catch (IOException var4) {
  195.       }
  196.  
  197.       return var2;
  198.    }
  199.  
  200.    public MailcapCommandMap(String var1) throws IOException {
  201.       this();
  202.       if (LogSupport.isLoggable()) {
  203.          LogSupport.log("MailcapCommandMap: load PROG from " + var1);
  204.       }
  205.  
  206.       if (this.field_0[0] == null) {
  207.          this.field_0[0] = new MailcapFile(var1);
  208.       }
  209.  
  210.    }
  211.  
  212.    public MailcapCommandMap(InputStream var1) {
  213.       this();
  214.       LogSupport.log("MailcapCommandMap: load PROG");
  215.       if (this.field_0[0] == null) {
  216.          try {
  217.             this.field_0[0] = new MailcapFile(var1);
  218.          } catch (IOException var3) {
  219.          }
  220.       }
  221.  
  222.    }
  223.  
  224.    public synchronized CommandInfo[] getPreferredCommands(String var1) {
  225.       ArrayList var2 = new ArrayList();
  226.       if (var1 != null) {
  227.          var1 = var1.toLowerCase();
  228.       }
  229.  
  230.       for(int var3 = 0; var3 < this.field_0.length; ++var3) {
  231.          if (this.field_0[var3] != null) {
  232.             Map var4 = this.field_0[var3].getMailcapList(var1);
  233.             if (var4 != null) {
  234.                this.appendPrefCmdsToList(var4, var2);
  235.             }
  236.          }
  237.       }
  238.  
  239.       for(int var5 = 0; var5 < this.field_0.length; ++var5) {
  240.          if (this.field_0[var5] != null) {
  241.             Map var8 = this.field_0[var5].getMailcapFallbackList(var1);
  242.             if (var8 != null) {
  243.                this.appendPrefCmdsToList(var8, var2);
  244.             }
  245.          }
  246.       }
  247.  
  248.       CommandInfo[] var6 = new CommandInfo[var2.size()];
  249.       var6 = (CommandInfo[])var2.toArray(var6);
  250.       return var6;
  251.    }
  252.  
  253.    private void appendPrefCmdsToList(Map var1, List var2) {
  254.       for(String var4 : var1.keySet()) {
  255.          if (!this.checkForVerb(var2, var4)) {
  256.             List var5 = (List)var1.get(var4);
  257.             String var6 = (String)var5.get(0);
  258.             var2.add(new CommandInfo(var4, var6));
  259.          }
  260.       }
  261.  
  262.    }
  263.  
  264.    private boolean checkForVerb(List var1, String var2) {
  265.       Iterator var3 = var1.iterator();
  266.  
  267.       while(var3.hasNext()) {
  268.          String var4 = ((CommandInfo)var3.next()).getCommandName();
  269.          if (var4.equals(var2)) {
  270.             return true;
  271.          }
  272.       }
  273.  
  274.       return false;
  275.    }
  276.  
  277.    public synchronized CommandInfo[] getAllCommands(String var1) {
  278.       ArrayList var2 = new ArrayList();
  279.       if (var1 != null) {
  280.          var1 = var1.toLowerCase();
  281.       }
  282.  
  283.       for(int var3 = 0; var3 < this.field_0.length; ++var3) {
  284.          if (this.field_0[var3] != null) {
  285.             Map var4 = this.field_0[var3].getMailcapList(var1);
  286.             if (var4 != null) {
  287.                this.appendCmdsToList(var4, var2);
  288.             }
  289.          }
  290.       }
  291.  
  292.       for(int var5 = 0; var5 < this.field_0.length; ++var5) {
  293.          if (this.field_0[var5] != null) {
  294.             Map var8 = this.field_0[var5].getMailcapFallbackList(var1);
  295.             if (var8 != null) {
  296.                this.appendCmdsToList(var8, var2);
  297.             }
  298.          }
  299.       }
  300.  
  301.       CommandInfo[] var6 = new CommandInfo[var2.size()];
  302.       var6 = (CommandInfo[])var2.toArray(var6);
  303.       return var6;
  304.    }
  305.  
  306.    private void appendCmdsToList(Map var1, List var2) {
  307.       for(String var4 : var1.keySet()) {
  308.          for(String var7 : (List)var1.get(var4)) {
  309.             var2.add(new CommandInfo(var4, var7));
  310.          }
  311.       }
  312.  
  313.    }
  314.  
  315.    public synchronized CommandInfo getCommand(String var1, String var2) {
  316.       if (var1 != null) {
  317.          var1 = var1.toLowerCase();
  318.       }
  319.  
  320.       for(int var3 = 0; var3 < this.field_0.length; ++var3) {
  321.          if (this.field_0[var3] != null) {
  322.             Map var4 = this.field_0[var3].getMailcapList(var1);
  323.             if (var4 != null) {
  324.                List var5 = (List)var4.get(var2);
  325.                if (var5 != null) {
  326.                   String var6 = (String)var5.get(0);
  327.                   if (var6 != null) {
  328.                      return new CommandInfo(var2, var6);
  329.                   }
  330.                }
  331.             }
  332.          }
  333.       }
  334.  
  335.       for(int var7 = 0; var7 < this.field_0.length; ++var7) {
  336.          if (this.field_0[var7] != null) {
  337.             Map var8 = this.field_0[var7].getMailcapFallbackList(var1);
  338.             if (var8 != null) {
  339.                List var9 = (List)var8.get(var2);
  340.                if (var9 != null) {
  341.                   String var10 = (String)var9.get(0);
  342.                   if (var10 != null) {
  343.                      return new CommandInfo(var2, var10);
  344.                   }
  345.                }
  346.             }
  347.          }
  348.       }
  349.  
  350.       return null;
  351.    }
  352.  
  353.    public synchronized void addMailcap(String var1) {
  354.       LogSupport.log("MailcapCommandMap: add to PROG");
  355.       if (this.field_0[0] == null) {
  356.          this.field_0[0] = new MailcapFile();
  357.       }
  358.  
  359.       this.field_0[0].appendToMailcap(var1);
  360.    }
  361.  
  362.    public synchronized DataContentHandler createDataContentHandler(String var1) {
  363.       if (LogSupport.isLoggable()) {
  364.          LogSupport.log("MailcapCommandMap: createDataContentHandler for " + var1);
  365.       }
  366.  
  367.       if (var1 != null) {
  368.          var1 = var1.toLowerCase();
  369.       }
  370.  
  371.       for(int var2 = 0; var2 < this.field_0.length; ++var2) {
  372.          if (this.field_0[var2] != null) {
  373.             if (LogSupport.isLoggable()) {
  374.                LogSupport.log("  search DB #" + var2);
  375.             }
  376.  
  377.             Map var3 = this.field_0[var2].getMailcapList(var1);
  378.             if (var3 != null) {
  379.                List var4 = (List)var3.get("content-handler");
  380.                if (var4 != null) {
  381.                   String var5 = (String)var4.get(0);
  382.                   DataContentHandler var6 = this.getDataContentHandler(var5);
  383.                   if (var6 != null) {
  384.                      return var6;
  385.                   }
  386.                }
  387.             }
  388.          }
  389.       }
  390.  
  391.       for(int var7 = 0; var7 < this.field_0.length; ++var7) {
  392.          if (this.field_0[var7] != null) {
  393.             if (LogSupport.isLoggable()) {
  394.                LogSupport.log("  search fallback DB #" + var7);
  395.             }
  396.  
  397.             Map var8 = this.field_0[var7].getMailcapFallbackList(var1);
  398.             if (var8 != null) {
  399.                List var9 = (List)var8.get("content-handler");
  400.                if (var9 != null) {
  401.                   String var10 = (String)var9.get(0);
  402.                   DataContentHandler var11 = this.getDataContentHandler(var10);
  403.                   if (var11 != null) {
  404.                      return var11;
  405.                   }
  406.                }
  407.             }
  408.          }
  409.       }
  410.  
  411.       return null;
  412.    }
  413.  
  414.    private DataContentHandler getDataContentHandler(String var1) {
  415.       if (LogSupport.isLoggable()) {
  416.          LogSupport.log("    got content-handler");
  417.       }
  418.  
  419.       if (LogSupport.isLoggable()) {
  420.          LogSupport.log("      class " + var1);
  421.       }
  422.  
  423.       try {
  424.          Object var2 = null;
  425.          ClassLoader var9 = SecuritySupport.getContextClassLoader();
  426.          if (var9 == null) {
  427.             var9 = this.getClass().getClassLoader();
  428.          }
  429.  
  430.          Object var3 = null;
  431.  
  432.          try {
  433.             var10 = var9.loadClass(var1);
  434.          } catch (Exception var5) {
  435.             var10 = Class.forName(var1);
  436.          }
  437.  
  438.          if (var10 != null) {
  439.             return (DataContentHandler)var10.newInstance();
  440.          }
  441.       } catch (IllegalAccessException var6) {
  442.          if (LogSupport.isLoggable()) {
  443.             LogSupport.log("Can't load DCH " + var1, var6);
  444.          }
  445.       } catch (ClassNotFoundException var7) {
  446.          if (LogSupport.isLoggable()) {
  447.             LogSupport.log("Can't load DCH " + var1, var7);
  448.          }
  449.       } catch (InstantiationException var8) {
  450.          if (LogSupport.isLoggable()) {
  451.             LogSupport.log("Can't load DCH " + var1, var8);
  452.          }
  453.       }
  454.  
  455.       return null;
  456.    }
  457.  
  458.    public synchronized String[] getMimeTypes() {
  459.       ArrayList var1 = new ArrayList();
  460.  
  461.       for(int var2 = 0; var2 < this.field_0.length; ++var2) {
  462.          if (this.field_0[var2] != null) {
  463.             String[] var3 = this.field_0[var2].getMimeTypes();
  464.             if (var3 != null) {
  465.                for(int var4 = 0; var4 < var3.length; ++var4) {
  466.                   if (!var1.contains(var3[var4])) {
  467.                      var1.add(var3[var4]);
  468.                   }
  469.                }
  470.             }
  471.          }
  472.       }
  473.  
  474.       String[] var5 = new String[var1.size()];
  475.       var5 = (String[])var1.toArray(var5);
  476.       return var5;
  477.    }
  478.  
  479.    public synchronized String[] getNativeCommands(String var1) {
  480.       ArrayList var2 = new ArrayList();
  481.       if (var1 != null) {
  482.          var1 = var1.toLowerCase();
  483.       }
  484.  
  485.       for(int var3 = 0; var3 < this.field_0.length; ++var3) {
  486.          if (this.field_0[var3] != null) {
  487.             String[] var4 = this.field_0[var3].getNativeCommands(var1);
  488.             if (var4 != null) {
  489.                for(int var5 = 0; var5 < var4.length; ++var5) {
  490.                   if (!var2.contains(var4[var5])) {
  491.                      var2.add(var4[var5]);
  492.                   }
  493.                }
  494.             }
  495.          }
  496.       }
  497.  
  498.       String[] var6 = new String[var2.size()];
  499.       var6 = (String[])var2.toArray(var6);
  500.       return var6;
  501.    }
  502. }
  503.