-
Notifications
You must be signed in to change notification settings - Fork 6
/
CHANGES.txt
191 lines (144 loc) · 9.21 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
CHANGES IN THE 1.6.0 RELEASE
----------------------------
- Added RawInputStream.toByteArray() overload with max bytes to return.
- Reduced memory allocation in RawInputStream.toString() for large streams.
- Added CompressedRTFInputStream class and moved all compressed-RTF related functionality into it.
- Changed RTF decompression end condition to be a self-referencing reference instead of using size field.
- Changed RTF decompression to skip CRC check on uncompressed data.
- Fixed Msg handling of message signature attachments containing an image.
- Fixed Msg processing of multivalued MAPI types (MV_FLAG).
- Fixed MAPIPropName.equals() comparison.
- Added Message.getOEMCodePage() method.
- Fixed handling of attAttachTransportFilename attribute.
- Changed Message.getMAPIProps() to throw IOException.
- Added Exchange property ID constants.
- Improved javadocs and misc. minor refactorings.
CHANGES IN THE 1.5.0 RELEASE
----------------------------
- Changed Msg.processRecipients() to return array instead of List and fixed ClassCastException.
- Added PR_HTML and PR_BODY_HTML properties and their conversion in TNEFMime.
- Made text body parts converted by TNEFMime use the UTF-8 encoding explicitly.
- Fixed RawInputStream mark/reset implementation.
- Added thrown IOException if attribute length is greater than actual available bytes in TNEFInputStream.readAttr().
- Fixed NullPointerException in ReadReceiptHandler when a field is missing.
- Added TNEFMime command line option to directly convert a TNEF attachment into a MIME file.
- Improved documentation, javadocs, formatting and misc. minor refactorings.
CHANGES IN THE 1.4.0 RELEASE
----------------------------
- Fixed attachment filename to be taken from TNEF attributes if it cannot be determined from the MAPI props.
- Added support for converting a contact field with multiple values to multiple vCard fields in ContactHandler.
- Fixed equals-hashCode contract of MAPIPropName.
- Improved documentation, misc. minor fixes and applied some FindBugs recommendations.
- Introduced the GUID class with immutability guarantee and convenience methods, now used wherever guids are needed.
- Fixed RawInputStream to always handle end of stream conditions properly.
- Added initial proof-of-concept .msg file handling in the new msg package and Msg class.
- Fixed Attachment to remove leading GUID only on PT_OBJECTs.
- Added Attr constructor which accepts an arbitrary data object (not just a RawInputStream).
- Added an empty constructor to Message and extracted a read() method for easier subclassing and external use.
- Added an embed parameter to TNEFMime.convert() for making converted TNEF message embedding optional.
CHANGES IN THE 1.3.1 RELEASE
----------------------------
- Fixed TNEFMime conversion when the TNEF attachment is the root mime part, rather than an attachment.
- Added experimental support for read receipt notifications (RFC 2298) in the new ReadReceiptHandler class.
- Added a name field to RawDataSource, which is being used to properly support attachment filenames.
- Reorganized and significantly improved vCard (contact) support in the new ContactHandler class.
- Updated and added many vCard fields, including additional contact devices and X509 certificates.
- Improved documentation and misc. minor fixes.
CHANGES IN THE 1.3.0 RELEASE
----------------------------
- Fixed backward compatibility with JDK 1.3.1.
- Added TNEFUtils.replace() method, which is used instead of String.replaceAll().
- Fixed PR_ATTACH_DATA_OBJ properties to provide the content data without the leading GUID.
- Fixed robustness of reading from streams, using read loop instead of single read.
- Added TNEFUTils.calculateChecksum() overloads that accept a partial byte array or a RawInputStream.
- Improved TNEFInputStream.readAttr() to reuse RawInputStream and avoid reading data into memory.
- Added RawInputStream.readFully() method, and modified RawInputStream to use it internally.
- Added RawInputStream.readXXX() methods for the primitive TNEF types.
- Added MAPIValue.getRawData().
- Changed ByteArrayInputStream returned by MAPIValue.getValue() with PT_OBJECT to RawInputStream.
- Changed internal MAPIValue data to be stored as RawInputStream.
- Added constructors to all objects that parse from a RawInputStream.
- Improved TNEF.main to catch Throwable rather than Exception.
- Modified a RawInputStream constructor contract - it now starts at current position of given RawInputStream.
- Removed byte array constructors.
- Fixed RawInputStream.available(), which is now used internally.
- Modified everything for minimal memory use, by using RawInputStream everywhere.
- Fixed parsing of PT_SHORT type properties.
- Fixed parsing of PT_CLSID type properties.
- Added URL (PR_BUSINESS_HOME_PAGE) to vCard.
- Added common CDO PropSetId GUID constants to MAPIProp for convenient use with MAPIPropNames.
- Added TNEFUtils.toGUID() convenience method to convert a GUID string to a GUID byte array.
- Added overloaded MAPIProp.findProp(), getProp() and getPropValue() methods that work with MAPIPropNames.
- Added MAPIPropName.equals() method.
- Fixed vCard conversion of email field, using the CDO named property.
- Reorganized contact to vCard conversion code.
- Fixed escaped character handling in vCard conversion.
- Updated to vCard version 3.0.
- Added TNEFUtils.calculateCRC32() method and its use in decompressRTF().
- Added BufferedInputStream wrapping for files in RawInputStream.
- Fixed up the javadocs.
CHANGES IN THE 1.2.3 RELEASE
----------------------------
- Added getMAPIProps convenience method to Message.
- Changed atpWord attributes (attMessageClass) to return a string value.
- Added experimental vCard (IPM.Contact) processing in TNEFMime.
- Added RTF bodypart to converted message in TNEFMime if PR_RTF_COMPRESSED property exists.
- Updated Attachment.getFilename javadoc to explicitly mention that filename may be null.
- Added VCARD (IPM.Contact) support in TNEFMime.
- Added text/rtf bodypart when PR_RTF_COMPRESSED property exists in TNEFMime.
- Fixed TNEFMime handling when attachment has no filename.
- Added jtnef.checksum.ignore system property to ignore invalid checksums.
- Added TNEFInputStream.setChecksumIgnore method to ignore invalid checksums.
CHANGES IN THE 1.2.2 RELEASE
----------------------------
- Fixed casting bug in TNEFMime.
- Fixed overwriting of text of inner rfc822 message in TNEFMime.
- Added getPropValue convenience method in MAPIProps.
- Added finalizer in RawInputStream to close the underlying resources when no longer used.
- Added utility method in TNEFUtils to check if a mime type is TNEF (includes application/vnd.ms-tnef).
- Fixed Attachment.writeTo method to use a copy of the stream and leave the main stream untouched.
- Fixed Attachment.writeTo when an attachment has no content.
- Optimized Attachment.writeTo by using a buffer.
- Fixed up the javadocs.
CHANGES IN THE 1.2.1 RELEASE
----------------------------
- Added TNEFUtils.decompressRTF method which can decompress PR_RTF_COMPRESSED properties.
- TNEFInputStream now uses RawInputStream internally to reduce memory footprint.
- Fixed TNEFInputStream when used with file-based constructors (using RawInputStream).
- Fixed TNEFUtils bytes-to-unsigned methods to be truly unsigned.
CHANGES IN THE 1.2 RELEASE
--------------------------
- Added getAttribute(int ID) methods to Message and Attachment for easier access to attributes.
- Attributes of type atpDate are now always in GMT and with 0 milliseconds.
- Fixed attRecipTable attributes with multiple recipients.
- Fixed the MAPIProps unused constructor.
- Added GUID to MAPIPropName display.
- Added MAPIProps container for easier access to property collections.
- Changed MAPIValue.getValue() return object types to better reflect the MAPI types:
PT_INT -> Integer
PT_ERROR -> Integer
PT_BOOLEAN -> Boolean
PT_FLOAT -> Float
PT_DOUBLE -> Double
- Fixed RawInputStream.toByteArray() to work properly when the raw source is a byte array.
- Fixed RawInputStream.newStream() to return proper length for -1 parameter.
- Added TNEFUtils.getU64() method.
- Changed non-Unicode string decoding to use "ISO8859-1" encoding
(see TNEFUtils.createString() JavaDoc). This allows the original bytes to be reconstructed.
CHANGES IN THE 1.1 RELEASE
--------------------------
- TNEFMime command line now takes an options parameter.
- TNEFMime command line supports option to extract a TNEF attachment from a MIME file.
- Added getKey() method to TNEFInputStream to retrieve stream key.
- Fixed handling of named properties of type MNID_STRING.
- Fixed handling of properties of type PT_NULL.
- Fixed Unicode support for properties of type PT_UNICODE_STRING.
- Fixed handling of some multivalued properties (MV_FLAG).
- Added toString() methods to Address, TRPAddress and RawInputStream for friendlier display.
- Limited hex dump length for long binary fields.
- Changed non-Unicode string decoding to use "Cp1252" encoding (see TNEFUtils.createString() JavaDoc).
CHANGES IN THE 1.0 RELEASE
--------------------------
- This is the first release of the Java TNEF package.
- Pre-release versions had a different package name prefix, but now it is
net.freeutils.* in accordance with the Java package naming convention.