namespace.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:5k
源码类别:

Java编程

开发平台:

Java

  1. /*
  2.  * @(#)namespace.java 1.3 03/04/22
  3.  *
  4.  * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  * 
  10.  * - Redistributions of source code must retain the above copyright
  11.  *   notice, this list of conditions and the following disclaimer.
  12.  * 
  13.  * - Redistribution in binary form must reproduce the above copyright
  14.  *   notice, this list of conditions and the following disclaimer in the
  15.  *   documentation and/or other materials provided with the distribution.
  16.  * 
  17.  * Neither the name of Sun Microsystems, Inc. or the names of contributors
  18.  * may be used to endorse or promote products derived from this software
  19.  * without specific prior written permission.
  20.  * 
  21.  * This software is provided "AS IS," without a warranty of any kind. ALL
  22.  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
  23.  * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
  24.  * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND
  25.  * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES OR LIABILITIES
  26.  * SUFFERED BY LICENSEE AS A RESULT OF  OR RELATING TO USE, MODIFICATION
  27.  * OR DISTRIBUTION OF THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
  28.  * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
  29.  * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
  30.  * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
  31.  * ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS
  32.  * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  33.  * 
  34.  * You acknowledge that Software is not designed, licensed or intended
  35.  * for use in the design, construction, operation or maintenance of any
  36.  * nuclear facility.
  37.  */
  38. import java.util.*;
  39. import java.io.*;
  40. import javax.mail.*;
  41. /*
  42.  * Demo app that exercises the namespace interfaces.
  43.  * Show the namespaces supported by a store.
  44.  *
  45.  * @author Bill Shannon
  46.  */
  47. public class namespace {
  48.     static String protocol;
  49.     static String host = null;
  50.     static String user = null;
  51.     static String password = null;
  52.     static String url = null;
  53.     static int port = -1;
  54.     static boolean debug = false;
  55.     public static void main(String argv[]) {
  56. int msgnum = -1;
  57. int optind;
  58. for (optind = 0; optind < argv.length; optind++) {
  59.     if (argv[optind].equals("-T")) {
  60. protocol = argv[++optind];
  61.     } else if (argv[optind].equals("-H")) {
  62. host = argv[++optind];
  63.     } else if (argv[optind].equals("-U")) {
  64. user = argv[++optind];
  65.     } else if (argv[optind].equals("-P")) {
  66. password = argv[++optind];
  67.     } else if (argv[optind].equals("-D")) {
  68. debug = true;
  69.     } else if (argv[optind].equals("-L")) {
  70. url = argv[++optind];
  71.     } else if (argv[optind].equals("-p")) {
  72. port = Integer.parseInt(argv[++optind]);
  73.     } else if (argv[optind].equals("--")) {
  74. optind++;
  75. break;
  76.     } else if (argv[optind].startsWith("-")) {
  77. System.out.println(
  78. "Usage: namespace [-L url] [-T protocol] [-H host] [-p port] [-U user]");
  79. System.out.println(
  80. "t[-P password] [-v] [-D]");
  81. System.exit(1);
  82.     } else {
  83. break;
  84.     }
  85. }
  86.         try {
  87.     // Get a Properties object
  88.     Properties props = System.getProperties();
  89.     // Get a Session object
  90.     Session session = Session.getInstance(props, null);
  91.     session.setDebug(debug);
  92.     // Get a Store object
  93.     Store store = null;
  94.     if (url != null) {
  95. URLName urln = new URLName(url);
  96. store = session.getStore(urln);
  97. store.connect();
  98.     } else {
  99. if (protocol != null)
  100.     store = session.getStore(protocol);
  101. else
  102.     store = session.getStore();
  103. // Connect
  104. if (host != null || user != null || password != null)
  105.     store.connect(host, port, user, password);
  106. else
  107.     store.connect();
  108.     }
  109.     printFolders("Personal", store.getPersonalNamespaces());
  110.     printFolders("User "other"", store.getUserNamespaces("other"));
  111.     printFolders("Shared", store.getSharedNamespaces());
  112.     store.close();
  113. } catch (Exception ex) {
  114.     System.out.println("Oops, got exception! " + ex.getMessage());
  115.     ex.printStackTrace();
  116. }
  117. System.exit(0);
  118.     }
  119.     private static void printFolders(String name, Folder[] folders)
  120. throws MessagingException {
  121. System.out.println(name + " Namespace:");
  122. if (folders == null || folders.length == 0) {
  123.     System.out.println("  <none>");
  124.     return;
  125. }
  126. for (int i = 0; i < folders.length; i++) {
  127.     String fn = folders[i].getFullName();
  128.     if (fn.length() == 0)
  129. fn = "<default folder>";
  130.     System.out.println("  " + fn +
  131. ", delimiter "" + folders[i].getSeparator() + """);
  132. }
  133.     }
  134. }