1 22 package gnu.activation; 23 24 import javax.activation.MimeType ; 26 import java.io.Reader ; 27 import java.io.StreamTokenizer ; 28 import java.util.Hashtable ; 29 30 36 public class MIMETypeParser { 37 38 private static final int STARTLINE = 0; 39 private static final int READTYPE = 1; 40 private static final int READEXT = 2; 41 42 47 public static Hashtable parseStream(Reader reader) { 48 49 Hashtable registry; 51 int state; MimeType mimetype; 53 StreamTokenizer tokens; 54 StringBuffer mimeTypeBuffer; 55 StringBuffer extBuffer; 56 57 registry = new Hashtable (); 59 state = READTYPE; 60 mimetype = null; 61 mimeTypeBuffer = new StringBuffer (); 62 extBuffer = new StringBuffer (); 63 64 tokens = new StreamTokenizer (reader); 66 tokens.commentChar('#'); 67 tokens.eolIsSignificant(true); 68 tokens.wordChars('/', '/'); 69 tokens.wordChars('-', '-'); 70 71 try 72 { 73 while (true) 74 { 75 switch (tokens.nextToken()) 76 { 77 case StreamTokenizer.TT_EOF: 78 return registry; 79 case StreamTokenizer.TT_EOL: 80 switch (state) 81 { 82 case READEXT: 83 state = READTYPE; 85 continue; 86 default: 87 continue; 88 } 89 case StreamTokenizer.TT_WORD: 90 switch(state) 91 { 92 case READTYPE: 93 mimetype = new MimeType (tokens.sval); 95 state = READEXT; 96 continue; 97 case READEXT: 98 registry.put(tokens.sval, mimetype); 101 continue; 102 default: 103 continue; 104 } } } } 108 catch (Exception e) { 109 e.printStackTrace(); 111 } 113 return registry; 115 116 } 118 119 } | Popular Tags |