1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package javax.mail.internet;
21
22
23
24
25
26
27 public class ContentType {
28 private ParameterList _list;
29 private String _minor;
30 private String _major;
31
32 public ContentType() {
33
34 }
35
36 public ContentType(String major, String minor, ParameterList list) {
37 _major = major;
38 _minor = minor;
39 _list = list;
40 }
41
42 public ContentType(String type) throws ParseException {
43
44 HeaderTokenizer tokenizer = new HeaderTokenizer(type, HeaderTokenizer.MIME);
45
46
47 HeaderTokenizer.Token token = tokenizer.next();
48 if (token.getType() != HeaderTokenizer.Token.ATOM) {
49 throw new ParseException("Invalid content type");
50 }
51
52 _major = token.getValue();
53
54
55 token = tokenizer.next();
56 if (token.getType() != '/') {
57 throw new ParseException("Invalid content type");
58 }
59
60
61
62 token = tokenizer.next();
63 if (token.getType() != HeaderTokenizer.Token.ATOM) {
64 throw new ParseException("Invalid content type");
65 }
66
67 _minor = token.getValue();
68
69
70 String remainder = tokenizer.getRemainder();
71 if (remainder != null) {
72 _list = new ParameterList(remainder);
73 }
74 }
75
76 public String getPrimaryType() {
77 return _major;
78 }
79
80 public String getSubType() {
81 return _minor;
82 }
83
84 public String getBaseType() {
85 return _major + "/" + _minor;
86 }
87
88 public String getParameter(String name) {
89 return (_list == null ? null : _list.get(name));
90 }
91
92 public ParameterList getParameterList() {
93 return _list;
94 }
95
96 public void setPrimaryType(String major) {
97 _major = major;
98 }
99
100 public void setSubType(String minor) {
101 _minor = minor;
102 }
103
104 public void setParameter(String name, String value) {
105 if (_list == null) {
106 _list = new ParameterList();
107 }
108 _list.set(name, value);
109 }
110
111 public void setParameterList(ParameterList list) {
112 _list = list;
113 }
114
115 public String toString() {
116 if (_major == null || _minor == null) {
117 return null;
118 }
119
120
121
122
123 String baseType = getBaseType();
124 if (_list != null) {
125 baseType += _list.toString(baseType.length() + "Content-Type: ".length());
126 }
127
128 return baseType;
129 }
130
131 public boolean match(ContentType other) {
132 return _major.equalsIgnoreCase(other._major)
133 && (_minor.equalsIgnoreCase(other._minor)
134 || _minor.equals("*")
135 || other._minor.equals("*"));
136 }
137
138 public boolean match(String contentType) {
139 try {
140 return match(new ContentType(contentType));
141 } catch (ParseException e) {
142 return false;
143 }
144 }
145 }