Merge lp:~toxn/groundhog/trunk-fr into lp:~juanjux/groundhog/trunk

Proposed by Toxico Nimbus
Status: Needs review
Proposed branch: lp:~toxn/groundhog/trunk-fr
Merge into: lp:~juanjux/groundhog/trunk
Diff against target: 233642 lines
To merge this branch: bzr merge lp:~toxn/groundhog/trunk-fr
Reviewer Review Type Date Requested Status
juanjux Approve
Review via email: mp+88046@code.launchpad.net

This proposal supersedes a proposal from 2012-01-10.

Description of the change

Translated to french (including string arrays)
Translation is approx 50% validated (work in progress)
Moved 2 hard coded strings to resource ("New Post" menu item and "Search Matching Groups")

Changed Apache Harmony's default TrustManager to Sun's one (that's really a compiling comodity as I didn't want to install the whole HDK, feel free not to merge that).

To post a comment you must log in.
Revision history for this message
juanjux (juanjux) wrote : Posted in a previous version of this proposal

Thanks, I'll test and merge it today.

On Tue, Jan 10, 2012 at 1:45 PM, Toxico Nimbus <email address hidden> wrote:

> Toxico Nimbus has proposed merging lp:~toxn/groundhog/trunk-fr into
> lp:groundhog.
>
> Requested reviews:
> juanjux (juanjux)
>
> For more details, see:
> https://code.launchpad.net/~toxn/groundhog/trunk-fr/+merge/88043<https://code.launchpad.net/%7Etoxn/groundhog/trunk-fr/+merge/88043>
>
> Translated to french (including string arrays)
> Translation is approx 50% validated (work in progress)
> Moved 2 hard coded strings to resource ("New Post" menu item and "Search
> Matching Groups")
>
> Changed Apache Harmony's default TrustManager to Sun's one (that's really
> a compiling comodity as I didn't want to install the whole HDK, feel free
> not to merge that).
> --
> https://code.launchpad.net/~toxn/groundhog/trunk-fr/+merge/88043<https://code.launchpad.net/%7Etoxn/groundhog/trunk-fr/+merge/88043>
> You are requested to review the proposed merge of
> lp:~toxn/groundhog/trunk-fr into lp:groundhog.
>

Revision history for this message
juanjux (juanjux) wrote : Posted in a previous version of this proposal

Looks good

review: Approve
Revision history for this message
juanjux (juanjux) :
review: Approve
Revision history for this message
Toxico Nimbus (toxn) wrote :

Le mercredi 11 janvier 2012 12:10:32, vous avez écrit :
> Review: Approve

Glad you like it !

Unmerged revisions

66. By Toxico Nimbus

Resolved some merging conflicts.

65. By Toxico Nimbus

100% translated to french (including string arrays) approx 50% verified
moved 2 hard-coded string to ressources
switched default TrustManager to sun's to avoid use of apache harmony.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'GroundhogReader/.classpath'
2--- GroundhogReader/.classpath 2010-11-04 00:50:46 +0000
3+++ GroundhogReader/.classpath 2012-01-10 12:37:24 +0000
4@@ -8,6 +8,7 @@
5 <classpathentry kind="src" path="gen"/>
6 <classpathentry exported="true" kind="lib" path="libs/apache-mime4j-0.6.jar" sourcepath="/home/juanjux/reader/GroundhogReader/apache-mime4j-0.6"/>
7 <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/API 7 extra libraries"/>
8- <classpathentry kind="lib" path="/home/juanjux/reader/GroundhogReader/libs/shared-bouncycastle-reduced-0.9.12.jar"/>
9- <classpathentry kind="output" path="bin"/>
10+ <classpathentry kind="lib" path="libs/shared-bouncycastle-reduced-0.9.12.jar"/>
11+ <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
12+ <classpathentry kind="output" path="bin/classes"/>
13 </classpath>
14
15=== modified file 'GroundhogReader/AndroidManifest.xml'
16--- GroundhogReader/AndroidManifest.xml 2010-11-04 00:50:46 +0000
17+++ GroundhogReader/AndroidManifest.xml 2012-01-10 12:37:24 +0000
18@@ -1,125 +1,145 @@
19 <?xml version="1.0" encoding="utf-8"?>
20 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
21- package="com.almarsoft.GroundhogReader"
22- android:versionName="1.20.1 (SSL connection supported, thanks Nick Booker)" android:versionCode="62"
23- android:installLocation="auto"
24- >
25-
26- <uses-sdk android:minSdkVersion="4"/>
27-
28- <supports-screens
29- android:smallScreens="true"
30- android:normalScreens="true"
31- android:largeScreens="true"
32- android:anyDensity="true"
33- />
34-
35- <uses-permission android:name="android.permission.INTERNET" />
36+ android:installLocation="auto"
37+ package="com.almarsoft.GroundhogReader"
38+ android:versionCode="65"
39+ android:versionName="1.20.4" >
40+
41+ <uses-sdk android:minSdkVersion="4" />
42+
43+ <supports-screens
44+ android:anyDensity="true"
45+ android:largeScreens="true"
46+ android:normalScreens="true"
47+ android:smallScreens="true" />
48+
49+ <uses-permission android:name="android.permission.INTERNET" />
50 <uses-permission android:name="android.permission.WAKE_LOCK" />
51 <uses-permission android:name="android.permission.VIBRATE" />
52 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
53 <uses-permission android:name="android.permission.STORAGE" />
54 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
55-
56- <application android:icon="@drawable/icon"
57- android:label="@string/app_name"
58- android:theme="@android:style/Theme.Light.NoTitleBar"
59- android:name=".lib.GroundhogApplication">
60-
61- <receiver android:name=".GroupsCheckAlarmReceiver" android:process=":remote" />
62-
63- <receiver android:name=".BootReceiver">
64- <intent-filter>
65- <action android:name="android.intent.action.BOOT_COMPLETED" />
66- <category android:name="android.intent.category.DEFAULT" />
67- </intent-filter>
68- </receiver>
69-
70- <activity android:name=".GroupListActivity" android:label="Groundhog Newsreader" android:configChanges="keyboardHidden|orientation">
71- <intent-filter>
72- <action android:name="android.intent.action.MAIN" />
73+
74+ <application
75+ android:icon="@drawable/icon"
76+ android:label="@string/app_name"
77+ android:name=".lib.GroundhogApplication"
78+ android:theme="@android:style/Theme.Light.NoTitleBar" >
79+ <receiver
80+ android:name=".GroupsCheckAlarmReceiver"
81+ android:process=":remote" />
82+ <receiver android:name=".BootReceiver" >
83+ <intent-filter >
84+ <action android:name="android.intent.action.BOOT_COMPLETED" />
85+
86+ <category android:name="android.intent.category.DEFAULT" />
87+ </intent-filter>
88+ </receiver>
89+
90+ <activity
91+ android:configChanges="keyboardHidden|orientation"
92+ android:label="Groundhog Newsreader"
93+ android:name=".GroupListActivity" >
94+ <intent-filter >
95+ <action android:name="android.intent.action.MAIN" />
96+
97 <category android:name="android.intent.category.LAUNCHER" />
98 </intent-filter>
99 </activity>
100-
101- <activity android:name=".MessageListActivity"
102- android:label="Message List"
103- android:configChanges="keyboardHidden|orientation">
104- <intent-filter>
105- <action android:name="android.intent.action.MAIN" />
106- <category android:name="android.intent.category.DEFAULT" />
107- </intent-filter>
108- </activity>
109-
110-
111- <activity android:name=".MessageActivity"
112- android:label="Read Message"
113- android:configChanges="keyboardHidden|orientation">
114- <intent-filter>
115- <action android:name="android.intent.action.MAIN" />
116- <category android:name="android.intent.category.DEFAULT" />
117- </intent-filter>
118- </activity>
119-
120-
121- <activity android:name=".OptionsActivity"
122- android:label="Settings"
123- android:theme="@android:style/Theme.Black">
124- <intent-filter>
125- <action android:name="android.intent.action.MAIN" />
126- <category android:name="android.intent.category.DEFAULT" />
127- </intent-filter>
128- </activity>
129-
130- <activity android:name=".CharsetActivity" android:label="Posting Charset">
131- <intent-filter>
132- <action android:name="android.intent.action.MAIN" />
133- <category android:name="android.intent.category.DEFAULT" />
134- </intent-filter>
135- </activity>
136-
137- <activity android:name=".ReadCharsetActivity" android:label="Posting Charset">
138- <intent-filter>
139- <action android:name="android.intent.action.MAIN" />
140- <category android:name="android.intent.category.DEFAULT" />
141- </intent-filter>
142- </activity>
143-
144- <activity android:name=".SubscribeActivity" android:configChanges="keyboardHidden|orientation">
145-
146- <intent-filter>
147- <action android:name="android.intent.action.MAIN" />
148- <category android:name="android.intent.category.DEFAULT" />
149-
150- </intent-filter>
151- </activity>
152-
153- <activity android:name=".ComposeActivity" android:label="Compose Message" android:configChanges="keyboardHidden|orientation">
154- <intent-filter>
155- <action android:name="android.intent.action.MAIN" />
156- <category android:name="android.intent.category.DEFAULT" />
157- </intent-filter>
158- </activity>
159-
160- <activity android:name=".BannedActivity" android:label="Unban">
161- <intent-filter>
162- <action android:name="android.intent.action.MAIN" />
163- <category android:name="android.intent.category.DEFAULT" />
164- </intent-filter>
165- </activity>
166-
167- <activity android:name=".QuotingActivity" android:label="Select lines to quote">
168- <intent-filter>
169- <action android:name="android.intent.action.MAIN" />
170- <category android:name="android.intent.category.DEFAULT" />
171- </intent-filter>
172- </activity>
173-
174- <activity android:name=".HelpActivity" android:label="Quick Help">
175- <intent-filter>
176- <action android:name="android.intent.action.MAIN" />
177- <category android:name="android.intent.category.DEFAULT" />
178- </intent-filter>
179- </activity>
180+ <activity
181+ android:configChanges="keyboardHidden|orientation"
182+ android:label="Message List"
183+ android:name=".MessageListActivity" >
184+ <intent-filter >
185+ <action android:name="android.intent.action.MAIN" />
186+
187+ <category android:name="android.intent.category.DEFAULT" />
188+ </intent-filter>
189+ </activity>
190+ <activity
191+ android:configChanges="keyboardHidden|orientation"
192+ android:label="Read Message"
193+ android:name=".MessageActivity" >
194+ <intent-filter >
195+ <action android:name="android.intent.action.MAIN" />
196+
197+ <category android:name="android.intent.category.DEFAULT" />
198+ </intent-filter>
199+ </activity>
200+ <activity
201+ android:label="Settings"
202+ android:name=".OptionsActivity"
203+ android:theme="@android:style/Theme.Black" >
204+ <intent-filter >
205+ <action android:name="android.intent.action.MAIN" />
206+
207+ <category android:name="android.intent.category.DEFAULT" />
208+ </intent-filter>
209+ </activity>
210+ <activity
211+ android:label="Posting Charset"
212+ android:name=".CharsetActivity" >
213+ <intent-filter >
214+ <action android:name="android.intent.action.MAIN" />
215+
216+ <category android:name="android.intent.category.DEFAULT" />
217+ </intent-filter>
218+ </activity>
219+ <activity
220+ android:label="Posting Charset"
221+ android:name=".ReadCharsetActivity" >
222+ <intent-filter >
223+ <action android:name="android.intent.action.MAIN" />
224+
225+ <category android:name="android.intent.category.DEFAULT" />
226+ </intent-filter>
227+ </activity>
228+ <activity
229+ android:configChanges="keyboardHidden|orientation"
230+ android:name=".SubscribeActivity" >
231+ <intent-filter >
232+ <action android:name="android.intent.action.MAIN" />
233+
234+ <category android:name="android.intent.category.DEFAULT" />
235+ </intent-filter>
236+ </activity>
237+ <activity
238+ android:configChanges="keyboardHidden|orientation"
239+ android:label="Compose Message"
240+ android:name=".ComposeActivity" >
241+ <intent-filter >
242+ <action android:name="android.intent.action.MAIN" />
243+
244+ <category android:name="android.intent.category.DEFAULT" />
245+ </intent-filter>
246+ </activity>
247+ <activity
248+ android:label="Unban"
249+ android:name=".BannedActivity" >
250+ <intent-filter >
251+ <action android:name="android.intent.action.MAIN" />
252+
253+ <category android:name="android.intent.category.DEFAULT" />
254+ </intent-filter>
255+ </activity>
256+ <activity
257+ android:label="Select lines to quote"
258+ android:name=".QuotingActivity" >
259+ <intent-filter >
260+ <action android:name="android.intent.action.MAIN" />
261+
262+ <category android:name="android.intent.category.DEFAULT" />
263+ </intent-filter>
264+ </activity>
265+ <activity
266+ android:label="Quick Help"
267+ android:name=".HelpActivity" >
268+ <intent-filter >
269+ <action android:name="android.intent.action.MAIN" />
270+
271+ <category android:name="android.intent.category.DEFAULT" />
272+ </intent-filter>
273+ </activity>
274 </application>
275-</manifest>
276+
277+</manifest>
278\ No newline at end of file
279
280=== removed directory 'GroundhogReader/apache-mime4j-0.6'
281=== removed file 'GroundhogReader/apache-mime4j-0.6/BUILDING.txt'
282--- GroundhogReader/apache-mime4j-0.6/BUILDING.txt 2010-03-14 02:32:45 +0000
283+++ GroundhogReader/apache-mime4j-0.6/BUILDING.txt 1970-01-01 00:00:00 +0000
284@@ -1,44 +0,0 @@
285-Building Apache Mime4j
286-======================
287-
288-(1) Requisites
289---------------
290-Mime4j utilizes Maven 2 as a distribution management and packaging tool. Version 2.0.7
291-or above is recommended.
292-
293-JDK 1.5 or above is required in order to compile Mime4j.
294-
295-Maven installation and configuration instructions can be found here:
296-
297-http://maven.apache.org/run-maven/index.html
298-
299-(2) Executing test cases
300-
301-Execute the following command in order to compile and test the components:
302-
303-mvn test
304-
305-(3) Building packages
306-
307-Execute the following command in order to build JAR and assembly packages:
308-
309-mvn package
310-
311-One can also utilize the 'local' profile to build JAR and assembly packages
312-in the off-line mode:
313-
314-mvn -Plocal package
315-
316-Redistributables will be placed in the target folder.
317-
318-(4) Building documentation
319-
320-Execute the following command in order to generate javadoc:
321-
322-mvn javadoc:javadoc
323-
324-(5) Building project web site
325-
326-Execute the following command in order to generate the project web site:
327-
328-mvn site
329\ No newline at end of file
330
331=== removed file 'GroundhogReader/apache-mime4j-0.6/LICENSE.txt'
332--- GroundhogReader/apache-mime4j-0.6/LICENSE.txt 2010-03-14 02:32:45 +0000
333+++ GroundhogReader/apache-mime4j-0.6/LICENSE.txt 1970-01-01 00:00:00 +0000
334@@ -1,451 +0,0 @@
335- Apache License
336- Version 2.0, January 2004
337- http://www.apache.org/licenses/
338-
339- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
340-
341- 1. Definitions.
342-
343- "License" shall mean the terms and conditions for use, reproduction,
344- and distribution as defined by Sections 1 through 9 of this document.
345-
346- "Licensor" shall mean the copyright owner or entity authorized by
347- the copyright owner that is granting the License.
348-
349- "Legal Entity" shall mean the union of the acting entity and all
350- other entities that control, are controlled by, or are under common
351- control with that entity. For the purposes of this definition,
352- "control" means (i) the power, direct or indirect, to cause the
353- direction or management of such entity, whether by contract or
354- otherwise, or (ii) ownership of fifty percent (50%) or more of the
355- outstanding shares, or (iii) beneficial ownership of such entity.
356-
357- "You" (or "Your") shall mean an individual or Legal Entity
358- exercising permissions granted by this License.
359-
360- "Source" form shall mean the preferred form for making modifications,
361- including but not limited to software source code, documentation
362- source, and configuration files.
363-
364- "Object" form shall mean any form resulting from mechanical
365- transformation or translation of a Source form, including but
366- not limited to compiled object code, generated documentation,
367- and conversions to other media types.
368-
369- "Work" shall mean the work of authorship, whether in Source or
370- Object form, made available under the License, as indicated by a
371- copyright notice that is included in or attached to the work
372- (an example is provided in the Appendix below).
373-
374- "Derivative Works" shall mean any work, whether in Source or Object
375- form, that is based on (or derived from) the Work and for which the
376- editorial revisions, annotations, elaborations, or other modifications
377- represent, as a whole, an original work of authorship. For the purposes
378- of this License, Derivative Works shall not include works that remain
379- separable from, or merely link (or bind by name) to the interfaces of,
380- the Work and Derivative Works thereof.
381-
382- "Contribution" shall mean any work of authorship, including
383- the original version of the Work and any modifications or additions
384- to that Work or Derivative Works thereof, that is intentionally
385- submitted to Licensor for inclusion in the Work by the copyright owner
386- or by an individual or Legal Entity authorized to submit on behalf of
387- the copyright owner. For the purposes of this definition, "submitted"
388- means any form of electronic, verbal, or written communication sent
389- to the Licensor or its representatives, including but not limited to
390- communication on electronic mailing lists, source code control systems,
391- and issue tracking systems that are managed by, or on behalf of, the
392- Licensor for the purpose of discussing and improving the Work, but
393- excluding communication that is conspicuously marked or otherwise
394- designated in writing by the copyright owner as "Not a Contribution."
395-
396- "Contributor" shall mean Licensor and any individual or Legal Entity
397- on behalf of whom a Contribution has been received by Licensor and
398- subsequently incorporated within the Work.
399-
400- 2. Grant of Copyright License. Subject to the terms and conditions of
401- this License, each Contributor hereby grants to You a perpetual,
402- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
403- copyright license to reproduce, prepare Derivative Works of,
404- publicly display, publicly perform, sublicense, and distribute the
405- Work and such Derivative Works in Source or Object form.
406-
407- 3. Grant of Patent License. Subject to the terms and conditions of
408- this License, each Contributor hereby grants to You a perpetual,
409- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
410- (except as stated in this section) patent license to make, have made,
411- use, offer to sell, sell, import, and otherwise transfer the Work,
412- where such license applies only to those patent claims licensable
413- by such Contributor that are necessarily infringed by their
414- Contribution(s) alone or by combination of their Contribution(s)
415- with the Work to which such Contribution(s) was submitted. If You
416- institute patent litigation against any entity (including a
417- cross-claim or counterclaim in a lawsuit) alleging that the Work
418- or a Contribution incorporated within the Work constitutes direct
419- or contributory patent infringement, then any patent licenses
420- granted to You under this License for that Work shall terminate
421- as of the date such litigation is filed.
422-
423- 4. Redistribution. You may reproduce and distribute copies of the
424- Work or Derivative Works thereof in any medium, with or without
425- modifications, and in Source or Object form, provided that You
426- meet the following conditions:
427-
428- (a) You must give any other recipients of the Work or
429- Derivative Works a copy of this License; and
430-
431- (b) You must cause any modified files to carry prominent notices
432- stating that You changed the files; and
433-
434- (c) You must retain, in the Source form of any Derivative Works
435- that You distribute, all copyright, patent, trademark, and
436- attribution notices from the Source form of the Work,
437- excluding those notices that do not pertain to any part of
438- the Derivative Works; and
439-
440- (d) If the Work includes a "NOTICE" text file as part of its
441- distribution, then any Derivative Works that You distribute must
442- include a readable copy of the attribution notices contained
443- within such NOTICE file, excluding those notices that do not
444- pertain to any part of the Derivative Works, in at least one
445- of the following places: within a NOTICE text file distributed
446- as part of the Derivative Works; within the Source form or
447- documentation, if provided along with the Derivative Works; or,
448- within a display generated by the Derivative Works, if and
449- wherever such third-party notices normally appear. The contents
450- of the NOTICE file are for informational purposes only and
451- do not modify the License. You may add Your own attribution
452- notices within Derivative Works that You distribute, alongside
453- or as an addendum to the NOTICE text from the Work, provided
454- that such additional attribution notices cannot be construed
455- as modifying the License.
456-
457- You may add Your own copyright statement to Your modifications and
458- may provide additional or different license terms and conditions
459- for use, reproduction, or distribution of Your modifications, or
460- for any such Derivative Works as a whole, provided Your use,
461- reproduction, and distribution of the Work otherwise complies with
462- the conditions stated in this License.
463-
464- 5. Submission of Contributions. Unless You explicitly state otherwise,
465- any Contribution intentionally submitted for inclusion in the Work
466- by You to the Licensor shall be under the terms and conditions of
467- this License, without any additional terms or conditions.
468- Notwithstanding the above, nothing herein shall supersede or modify
469- the terms of any separate license agreement you may have executed
470- with Licensor regarding such Contributions.
471-
472- 6. Trademarks. This License does not grant permission to use the trade
473- names, trademarks, service marks, or product names of the Licensor,
474- except as required for reasonable and customary use in describing the
475- origin of the Work and reproducing the content of the NOTICE file.
476-
477- 7. Disclaimer of Warranty. Unless required by applicable law or
478- agreed to in writing, Licensor provides the Work (and each
479- Contributor provides its Contributions) on an "AS IS" BASIS,
480- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
481- implied, including, without limitation, any warranties or conditions
482- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
483- PARTICULAR PURPOSE. You are solely responsible for determining the
484- appropriateness of using or redistributing the Work and assume any
485- risks associated with Your exercise of permissions under this License.
486-
487- 8. Limitation of Liability. In no event and under no legal theory,
488- whether in tort (including negligence), contract, or otherwise,
489- unless required by applicable law (such as deliberate and grossly
490- negligent acts) or agreed to in writing, shall any Contributor be
491- liable to You for damages, including any direct, indirect, special,
492- incidental, or consequential damages of any character arising as a
493- result of this License or out of the use or inability to use the
494- Work (including but not limited to damages for loss of goodwill,
495- work stoppage, computer failure or malfunction, or any and all
496- other commercial damages or losses), even if such Contributor
497- has been advised of the possibility of such damages.
498-
499- 9. Accepting Warranty or Additional Liability. While redistributing
500- the Work or Derivative Works thereof, You may choose to offer,
501- and charge a fee for, acceptance of support, warranty, indemnity,
502- or other liability obligations and/or rights consistent with this
503- License. However, in accepting such obligations, You may act only
504- on Your own behalf and on Your sole responsibility, not on behalf
505- of any other Contributor, and only if You agree to indemnify,
506- defend, and hold each Contributor harmless for any liability
507- incurred by, or claims asserted against, such Contributor by reason
508- of your accepting any such warranty or additional liability.
509-
510- END OF TERMS AND CONDITIONS
511-
512-
513-
514-
515- THIS PRODUCT ALSO INCLUDES THIRD PARTY SOFTWARE REDISTRIBUTED UNDER THE
516- FOLLOWING LICENSES:
517-
518- JUnit, Common Public License Version 1.0 (junit-3.8.1.jar)
519- http://junit.org
520-
521- THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
522- LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
523- CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
524-
525- 1. DEFINITIONS
526-
527- "Contribution" means:
528-
529- a) in the case of the initial Contributor, the initial code and
530- documentation distributed under this Agreement, and
531-
532- b) in the case of each subsequent Contributor:
533-
534- i) changes to the Program, and
535-
536- ii) additions to the Program;
537-
538- where such changes and/or additions to the Program originate from and are
539- distributed by that particular Contributor. A Contribution 'originates' from a
540- Contributor if it was added to the Program by such Contributor itself or anyone
541- acting on such Contributor's behalf. Contributions do not include additions to
542- the Program which: (i) are separate modules of software distributed in
543- conjunction with the Program under their own license agreement, and (ii) are not
544- derivative works of the Program.
545-
546- "Contributor" means any person or entity that distributes the Program.
547-
548- "Licensed Patents " mean patent claims licensable by a Contributor which are
549- necessarily infringed by the use or sale of its Contribution alone or when
550- combined with the Program.
551-
552- "Program" means the Contributions distributed in accordance with this Agreement.
553-
554- "Recipient" means anyone who receives the Program under this Agreement,
555- including all Contributors.
556-
557- 2. GRANT OF RIGHTS
558-
559- a) Subject to the terms of this Agreement, each Contributor hereby grants
560- Recipient a non-exclusive, worldwide, royalty-free copyright license to
561- reproduce, prepare derivative works of, publicly display, publicly perform,
562- distribute and sublicense the Contribution of such Contributor, if any, and such
563- derivative works, in source code and object code form.
564-
565- b) Subject to the terms of this Agreement, each Contributor hereby grants
566- Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
567- Patents to make, use, sell, offer to sell, import and otherwise transfer the
568- Contribution of such Contributor, if any, in source code and object code form.
569- This patent license shall apply to the combination of the Contribution and the
570- Program if, at the time the Contribution is added by the Contributor, such
571- addition of the Contribution causes such combination to be covered by the
572- Licensed Patents. The patent license shall not apply to any other combinations
573- which include the Contribution. No hardware per se is licensed hereunder.
574-
575- c) Recipient understands that although each Contributor grants the licenses
576- to its Contributions set forth herein, no assurances are provided by any
577- Contributor that the Program does not infringe the patent or other intellectual
578- property rights of any other entity. Each Contributor disclaims any liability to
579- Recipient for claims brought by any other entity based on infringement of
580- intellectual property rights or otherwise. As a condition to exercising the
581- rights and licenses granted hereunder, each Recipient hereby assumes sole
582- responsibility to secure any other intellectual property rights needed, if any.
583- For example, if a third party patent license is required to allow Recipient to
584- distribute the Program, it is Recipient's responsibility to acquire that license
585- before distributing the Program.
586-
587- d) Each Contributor represents that to its knowledge it has sufficient
588- copyright rights in its Contribution, if any, to grant the copyright license set
589- forth in this Agreement.
590-
591- 3. REQUIREMENTS
592-
593- A Contributor may choose to distribute the Program in object code form under its
594- own license agreement, provided that:
595-
596- a) it complies with the terms and conditions of this Agreement; and
597-
598- b) its license agreement:
599-
600- i) effectively disclaims on behalf of all Contributors all warranties and
601- conditions, express and implied, including warranties or conditions of title and
602- non-infringement, and implied warranties or conditions of merchantability and
603- fitness for a particular purpose;
604-
605- ii) effectively excludes on behalf of all Contributors all liability for
606- damages, including direct, indirect, special, incidental and consequential
607- damages, such as lost profits;
608-
609- iii) states that any provisions which differ from this Agreement are offered
610- by that Contributor alone and not by any other party; and
611-
612- iv) states that source code for the Program is available from such
613- Contributor, and informs licensees how to obtain it in a reasonable manner on or
614- through a medium customarily used for software exchange.
615-
616- When the Program is made available in source code form:
617-
618- a) it must be made available under this Agreement; and
619-
620- b) a copy of this Agreement must be included with each copy of the Program.
621-
622- Contributors may not remove or alter any copyright notices contained within the
623- Program.
624-
625- Each Contributor must identify itself as the originator of its Contribution, if
626- any, in a manner that reasonably allows subsequent Recipients to identify the
627- originator of the Contribution.
628-
629- 4. COMMERCIAL DISTRIBUTION
630-
631- Commercial distributors of software may accept certain responsibilities with
632- respect to end users, business partners and the like. While this license is
633- intended to facilitate the commercial use of the Program, the Contributor who
634- includes the Program in a commercial product offering should do so in a manner
635- which does not create potential liability for other Contributors. Therefore, if
636- a Contributor includes the Program in a commercial product offering, such
637- Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
638- every other Contributor ("Indemnified Contributor") against any losses, damages
639- and costs (collectively "Losses") arising from claims, lawsuits and other legal
640- actions brought by a third party against the Indemnified Contributor to the
641- extent caused by the acts or omissions of such Commercial Contributor in
642- connection with its distribution of the Program in a commercial product
643- offering. The obligations in this section do not apply to any claims or Losses
644- relating to any actual or alleged intellectual property infringement. In order
645- to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
646- Contributor in writing of such claim, and b) allow the Commercial Contributor to
647- control, and cooperate with the Commercial Contributor in, the defense and any
648- related settlement negotiations. The Indemnified Contributor may participate in
649- any such claim at its own expense.
650-
651- For example, a Contributor might include the Program in a commercial product
652- offering, Product X. That Contributor is then a Commercial Contributor. If that
653- Commercial Contributor then makes performance claims, or offers warranties
654- related to Product X, those performance claims and warranties are such
655- Commercial Contributor's responsibility alone. Under this section, the
656- Commercial Contributor would have to defend claims against the other
657- Contributors related to those performance claims and warranties, and if a court
658- requires any other Contributor to pay any damages as a result, the Commercial
659- Contributor must pay those damages.
660-
661- 5. NO WARRANTY
662-
663- EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
664- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
665- IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
666- NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
667- Recipient is solely responsible for determining the appropriateness of using and
668- distributing the Program and assumes all risks associated with its exercise of
669- rights under this Agreement, including but not limited to the risks and costs of
670- program errors, compliance with applicable laws, damage to or loss of data,
671- programs or equipment, and unavailability or interruption of operations.
672-
673- 6. DISCLAIMER OF LIABILITY
674-
675- EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
676- CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
677- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
678- PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
679- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
680- OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
681- GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
682-
683- 7. GENERAL
684-
685- If any provision of this Agreement is invalid or unenforceable under applicable
686- law, it shall not affect the validity or enforceability of the remainder of the
687- terms of this Agreement, and without further action by the parties hereto, such
688- provision shall be reformed to the minimum extent necessary to make such
689- provision valid and enforceable.
690-
691- If Recipient institutes patent litigation against a Contributor with respect to
692- a patent applicable to software (including a cross-claim or counterclaim in a
693- lawsuit), then any patent licenses granted by that Contributor to such Recipient
694- under this Agreement shall terminate as of the date such litigation is filed. In
695- addition, if Recipient institutes patent litigation against any entity
696- (including a cross-claim or counterclaim in a lawsuit) alleging that the Program
697- itself (excluding combinations of the Program with other software or hardware)
698- infringes such Recipient's patent(s), then such Recipient's rights granted under
699- Section 2(b) shall terminate as of the date such litigation is filed.
700-
701- All Recipient's rights under this Agreement shall terminate if it fails to
702- comply with any of the material terms or conditions of this Agreement and does
703- not cure such failure in a reasonable period of time after becoming aware of
704- such noncompliance. If all Recipient's rights under this Agreement terminate,
705- Recipient agrees to cease use and distribution of the Program as soon as
706- reasonably practicable. However, Recipient's obligations under this Agreement
707- and any licenses granted by Recipient relating to the Program shall continue and
708- survive.
709-
710- Everyone is permitted to copy and distribute copies of this Agreement, but in
711- order to avoid inconsistency the Agreement is copyrighted and may only be
712- modified in the following manner. The Agreement Steward reserves the right to
713- publish new versions (including revisions) of this Agreement from time to time.
714- No one other than the Agreement Steward has the right to modify this Agreement.
715- IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
716- as the Agreement Steward to a suitable separate entity. Each new version of the
717- Agreement will be given a distinguishing version number. The Program (including
718- Contributions) may always be distributed subject to the version of the Agreement
719- under which it was received. In addition, after a new version of the Agreement
720- is published, Contributor may elect to distribute the Program (including its
721- Contributions) under the new version. Except as expressly stated in Sections
722- 2(a) and 2(b) above, Recipient receives no rights or licenses to the
723- intellectual property of any Contributor under this Agreement, whether
724- expressly, by implication, estoppel or otherwise. All rights in the Program not
725- expressly granted under this Agreement are reserved.
726-
727- This Agreement is governed by the laws of the State of New York and the
728- intellectual property laws of the United States of America. No party to this
729- Agreement will bring a legal action under this Agreement more than one year
730- after the cause of action arose. Each party waives its rights to a jury trial in
731- any resulting litigation.
732-
733-
734- Bnd, Bundle Tool http://www.aqute.biz/Code/Bnd, The Apache License, Version 2.0
735- ALL OTHERS JARS, BY APACHE SOFTWARE FOUNDATION
736- ALL OF THESE ARE LICENSED UNDER The Apache License, Version 2.0 EXCEPT:
737-
738- Apache Commons Logging,
739- The Apache Software License, Version 1.1 (commons-logging-1.1.1.jar)
740-
741- The Apache Software License, Version 1.1
742-
743- Redistribution and use in source and binary forms, with or without
744- modification, are permitted provided that the following conditions
745- are met:
746-
747- 1. Redistributions of source code must retain the above copyright
748- notice, this list of conditions and the following disclaimer.
749-
750- 2. Redistributions in binary form must reproduce the above copyright
751- notice, this list of conditions and the following disclaimer in
752- the documentation and/or other materials provided with the
753- distribution.
754-
755- 3. The end-user documentation included with the redistribution,
756- if any, must include the following acknowledgment:
757- "This product includes software developed by the
758- Apache Software Foundation (http://www.apache.org/)."
759- Alternately, this acknowledgment may appear in the software itself,
760- if and wherever such third-party acknowledgments normally appear.
761-
762- 4. The names "Apache" and "Apache Software Foundation" must
763- not be used to endorse or promote products derived from this
764- software without prior written permission. For written
765- permission, please contact apache@apache.org.
766-
767- 5. Products derived from this software may not be called "Apache",
768- nor may "Apache" appear in their name, without prior written
769- permission of the Apache Software Foundation.
770-
771- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
772- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
773- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
774- DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
775- ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
776- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
777- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
778- USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
779- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
780- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
781- OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
782- SUCH DAMAGE.
783-
784-
785-
786\ No newline at end of file
787
788=== removed file 'GroundhogReader/apache-mime4j-0.6/NOTICE.txt'
789--- GroundhogReader/apache-mime4j-0.6/NOTICE.txt 2010-03-14 02:32:45 +0000
790+++ GroundhogReader/apache-mime4j-0.6/NOTICE.txt 1970-01-01 00:00:00 +0000
791@@ -1,14 +0,0 @@
792- =========================================================================
793- == NOTICE file for use with the Apache License, Version 2.0, ==
794- =========================================================================
795-
796- Apache JAMES Mime4j
797- Copyright 2004-2008 The Apache Software Foundation
798-
799- This product includes software developed at
800- The Apache Software Foundation (http://www.apache.org/).
801-
802- This product may include/use software, JUnit (http://www.junit.org/),
803- developed by Kent Beck, Erich Gamma, and David Saff
804- License: Common Public License Version 1.0
805- (http://www.opensource.org/licenses/cpl.php)
806
807=== removed file 'GroundhogReader/apache-mime4j-0.6/RELEASE_NOTES.txt'
808--- GroundhogReader/apache-mime4j-0.6/RELEASE_NOTES.txt 2010-03-14 02:32:45 +0000
809+++ GroundhogReader/apache-mime4j-0.6/RELEASE_NOTES.txt 1970-01-01 00:00:00 +0000
810@@ -1,117 +0,0 @@
811-Release 0.6
812--------------------
813-
814-Mime4J is a flexible MIME parsing library written in Java. SAX, DOM and pull parsing styles are
815-supported.
816-
817-The 0.6 release brings another round of API enhancements and performance optimizations. There has
818-been a number of notable improvements in the DOM support. MIME stream parser is expected to be
819-50% faster when line counting is disabled. Please also note that as of this release Mime4j
820-requires a Java 1.5 compatible runtime.
821-
822-Notes
823------
824-
825- * Mime4j API is still considered unstable and is likely to change in future releases
826- * The DOM API has been now been comprehensively refactored and the known limitations
827- addressed. Please report any remaining issues to
828- https://issues.apache.org/jira/browse/MIME4J.
829- * Some low level functions are available only in the pull parser (recommended for
830- advanced users)
831- * 0.6 contains a mixture of approaches to the parsing of advanced MIME field types.
832- Limitations are known with these approaches with some relatively uncommon use cases.
833- A consistent and comprehensive rewrite is planned for 0.7 which should consolidate
834- and address these.
835- * The former interfaces TextBody and BinaryBody have been changed into abstract subclasses
836- of class SingleBody. Code that implements these interfaces has to be changed accordingly.
837- [https://issues.apache.org/jira/browse/MIME4J-111]
838- * A dedicated class for writing a message has been introduced. Class MessageWriter has now
839- to be used instead of Body.writeTo(OutputStream, int). A short-cut method
840- Message.writeTo(OutputStream) without a mode parameter is also available.
841- [https://issues.apache.org/jira/browse/MIME4J-110]
842- * Class NamedMailbox has been removed. Class Mailbox now has an additional name property.
843- [https://issues.apache.org/jira/browse/MIME4J-107]
844- * Class MessageUtils has been removed. The methods and constants can now be found in class
845- CharsetUtil in the same package.
846- [https://issues.apache.org/jira/browse/MIME4J-106]
847- * Package org.apache.james.mime4j.decoder has been renamed in org.apache.james.mime4j.codec.
848- [https://issues.apache.org/jira/browse/MIME4J-105]
849- * Class AbstractBody has been superseded by SingleBody. AbstractBody has been removed.
850- * BodyFactory introduced allowing more flexible storage for Message parts. TempFileTextBody
851- and TempFileBinaryBody removed.
852- [https://issues.apache.org/jira/browse/MIME4J-87]
853- * Mime4j now has a more flexible mechanism for storing message bodies. Class TempStorage
854- has been superseded by StorageProvider in package org.apache.james.mime4j.storage.
855- The classes TempStorage, TempPath, TempFile and SimpleTempStorage have been removed.
856- [https://issues.apache.org/jira/browse/MIME4J-83]
857- * Temporary text body storage for Message parts now defaults to US-ASCII (was ISO-8859-1)
858-
859-Detailed change log can be found here:
860-
861-http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310521&styleName=Html&version=12313434
862-
863-
864-Release 0.5
865--------------------
866-
867-Mime4J is a flexible MIME parsing library written in Java. SAX, DOM and pull parsing
868-styles are supported.
869-
870-
871-The 0.5 release addresses a number of important issues discovered since 0.4. In
872-particular, it improves Mime4j ability to deal with malformed data streams including
873-those intentionally crafted to cause excessive CPU and memory utilization that can
874-lead to DoS conditions.
875-
876-This release also fixes a serious bug that can prevent Mime4j from correctly
877-processing binary content.
878-
879-Detailed change log can be found here:
880-
881-https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310521&styleName=Html&version=12313178
882-
883-Notes
884------
885- * Mime4j API is still considered unstable and is likely to change in future releases
886- * DOM support has known limitations and some roundtrip issues remain to be resolved
887- * Some low level functions are available only in the pull parser (recommended for
888- advanced users)
889-
890-
891-
892-Release 0.4
893--------------------
894-
895-Mime4J is a flexible MIME parsing library written in Java. SAX, DOM and pull parsing
896-styles are supported.
897-
898-The 0.4 release brings a number of significant improvements in terms of
899-supported capabilities, flexibility and performance:
900-
901-* Revised and improved public API with support for pull parsing
902-
903-* Support for parsing of 'headless' messages transmitted using non SMTP
904- transports such as HTTP
905-
906-* Reduced external dependencies. Mime4j is no longer directly dependent on log4j
907- and commons-io
908-
909-* Improved parsing performance (up to 10x for large messages)
910-
911-* More comprehensive header parsing including support for RFC1864, RFC2045,
912- RFC2183, RFC2557 and RFC3066
913-
914-* Revised packaging and exception hierarchy. MimeException now extends
915- IOException.
916-
917-Detailed change log can be found here:
918-
919-http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310521&styleName=Html&version=12312483
920-
921-Notes
922------
923- * 0.4 contains numerous API improvements and is not binary compatible with 0.3
924- * Mime4j API is still considered unstable and is likely to change in future releases
925- * DOM support has known limitations and some roundtrip issues remain to be resolved
926- * Some low level functions are available only in the pull parser (recommended for
927- advanced users)
928
929=== removed directory 'GroundhogReader/apache-mime4j-0.6/benchmarks'
930=== removed directory 'GroundhogReader/apache-mime4j-0.6/benchmarks/resources'
931=== removed file 'GroundhogReader/apache-mime4j-0.6/benchmarks/resources/long-multipart.msg'
932--- GroundhogReader/apache-mime4j-0.6/benchmarks/resources/long-multipart.msg 2010-03-14 02:32:45 +0000
933+++ GroundhogReader/apache-mime4j-0.6/benchmarks/resources/long-multipart.msg 1970-01-01 00:00:00 +0000
934@@ -1,684 +0,0 @@
935-Date: Fri, 27 Apr 2007 16:08:23 +0200
936-From: Foo Bar <bar@example.com>
937-MIME-Version: 1.0
938-To: foo@example.com
939-Subject: This is a rather long multipart message.
940-Content-Type: multipart/mixed; boundary="------------090404080405080108000909"
941-
942-This is a multi-part message in MIME format.
943---------------090404080405080108000909
944-Content-Type: text/plain; charset=ISO-8859-15
945-Content-Transfer-Encoding: 7bit
946-
947-1111111111111111111111111111111111111111111111111111111111111111111111111111111
948-1111111111111111111111111111111111111111111111111111111111111111111111111111111
949-1111111111111111111111111111111111111111111111111111111111111111111111111111111
950-1111111111111111111111111111111111111111111111111111111111111111111111111111111
951-1111111111111111111111111111111111111111111111111111111111111111111111111111111
952-1111111111111111111111111111111111111111111111111111111111111111111111111111111
953-1111111111111111111111111111111111111111111111111111111111111111111111111111111
954-1111111111111111111111111111111111111111111111111111111111111111111111111111111
955-1111111111111111111111111111111111111111111111111111111111111111111111111111111
956-1111111111111111111111111111111111111111111111111111111111111111111111111111111
957-1111111111111111111111111111111111111111111111111111111111111111111111111111111
958-1111111111111111111111111111111111111111111111111111111111111111111111111111111
959-1111111111111111111111111111111111111111111111111111111111111111111111111111111
960-1111111111111111111111111111111111111111111111111111111111111111111111111111111
961-1111111111111111111111111111111111111111111111111111111111111111111111111111111
962-1111111111111111111111111111111111111111111111111111111111111111111111111111111
963-1111111111111111111111111111111111111111111111111111111111111111111111111111111
964-1111111111111111111111111111111111111111111111111111111111111111111111111111111
965-1111111111111111111111111111111111111111111111111111111111111111111111111111111
966-1111111111111111111111111111111111111111111111111111111111111111111111111111111
967-1111111111111111111111111111111111111111111111111111111111111111111111111111111
968-1111111111111111111111111111111111111111111111111111111111111111111111111111111
969-1111111111111111111111111111111111111111111111111111111111111111111111111111111
970-1111111111111111111111111111111111111111111111111111111111111111111111111111111
971-1111111111111111111111111111111111111111111111111111111111111111111111111111111
972-1111111111111111111111111111111111111111111111111111111111111111111111111111111
973-1111111111111111111111111111111111111111111111111111111111111111111111111111111
974-1111111111111111111111111111111111111111111111111111111111111111111111111111111
975-1111111111111111111111111111111111111111111111111111111111111111111111111111111
976-1111111111111111111111111111111111111111111111111111111111111111111111111111111
977-1111111111111111111111111111111111111111111111111111111111111111111111111111111
978-1111111111111111111111111111111111111111111111111111111111111111111111111111111
979-1111111111111111111111111111111111111111111111111111111111111111111111111111111
980-1111111111111111111111111111111111111111111111111111111111111111111111111111111
981-1111111111111111111111111111111111111111111111111111111111111111111111111111111
982-1111111111111111111111111111111111111111111111111111111111111111111111111111111
983-1111111111111111111111111111111111111111111111111111111111111111111111111111111
984-1111111111111111111111111111111111111111111111111111111111111111111111111111111
985-1111111111111111111111111111111111111111111111111111111111111111111111111111111
986-1111111111111111111111111111111111111111111111111111111111111111111111111111111
987-1111111111111111111111111111111111111111111111111111111111111111111111111111111
988-1111111111111111111111111111111111111111111111111111111111111111111111111111111
989-1111111111111111111111111111111111111111111111111111111111111111111111111111111
990-1111111111111111111111111111111111111111111111111111111111111111111111111111111
991-1111111111111111111111111111111111111111111111111111111111111111111111111111111
992-1111111111111111111111111111111111111111111111111111111111111111111111111111111
993-1111111111111111111111111111111111111111111111111111111111111111111111111111111
994-1111111111111111111111111111111111111111111111111111111111111111111111111111111
995-1111111111111111111111111111111111111111111111111111111111111111111111111111111
996-1111111111111111111111111111111111111111111111111111111111111111111111111111111
997-1111111111111111111111111111111111111111111111111111111111111111111111111111111
998-1111111111111111111111111111111111111111111111111111111111111111111111111111111
999-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1000-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1001-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1002-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1003-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1004-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1005-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1006-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1007-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1008-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1009-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1010-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1011-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1012-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1013-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1014-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1015-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1016-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1017-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1018-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1019-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1020-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1021-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1022-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1023-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1024-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1025-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1026-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1027-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1028-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1029-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1030-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1031-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1032-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1033-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1034-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1035-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1036-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1037-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1038-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1039-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1040-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1041-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1042-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1043-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1044-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1045-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1046-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1047-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1048-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1049-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1050-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1051-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1052-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1053-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1054-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1055-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1056-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1057-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1058-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1059-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1060-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1061-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1062-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1063-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1064-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1065-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1066-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1067-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1068-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1069-1111111111111111111111111111111111111111111111111111111111111111111111111111111
1070---------------090404080405080108000909
1071-Content-Type: text/plain; charset=ISO-8859-15
1072-Content-Transfer-Encoding: 7bit
1073-
1074-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1075-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1076-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1077-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1078-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1079-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1080-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1081-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1082-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1083-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1084-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1085-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1086-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1087-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1088-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1089-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1090-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1091-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1092-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1093-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1094-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1095-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1096-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1097-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1098-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1099-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1100-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1101-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1102-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1103-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1104-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1105-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1106-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1107-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1108-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1109-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1110-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1111-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1112-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1113-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1114-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1115-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1116-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1117-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1118-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1119-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1120-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1121-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1122-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1123-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1124-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1125-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1126-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1127-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1128-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1129-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1130-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1131-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1132-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1133-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1134-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1135-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1136-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1137-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1138-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1139-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1140-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1141-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1142-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1143-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1144-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1145-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1146-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1147-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1148-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1149-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1150-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1151-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1152-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1153-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1154-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1155-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1156-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1157-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1158-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1159-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1160-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1161-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1162-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1163-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1164-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1165-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1166-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1167-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1168-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1169-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1170-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1171-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1172-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1173-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1174-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1175-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1176-2222222222222222222222222222222222222222222222222222222222222222222222222222222
1177---------------090404080405080108000909
1178-Content-Type: text/plain; charset=ISO-8859-15
1179-Content-Transfer-Encoding: 7bit
1180-
1181-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1182-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1183-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1184-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1185-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1186-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1187-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1188-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1189-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1190-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1191-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1192-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1193-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1194-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1195-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1196-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1197-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1198-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1199-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1200-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1201-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1202-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1203-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1204-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1205-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1206-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1207-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1208-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1209-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1210-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1211-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1212-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1213-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1214-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1215-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1216-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1217-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1218-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1219-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1220-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1221-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1222-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1223-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1224-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1225-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1226-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1227-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1228-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1229-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1230-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1231-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1232-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1233-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1234-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1235-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1236-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1237-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1238-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1239-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1240-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1241-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1242-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1243-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1244-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1245-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1246-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1247-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1248-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1249-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1250-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1251-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1252-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1253-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1254-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1255-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1256-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1257-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1258-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1259-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1260-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1261-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1262-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1263-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1264-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1265-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1266-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1267-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1268-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1269-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1270-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1271-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1272-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1273-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1274-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1275-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1276-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1277-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1278-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1279-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1280-3333333333333333333333333333333333333333333333333333333333333333333333333333333
1281---------------090404080405080108000909
1282-Content-Type: text/plain; charset=ISO-8859-15
1283-Content-Transfer-Encoding: 7bit
1284-
1285-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1286-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1287-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1288-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1289-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1290-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1291-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1292-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1293-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1294-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1295-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1296-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1297-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1298-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1299-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1300-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1301-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1302-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1303-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1304-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1305-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1306-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1307-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1308-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1309-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1310-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1311-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1312-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1313-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1314-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1315-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1316-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1317-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1318-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1319-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1320-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1321-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1322-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1323-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1324-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1325-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1326-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1327-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1328-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1329-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1330-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1331-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1332-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1333-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1334-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1335-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1336-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1337-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1338-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1339-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1340-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1341-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1342-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1343-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1344-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1345-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1346-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1347-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1348-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1349-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1350-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1351-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1352-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1353-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1354-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1355-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1356-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1357-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1358-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1359-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1360-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1361-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1362-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1363-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1364-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1365-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1366-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1367-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1368-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1369-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1370-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1371-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1372-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1373-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1374-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1375-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1376-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1377-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1378-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1379-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1380-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1381-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1382-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1383-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1384-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1385-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1386-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1387-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1388-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1389-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1390-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1391-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1392-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1393-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1394-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1395-4444444444444444444444444444444444444444444444444444444444444444444444444444444
1396---------------090404080405080108000909
1397-Content-Type: text/plain; charset=ISO-8859-15
1398-Content-Transfer-Encoding: 7bit
1399-
1400-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1401-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1402-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1403-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1404-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1405-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1406-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1407-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1408-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1409-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1410-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1411-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1412-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1413-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1414-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1415-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1416-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1417-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1418-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1419-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1420-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1421-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1422-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1423-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1424-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1425-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1426-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1427-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1428-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1429-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1430-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1431-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1432-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1433-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1434-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1435-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1436-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1437-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1438-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1439-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1440-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1441-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1442-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1443-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1444-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1445-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1446-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1447-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1448-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1449-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1450-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1451-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1452-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1453-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1454-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1455-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1456-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1457-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1458-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1459-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1460-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1461-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1462-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1463-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1464-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1465-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1466-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1467-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1468-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1469-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1470-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1471-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1472-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1473-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1474-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1475-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1476-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1477-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1478-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1479-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1480-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1481-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1482-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1483-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1484-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1485-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1486-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1487-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1488-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1489-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1490-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1491-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1492-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1493-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1494-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1495-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1496-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1497-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1498-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1499-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1500-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1501-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1502-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1503-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1504-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1505-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1506-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1507-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1508-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1509-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1510-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1511-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1512-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1513-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1514-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1515-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1516-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1517-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1518-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1519-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1520-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1521-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1522-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1523-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1524-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1525-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1526-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1527-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1528-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1529-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1530-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1531-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1532-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1533-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1534-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1535-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1536-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1537-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1538-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1539-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1540-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1541-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1542-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1543-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1544-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1545-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1546-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1547-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1548-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1549-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1550-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1551-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1552-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1553-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1554-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1555-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1556-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1557-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1558-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1559-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1560-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1561-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1562-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1563-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1564-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1565-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1566-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1567-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1568-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1569-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1570-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1571-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1572-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1573-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1574-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1575-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1576-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1577-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1578-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1579-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1580-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1581-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1582-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1583-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1584-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1585-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1586-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1587-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1588-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1589-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1590-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1591-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1592-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1593-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1594-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1595-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1596-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1597-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1598-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1599-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1600-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1601-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1602-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1603-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1604-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1605-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1606-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1607-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1608-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1609-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1610-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1611-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1612-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1613-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1614-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1615-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1616-5555555555555555555555555555555555555555555555555555555555555555555555555555555
1617---------------090404080405080108000909--
1618-
1619
1620=== removed directory 'GroundhogReader/apache-mime4j-0.6/benchmarks/src'
1621=== removed directory 'GroundhogReader/apache-mime4j-0.6/benchmarks/src/org'
1622=== removed directory 'GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache'
1623=== removed directory 'GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache/james'
1624=== removed directory 'GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache/james/mime4j'
1625=== removed file 'GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache/james/mime4j/Base64InputStreamBench.java'
1626--- GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache/james/mime4j/Base64InputStreamBench.java 2010-03-14 02:32:45 +0000
1627+++ GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache/james/mime4j/Base64InputStreamBench.java 1970-01-01 00:00:00 +0000
1628@@ -1,109 +0,0 @@
1629-/****************************************************************
1630- * Licensed to the Apache Software Foundation (ASF) under one *
1631- * or more contributor license agreements. See the NOTICE file *
1632- * distributed with this work for additional information *
1633- * regarding copyright ownership. The ASF licenses this file *
1634- * to you under the Apache License, Version 2.0 (the *
1635- * "License"); you may not use this file except in compliance *
1636- * with the License. You may obtain a copy of the License at *
1637- * *
1638- * http://www.apache.org/licenses/LICENSE-2.0 *
1639- * *
1640- * Unless required by applicable law or agreed to in writing, *
1641- * software distributed under the License is distributed on an *
1642- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
1643- * KIND, either express or implied. See the License for the *
1644- * specific language governing permissions and limitations *
1645- * under the License. *
1646- ****************************************************************/
1647-
1648-package org.apache.james.mime4j;
1649-
1650-import java.io.ByteArrayInputStream;
1651-import java.io.ByteArrayOutputStream;
1652-import java.io.IOException;
1653-import java.io.InputStream;
1654-import java.io.OutputStream;
1655-import java.util.Random;
1656-
1657-import org.apache.commons.io.output.NullOutputStream;
1658-import org.apache.james.mime4j.codec.Base64InputStream;
1659-import org.apache.james.mime4j.codec.CodecUtil;
1660-
1661-public class Base64InputStreamBench {
1662-
1663- public static void main(String[] args) throws Exception {
1664- byte[] data = initData(2 * 1024 * 1024);
1665- byte[] encoded = encode(data);
1666-
1667- // decoder test to make sure everything is okay
1668-
1669- testDecode(data, encoded);
1670-
1671- // warmup
1672-
1673- OutputStream nullOut = new NullOutputStream();
1674-
1675- for (int i = 0; i < 5; i++) {
1676- ByteArrayInputStream ed = new ByteArrayInputStream(encoded);
1677- InputStream in = new Base64InputStream(ed);
1678- CodecUtil.copy(in, nullOut);
1679- }
1680- Thread.sleep(100);
1681-
1682- // test
1683-
1684- long t0 = System.currentTimeMillis();
1685-
1686- final int repetitions = 50;
1687- for (int i = 0; i < repetitions; i++) {
1688- ByteArrayInputStream ed = new ByteArrayInputStream(encoded);
1689- InputStream in = new Base64InputStream(ed);
1690- CodecUtil.copy(in, nullOut);
1691- }
1692-
1693- long dt = System.currentTimeMillis() - t0;
1694- long totalBytes = data.length * (long) repetitions;
1695-
1696- double mbPerSec = (totalBytes / 1024.0 / 1024) / (dt / 1000.0);
1697-
1698- System.out.println(dt + " ms");
1699- System.out.println(totalBytes + " bytes");
1700- System.out.println(mbPerSec + " mb/sec");
1701- }
1702-
1703- private static byte[] initData(int size) {
1704- Random random = new Random(size);
1705- byte[] data = new byte[size];
1706- random.nextBytes(data);
1707- return data;
1708- }
1709-
1710- private static byte[] encode(byte[] data) throws IOException {
1711- InputStream in = new ByteArrayInputStream(data);
1712- ByteArrayOutputStream out = new ByteArrayOutputStream();
1713- CodecUtil.encodeBase64(in, out);
1714- return out.toByteArray();
1715- }
1716-
1717- private static void testDecode(byte[] data, final byte[] encoded)
1718- throws IOException {
1719- ByteArrayInputStream ed = new ByteArrayInputStream(encoded);
1720- InputStream in = new Base64InputStream(ed);
1721- ByteArrayOutputStream out = new ByteArrayOutputStream();
1722- CodecUtil.copy(in, out);
1723-
1724- compare(data, out.toByteArray());
1725- }
1726-
1727- private static void compare(byte[] expected, byte[] actual) {
1728- if (expected.length != actual.length)
1729- throw new AssertionError("length: " + expected.length + ", "
1730- + actual.length);
1731-
1732- for (int i = 0; i < expected.length; i++)
1733- if (expected[i] != actual[i])
1734- throw new AssertionError("value @ " + i);
1735- }
1736-
1737-}
1738\ No newline at end of file
1739
1740=== removed file 'GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache/james/mime4j/Base64OutputStreamBench.java'
1741--- GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache/james/mime4j/Base64OutputStreamBench.java 2010-03-14 02:32:45 +0000
1742+++ GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache/james/mime4j/Base64OutputStreamBench.java 1970-01-01 00:00:00 +0000
1743@@ -1,70 +0,0 @@
1744-/****************************************************************
1745- * Licensed to the Apache Software Foundation (ASF) under one *
1746- * or more contributor license agreements. See the NOTICE file *
1747- * distributed with this work for additional information *
1748- * regarding copyright ownership. The ASF licenses this file *
1749- * to you under the Apache License, Version 2.0 (the *
1750- * "License"); you may not use this file except in compliance *
1751- * with the License. You may obtain a copy of the License at *
1752- * *
1753- * http://www.apache.org/licenses/LICENSE-2.0 *
1754- * *
1755- * Unless required by applicable law or agreed to in writing, *
1756- * software distributed under the License is distributed on an *
1757- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
1758- * KIND, either express or implied. See the License for the *
1759- * specific language governing permissions and limitations *
1760- * under the License. *
1761- ****************************************************************/
1762-
1763-package org.apache.james.mime4j;
1764-
1765-import java.io.OutputStream;
1766-import java.util.Random;
1767-
1768-import org.apache.commons.io.output.NullOutputStream;
1769-import org.apache.james.mime4j.codec.Base64OutputStream;
1770-
1771-public class Base64OutputStreamBench {
1772-
1773- public static void main(String[] args) throws Exception {
1774- byte[] data = initData(1024);
1775-
1776- OutputStream nullOut = new NullOutputStream();
1777- Base64OutputStream base64Out = new Base64OutputStream(nullOut);
1778-
1779- // warmup
1780-
1781- for (int i = 0; i < 2000; i++) {
1782- base64Out.write(data);
1783- }
1784- Thread.sleep(100);
1785-
1786- // test
1787-
1788- long t0 = System.currentTimeMillis();
1789-
1790- final int repetitions = 500000;
1791- for (int i = 0; i < repetitions; i++) {
1792- base64Out.write(data);
1793- }
1794- base64Out.close();
1795-
1796- long dt = System.currentTimeMillis() - t0;
1797- long totalBytes = data.length * (long) repetitions;
1798-
1799- double mbPerSec = (totalBytes / 1024.0 / 1024) / (dt / 1000.0);
1800-
1801- System.out.println(dt + " ms");
1802- System.out.println(totalBytes + " bytes");
1803- System.out.println(mbPerSec + " mb/sec");
1804- }
1805-
1806- private static byte[] initData(int size) {
1807- Random random = new Random(size);
1808- byte[] data = new byte[size];
1809- random.nextBytes(data);
1810- return data;
1811- }
1812-
1813-}
1814\ No newline at end of file
1815
1816=== removed file 'GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache/james/mime4j/LongMultipartReadBench.java'
1817--- GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache/james/mime4j/LongMultipartReadBench.java 2010-03-14 02:32:45 +0000
1818+++ GroundhogReader/apache-mime4j-0.6/benchmarks/src/org/apache/james/mime4j/LongMultipartReadBench.java 1970-01-01 00:00:00 +0000
1819@@ -1,189 +0,0 @@
1820-/****************************************************************
1821- * Licensed to the Apache Software Foundation (ASF) under one *
1822- * or more contributor license agreements. See the NOTICE file *
1823- * distributed with this work for additional information *
1824- * regarding copyright ownership. The ASF licenses this file *
1825- * to you under the Apache License, Version 2.0 (the *
1826- * "License"); you may not use this file except in compliance *
1827- * with the License. You may obtain a copy of the License at *
1828- * *
1829- * http://www.apache.org/licenses/LICENSE-2.0 *
1830- * *
1831- * Unless required by applicable law or agreed to in writing, *
1832- * software distributed under the License is distributed on an *
1833- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
1834- * KIND, either express or implied. See the License for the *
1835- * specific language governing permissions and limitations *
1836- * under the License. *
1837- ****************************************************************/
1838-
1839-package org.apache.james.mime4j;
1840-
1841-import java.io.ByteArrayInputStream;
1842-import java.io.ByteArrayOutputStream;
1843-import java.io.IOException;
1844-import java.io.InputStream;
1845-
1846-import org.apache.james.mime4j.codec.CodecUtil;
1847-import org.apache.james.mime4j.descriptor.BodyDescriptor;
1848-import org.apache.james.mime4j.message.Header;
1849-import org.apache.james.mime4j.message.Message;
1850-import org.apache.james.mime4j.message.SimpleContentHandler;
1851-import org.apache.james.mime4j.parser.AbstractContentHandler;
1852-import org.apache.james.mime4j.parser.ContentHandler;
1853-import org.apache.james.mime4j.parser.MimeStreamParser;
1854-import org.apache.james.mime4j.parser.MimeTokenStream;
1855-import org.apache.james.mime4j.storage.DefaultStorageProvider;
1856-import org.apache.james.mime4j.storage.MemoryStorageProvider;
1857-
1858-public class LongMultipartReadBench {
1859-
1860- public static void main(String[] args) throws Exception {
1861-
1862- byte[] content = loadMessage("long-multipart.msg");
1863- if (content == null) {
1864- System.err.println("Test message not found");
1865- return;
1866- }
1867-
1868- int testNumber = args.length > 0 ? Integer.parseInt(args[0]) : 0;
1869-
1870- Test test = createTest(testNumber);
1871- if (test == null) {
1872- System.err.println("No such test: " + testNumber);
1873- return;
1874- }
1875-
1876- int repetitions = args.length > 1 ? Integer.parseInt(args[1]) : 25000;
1877-
1878- System.out.println("Multipart message read.");
1879- System.out.println("No of repetitions: " + repetitions);
1880- System.out.println("Content length: " + content.length);
1881- System.out.println("Test: " + test.getClass().getSimpleName());
1882-
1883- System.out.print("Warmup... ");
1884- long t0 = System.currentTimeMillis();
1885- while (System.currentTimeMillis() - t0 < 1500) {
1886- test.run(content, 10);
1887- }
1888- System.out.println("done");
1889-
1890- System.out.println("--------------------------------");
1891-
1892- long start = System.currentTimeMillis();
1893- test.run(content, repetitions);
1894- long finish = System.currentTimeMillis();
1895-
1896- double seconds = (finish - start) / 1000.0;
1897- double mb = content.length * repetitions / 1024.0 / 1024;
1898- System.out.printf("Execution time: %f sec\n", seconds);
1899- System.out.printf("%.2f messages/sec\n", repetitions / seconds);
1900- System.out.printf("%.2f mb/sec\n", mb / seconds);
1901- }
1902-
1903- private static Test createTest(int testNumber) {
1904- switch (testNumber) {
1905- case 0:
1906- return new MimeTokenStreamTest();
1907- case 1:
1908- return new AbstractContentHandlerTest();
1909- case 2:
1910- return new SimpleContentHandlerTest();
1911- case 3:
1912- return new MessageTest();
1913- default:
1914- return null;
1915- }
1916- }
1917-
1918- private static byte[] loadMessage(String resourceName) throws IOException {
1919- ClassLoader cl = LongMultipartReadBench.class.getClassLoader();
1920-
1921- ByteArrayOutputStream outstream = new ByteArrayOutputStream();
1922- InputStream instream = cl.getResourceAsStream(resourceName);
1923- if (instream == null) {
1924- return null;
1925- }
1926- try {
1927- CodecUtil.copy(instream, outstream);
1928- } finally {
1929- instream.close();
1930- }
1931-
1932- return outstream.toByteArray();
1933- }
1934-
1935- private interface Test {
1936- void run(byte[] content, int repetitions) throws Exception;
1937- }
1938-
1939- private static final class MimeTokenStreamTest implements Test {
1940- public void run(byte[] content, int repetitions) throws Exception {
1941- MimeTokenStream stream = new MimeTokenStream();
1942- for (int i = 0; i < repetitions; i++) {
1943- stream.parse(new ByteArrayInputStream(content));
1944- for (int state = stream.getState(); state != MimeTokenStream.T_END_OF_STREAM; state = stream
1945- .next()) {
1946- }
1947- }
1948- }
1949- }
1950-
1951- private static final class AbstractContentHandlerTest implements Test {
1952- public void run(byte[] content, int repetitions) throws Exception {
1953- ContentHandler contentHandler = new AbstractContentHandler() {
1954- };
1955-
1956- for (int i = 0; i < repetitions; i++) {
1957- MimeStreamParser parser = new MimeStreamParser();
1958- parser.setContentHandler(contentHandler);
1959- parser.parse(new ByteArrayInputStream(content));
1960- }
1961- }
1962- }
1963-
1964- private static final class SimpleContentHandlerTest implements Test {
1965- public void run(byte[] content, int repetitions) throws Exception {
1966- ContentHandler contentHandler = new SimpleContentHandler() {
1967- @Override
1968- public void bodyDecoded(BodyDescriptor bd, InputStream is)
1969- throws IOException {
1970- }
1971-
1972- @Override
1973- public void headers(Header header) {
1974- }
1975- };
1976-
1977- for (int i = 0; i < repetitions; i++) {
1978- MimeStreamParser parser = new MimeStreamParser();
1979- parser.setContentHandler(contentHandler);
1980- parser.parse(new ByteArrayInputStream(content));
1981- }
1982- }
1983- }
1984-
1985- private static final class MessageTest implements Test {
1986- public void run(byte[] content, int repetitions) throws Exception {
1987- DefaultStorageProvider.setInstance(new MemoryStorageProvider());
1988-
1989- for (int i = 0; i < repetitions; i++) {
1990- new Message(new ByteArrayInputStream(content));
1991- }
1992- }
1993- }
1994-
1995- /*
1996- // requires mail.jar and activation.jar to be present
1997- private static final class MimeMessageTest implements Test {
1998- public void run(byte[] content, int repetitions) throws Exception {
1999- for (int i = 0; i < repetitions; i++) {
2000- MimeMessage mm = new MimeMessage(null, new ByteArrayInputStream(content));
2001- Multipart multipart = (Multipart) mm.getContent();
2002- multipart.getCount(); // force parsing
2003- }
2004- }
2005- }
2006- */
2007-
2008-}
2009
2010=== removed file 'GroundhogReader/apache-mime4j-0.6/doap_James_Mime4j.rdf'
2011--- GroundhogReader/apache-mime4j-0.6/doap_James_Mime4j.rdf 2010-03-14 02:32:45 +0000
2012+++ GroundhogReader/apache-mime4j-0.6/doap_James_Mime4j.rdf 1970-01-01 00:00:00 +0000
2013@@ -1,134 +0,0 @@
2014-<?xml version="1.0"?>
2015-<?xml-stylesheet type="text/xsl"?>
2016-<rdf:RDF xml:lang="en"
2017- xmlns="http://usefulinc.com/ns/doap#"
2018- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
2019- xmlns:asfext="http://projects.apache.org/ns/asfext#"
2020- xmlns:foaf="http://xmlns.com/foaf/0.1/">
2021-<!--
2022- $HeadURL$
2023- $Revision$
2024- $Date$
2025-
2026- ====================================================================
2027- Licensed to the Apache Software Foundation (ASF) under one
2028- or more contributor license agreements. See the NOTICE file
2029- distributed with this work for additional information
2030- regarding copyright ownership. The ASF licenses this file
2031- to you under the Apache License, Version 2.0 (the
2032- "License"); you may not use this file except in compliance
2033- with the License. You may obtain a copy of the License at
2034-
2035- http://www.apache.org/licenses/LICENSE-2.0
2036-
2037- Unless required by applicable law or agreed to in writing,
2038- software distributed under the License is distributed on an
2039- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
2040- KIND, either express or implied. See the License for the
2041- specific language governing permissions and limitations
2042- under the License.
2043- ====================================================================
2044-
2045- This software consists of voluntary contributions made by many
2046- individuals on behalf of the Apache Software Foundation. For more
2047- information on the Apache Software Foundation, please see
2048- <http://www.apache.org />.
2049--->
2050-
2051- <Project rdf:about="http://james.apache.org/mime4j/">
2052- <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
2053- <name>Apache James Mime4j</name>
2054- <homepage rdf:resource="http://james.apache.org/mime4j/" />
2055- <asfext:pmc rdf:resource="http://james.apache.org" />
2056- <shortdesc>
2057-Mime4j can be used to parse e-mail message streams in plain rfc822 and MIME format
2058-and to build a tree representation of an e-mail message.
2059- </shortdesc>
2060- <description>
2061-Mime4j provides a parser for e-mail message streams in plain rfc822 and MIME format.
2062-The parser uses a callback mechanism to report parsing events such as the start of
2063-an entity header, the start of a body. The parser has been designed to be extremely
2064-tolerant against messages violating the standards. Mime4j can also be used to build
2065-a tree representation of an e-mail message
2066- </description>
2067- <bug-database rdf:resource="http://issues.apache.org/jira/browse/MIME4J" />
2068- <mailing-list rdf:resource="http://james.apache.org/mime4j/mail-lists.html" />
2069- <download-page rdf:resource="http://james.apache.org/download.cgi" />
2070- <programming-language>Java</programming-language>
2071- <category rdf:resource="http://projects.apache.org/category/mail" />
2072- <category rdf:resource="http://projects.apache.org/category/library" />
2073-
2074- <!-- Multiple releases can be listed, each in its own section -->
2075- <release>
2076- <Version>
2077- <name>Apache James Mime4j 0.5</name>
2078- <created>2008-10-18</created>
2079- <revision>0.5</revision>
2080- </Version>
2081- <Version>
2082- <name>Apache James Mime4j 0.4</name>
2083- <created>2008-08-20</created>
2084- <revision>0.4</revision>
2085- </Version>
2086- <Version>
2087- <name>Apache James Mime4j 0.3</name>
2088- <created>2007-05-31</created>
2089- <revision>0.3</revision>
2090- </Version>
2091- <Version>
2092- <name>Apache James Mime4j 0.2</name>
2093- <created>2006-01-09</created>
2094- <revision>0.2</revision>
2095- </Version>
2096- </release>
2097-
2098- <repository>
2099- <SVNRepository>
2100- <location rdf:resource="http://svn.apache.org/repos/asf/james/mime4j/trunk"/>
2101- <browse rdf:resource="http://svn.apache.org/viewvc/james/mime4j/trunk"/>
2102- </SVNRepository>
2103- </repository>
2104-
2105- <asfext:implements>
2106- <asfext:Standard>
2107- <asfext:title>Standard for ARPA Internet Text Messages</asfext:title>
2108- <asfext:body>IETF</asfext:body>
2109- <asfext:id>RFC 822</asfext:id>
2110- <asfext:url rdf:resource="http://tools.ietf.org/html/rfc822"/>
2111- </asfext:Standard>
2112- </asfext:implements>
2113- <asfext:implements>
2114- <asfext:Standard>
2115- <asfext:title>Internet Message Format</asfext:title>
2116- <asfext:body>IETF</asfext:body>
2117- <asfext:id>RFC 2822</asfext:id>
2118- <asfext:url rdf:resource="http://tools.ietf.org/html/rfc2822"/>
2119- </asfext:Standard>
2120- </asfext:implements>
2121- <asfext:implements>
2122- <asfext:Standard>
2123- <asfext:title>Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</asfext:title>
2124- <asfext:body>IETF</asfext:body>
2125- <asfext:id>RFC 2045</asfext:id>
2126- <asfext:url rdf:resource="http://tools.ietf.org/html/rfc2045"/>
2127- </asfext:Standard>
2128- </asfext:implements>
2129- <asfext:implements>
2130- <asfext:Standard>
2131- <asfext:title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</asfext:title>
2132- <asfext:body>IETF</asfext:body>
2133- <asfext:id>RFC 2046</asfext:id>
2134- <asfext:url rdf:resource="http://tools.ietf.org/html/rfc2046"/>
2135- </asfext:Standard>
2136- </asfext:implements>
2137- <asfext:implements>
2138- <asfext:Standard>
2139- <asfext:title>Multipurpose Internet Mail Extensions (MIME) Part Three: Message Header Extensions for Non-ASCII Text</asfext:title>
2140- <asfext:body>IETF</asfext:body>
2141- <asfext:id>RFC 2047</asfext:id>
2142- <asfext:url rdf:resource="http://tools.ietf.org/html/rfc2047"/>
2143- </asfext:Standard>
2144- </asfext:implements>
2145-
2146- </Project>
2147-</rdf:RDF>
2148
2149=== removed directory 'GroundhogReader/apache-mime4j-0.6/examples'
2150=== removed directory 'GroundhogReader/apache-mime4j-0.6/examples/src'
2151=== removed directory 'GroundhogReader/apache-mime4j-0.6/examples/src/java'
2152=== removed directory 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org'
2153=== removed directory 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache'
2154=== removed directory 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james'
2155=== removed directory 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j'
2156=== removed directory 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples'
2157=== removed directory 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/dom'
2158=== removed file 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java'
2159--- GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java 2010-03-14 02:32:45 +0000
2160+++ GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java 1970-01-01 00:00:00 +0000
2161@@ -1,187 +0,0 @@
2162-/****************************************************************
2163- * Licensed to the Apache Software Foundation (ASF) under one *
2164- * or more contributor license agreements. See the NOTICE file *
2165- * distributed with this work for additional information *
2166- * regarding copyright ownership. The ASF licenses this file *
2167- * to you under the Apache License, Version 2.0 (the *
2168- * "License"); you may not use this file except in compliance *
2169- * with the License. You may obtain a copy of the License at *
2170- * *
2171- * http://www.apache.org/licenses/LICENSE-2.0 *
2172- * *
2173- * Unless required by applicable law or agreed to in writing, *
2174- * software distributed under the License is distributed on an *
2175- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
2176- * KIND, either express or implied. See the License for the *
2177- * specific language governing permissions and limitations *
2178- * under the License. *
2179- ****************************************************************/
2180-
2181-package org.apache.james.mime4j.samples.dom;
2182-
2183-import java.awt.BasicStroke;
2184-import java.awt.Color;
2185-import java.awt.Graphics2D;
2186-import java.awt.RenderingHints;
2187-import java.awt.image.BufferedImage;
2188-import java.io.IOException;
2189-import java.util.Date;
2190-
2191-import javax.imageio.ImageIO;
2192-
2193-import org.apache.james.mime4j.field.address.Mailbox;
2194-import org.apache.james.mime4j.message.BinaryBody;
2195-import org.apache.james.mime4j.message.BodyFactory;
2196-import org.apache.james.mime4j.message.BodyPart;
2197-import org.apache.james.mime4j.message.Message;
2198-import org.apache.james.mime4j.message.Multipart;
2199-import org.apache.james.mime4j.message.TextBody;
2200-import org.apache.james.mime4j.storage.Storage;
2201-import org.apache.james.mime4j.storage.StorageOutputStream;
2202-import org.apache.james.mime4j.storage.StorageProvider;
2203-
2204-/**
2205- * Creates a multipart/mixed message that consists of a text/plain and an
2206- * image/png part. The image is created on the fly; a similar technique can be
2207- * used to create PDF or XML attachments, for example.
2208- */
2209-public class MultipartMessage {
2210-
2211- public static void main(String[] args) throws Exception {
2212- // 1) start with an empty message
2213-
2214- Message message = new Message();
2215-
2216- // 2) set header fields
2217-
2218- // Date and From are required fields
2219- message.setDate(new Date());
2220- message.setFrom(Mailbox.parse("John Doe <jdoe@machine.example>"));
2221-
2222- // Message-ID should be present
2223- message.createMessageId("machine.example");
2224-
2225- // set some optional fields
2226- message.setTo(Mailbox.parse("Mary Smith <mary@example.net>"));
2227- message.setSubject("An image for you");
2228-
2229- // 3) set a multipart body
2230-
2231- Multipart multipart = new Multipart("mixed");
2232-
2233- // a multipart may have a preamble
2234- multipart.setPreamble("This is a multi-part message in MIME format.");
2235-
2236- // first part is text/plain
2237- BodyFactory bodyFactory = new BodyFactory();
2238- BodyPart textPart = createTextPart(bodyFactory, "Why so serious?");
2239- multipart.addBodyPart(textPart);
2240-
2241- // second part is image/png (image is created on the fly)
2242- BufferedImage image = renderSampleImage();
2243- BodyPart imagePart = createImagePart(bodyFactory, image);
2244- multipart.addBodyPart(imagePart);
2245-
2246- // setMultipart also sets the Content-Type header field
2247- message.setMultipart(multipart);
2248-
2249- // 4) print message to standard output
2250-
2251- message.writeTo(System.out);
2252-
2253- // 5) message is no longer needed and should be disposed of
2254-
2255- message.dispose();
2256- }
2257-
2258- /**
2259- * Creates a text part from the specified string.
2260- */
2261- private static BodyPart createTextPart(BodyFactory bodyFactory, String text) {
2262- // Use UTF-8 to encode the specified text
2263- TextBody body = bodyFactory.textBody(text, "UTF-8");
2264-
2265- // Create a text/plain body part
2266- BodyPart bodyPart = new BodyPart();
2267- bodyPart.setText(body);
2268- bodyPart.setContentTransferEncoding("quoted-printable");
2269-
2270- return bodyPart;
2271- }
2272-
2273- /**
2274- * Creates a binary part from the specified image.
2275- */
2276- private static BodyPart createImagePart(BodyFactory bodyFactory,
2277- BufferedImage image) throws IOException {
2278- // Create a binary message body from the image
2279- StorageProvider storageProvider = bodyFactory.getStorageProvider();
2280- Storage storage = storeImage(storageProvider, image, "png");
2281- BinaryBody body = bodyFactory.binaryBody(storage);
2282-
2283- // Create a body part with the correct MIME-type and transfer encoding
2284- BodyPart bodyPart = new BodyPart();
2285- bodyPart.setBody(body, "image/png");
2286- bodyPart.setContentTransferEncoding("base64");
2287-
2288- // Specify a filename in the Content-Disposition header (implicitly sets
2289- // the disposition type to "attachment")
2290- bodyPart.setFilename("smiley.png");
2291-
2292- return bodyPart;
2293- }
2294-
2295- /**
2296- * Stores the specified image in a Storage object.
2297- */
2298- private static Storage storeImage(StorageProvider storageProvider,
2299- BufferedImage image, String formatName) throws IOException {
2300- // An output stream that is capable of building a Storage object.
2301- StorageOutputStream out = storageProvider.createStorageOutputStream();
2302-
2303- // Write the image to our output stream. A StorageOutputStream can be
2304- // used to create attachments using any API that supports writing a
2305- // document to an output stream, e.g. iText's PdfWriter.
2306- ImageIO.write(image, formatName, out);
2307-
2308- // Implicitly closes the output stream and returns the data that has
2309- // been written to it.
2310- return out.toStorage();
2311- }
2312-
2313- /**
2314- * Draws an image; unrelated to Mime4j.
2315- */
2316- private static BufferedImage renderSampleImage() {
2317- System.setProperty("java.awt.headless", "true");
2318-
2319- final int size = 100;
2320-
2321- BufferedImage img = new BufferedImage(size, size,
2322- BufferedImage.TYPE_BYTE_GRAY);
2323-
2324- Graphics2D gfx = img.createGraphics();
2325- gfx.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
2326- RenderingHints.VALUE_ANTIALIAS_ON);
2327- gfx.setStroke(new BasicStroke(size / 40f, BasicStroke.CAP_ROUND,
2328- BasicStroke.JOIN_ROUND));
2329-
2330- gfx.setColor(Color.BLACK);
2331- gfx.setBackground(Color.WHITE);
2332- gfx.clearRect(0, 0, size, size);
2333-
2334- int b = size / 30;
2335- gfx.drawOval(b, b, size - 1 - 2 * b, size - 1 - 2 * b);
2336-
2337- int esz = size / 7;
2338- int ex = (int) (0.27f * size);
2339- gfx.drawOval(ex, ex, esz, esz);
2340- gfx.drawOval(size - 1 - esz - ex, ex, esz, esz);
2341-
2342- b = size / 5;
2343- gfx.drawArc(b, b, size - 1 - 2 * b, size - 1 - 2 * b, 200, 140);
2344-
2345- return img;
2346- }
2347-
2348-}
2349
2350=== removed file 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/dom/TextPlainMessage.java'
2351--- GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/dom/TextPlainMessage.java 2010-03-14 02:32:45 +0000
2352+++ GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/dom/TextPlainMessage.java 1970-01-01 00:00:00 +0000
2353@@ -1,70 +0,0 @@
2354-/****************************************************************
2355- * Licensed to the Apache Software Foundation (ASF) under one *
2356- * or more contributor license agreements. See the NOTICE file *
2357- * distributed with this work for additional information *
2358- * regarding copyright ownership. The ASF licenses this file *
2359- * to you under the Apache License, Version 2.0 (the *
2360- * "License"); you may not use this file except in compliance *
2361- * with the License. You may obtain a copy of the License at *
2362- * *
2363- * http://www.apache.org/licenses/LICENSE-2.0 *
2364- * *
2365- * Unless required by applicable law or agreed to in writing, *
2366- * software distributed under the License is distributed on an *
2367- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
2368- * KIND, either express or implied. See the License for the *
2369- * specific language governing permissions and limitations *
2370- * under the License. *
2371- ****************************************************************/
2372-
2373-package org.apache.james.mime4j.samples.dom;
2374-
2375-import java.io.IOException;
2376-import java.util.Date;
2377-
2378-import org.apache.james.mime4j.field.address.Mailbox;
2379-import org.apache.james.mime4j.message.BodyFactory;
2380-import org.apache.james.mime4j.message.Message;
2381-import org.apache.james.mime4j.message.TextBody;
2382-
2383-/**
2384- * This example generates a message very similar to the one from RFC 5322
2385- * Appendix A.1.1.
2386- */
2387-public class TextPlainMessage {
2388- public static void main(String[] args) throws IOException {
2389- // 1) start with an empty message
2390-
2391- Message message = new Message();
2392-
2393- // 2) set header fields
2394-
2395- // Date and From are required fields
2396- message.setDate(new Date());
2397- message.setFrom(Mailbox.parse("John Doe <jdoe@machine.example>"));
2398-
2399- // Message-ID should be present
2400- message.createMessageId("machine.example");
2401-
2402- // set some optional fields
2403- message.setTo(Mailbox.parse("Mary Smith <mary@example.net>"));
2404- message.setSubject("Saying Hello");
2405-
2406- // 3) set a text body
2407-
2408- BodyFactory bodyFactory = new BodyFactory();
2409- TextBody body = bodyFactory.textBody("This is a message just to "
2410- + "say hello.\r\nSo, \"Hello\".");
2411-
2412- // note that setText also sets the Content-Type header field
2413- message.setText(body);
2414-
2415- // 4) print message to standard output
2416-
2417- message.writeTo(System.out);
2418-
2419- // 5) message is no longer needed and should be disposed of
2420-
2421- message.dispose();
2422- }
2423-}
2424
2425=== removed directory 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/transform'
2426=== removed file 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/transform/TransformMessage.java'
2427--- GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/transform/TransformMessage.java 2010-03-14 02:32:45 +0000
2428+++ GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/transform/TransformMessage.java 1970-01-01 00:00:00 +0000
2429@@ -1,175 +0,0 @@
2430-/****************************************************************
2431- * Licensed to the Apache Software Foundation (ASF) under one *
2432- * or more contributor license agreements. See the NOTICE file *
2433- * distributed with this work for additional information *
2434- * regarding copyright ownership. The ASF licenses this file *
2435- * to you under the Apache License, Version 2.0 (the *
2436- * "License"); you may not use this file except in compliance *
2437- * with the License. You may obtain a copy of the License at *
2438- * *
2439- * http://www.apache.org/licenses/LICENSE-2.0 *
2440- * *
2441- * Unless required by applicable law or agreed to in writing, *
2442- * software distributed under the License is distributed on an *
2443- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
2444- * KIND, either express or implied. See the License for the *
2445- * specific language governing permissions and limitations *
2446- * under the License. *
2447- ****************************************************************/
2448-
2449-package org.apache.james.mime4j.samples.transform;
2450-
2451-import java.io.ByteArrayInputStream;
2452-import java.io.IOException;
2453-import java.util.Date;
2454-import java.util.Random;
2455-
2456-import org.apache.james.mime4j.field.address.Mailbox;
2457-import org.apache.james.mime4j.message.Body;
2458-import org.apache.james.mime4j.message.BodyFactory;
2459-import org.apache.james.mime4j.message.BodyPart;
2460-import org.apache.james.mime4j.message.Message;
2461-import org.apache.james.mime4j.message.Multipart;
2462-import org.apache.james.mime4j.message.TextBody;
2463-import org.apache.james.mime4j.storage.DefaultStorageProvider;
2464-import org.apache.james.mime4j.storage.StorageProvider;
2465-import org.apache.james.mime4j.storage.TempFileStorageProvider;
2466-
2467-/**
2468- * This code should illustrate how to transform a message into another message
2469- * without modifying the original.
2470- */
2471-public class TransformMessage {
2472-
2473- // Host name used in message identifiers.
2474- private static final String HOSTNAME = "localhost";
2475-
2476- public static void main(String[] args) throws Exception {
2477- // Explicitly set a strategy for storing body parts. Usually not
2478- // necessary; for most applications the default setting is appropriate.
2479- StorageProvider storageProvider = new TempFileStorageProvider();
2480- DefaultStorageProvider.setInstance(storageProvider);
2481-
2482- // Create a template message. It would be possible to load a message
2483- // from an input stream but for this example a message object is created
2484- // from scratch for demonstration purposes.
2485- Message template = createTemplate();
2486-
2487- // Create a new message by transforming the template.
2488- Message transformed = transform(template);
2489-
2490- // Print transformed message.
2491- System.out.println("\n\nTransformed message:\n--------------------\n");
2492- transformed.writeTo(System.out);
2493-
2494- // Messages should be disposed of when they are no longer needed.
2495- // Disposing of a message also disposes of all child elements (e.g. body
2496- // parts) of the message.
2497- transformed.dispose();
2498-
2499- // Print original message to illustrate that it was not affected by the
2500- // transformation.
2501- System.out.println("\n\nOriginal template:\n------------------\n");
2502- template.writeTo(System.out);
2503-
2504- // Original message is no longer needed.
2505- template.dispose();
2506-
2507- // At this point all temporary files have been deleted because all
2508- // messages and body parts have been disposed of properly.
2509- }
2510-
2511- /**
2512- * Copies the given message and makes some arbitrary changes to the copy.
2513- */
2514- private static Message transform(Message original) throws IOException {
2515- // Create a copy of the template. The copy can be modified without
2516- // affecting the original.
2517- Message message = new Message(original);
2518-
2519- // In this example we know we have a multipart message. Use
2520- // Message#isMultipart() if uncertain.
2521- Multipart multipart = (Multipart) message.getBody();
2522-
2523- // Insert a new text/plain body part after every body part of the
2524- // template.
2525- final int count = multipart.getCount();
2526- for (int i = 0; i < count; i++) {
2527- String text = "Text inserted after part " + (i + 1);
2528- BodyPart bodyPart = createTextPart(text);
2529- multipart.addBodyPart(bodyPart, 2 * i + 1);
2530- }
2531-
2532- // For no particular reason remove the second binary body part (now
2533- // at index four).
2534- BodyPart removed = multipart.removeBodyPart(4);
2535-
2536- // The removed body part no longer has a parent entity it belongs to so
2537- // it should be disposed of.
2538- removed.dispose();
2539-
2540- // Set some headers on the transformed message
2541- message.createMessageId(HOSTNAME);
2542- message.setSubject("Transformed message");
2543- message.setDate(new Date());
2544- message.setFrom(Mailbox.parse("John Doe <jdoe@machine.example>"));
2545-
2546- return message;
2547- }
2548-
2549- /**
2550- * Creates a multipart/mixed message that consists of three parts (one text,
2551- * two binary).
2552- */
2553- private static Message createTemplate() throws IOException {
2554- Multipart multipart = new Multipart("mixed");
2555-
2556- BodyPart part1 = createTextPart("This is the first part of the template..");
2557- multipart.addBodyPart(part1);
2558-
2559- BodyPart part2 = createRandomBinaryPart(200);
2560- multipart.addBodyPart(part2);
2561-
2562- BodyPart part3 = createRandomBinaryPart(300);
2563- multipart.addBodyPart(part3);
2564-
2565- Message message = new Message();
2566- message.setMultipart(multipart);
2567-
2568- message.setSubject("Template message");
2569-
2570- return message;
2571- }
2572-
2573- /**
2574- * Creates a text part from the specified string.
2575- */
2576- private static BodyPart createTextPart(String text) {
2577- TextBody body = new BodyFactory().textBody(text, "UTF-8");
2578-
2579- BodyPart bodyPart = new BodyPart();
2580- bodyPart.setText(body);
2581- bodyPart.setContentTransferEncoding("quoted-printable");
2582-
2583- return bodyPart;
2584- }
2585-
2586- /**
2587- * Creates a binary part with random content.
2588- */
2589- private static BodyPart createRandomBinaryPart(int numberOfBytes)
2590- throws IOException {
2591- byte[] data = new byte[numberOfBytes];
2592- new Random().nextBytes(data);
2593-
2594- Body body = new BodyFactory()
2595- .binaryBody(new ByteArrayInputStream(data));
2596-
2597- BodyPart bodyPart = new BodyPart();
2598- bodyPart.setBody(body, "application/octet-stream");
2599- bodyPart.setContentTransferEncoding("base64");
2600-
2601- return bodyPart;
2602- }
2603-
2604-}
2605
2606=== removed directory 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/tree'
2607=== removed file 'GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/tree/MessageTree.java'
2608--- GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/tree/MessageTree.java 2010-03-14 02:32:45 +0000
2609+++ GroundhogReader/apache-mime4j-0.6/examples/src/java/org/apache/james/mime4j/samples/tree/MessageTree.java 1970-01-01 00:00:00 +0000
2610@@ -1,385 +0,0 @@
2611-/****************************************************************
2612- * Licensed to the Apache Software Foundation (ASF) under one *
2613- * or more contributor license agreements. See the NOTICE file *
2614- * distributed with this work for additional information *
2615- * regarding copyright ownership. The ASF licenses this file *
2616- * to you under the Apache License, Version 2.0 (the *
2617- * "License"); you may not use this file except in compliance *
2618- * with the License. You may obtain a copy of the License at *
2619- * *
2620- * http://www.apache.org/licenses/LICENSE-2.0 *
2621- * *
2622- * Unless required by applicable law or agreed to in writing, *
2623- * software distributed under the License is distributed on an *
2624- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
2625- * KIND, either express or implied. See the License for the *
2626- * specific language governing permissions and limitations *
2627- * under the License. *
2628- ****************************************************************/
2629-
2630-package org.apache.james.mime4j.samples.tree;
2631-
2632-import java.awt.Dimension;
2633-import java.awt.GridLayout;
2634-import java.io.FileInputStream;
2635-import java.io.FileNotFoundException;
2636-import java.io.IOException;
2637-import java.io.InputStream;
2638-import java.io.Reader;
2639-import java.util.Date;
2640-import java.util.Map;
2641-
2642-import javax.swing.JFrame;
2643-import javax.swing.JPanel;
2644-import javax.swing.JScrollPane;
2645-import javax.swing.JSplitPane;
2646-import javax.swing.JTextArea;
2647-import javax.swing.JTree;
2648-import javax.swing.event.TreeSelectionEvent;
2649-import javax.swing.event.TreeSelectionListener;
2650-import javax.swing.tree.DefaultMutableTreeNode;
2651-import javax.swing.tree.TreeSelectionModel;
2652-
2653-import org.apache.james.mime4j.field.AddressListField;
2654-import org.apache.james.mime4j.field.ContentTypeField;
2655-import org.apache.james.mime4j.field.DateTimeField;
2656-import org.apache.james.mime4j.field.UnstructuredField;
2657-import org.apache.james.mime4j.field.address.Mailbox;
2658-import org.apache.james.mime4j.field.address.MailboxList;
2659-import org.apache.james.mime4j.message.BinaryBody;
2660-import org.apache.james.mime4j.message.Body;
2661-import org.apache.james.mime4j.message.BodyPart;
2662-import org.apache.james.mime4j.message.Entity;
2663-import org.apache.james.mime4j.message.Header;
2664-import org.apache.james.mime4j.message.Message;
2665-import org.apache.james.mime4j.message.Multipart;
2666-import org.apache.james.mime4j.message.TextBody;
2667-import org.apache.james.mime4j.parser.Field;
2668-
2669-/**
2670- * Displays a parsed Message in a window. The window will be divided into
2671- * two panels. The left panel displays the Message tree. Clicking on a
2672- * node in the tree shows information on that node in the right panel.
2673- *
2674- * Some of this code have been copied from the Java tutorial's JTree section.
2675- */
2676-public class MessageTree extends JPanel implements TreeSelectionListener {
2677- private static final long serialVersionUID = 1L;
2678-
2679- private JPanel contentPane;
2680- private JTextArea textView;
2681- private JTree tree;
2682-
2683- /**
2684- * Wraps an Object and associates it with a text. All message parts
2685- * (headers, bodies, multiparts, body parts) will be wrapped in
2686- * ObjectWrapper instances before they are added to the JTree instance.
2687- */
2688- public static class ObjectWrapper {
2689- private String text = "";
2690- private Object object = null;
2691-
2692- public ObjectWrapper(String text, Object object) {
2693- this.text = text;
2694- this.object = object;
2695- }
2696-
2697- @Override
2698- public String toString() {
2699- return text;
2700- }
2701-
2702- public Object getObject() {
2703- return object;
2704- }
2705- }
2706-
2707- /**
2708- * Creates a new <code>MessageTree</code> instance displaying the
2709- * specified <code>Message</code>.
2710- *
2711- * @param message the message to display.
2712- */
2713- public MessageTree(Message message) {
2714- super(new GridLayout(1,0));
2715-
2716- DefaultMutableTreeNode root = createNode(message);
2717-
2718- tree = new JTree(root);
2719- tree.getSelectionModel().setSelectionMode(
2720- TreeSelectionModel.SINGLE_TREE_SELECTION);
2721-
2722- tree.addTreeSelectionListener(this);
2723-
2724- JScrollPane treeView = new JScrollPane(tree);
2725-
2726- contentPane = new JPanel(new GridLayout(1,0));
2727- JScrollPane contentView = new JScrollPane(contentPane);
2728-
2729- JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
2730- splitPane.setLeftComponent(treeView);
2731- splitPane.setRightComponent(contentView);
2732-
2733- Dimension minimumSize = new Dimension(100, 50);
2734- contentView.setMinimumSize(minimumSize);
2735- treeView.setMinimumSize(minimumSize);
2736- splitPane.setDividerLocation(250);
2737- splitPane.setPreferredSize(new Dimension(750, 500));
2738-
2739- add(splitPane);
2740-
2741- textView = new JTextArea();
2742- textView.setEditable(false);
2743- textView.setLineWrap(true);
2744- contentPane.add(textView);
2745- }
2746-
2747- /**
2748- * Create a node given a Multipart body.
2749- * Add the Preamble, all Body parts and the Epilogue to the node.
2750- *
2751- * @param multipart the Multipart.
2752- * @return the root node of the tree.
2753- */
2754- private DefaultMutableTreeNode createNode(Header header) {
2755- DefaultMutableTreeNode node = new DefaultMutableTreeNode(
2756- new ObjectWrapper("Header", header));
2757-
2758- for (Field field : header.getFields()) {
2759- String name = field.getName();
2760-
2761- node.add(new DefaultMutableTreeNode(new ObjectWrapper(name, field)));
2762- }
2763-
2764- return node;
2765- }
2766-
2767- /**
2768- * Create a node given a Multipart body.
2769- * Add the Preamble, all Body parts and the Epilogue to the node.
2770- *
2771- * @param multipart the Multipart.
2772- * @return the root node of the tree.
2773- */
2774- private DefaultMutableTreeNode createNode(Multipart multipart) {
2775- DefaultMutableTreeNode node = new DefaultMutableTreeNode(
2776- new ObjectWrapper("Multipart", multipart));
2777-
2778- node.add(new DefaultMutableTreeNode(
2779- new ObjectWrapper("Preamble", multipart.getPreamble())));
2780- for (BodyPart part : multipart.getBodyParts()) {
2781- node.add(createNode(part));
2782- }
2783- node.add(new DefaultMutableTreeNode(
2784- new ObjectWrapper("Epilogue", multipart.getEpilogue())));
2785-
2786- return node;
2787- }
2788-
2789- /**
2790- * Creates the tree nodes given a MIME entity (either a Message or
2791- * a BodyPart).
2792- *
2793- * @param entity the entity.
2794- * @return the root node of the tree displaying the specified entity and
2795- * its children.
2796- */
2797- private DefaultMutableTreeNode createNode(Entity entity) {
2798-
2799- /*
2800- * Create the root node for the entity. It's either a
2801- * Message or a Body part.
2802- */
2803- String type = "Message";
2804- if (entity instanceof BodyPart) {
2805- type = "Body part";
2806- }
2807- DefaultMutableTreeNode node = new DefaultMutableTreeNode(
2808- new ObjectWrapper(type, entity));
2809-
2810- /*
2811- * Add the node encapsulating the entity Header.
2812- */
2813- node.add(createNode(entity.getHeader()));
2814-
2815- Body body = entity.getBody();
2816-
2817- if (body instanceof Multipart) {
2818- /*
2819- * The body of the entity is a Multipart.
2820- */
2821-
2822- node.add(createNode((Multipart) body));
2823- } else if (body instanceof Message) {
2824- /*
2825- * The body is another Message.
2826- */
2827-
2828- node.add(createNode((Message) body));
2829-
2830- } else {
2831- /*
2832- * Discrete Body (either of type TextBody or BinaryBody).
2833- */
2834- type = "Text body";
2835- if (body instanceof BinaryBody) {
2836- type = "Binary body";
2837- }
2838-
2839- type += " (" + entity.getMimeType() + ")";
2840- node.add(new DefaultMutableTreeNode(new ObjectWrapper(type, body)));
2841-
2842- }
2843-
2844- return node;
2845- }
2846-
2847- /**
2848- * Called whenever the selection changes in the JTree instance showing
2849- * the Message nodes.
2850- *
2851- * @param e the event.
2852- */
2853- public void valueChanged(TreeSelectionEvent e) {
2854- DefaultMutableTreeNode node = (DefaultMutableTreeNode)
2855- tree.getLastSelectedPathComponent();
2856-
2857- textView.setText("");
2858-
2859- if (node == null) {
2860- return;
2861- }
2862-
2863- Object o = ((ObjectWrapper) node.getUserObject()).getObject();
2864-
2865- if (node.isLeaf()) {
2866-
2867- if (o instanceof TextBody){
2868- /*
2869- * A text body. Display its contents.
2870- */
2871- TextBody body = (TextBody) o;
2872- StringBuilder sb = new StringBuilder();
2873- try {
2874- Reader r = body.getReader();
2875- int c;
2876- while ((c = r.read()) != -1) {
2877- sb.append((char) c);
2878- }
2879- } catch (IOException ex) {
2880- ex.printStackTrace();
2881- }
2882- textView.setText(sb.toString());
2883-
2884- } else if (o instanceof BinaryBody){
2885- /*
2886- * A binary body. Display its MIME type and length in bytes.
2887- */
2888- BinaryBody body = (BinaryBody) o;
2889- int size = 0;
2890- try {
2891- InputStream is = body.getInputStream();
2892- while ((is.read()) != -1) {
2893- size++;
2894- }
2895- } catch (IOException ex) {
2896- ex.printStackTrace();
2897- }
2898- textView.setText("Binary body\n"
2899- + "MIME type: "
2900- + body.getParent().getMimeType() + "\n"
2901- + "Size of decoded data: " + size + " bytes");
2902-
2903- } else if (o instanceof ContentTypeField) {
2904- /*
2905- * Content-Type field.
2906- */
2907- ContentTypeField field = (ContentTypeField) o;
2908- StringBuilder sb = new StringBuilder();
2909- sb.append("MIME type: " + field.getMimeType() + "\n");
2910- Map<String, String> params = field.getParameters();
2911- for (String name : params.keySet()) {
2912- sb.append(name + " = " + params.get(name) + "\n");
2913- }
2914- textView.setText(sb.toString());
2915-
2916- } else if (o instanceof AddressListField) {
2917- /*
2918- * An address field (From, To, Cc, etc)
2919- */
2920- AddressListField field = (AddressListField) o;
2921- MailboxList list = field.getAddressList().flatten();
2922- StringBuilder sb = new StringBuilder();
2923- for (int i = 0; i < list.size(); i++) {
2924- Mailbox mb = list.get(i);
2925- sb.append(mb.getDisplayString() + "\n");
2926- }
2927- textView.setText(sb.toString());
2928-
2929- } else if (o instanceof DateTimeField) {
2930- Date date = ((DateTimeField) o).getDate();
2931- textView.setText(date.toString());
2932- } else if (o instanceof UnstructuredField){
2933- textView.setText(((UnstructuredField) o).getValue());
2934- } else if (o instanceof Field){
2935- textView.setText(((Field) o).getBody());
2936- } else {
2937- /*
2938- * The Object should be a Header or a String containing a
2939- * Preamble or Epilogue.
2940- */
2941- textView.setText(o.toString());
2942- }
2943-
2944- }
2945- }
2946-
2947- /**
2948- * Creates and displays the gui.
2949- *
2950- * @param message the Message to display in the tree.
2951- */
2952- private static void createAndShowGUI(Message message) {
2953- /*
2954- * Create and set up the window.
2955- */
2956- JFrame frame = new JFrame("MessageTree");
2957- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
2958-
2959- /*
2960- * Create and set up the content pane.
2961- */
2962- MessageTree newContentPane = new MessageTree(message);
2963- newContentPane.setOpaque(true);
2964- frame.setContentPane(newContentPane);
2965-
2966- /*
2967- * Display the window.
2968- */
2969- frame.pack();
2970- frame.setVisible(true);
2971- }
2972-
2973- public static void main(String[] args) {
2974- try {
2975-
2976- final Message message = new Message(new FileInputStream(args[0]));
2977-
2978- javax.swing.SwingUtilities.invokeLater(new Runnable() {
2979- public void run() {
2980- createAndShowGUI(message);
2981- }
2982- });
2983-
2984- } catch (ArrayIndexOutOfBoundsException e) {
2985- System.err.println("Wrong number of arguments.");
2986- System.err.println("Usage: org.mime4j.samples.tree.MessageTree"
2987- + " path/to/message");
2988- } catch (FileNotFoundException e) {
2989- System.err.println("The file '" + args[0] + "' could not be found.");
2990- } catch (IOException e) {
2991- System.err.println("The file '" + args[0] + "' could not be read.");
2992- }
2993- }
2994-
2995-}
2996
2997=== removed file 'GroundhogReader/apache-mime4j-0.6/pom.xml'
2998--- GroundhogReader/apache-mime4j-0.6/pom.xml 2010-03-14 02:32:45 +0000
2999+++ GroundhogReader/apache-mime4j-0.6/pom.xml 1970-01-01 00:00:00 +0000
3000@@ -1,379 +0,0 @@
3001-<?xml version="1.0" encoding="UTF-8"?>
3002-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3003- <!--
3004- Licensed to the Apache Software Foundation (ASF) under one
3005- or more contributor license agreements. See the NOTICE file
3006- distributed with this work for additional information
3007- regarding copyright ownership. The ASF licenses this file
3008- to you under the Apache License, Version 2.0 (the
3009- "License"); you may not use this file except in compliance
3010- with the License. You may obtain a copy of the License at
3011-
3012- http://www.apache.org/licenses/LICENSE-2.0
3013-
3014- Unless required by applicable law or agreed to in writing,
3015- software distributed under the License is distributed on an
3016- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
3017- KIND, either express or implied. See the License for the
3018- specific language governing permissions and limitations
3019- under the License.
3020- -->
3021- <parent>
3022- <artifactId>james-project</artifactId>
3023- <groupId>org.apache.james</groupId>
3024- <version>1.2</version>
3025- <!-- Either this really points to the james-project/pom.xml or you
3026- will have to tune the local repository, later, in this file -->
3027- <relativePath>../james-project/project/pom.xml</relativePath>
3028- </parent>
3029- <modelVersion>4.0.0</modelVersion>
3030- <groupId>org.apache.james</groupId>
3031- <artifactId>apache-mime4j</artifactId>
3032- <name>Apache JAMES Mime4j</name>
3033- <version>0.6</version>
3034- <description>Java stream based MIME message parser</description>
3035- <url>http://james.apache.org/mime4j</url>
3036- <issueManagement>
3037- <url>http://issues.apache.org/jira/browse/MIME4J</url>
3038- </issueManagement>
3039- <inceptionYear>2004</inceptionYear>
3040- <distributionManagement>
3041- <site>
3042- <id>mime4j-website</id>
3043- <url>scp://minotaur.apache.org/www/james.apache.org/mime4j/</url>
3044- </site>
3045- </distributionManagement>
3046- <scm>
3047- <connection>scm:svn:http://svn.apache.org/repos/asf/james/mime4j/tags/apache-mime4j-0.6</connection>
3048- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/james/mime4j/tags/apache-mime4j-0.6</developerConnection>
3049- <url>http://svn.apache.org/viewvc/james/mime4j/tags/apache-mime4j-0.6</url>
3050- </scm>
3051- <build>
3052- <plugins>
3053- <plugin>
3054- <groupId>org.codehaus.mojo</groupId>
3055- <artifactId>rat-maven-plugin</artifactId>
3056- <version>1.0-alpha-3</version>
3057- <executions>
3058- <execution>
3059- <phase>verify</phase>
3060- <goals>
3061- <goal>check</goal>
3062- </goals>
3063- </execution>
3064- </executions>
3065- </plugin>
3066- <plugin>
3067- <groupId>org.codehaus.mojo</groupId>
3068- <artifactId>javacc-maven-plugin</artifactId>
3069- <version>2.4.1</version>
3070- <executions>
3071- <execution>
3072- <id>generate-jjtree</id>
3073- <phase>generate-sources</phase>
3074- <goals>
3075- <goal>jjtree-javacc</goal>
3076- </goals>
3077- </execution>
3078- <execution>
3079- <id>generate-javacc</id>
3080- <phase>generate-sources</phase>
3081- <goals>
3082- <goal>javacc</goal>
3083- </goals>
3084- </execution>
3085- </executions>
3086- </plugin>
3087- <plugin>
3088- <groupId>org.apache.maven.plugins</groupId>
3089- <artifactId>maven-compiler-plugin</artifactId>
3090- <version>2.0.2</version>
3091- <configuration>
3092- <source>${compileSource}</source>
3093- <target>${compileSource}</target>
3094- <encoding>iso8859-1</encoding>
3095- </configuration>
3096- </plugin>
3097- <plugin>
3098- <artifactId>maven-jar-plugin</artifactId>
3099- <version>2.2</version>
3100- <configuration>
3101- <archive>
3102- <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
3103- <manifestEntries>
3104- <Specification-Title>Apache Mime4j</Specification-Title>
3105- <Specification-Version>${pom.version}</Specification-Version>
3106- <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
3107- <Implementation-Title>Apache Mime4j</Implementation-Title>
3108- <Implementation-Version>${pom.version}</Implementation-Version>
3109- <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
3110- <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
3111- <url>${pom.url}</url>
3112- </manifestEntries>
3113- </archive>
3114- </configuration>
3115- </plugin>
3116- <plugin>
3117- <artifactId>maven-javadoc-plugin</artifactId>
3118- <version>2.5</version>
3119- <executions>
3120- <execution>
3121- <id>create-javadocs</id> <!-- this is used for inheritance merges -->
3122- <phase>package</phase> <!-- append to the packaging phase. -->
3123- <goals>
3124- <goal>javadoc</goal> <!-- goals == mojos -->
3125- <goal>jar</goal> <!-- goals == mojos -->
3126- </goals>
3127- </execution>
3128- </executions>
3129- <configuration>
3130- <excludePackageNames>org.apache.james.mime4j.field.address.parser:org.apache.james.mime4j.field.contentdisposition.parser:org.apache.james.mime4j.field.contenttype.parser:org.apache.james.mime4j.field.datetime.parser:org.apache.james.mime4j.field.language.parser:org.apache.james.mime4j.field.mimeversion.parser:org.apache.james.mime4j.field.structured.parser</excludePackageNames>
3131- </configuration>
3132- </plugin>
3133- <!-- Add NOTICE and LICENSE to generated JAR -->
3134- <plugin>
3135- <artifactId>maven-remote-resources-plugin</artifactId>
3136- <version>1.0</version>
3137- <executions>
3138- <execution>
3139- <goals>
3140- <goal>process</goal>
3141- </goals>
3142- <configuration>
3143- <resourceBundles>
3144- <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
3145- </resourceBundles>
3146- <properties>
3147- <addLicense>true</addLicense>
3148- </properties>
3149- </configuration>
3150- </execution>
3151- </executions>
3152- </plugin>
3153- <plugin>
3154- <groupId>org.apache.maven.plugins</groupId>
3155- <artifactId>maven-source-plugin</artifactId>
3156- <version>2.0.4</version>
3157- <executions>
3158- <execution>
3159- <id>attach-sources</id>
3160- <goals>
3161- <goal>jar</goal>
3162- </goals>
3163- </execution>
3164- </executions>
3165- </plugin>
3166-
3167- <!--
3168- <plugin>
3169- <groupId>org.apache.maven.plugins</groupId>
3170- <artifactId>maven-javadoc-plugin</artifactId>
3171- </plugin>
3172- -->
3173- <plugin>
3174- <groupId>org.apache.felix</groupId>
3175- <artifactId>maven-bundle-plugin</artifactId>
3176- <version>1.4.3</version>
3177- <executions>
3178- <execution>
3179- <id>bundle-manifest</id>
3180- <phase>process-classes</phase>
3181- <goals>
3182- <goal>manifest</goal>
3183- </goals>
3184- </execution>
3185- </executions>
3186- <extensions>true</extensions>
3187- <configuration>
3188- <instructions>
3189- <Export-Package>org.apache.james.mime4j.*</Export-Package>
3190- <Embed-Dependency>*;scope=runtime</Embed-Dependency>
3191- </instructions>
3192- </configuration>
3193- </plugin>
3194- <plugin>
3195- <artifactId>maven-assembly-plugin</artifactId>
3196- <version>2.2-beta-2</version>
3197- <configuration>
3198- <descriptorSourceDirectory>${basedir}/src/assemble/</descriptorSourceDirectory>
3199- <tarLongFileMode>gnu</tarLongFileMode>
3200- </configuration>
3201- <executions>
3202- <execution>
3203- <id>make-assembly</id> <!-- this is used for inheritance merges -->
3204- <phase>package</phase> <!-- append to the packaging phase. -->
3205- <goals>
3206- <goal>attached</goal> <!-- goals == mojos -->
3207- </goals>
3208- </execution>
3209- </executions>
3210- </plugin>
3211- </plugins>
3212- </build>
3213- <repositories>
3214- <repository>
3215- <id>local-mime4j-stage-repository</id>
3216- <name>Local mime4j stage repository</name>
3217- <!-- Please note that due to http://jira.codehaus.org/browse/MNG-2896 -->
3218- <!-- If you don't have james-project checked out in ../james-project -->
3219- <!-- you will have to place your absolute path to the project instead -->
3220- <!-- of ${basedir}, or, otherwise, manually install the parent poms -->
3221- <!--
3222- mvn -fignorepom.xml install:install-file
3223- -Dfile=stage\org.apache.james\poms\james-parent-1.1.pom
3224- -Dpackaging=pom
3225- -DgroupId=org.apache.james
3226- -DartifactId=james-parent
3227- -Dversion=1.1
3228- mvn -fignorepom.xml install:install-file
3229- -Dfile=stage\org.apache.james\poms\james-project-1.2.pom
3230- -Dpackaging=pom
3231- -DgroupId=org.apache.james
3232- -DartifactId=james-project
3233- -Dversion=1.2
3234- -->
3235- <url>file://${basedir}/stage</url>
3236- <layout>legacy</layout>
3237- <snapshots>
3238- <enabled>true</enabled>
3239- <checksumPolicy>ignore</checksumPolicy>
3240- </snapshots>
3241- <releases>
3242- <enabled>true</enabled>
3243- <checksumPolicy>ignore</checksumPolicy>
3244- </releases>
3245- </repository>
3246- </repositories>
3247- <dependencies>
3248- <dependency>
3249- <groupId>commons-logging</groupId>
3250- <artifactId>commons-logging</artifactId>
3251- <version>1.1.1</version>
3252- </dependency>
3253- <dependency>
3254- <groupId>log4j</groupId>
3255- <artifactId>log4j</artifactId>
3256- <version>1.2.14</version>
3257- <scope>test</scope>
3258- </dependency>
3259- <dependency>
3260- <groupId>junit</groupId>
3261- <artifactId>junit</artifactId>
3262- <version>3.8.1</version>
3263- <type>jar</type>
3264- <!-- Removed as a workaround for an unidentified M2 bug -->
3265- <scope>test</scope>
3266- <optional>true</optional>
3267- </dependency>
3268- <dependency>
3269- <groupId>commons-io</groupId>
3270- <artifactId>commons-io</artifactId>
3271- <version>1.2</version>
3272- <scope>test</scope>
3273- <optional>true</optional>
3274- </dependency>
3275- </dependencies>
3276-
3277- <reporting>
3278- <plugins>
3279- <plugin>
3280- <groupId>org.apache.maven.plugins</groupId>
3281- <artifactId>maven-changes-plugin</artifactId>
3282- <configuration>
3283- <onlyCurrentVersion>true</onlyCurrentVersion>
3284- <resolutionIds>Closed</resolutionIds>
3285- </configuration>
3286- <reportSets>
3287- <reportSet>
3288- <reports>
3289- <report>jira-report</report>
3290- </reports>
3291- </reportSet>
3292- </reportSets>
3293- </plugin>
3294- <plugin>
3295- <artifactId>maven-surefire-plugin</artifactId>
3296- <version>2.4.3</version>
3297- </plugin>
3298- <plugin>
3299- <artifactId>maven-surefire-report-plugin</artifactId>
3300- <version>2.4.3</version>
3301- </plugin>
3302- <plugin>
3303- <artifactId>maven-javadoc-plugin</artifactId>
3304- <version>2.5</version>
3305- </plugin>
3306- <plugin>
3307- <groupId>org.apache.maven.plugins</groupId>
3308- <artifactId>maven-jxr-plugin</artifactId>
3309- <version>2.1</version>
3310- </plugin>
3311- <plugin>
3312- <groupId>org.apache.maven.plugins</groupId>
3313- <artifactId>maven-pmd-plugin</artifactId>
3314- <version>2.4</version>
3315- <configuration>
3316- <targetJdk>${compileSource}</targetJdk>
3317- <rulesets>
3318- <ruleset>/rulesets/basic.xml</ruleset>
3319- <ruleset>/rulesets/controversial.xml</ruleset>
3320- </rulesets>
3321- <format>xml</format>
3322- <linkXref>true</linkXref>
3323- <sourceEncoding>utf-8</sourceEncoding>
3324- <minimumTokens>100</minimumTokens>
3325- </configuration>
3326- </plugin>
3327- <plugin>
3328- <groupId>org.apache.maven.plugins</groupId>
3329- <artifactId>maven-site-plugin</artifactId>
3330- <version>2.0-beta-7</version>
3331- </plugin>
3332- <plugin>
3333- <groupId>org.codehaus.mojo</groupId>
3334- <artifactId>rat-maven-plugin</artifactId>
3335- <version>1.0-alpha-3</version>
3336- <configuration>
3337- <excludes>
3338- <!-- test resources created by JAMES committers / we can't include ALv2 headers there -->
3339- <exclude>src/test/resources/testmsgs/*</exclude>
3340- <exclude>benchmarks/resources/*.msg</exclude>
3341- <!-- 3rd party descriptors distributed via maven repositories
3342- and included "as is" -->
3343- <exclude>stage/commons-io/poms/commons-io-1.2.pom</exclude>
3344- <exclude>stage/commons-logging/poms/commons-logging-1.1.pom</exclude>
3345- <exclude>stage/org.apache.james/xmls/james-parent-1.1-site.xml</exclude>
3346- <exclude>stage/org.apache.james/xmls/james-parent-1.1-site_en.xml</exclude>
3347- <exclude>stage/org.apache.james/xmls/james-project-1.2-site.xml</exclude>
3348- <exclude>stage/org.apache.james/xmls/james-project-1.2-site_en.xml</exclude>
3349- <exclude>release.properties</exclude>
3350- </excludes>
3351- </configuration>
3352- </plugin>
3353- <plugin>
3354- <groupId>org.codehaus.mojo</groupId>
3355- <artifactId>taglist-maven-plugin</artifactId>
3356- <version>2.2</version>
3357- </plugin>
3358- <plugin>
3359- <groupId>org.codehaus.mojo</groupId>
3360- <artifactId>javacc-maven-plugin</artifactId>
3361- <version>2.4.1</version>
3362- </plugin>
3363- </plugins>
3364- </reporting>
3365-
3366- <mailingLists>
3367- <mailingList>
3368- <name>Apache Mime4j Lists</name>
3369- <subscribe>mime4j-dev-subscribe@james.apache.org</subscribe>
3370- <unsubscribe>mime4j-dev-unsubscribe@james.apache.org</unsubscribe>
3371- <post>mime4j-dev@james.apache.org</post>
3372- <archive>http://mail-archives.apache.org/mod_mbox/james-mime4j-dev/</archive>
3373- </mailingList>
3374- </mailingLists>
3375-
3376- <properties>
3377- <compileSource>1.5</compileSource>
3378- </properties>
3379-</project>
3380
3381=== removed directory 'GroundhogReader/apache-mime4j-0.6/src'
3382=== removed directory 'GroundhogReader/apache-mime4j-0.6/src/assemble'
3383=== removed file 'GroundhogReader/apache-mime4j-0.6/src/assemble/bin.xml'
3384--- GroundhogReader/apache-mime4j-0.6/src/assemble/bin.xml 2010-03-14 02:32:45 +0000
3385+++ GroundhogReader/apache-mime4j-0.6/src/assemble/bin.xml 1970-01-01 00:00:00 +0000
3386@@ -1,64 +0,0 @@
3387-<assembly>
3388- <!--
3389- Licensed to the Apache Software Foundation (ASF) under one or more
3390- contributor license agreements. See the NOTICE file distributed with
3391- this work for additional information regarding copyright ownership.
3392- The ASF licenses this file to You under the Apache License, Version 2.0
3393- (the "License"); you may not use this file except in compliance with
3394- the License. You may obtain a copy of the License at
3395-
3396- http://www.apache.org/licenses/LICENSE-2.0
3397-
3398- Unless required by applicable law or agreed to in writing, software
3399- distributed under the License is distributed on an "AS IS" BASIS,
3400- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
3401- implied.
3402-
3403- See the License for the specific language governing permissions and
3404- limitations under the License.
3405- -->
3406- <id>bin</id>
3407- <!--
3408- Generates a jar file including the binary jar and the runtime dependencies.
3409- including NOTICE and LICENSE in the root.
3410- -->
3411- <formats>
3412- <format>zip</format>
3413- <format>tar.gz</format>
3414- </formats>
3415- <fileSets>
3416- <fileSet>
3417- <directory>target/maven-shared-archive-resources/META-INF/</directory>
3418- <outputDirectory>/</outputDirectory>
3419- <includes>
3420- <include>*</include>
3421- </includes>
3422- </fileSet>
3423- <fileSet>
3424- <includes>
3425- <include>RELEASE_NOTES.txt</include>
3426- </includes>
3427- </fileSet>
3428- <fileSet>
3429- <directory>examples</directory>
3430- </fileSet>
3431- <fileSet>
3432- <directory>target</directory>
3433- <outputDirectory></outputDirectory>
3434- <includes>
3435- <include>${artifactId}-${version}.jar</include>
3436- </includes>
3437- </fileSet>
3438- <fileSet>
3439- <directory>target/apidocs</directory>
3440- <outputDirectory>javadocs</outputDirectory>
3441- </fileSet>
3442- </fileSets>
3443- <dependencySets>
3444- <dependencySet>
3445- <outputDirectory>/lib/</outputDirectory>
3446- <useProjectArtifact>false</useProjectArtifact>
3447- <scope>runtime</scope>
3448- </dependencySet>
3449- </dependencySets>
3450-</assembly>
3451
3452=== removed file 'GroundhogReader/apache-mime4j-0.6/src/assemble/src.xml'
3453--- GroundhogReader/apache-mime4j-0.6/src/assemble/src.xml 2010-03-14 02:32:45 +0000
3454+++ GroundhogReader/apache-mime4j-0.6/src/assemble/src.xml 1970-01-01 00:00:00 +0000
3455@@ -1,43 +0,0 @@
3456-<assembly>
3457- <!--
3458- Licensed to the Apache Software Foundation (ASF) under one or more
3459- contributor license agreements. See the NOTICE file distributed with
3460- this work for additional information regarding copyright ownership.
3461- The ASF licenses this file to You under the Apache License, Version 2.0
3462- (the "License"); you may not use this file except in compliance with
3463- the License. You may obtain a copy of the License at
3464-
3465- http://www.apache.org/licenses/LICENSE-2.0
3466-
3467- Unless required by applicable law or agreed to in writing, software
3468- distributed under the License is distributed on an "AS IS" BASIS,
3469- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
3470- implied.
3471-
3472- See the License for the specific language governing permissions and
3473- limitations under the License.
3474- -->
3475- <id>src</id>
3476- <!--
3477- Generates a file including all the source tree excluding files/folders
3478- starting with "." , *.bak and the target
3479- -->
3480- <formats>
3481- <format>zip</format>
3482- <format>tar.gz</format>
3483- </formats>
3484- <fileSets>
3485- <fileSet>
3486- <directory>.</directory>
3487- <outputDirectory></outputDirectory>
3488- <excludes>
3489- <exclude>**/target/**</exclude>
3490- <exclude>.*</exclude>
3491- <exclude>.*/**</exclude>
3492- <exclude>**.bak</exclude>
3493- <exclude>lib/**</exclude>
3494- </excludes>
3495- <useDefaultExcludes>true</useDefaultExcludes>
3496- </fileSet>
3497- </fileSets>
3498-</assembly>
3499
3500=== removed directory 'GroundhogReader/apache-mime4j-0.6/src/main'
3501=== removed directory 'GroundhogReader/apache-mime4j-0.6/src/main/appended-resources'
3502=== removed file 'GroundhogReader/apache-mime4j-0.6/src/main/appended-resources/supplemental-models.xml'
3503--- GroundhogReader/apache-mime4j-0.6/src/main/appended-resources/supplemental-models.xml 2010-03-14 02:32:45 +0000
3504+++ GroundhogReader/apache-mime4j-0.6/src/main/appended-resources/supplemental-models.xml 1970-01-01 00:00:00 +0000
3505@@ -1,95 +0,0 @@
3506-<?xml version="1.0" encoding="UTF-8"?>
3507-<supplementalDataModels>
3508- <!--
3509- Licensed to the Apache Software Foundation (ASF) under one or more
3510- contributor license agreements. See the NOTICE file distributed with
3511- this work for additional information regarding copyright ownership.
3512- The ASF licenses this file to You under the Apache License, Version 2.0
3513- (the "License"); you may not use this file except in compliance with
3514- the License. You may obtain a copy of the License at
3515-
3516- http://www.apache.org/licenses/LICENSE-2.0
3517-
3518- Unless required by applicable law or agreed to in writing, software
3519- distributed under the License is distributed on an "AS IS" BASIS,
3520- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
3521- implied.
3522-
3523- See the License for the specific language governing permissions and
3524- limitations under the License.
3525- -->
3526- <supplement>
3527- <project>
3528- <groupId>commons-logging</groupId>
3529- <artifactId>commons-logging</artifactId>
3530- <name>Apache Commons Logging</name>
3531- <url>http://jakarta.apache.org/commons/logging/</url>
3532- <organization>
3533- <name>The Apache Software Foundation</name>
3534- <url>http://www.apache.org/</url>
3535- </organization>
3536- <licenses>
3537- <license>
3538- <name>Apache License, Version 2.0</name>
3539- <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
3540- <distribution>repo</distribution>
3541- </license>
3542- </licenses>
3543- </project>
3544- </supplement>
3545- <supplement>
3546- <project>
3547- <groupId>commons-io</groupId>
3548- <artifactId>commons-io</artifactId>
3549- <name>Apache Commons IO</name>
3550- <url>http://jakarta.apache.org/commons/io/</url>
3551- <organization>
3552- <name>The Apache Software Foundation</name>
3553- <url>http://www.apache.org/</url>
3554- </organization>
3555- <licenses>
3556- <license>
3557- <name>Apache License, Version 2.0</name>
3558- <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
3559- <distribution>repo</distribution>
3560- </license>
3561- </licenses>
3562- </project>
3563- </supplement>
3564- <supplement>
3565- <project>
3566- <groupId>log4j</groupId>
3567- <artifactId>log4j</artifactId>
3568- <name>Apache Log4j</name>
3569- <url>http://logging.apache.org/log4j/</url>
3570- <organization>
3571- <name>The Apache Software Foundation</name>
3572- <url>http://www.apache.org/</url>
3573- </organization>
3574- <licenses>
3575- <license>
3576- <name>Apache License, Version 2.0</name>
3577- <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
3578- <distribution>repo</distribution>
3579- </license>
3580- </licenses>
3581- </project>
3582- </supplement>
3583- <supplement>
3584- <project>
3585- <groupId>junit</groupId>
3586- <artifactId>junit</artifactId>
3587- <name>JUnit</name>
3588- <url>http://www.junit.org/</url>
3589- <organization>
3590- <name>Kent Beck, Erich Gamma, and David Saff</name>
3591- </organization>
3592- <licenses>
3593- <license>
3594- <name>Common Public License Version 1.0</name>
3595- <url>http://www.opensource.org/licenses/cpl.php</url>
3596- </license>
3597- </licenses>
3598- </project>
3599- </supplement>
3600-</supplementalDataModels>
3601\ No newline at end of file
3602
3603=== removed directory 'GroundhogReader/apache-mime4j-0.6/src/main/java'
3604=== removed directory 'GroundhogReader/apache-mime4j-0.6/src/main/java/org'
3605=== removed directory 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache'
3606=== removed directory 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james'
3607=== removed directory 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j'
3608=== removed file 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/MimeException.java'
3609--- GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/MimeException.java 2010-03-14 02:32:45 +0000
3610+++ GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/MimeException.java 1970-01-01 00:00:00 +0000
3611@@ -1,58 +0,0 @@
3612-/****************************************************************
3613- * Licensed to the Apache Software Foundation (ASF) under one *
3614- * or more contributor license agreements. See the NOTICE file *
3615- * distributed with this work for additional information *
3616- * regarding copyright ownership. The ASF licenses this file *
3617- * to you under the Apache License, Version 2.0 (the *
3618- * "License"); you may not use this file except in compliance *
3619- * with the License. You may obtain a copy of the License at *
3620- * *
3621- * http://www.apache.org/licenses/LICENSE-2.0 *
3622- * *
3623- * Unless required by applicable law or agreed to in writing, *
3624- * software distributed under the License is distributed on an *
3625- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
3626- * KIND, either express or implied. See the License for the *
3627- * specific language governing permissions and limitations *
3628- * under the License. *
3629- ****************************************************************/
3630-
3631-package org.apache.james.mime4j;
3632-
3633-/**
3634- * MIME processing exception.
3635- */
3636-public class MimeException extends Exception {
3637-
3638- private static final long serialVersionUID = 8352821278714188542L;
3639-
3640- /**
3641- * Constructs a new MIME exception with the specified detail message.
3642- *
3643- * @param message detail message
3644- */
3645- public MimeException(String message) {
3646- super(message);
3647- }
3648-
3649- /**
3650- * Constructs a MIME exception with the specified cause.
3651- *
3652- * @param cause cause of the exception
3653- */
3654- public MimeException(Throwable cause) {
3655- super(cause);
3656- }
3657-
3658- /**
3659- * Constructs a MIME exception with the specified detail message and cause.
3660- *
3661- * @param message detail message
3662- * @param cause cause of the exception
3663- */
3664- public MimeException(String message, Throwable cause) {
3665- super(message);
3666- initCause(cause);
3667- }
3668-
3669-}
3670
3671=== removed file 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/MimeIOException.java'
3672--- GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/MimeIOException.java 2010-03-14 02:32:45 +0000
3673+++ GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/MimeIOException.java 1970-01-01 00:00:00 +0000
3674@@ -1,52 +0,0 @@
3675-/****************************************************************
3676- * Licensed to the Apache Software Foundation (ASF) under one *
3677- * or more contributor license agreements. See the NOTICE file *
3678- * distributed with this work for additional information *
3679- * regarding copyright ownership. The ASF licenses this file *
3680- * to you under the Apache License, Version 2.0 (the *
3681- * "License"); you may not use this file except in compliance *
3682- * with the License. You may obtain a copy of the License at *
3683- * *
3684- * http://www.apache.org/licenses/LICENSE-2.0 *
3685- * *
3686- * Unless required by applicable law or agreed to in writing, *
3687- * software distributed under the License is distributed on an *
3688- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
3689- * KIND, either express or implied. See the License for the *
3690- * specific language governing permissions and limitations *
3691- * under the License. *
3692- ****************************************************************/
3693-
3694-package org.apache.james.mime4j;
3695-
3696-import java.io.IOException;
3697-
3698-/**
3699- * A wrapper class based on {@link IOException} for MIME protocol exceptions.
3700- */
3701-public class MimeIOException extends IOException {
3702-
3703- private static final long serialVersionUID = 5393613459533735409L;
3704-
3705- /**
3706- * Creates a new MimeIOException from the specified detail message.
3707- *
3708- * @param message
3709- * detail message.
3710- */
3711- public MimeIOException(String message) {
3712- this(new MimeException(message));
3713- }
3714-
3715- /**
3716- * Constructs an IO exception based on {@link MimeException}.
3717- *
3718- * @param cause
3719- * the cause.
3720- */
3721- public MimeIOException(MimeException cause) {
3722- super(cause.getMessage());
3723- initCause(cause);
3724- }
3725-
3726-}
3727
3728=== removed directory 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec'
3729=== removed file 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/Base64InputStream.java'
3730--- GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/Base64InputStream.java 2010-03-14 02:32:45 +0000
3731+++ GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/Base64InputStream.java 1970-01-01 00:00:00 +0000
3732@@ -1,280 +0,0 @@
3733-/****************************************************************
3734- * Licensed to the Apache Software Foundation (ASF) under one *
3735- * or more contributor license agreements. See the NOTICE file *
3736- * distributed with this work for additional information *
3737- * regarding copyright ownership. The ASF licenses this file *
3738- * to you under the Apache License, Version 2.0 (the *
3739- * "License"); you may not use this file except in compliance *
3740- * with the License. You may obtain a copy of the License at *
3741- * *
3742- * http://www.apache.org/licenses/LICENSE-2.0 *
3743- * *
3744- * Unless required by applicable law or agreed to in writing, *
3745- * software distributed under the License is distributed on an *
3746- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
3747- * KIND, either express or implied. See the License for the *
3748- * specific language governing permissions and limitations *
3749- * under the License. *
3750- ****************************************************************/
3751-
3752-package org.apache.james.mime4j.codec;
3753-
3754-import java.io.IOException;
3755-import java.io.InputStream;
3756-
3757-import org.apache.commons.logging.Log;
3758-import org.apache.commons.logging.LogFactory;
3759-
3760-/**
3761- * Performs Base-64 decoding on an underlying stream.
3762- */
3763-public class Base64InputStream extends InputStream {
3764- private static Log log = LogFactory.getLog(Base64InputStream.class);
3765-
3766- private static final int ENCODED_BUFFER_SIZE = 1536;
3767-
3768- private static final int[] BASE64_DECODE = new int[256];
3769-
3770- static {
3771- for (int i = 0; i < 256; i++)
3772- BASE64_DECODE[i] = -1;
3773- for (int i = 0; i < Base64OutputStream.BASE64_TABLE.length; i++)
3774- BASE64_DECODE[Base64OutputStream.BASE64_TABLE[i] & 0xff] = i;
3775- }
3776-
3777- private static final byte BASE64_PAD = '=';
3778-
3779- private static final int EOF = -1;
3780-
3781- private final byte[] singleByte = new byte[1];
3782-
3783- private boolean strict;
3784-
3785- private final InputStream in;
3786- private boolean closed = false;
3787-
3788- private final byte[] encoded = new byte[ENCODED_BUFFER_SIZE];
3789- private int position = 0; // current index into encoded buffer
3790- private int size = 0; // current size of encoded buffer
3791-
3792- private final ByteQueue q = new ByteQueue();
3793-
3794- private boolean eof; // end of file or pad character reached
3795-
3796- public Base64InputStream(InputStream in) {
3797- this(in, false);
3798- }
3799-
3800- public Base64InputStream(InputStream in, boolean strict) {
3801- if (in == null)
3802- throw new IllegalArgumentException();
3803-
3804- this.in = in;
3805- this.strict = strict;
3806- }
3807-
3808- @Override
3809- public int read() throws IOException {
3810- if (closed)
3811- throw new IOException("Base64InputStream has been closed");
3812-
3813- while (true) {
3814- int bytes = read0(singleByte, 0, 1);
3815- if (bytes == EOF)
3816- return EOF;
3817-
3818- if (bytes == 1)
3819- return singleByte[0] & 0xff;
3820- }
3821- }
3822-
3823- @Override
3824- public int read(byte[] buffer) throws IOException {
3825- if (closed)
3826- throw new IOException("Base64InputStream has been closed");
3827-
3828- if (buffer == null)
3829- throw new NullPointerException();
3830-
3831- if (buffer.length == 0)
3832- return 0;
3833-
3834- return read0(buffer, 0, buffer.length);
3835- }
3836-
3837- @Override
3838- public int read(byte[] buffer, int offset, int length) throws IOException {
3839- if (closed)
3840- throw new IOException("Base64InputStream has been closed");
3841-
3842- if (buffer == null)
3843- throw new NullPointerException();
3844-
3845- if (offset < 0 || length < 0 || offset + length > buffer.length)
3846- throw new IndexOutOfBoundsException();
3847-
3848- if (length == 0)
3849- return 0;
3850-
3851- return read0(buffer, offset, offset + length);
3852- }
3853-
3854- @Override
3855- public void close() throws IOException {
3856- if (closed)
3857- return;
3858-
3859- closed = true;
3860- }
3861-
3862- private int read0(final byte[] buffer, final int from, final int to)
3863- throws IOException {
3864- int index = from; // index into given buffer
3865-
3866- // check if a previous invocation left decoded bytes in the queue
3867-
3868- int qCount = q.count();
3869- while (qCount-- > 0 && index < to) {
3870- buffer[index++] = q.dequeue();
3871- }
3872-
3873- // eof or pad reached?
3874-
3875- if (eof)
3876- return index == from ? EOF : index - from;
3877-
3878- // decode into given buffer
3879-
3880- int data = 0; // holds decoded data; up to four sextets
3881- int sextets = 0; // number of sextets
3882-
3883- while (index < to) {
3884- // make sure buffer not empty
3885-
3886- while (position == size) {
3887- int n = in.read(encoded, 0, encoded.length);
3888- if (n == EOF) {
3889- eof = true;
3890-
3891- if (sextets != 0) {
3892- // error in encoded data
3893- handleUnexpectedEof(sextets);
3894- }
3895-
3896- return index == from ? EOF : index - from;
3897- } else if (n > 0) {
3898- position = 0;
3899- size = n;
3900- } else {
3901- assert n == 0;
3902- }
3903- }
3904-
3905- // decode buffer
3906-
3907- while (position < size && index < to) {
3908- int value = encoded[position++] & 0xff;
3909-
3910- if (value == BASE64_PAD) {
3911- index = decodePad(data, sextets, buffer, index, to);
3912- return index - from;
3913- }
3914-
3915- int decoded = BASE64_DECODE[value];
3916- if (decoded < 0) // -1: not a base64 char
3917- continue;
3918-
3919- data = (data << 6) | decoded;
3920- sextets++;
3921-
3922- if (sextets == 4) {
3923- sextets = 0;
3924-
3925- byte b1 = (byte) (data >>> 16);
3926- byte b2 = (byte) (data >>> 8);
3927- byte b3 = (byte) data;
3928-
3929- if (index < to - 2) {
3930- buffer[index++] = b1;
3931- buffer[index++] = b2;
3932- buffer[index++] = b3;
3933- } else {
3934- if (index < to - 1) {
3935- buffer[index++] = b1;
3936- buffer[index++] = b2;
3937- q.enqueue(b3);
3938- } else if (index < to) {
3939- buffer[index++] = b1;
3940- q.enqueue(b2);
3941- q.enqueue(b3);
3942- } else {
3943- q.enqueue(b1);
3944- q.enqueue(b2);
3945- q.enqueue(b3);
3946- }
3947-
3948- assert index == to;
3949- return to - from;
3950- }
3951- }
3952- }
3953- }
3954-
3955- assert sextets == 0;
3956- assert index == to;
3957- return to - from;
3958- }
3959-
3960- private int decodePad(int data, int sextets, final byte[] buffer,
3961- int index, final int end) throws IOException {
3962- eof = true;
3963-
3964- if (sextets == 2) {
3965- // one byte encoded as "XY=="
3966-
3967- byte b = (byte) (data >>> 4);
3968- if (index < end) {
3969- buffer[index++] = b;
3970- } else {
3971- q.enqueue(b);
3972- }
3973- } else if (sextets == 3) {
3974- // two bytes encoded as "XYZ="
3975-
3976- byte b1 = (byte) (data >>> 10);
3977- byte b2 = (byte) ((data >>> 2) & 0xFF);
3978-
3979- if (index < end - 1) {
3980- buffer[index++] = b1;
3981- buffer[index++] = b2;
3982- } else if (index < end) {
3983- buffer[index++] = b1;
3984- q.enqueue(b2);
3985- } else {
3986- q.enqueue(b1);
3987- q.enqueue(b2);
3988- }
3989- } else {
3990- // error in encoded data
3991- handleUnexpecedPad(sextets);
3992- }
3993-
3994- return index;
3995- }
3996-
3997- private void handleUnexpectedEof(int sextets) throws IOException {
3998- if (strict)
3999- throw new IOException("unexpected end of file");
4000- else
4001- log.warn("unexpected end of file; dropping " + sextets
4002- + " sextet(s)");
4003- }
4004-
4005- private void handleUnexpecedPad(int sextets) throws IOException {
4006- if (strict)
4007- throw new IOException("unexpected padding character");
4008- else
4009- log.warn("unexpected padding character; dropping " + sextets
4010- + " sextet(s)");
4011- }
4012-}
4013
4014=== removed file 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/Base64OutputStream.java'
4015--- GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/Base64OutputStream.java 2010-03-14 02:32:45 +0000
4016+++ GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/Base64OutputStream.java 1970-01-01 00:00:00 +0000
4017@@ -1,321 +0,0 @@
4018-/****************************************************************
4019- * Licensed to the Apache Software Foundation (ASF) under one *
4020- * or more contributor license agreements. See the NOTICE file *
4021- * distributed with this work for additional information *
4022- * regarding copyright ownership. The ASF licenses this file *
4023- * to you under the Apache License, Version 2.0 (the *
4024- * "License"); you may not use this file except in compliance *
4025- * with the License. You may obtain a copy of the License at *
4026- * *
4027- * http://www.apache.org/licenses/LICENSE-2.0 *
4028- * *
4029- * Unless required by applicable law or agreed to in writing, *
4030- * software distributed under the License is distributed on an *
4031- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
4032- * KIND, either express or implied. See the License for the *
4033- * specific language governing permissions and limitations *
4034- * under the License. *
4035- ****************************************************************/
4036-
4037-package org.apache.james.mime4j.codec;
4038-
4039-import java.io.FilterOutputStream;
4040-import java.io.IOException;
4041-import java.io.OutputStream;
4042-import java.util.HashSet;
4043-import java.util.Set;
4044-
4045-/**
4046- * This class implements section <cite>6.8. Base64 Content-Transfer-Encoding</cite>
4047- * from RFC 2045 <cite>Multipurpose Internet Mail Extensions (MIME) Part One:
4048- * Format of Internet Message Bodies</cite> by Freed and Borenstein.
4049- * <p>
4050- * Code is based on Base64 and Base64OutputStream code from Commons-Codec 1.4.
4051- *
4052- * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
4053- */
4054-public class Base64OutputStream extends FilterOutputStream {
4055-
4056- // Default line length per RFC 2045 section 6.8.
4057- private static final int DEFAULT_LINE_LENGTH = 76;
4058-
4059- // CRLF line separator per RFC 2045 section 2.1.
4060- private static final byte[] CRLF_SEPARATOR = { '\r', '\n' };
4061-
4062- // This array is a lookup table that translates 6-bit positive integer index
4063- // values into their "Base64 Alphabet" equivalents as specified in Table 1
4064- // of RFC 2045.
4065- static final byte[] BASE64_TABLE = { 'A', 'B', 'C', 'D', 'E', 'F',
4066- 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
4067- 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
4068- 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
4069- 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5',
4070- '6', '7', '8', '9', '+', '/' };
4071-
4072- // Byte used to pad output.
4073- private static final byte BASE64_PAD = '=';
4074-
4075- // This set contains all base64 characters including the pad character. Used
4076- // solely to check if a line separator contains any of these characters.
4077- private static final Set<Byte> BASE64_CHARS = new HashSet<Byte>();
4078-
4079- static {
4080- for (byte b : BASE64_TABLE) {
4081- BASE64_CHARS.add(b);
4082- }
4083- BASE64_CHARS.add(BASE64_PAD);
4084- }
4085-
4086- // Mask used to extract 6 bits
4087- private static final int MASK_6BITS = 0x3f;
4088-
4089- private static final int ENCODED_BUFFER_SIZE = 2048;
4090-
4091- private final byte[] singleByte = new byte[1];
4092-
4093- private final int lineLength;
4094- private final byte[] lineSeparator;
4095-
4096- private boolean closed = false;
4097-
4098- private final byte[] encoded;
4099- private int position = 0;
4100-
4101- private int data = 0;
4102- private int modulus = 0;
4103-
4104- private int linePosition = 0;
4105-
4106- /**
4107- * Creates a <code>Base64OutputStream</code> that writes the encoded data
4108- * to the given output stream using the default line length (76) and line
4109- * separator (CRLF).
4110- *
4111- * @param out
4112- * underlying output stream.
4113- */
4114- public Base64OutputStream(OutputStream out) {
4115- this(out, DEFAULT_LINE_LENGTH, CRLF_SEPARATOR);
4116- }
4117-
4118- /**
4119- * Creates a <code>Base64OutputStream</code> that writes the encoded data
4120- * to the given output stream using the given line length and the default
4121- * line separator (CRLF).
4122- * <p>
4123- * The given line length will be rounded up to the nearest multiple of 4. If
4124- * the line length is zero then the output will not be split into lines.
4125- *
4126- * @param out
4127- * underlying output stream.
4128- * @param lineLength
4129- * desired line length.
4130- */
4131- public Base64OutputStream(OutputStream out, int lineLength) {
4132- this(out, lineLength, CRLF_SEPARATOR);
4133- }
4134-
4135- /**
4136- * Creates a <code>Base64OutputStream</code> that writes the encoded data
4137- * to the given output stream using the given line length and line
4138- * separator.
4139- * <p>
4140- * The given line length will be rounded up to the nearest multiple of 4. If
4141- * the line length is zero then the output will not be split into lines and
4142- * the line separator is ignored.
4143- * <p>
4144- * The line separator must not include characters from the BASE64 alphabet
4145- * (including the padding character <code>=</code>).
4146- *
4147- * @param out
4148- * underlying output stream.
4149- * @param lineLength
4150- * desired line length.
4151- * @param lineSeparator
4152- * line separator to use.
4153- */
4154- public Base64OutputStream(OutputStream out, int lineLength,
4155- byte[] lineSeparator) {
4156- super(out);
4157-
4158- if (out == null)
4159- throw new IllegalArgumentException();
4160- if (lineLength < 0)
4161- throw new IllegalArgumentException();
4162- checkLineSeparator(lineSeparator);
4163-
4164- this.lineLength = lineLength;
4165- this.lineSeparator = new byte[lineSeparator.length];
4166- System.arraycopy(lineSeparator, 0, this.lineSeparator, 0,
4167- lineSeparator.length);
4168-
4169- this.encoded = new byte[ENCODED_BUFFER_SIZE];
4170- }
4171-
4172- @Override
4173- public final void write(final int b) throws IOException {
4174- if (closed)
4175- throw new IOException("Base64OutputStream has been closed");
4176-
4177- singleByte[0] = (byte) b;
4178- write0(singleByte, 0, 1);
4179- }
4180-
4181- @Override
4182- public final void write(final byte[] buffer) throws IOException {
4183- if (closed)
4184- throw new IOException("Base64OutputStream has been closed");
4185-
4186- if (buffer == null)
4187- throw new NullPointerException();
4188-
4189- if (buffer.length == 0)
4190- return;
4191-
4192- write0(buffer, 0, buffer.length);
4193- }
4194-
4195- @Override
4196- public final void write(final byte[] buffer, final int offset,
4197- final int length) throws IOException {
4198- if (closed)
4199- throw new IOException("Base64OutputStream has been closed");
4200-
4201- if (buffer == null)
4202- throw new NullPointerException();
4203-
4204- if (offset < 0 || length < 0 || offset + length > buffer.length)
4205- throw new IndexOutOfBoundsException();
4206-
4207- if (length == 0)
4208- return;
4209-
4210- write0(buffer, offset, offset + length);
4211- }
4212-
4213- @Override
4214- public void flush() throws IOException {
4215- if (closed)
4216- throw new IOException("Base64OutputStream has been closed");
4217-
4218- flush0();
4219- }
4220-
4221- @Override
4222- public void close() throws IOException {
4223- if (closed)
4224- return;
4225-
4226- closed = true;
4227- close0();
4228- }
4229-
4230- private void write0(final byte[] buffer, final int from, final int to)
4231- throws IOException {
4232- for (int i = from; i < to; i++) {
4233- data = (data << 8) | (buffer[i] & 0xff);
4234-
4235- if (++modulus == 3) {
4236- modulus = 0;
4237-
4238- // write line separator if necessary
4239-
4240- if (lineLength > 0 && linePosition >= lineLength) {
4241- // writeLineSeparator() inlined for performance reasons
4242-
4243- linePosition = 0;
4244-
4245- if (encoded.length - position < lineSeparator.length)
4246- flush0();
4247-
4248- for (byte ls : lineSeparator)
4249- encoded[position++] = ls;
4250- }
4251-
4252- // encode data into 4 bytes
4253-
4254- if (encoded.length - position < 4)
4255- flush0();
4256-
4257- encoded[position++] = BASE64_TABLE[(data >> 18) & MASK_6BITS];
4258- encoded[position++] = BASE64_TABLE[(data >> 12) & MASK_6BITS];
4259- encoded[position++] = BASE64_TABLE[(data >> 6) & MASK_6BITS];
4260- encoded[position++] = BASE64_TABLE[data & MASK_6BITS];
4261-
4262- linePosition += 4;
4263- }
4264- }
4265- }
4266-
4267- private void flush0() throws IOException {
4268- if (position > 0) {
4269- out.write(encoded, 0, position);
4270- position = 0;
4271- }
4272- }
4273-
4274- private void close0() throws IOException {
4275- if (modulus != 0)
4276- writePad();
4277-
4278- // write line separator at the end of the encoded data
4279-
4280- if (lineLength > 0 && linePosition > 0) {
4281- writeLineSeparator();
4282- }
4283-
4284- flush0();
4285- }
4286-
4287- private void writePad() throws IOException {
4288- // write line separator if necessary
4289-
4290- if (lineLength > 0 && linePosition >= lineLength) {
4291- writeLineSeparator();
4292- }
4293-
4294- // encode data into 4 bytes
4295-
4296- if (encoded.length - position < 4)
4297- flush0();
4298-
4299- if (modulus == 1) {
4300- encoded[position++] = BASE64_TABLE[(data >> 2) & MASK_6BITS];
4301- encoded[position++] = BASE64_TABLE[(data << 4) & MASK_6BITS];
4302- encoded[position++] = BASE64_PAD;
4303- encoded[position++] = BASE64_PAD;
4304- } else {
4305- assert modulus == 2;
4306- encoded[position++] = BASE64_TABLE[(data >> 10) & MASK_6BITS];
4307- encoded[position++] = BASE64_TABLE[(data >> 4) & MASK_6BITS];
4308- encoded[position++] = BASE64_TABLE[(data << 2) & MASK_6BITS];
4309- encoded[position++] = BASE64_PAD;
4310- }
4311-
4312- linePosition += 4;
4313- }
4314-
4315- private void writeLineSeparator() throws IOException {
4316- linePosition = 0;
4317-
4318- if (encoded.length - position < lineSeparator.length)
4319- flush0();
4320-
4321- for (byte ls : lineSeparator)
4322- encoded[position++] = ls;
4323- }
4324-
4325- private void checkLineSeparator(byte[] lineSeparator) {
4326- if (lineSeparator.length > ENCODED_BUFFER_SIZE)
4327- throw new IllegalArgumentException("line separator length exceeds "
4328- + ENCODED_BUFFER_SIZE);
4329-
4330- for (byte b : lineSeparator) {
4331- if (BASE64_CHARS.contains(b)) {
4332- throw new IllegalArgumentException(
4333- "line separator must not contain base64 character '"
4334- + (char) (b & 0xff) + "'");
4335- }
4336- }
4337- }
4338-}
4339
4340=== removed file 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/ByteQueue.java'
4341--- GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/ByteQueue.java 2010-03-14 02:32:45 +0000
4342+++ GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/ByteQueue.java 1970-01-01 00:00:00 +0000
4343@@ -1,62 +0,0 @@
4344-/****************************************************************
4345- * Licensed to the Apache Software Foundation (ASF) under one *
4346- * or more contributor license agreements. See the NOTICE file *
4347- * distributed with this work for additional information *
4348- * regarding copyright ownership. The ASF licenses this file *
4349- * to you under the Apache License, Version 2.0 (the *
4350- * "License"); you may not use this file except in compliance *
4351- * with the License. You may obtain a copy of the License at *
4352- * *
4353- * http://www.apache.org/licenses/LICENSE-2.0 *
4354- * *
4355- * Unless required by applicable law or agreed to in writing, *
4356- * software distributed under the License is distributed on an *
4357- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
4358- * KIND, either express or implied. See the License for the *
4359- * specific language governing permissions and limitations *
4360- * under the License. *
4361- ****************************************************************/
4362-
4363-package org.apache.james.mime4j.codec;
4364-
4365-import java.util.Iterator;
4366-
4367-public class ByteQueue implements Iterable<Byte> {
4368-
4369- private UnboundedFifoByteBuffer buf;
4370- private int initialCapacity = -1;
4371-
4372- public ByteQueue() {
4373- buf = new UnboundedFifoByteBuffer();
4374- }
4375-
4376- public ByteQueue(int initialCapacity) {
4377- buf = new UnboundedFifoByteBuffer(initialCapacity);
4378- this.initialCapacity = initialCapacity;
4379- }
4380-
4381- public void enqueue(byte b) {
4382- buf.add(b);
4383- }
4384-
4385- public byte dequeue() {
4386- return buf.remove();
4387- }
4388-
4389- public int count() {
4390- return buf.size();
4391- }
4392-
4393- public void clear() {
4394- if (initialCapacity != -1)
4395- buf = new UnboundedFifoByteBuffer(initialCapacity);
4396- else
4397- buf = new UnboundedFifoByteBuffer();
4398- }
4399-
4400- public Iterator<Byte> iterator() {
4401- return buf.iterator();
4402- }
4403-
4404-
4405-}
4406
4407=== removed file 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/CodecUtil.java'
4408--- GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/CodecUtil.java 2010-03-14 02:32:45 +0000
4409+++ GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/CodecUtil.java 1970-01-01 00:00:00 +0000
4410@@ -1,107 +0,0 @@
4411-/****************************************************************
4412- * Licensed to the Apache Software Foundation (ASF) under one *
4413- * or more contributor license agreements. See the NOTICE file *
4414- * distributed with this work for additional information *
4415- * regarding copyright ownership. The ASF licenses this file *
4416- * to you under the Apache License, Version 2.0 (the *
4417- * "License"); you may not use this file except in compliance *
4418- * with the License. You may obtain a copy of the License at *
4419- * *
4420- * http://www.apache.org/licenses/LICENSE-2.0 *
4421- * *
4422- * Unless required by applicable law or agreed to in writing, *
4423- * software distributed under the License is distributed on an *
4424- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
4425- * KIND, either express or implied. See the License for the *
4426- * specific language governing permissions and limitations *
4427- * under the License. *
4428- ****************************************************************/
4429-
4430-package org.apache.james.mime4j.codec;
4431-
4432-import java.io.IOException;
4433-import java.io.InputStream;
4434-import java.io.OutputStream;
4435-
4436-/**
4437- * Utility methods related to codecs.
4438- */
4439-public class CodecUtil {
4440-
4441- static final int DEFAULT_ENCODING_BUFFER_SIZE = 1024;
4442-
4443- /**
4444- * Copies the contents of one stream to the other.
4445- * @param in not null
4446- * @param out not null
4447- * @throws IOException
4448- */
4449- public static void copy(final InputStream in, final OutputStream out) throws IOException {
4450- final byte[] buffer = new byte[DEFAULT_ENCODING_BUFFER_SIZE];
4451- int inputLength;
4452- while (-1 != (inputLength = in.read(buffer))) {
4453- out.write(buffer, 0, inputLength);
4454- }
4455- }
4456-
4457- /**
4458- * Encodes the given stream using Quoted-Printable.
4459- * This assumes that stream is binary and therefore escapes
4460- * all line endings.
4461- * @param in not null
4462- * @param out not null
4463- * @throws IOException
4464- */
4465- public static void encodeQuotedPrintableBinary(final InputStream in, final OutputStream out) throws IOException {
4466-
4467- QuotedPrintableEncoder encoder = new QuotedPrintableEncoder(DEFAULT_ENCODING_BUFFER_SIZE, true);
4468- encoder.encode(in, out);
4469- }
4470-
4471- /**
4472- * Encodes the given stream using Quoted-Printable.
4473- * This assumes that stream is text and therefore does not escape
4474- * all line endings.
4475- * @param in not null
4476- * @param out not null
4477- * @throws IOException
4478- */
4479- public static void encodeQuotedPrintable(final InputStream in, final OutputStream out) throws IOException {
4480- final QuotedPrintableEncoder encoder = new QuotedPrintableEncoder(DEFAULT_ENCODING_BUFFER_SIZE, false);
4481- encoder.encode(in, out);
4482- }
4483-
4484- /**
4485- * Encodes the given stream using base64.
4486- *
4487- * @param in not null
4488- * @param out not null
4489- * @throws IOException if an I/O error occurs
4490- */
4491- public static void encodeBase64(final InputStream in, final OutputStream out) throws IOException {
4492- Base64OutputStream b64Out = new Base64OutputStream(out);
4493- copy(in, b64Out);
4494- b64Out.close();
4495- }
4496-
4497- /**
4498- * Wraps the given stream in a Quoted-Printable encoder.
4499- * @param out not null
4500- * @return encoding outputstream
4501- * @throws IOException
4502- */
4503- public static OutputStream wrapQuotedPrintable(final OutputStream out, boolean binary) throws IOException {
4504- return new QuotedPrintableOutputStream(out, binary);
4505- }
4506-
4507- /**
4508- * Wraps the given stream in a Base64 encoder.
4509- * @param out not null
4510- * @return encoding outputstream
4511- * @throws IOException
4512- */
4513- public static OutputStream wrapBase64(final OutputStream out) throws IOException {
4514- return new Base64OutputStream(out);
4515- }
4516-
4517-}
4518
4519=== removed file 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/DecoderUtil.java'
4520--- GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/DecoderUtil.java 2010-03-14 02:32:45 +0000
4521+++ GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/DecoderUtil.java 1970-01-01 00:00:00 +0000
4522@@ -1,258 +0,0 @@
4523-/****************************************************************
4524- * Licensed to the Apache Software Foundation (ASF) under one *
4525- * or more contributor license agreements. See the NOTICE file *
4526- * distributed with this work for additional information *
4527- * regarding copyright ownership. The ASF licenses this file *
4528- * to you under the Apache License, Version 2.0 (the *
4529- * "License"); you may not use this file except in compliance *
4530- * with the License. You may obtain a copy of the License at *
4531- * *
4532- * http://www.apache.org/licenses/LICENSE-2.0 *
4533- * *
4534- * Unless required by applicable law or agreed to in writing, *
4535- * software distributed under the License is distributed on an *
4536- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
4537- * KIND, either express or implied. See the License for the *
4538- * specific language governing permissions and limitations *
4539- * under the License. *
4540- ****************************************************************/
4541-
4542-package org.apache.james.mime4j.codec;
4543-
4544-import java.io.ByteArrayInputStream;
4545-import java.io.ByteArrayOutputStream;
4546-import java.io.IOException;
4547-import java.io.UnsupportedEncodingException;
4548-
4549-import org.apache.commons.logging.Log;
4550-import org.apache.commons.logging.LogFactory;
4551-import org.apache.james.mime4j.util.CharsetUtil;
4552-
4553-/**
4554- * Static methods for decoding strings, byte arrays and encoded words.
4555- */
4556-public class DecoderUtil {
4557- private static Log log = LogFactory.getLog(DecoderUtil.class);
4558-
4559- /**
4560- * Decodes a string containing quoted-printable encoded data.
4561- *
4562- * @param s the string to decode.
4563- * @return the decoded bytes.
4564- */
4565- public static byte[] decodeBaseQuotedPrintable(String s) {
4566- ByteArrayOutputStream baos = new ByteArrayOutputStream();
4567-
4568- try {
4569- byte[] bytes = s.getBytes("US-ASCII");
4570-
4571- QuotedPrintableInputStream is = new QuotedPrintableInputStream(
4572- new ByteArrayInputStream(bytes));
4573-
4574- int b = 0;
4575- while ((b = is.read()) != -1) {
4576- baos.write(b);
4577- }
4578- } catch (IOException e) {
4579- /*
4580- * This should never happen!
4581- */
4582- log.error(e);
4583- }
4584-
4585- return baos.toByteArray();
4586- }
4587-
4588- /**
4589- * Decodes a string containing base64 encoded data.
4590- *
4591- * @param s the string to decode.
4592- * @return the decoded bytes.
4593- */
4594- public static byte[] decodeBase64(String s) {
4595- ByteArrayOutputStream baos = new ByteArrayOutputStream();
4596-
4597- try {
4598- byte[] bytes = s.getBytes("US-ASCII");
4599-
4600- Base64InputStream is = new Base64InputStream(
4601- new ByteArrayInputStream(bytes));
4602-
4603- int b = 0;
4604- while ((b = is.read()) != -1) {
4605- baos.write(b);
4606- }
4607- } catch (IOException e) {
4608- /*
4609- * This should never happen!
4610- */
4611- log.error(e);
4612- }
4613-
4614- return baos.toByteArray();
4615- }
4616-
4617- /**
4618- * Decodes an encoded word encoded with the 'B' encoding (described in
4619- * RFC 2047) found in a header field body.
4620- *
4621- * @param encodedWord the encoded word to decode.
4622- * @param charset the Java charset to use.
4623- * @return the decoded string.
4624- * @throws UnsupportedEncodingException if the given Java charset isn't
4625- * supported.
4626- */
4627- public static String decodeB(String encodedWord, String charset)
4628- throws UnsupportedEncodingException {
4629-
4630- return new String(decodeBase64(encodedWord), charset);
4631- }
4632-
4633- /**
4634- * Decodes an encoded word encoded with the 'Q' encoding (described in
4635- * RFC 2047) found in a header field body.
4636- *
4637- * @param encodedWord the encoded word to decode.
4638- * @param charset the Java charset to use.
4639- * @return the decoded string.
4640- * @throws UnsupportedEncodingException if the given Java charset isn't
4641- * supported.
4642- */
4643- public static String decodeQ(String encodedWord, String charset)
4644- throws UnsupportedEncodingException {
4645-
4646- /*
4647- * Replace _ with =20
4648- */
4649- StringBuilder sb = new StringBuilder(128);
4650- for (int i = 0; i < encodedWord.length(); i++) {
4651- char c = encodedWord.charAt(i);
4652- if (c == '_') {
4653- sb.append("=20");
4654- } else {
4655- sb.append(c);
4656- }
4657- }
4658-
4659- return new String(decodeBaseQuotedPrintable(sb.toString()), charset);
4660- }
4661-
4662- /**
4663- * Decodes a string containing encoded words as defined by RFC 2047.
4664- * Encoded words in have the form
4665- * =?charset?enc?Encoded word?= where enc is either 'Q' or 'q' for
4666- * quoted-printable and 'B' or 'b' for Base64.
4667- *
4668- * @param body the string to decode.
4669- * @return the decoded string.
4670- */
4671- public static String decodeEncodedWords(String body) {
4672- int previousEnd = 0;
4673- boolean previousWasEncoded = false;
4674-
4675- StringBuilder sb = new StringBuilder();
4676-
4677- while (true) {
4678- int begin = body.indexOf("=?", previousEnd);
4679- int qm1 = body.indexOf('?', begin + 2);
4680- if (qm1 == -1)
4681- return body;
4682- int qm2 = body.indexOf('?', qm1 + 1);
4683- if (qm2 == -1)
4684- return body;
4685- int end = begin == -1 ? -1 : body.indexOf("?=", qm2 + 1);
4686- if (end == -1) {
4687- if (previousEnd == 0)
4688- return body;
4689-
4690- sb.append(body.substring(previousEnd));
4691- return sb.toString();
4692- }
4693- end += 2;
4694-
4695- String sep = body.substring(previousEnd, begin);
4696-
4697- String decoded = decodeEncodedWord(body, begin, end);
4698- if (decoded == null) {
4699- sb.append(sep);
4700- sb.append(body.substring(begin, end));
4701- } else {
4702- if (!previousWasEncoded || !CharsetUtil.isWhitespace(sep)) {
4703- sb.append(sep);
4704- }
4705- sb.append(decoded);
4706- }
4707-
4708- previousEnd = end;
4709- previousWasEncoded = decoded != null;
4710- }
4711- }
4712-
4713- // return null on error
4714- private static String decodeEncodedWord(String body, int begin, int end) {
4715- int qm1 = body.indexOf('?', begin + 2);
4716- if (qm1 == end - 2)
4717- return null;
4718-
4719- int qm2 = body.indexOf('?', qm1 + 1);
4720- if (qm2 == end - 2)
4721- return null;
4722-
4723- String mimeCharset = body.substring(begin + 2, qm1);
4724- String encoding = body.substring(qm1 + 1, qm2);
4725- String encodedText = body.substring(qm2 + 1, end - 2);
4726-
4727- String charset = CharsetUtil.toJavaCharset(mimeCharset);
4728- if (charset == null) {
4729- if (log.isWarnEnabled()) {
4730- log.warn("MIME charset '" + mimeCharset + "' in encoded word '"
4731- + body.substring(begin, end) + "' doesn't have a "
4732- + "corresponding Java charset");
4733- }
4734- return null;
4735- } else if (!CharsetUtil.isDecodingSupported(charset)) {
4736- if (log.isWarnEnabled()) {
4737- log.warn("Current JDK doesn't support decoding of charset '"
4738- + charset + "' (MIME charset '" + mimeCharset
4739- + "' in encoded word '" + body.substring(begin, end)
4740- + "')");
4741- }
4742- return null;
4743- }
4744-
4745- if (encodedText.length() == 0) {
4746- if (log.isWarnEnabled()) {
4747- log.warn("Missing encoded text in encoded word: '"
4748- + body.substring(begin, end) + "'");
4749- }
4750- return null;
4751- }
4752-
4753- try {
4754- if (encoding.equalsIgnoreCase("Q")) {
4755- return DecoderUtil.decodeQ(encodedText, charset);
4756- } else if (encoding.equalsIgnoreCase("B")) {
4757- return DecoderUtil.decodeB(encodedText, charset);
4758- } else {
4759- if (log.isWarnEnabled()) {
4760- log.warn("Warning: Unknown encoding in encoded word '"
4761- + body.substring(begin, end) + "'");
4762- }
4763- return null;
4764- }
4765- } catch (UnsupportedEncodingException e) {
4766- // should not happen because of isDecodingSupported check above
4767- if (log.isWarnEnabled()) {
4768- log.warn("Unsupported encoding in encoded word '"
4769- + body.substring(begin, end) + "'", e);
4770- }
4771- return null;
4772- } catch (RuntimeException e) {
4773- if (log.isWarnEnabled()) {
4774- log.warn("Could not decode encoded word '"
4775- + body.substring(begin, end) + "'", e);
4776- }
4777- return null;
4778- }
4779- }
4780-}
4781
4782=== removed file 'GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/EncoderUtil.java'
4783--- GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/EncoderUtil.java 2010-03-14 02:32:45 +0000
4784+++ GroundhogReader/apache-mime4j-0.6/src/main/java/org/apache/james/mime4j/codec/EncoderUtil.java 1970-01-01 00:00:00 +0000
4785@@ -1,609 +0,0 @@
4786-/****************************************************************
4787- * Licensed to the Apache Software Foundation (ASF) under one *
4788- * or more contributor license agreements. See the NOTICE file *
4789- * distributed with this work for additional information *
4790- * regarding copyright ownership. The ASF licenses this file *
4791- * to you under the Apache License, Version 2.0 (the *
4792- * "License"); you may not use this file except in compliance *
4793- * with the License. You may obtain a copy of the License at *
4794- * *
4795- * http://www.apache.org/licenses/LICENSE-2.0 *
4796- * *
4797- * Unless required by applicable law or agreed to in writing, *
4798- * software distributed under the License is distributed on an *
4799- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
4800- * KIND, either express or implied. See the License for the *
4801- * specific language governing permissions and limitations *
4802- * under the License. *
4803- ****************************************************************/
4804-
4805-package org.apache.james.mime4j.codec;
4806-
4807-import java.nio.ByteBuffer;
4808-import java.nio.charset.Charset;
4809-import java.util.BitSet;
4810-import java.util.Locale;
4811-
4812-import org.apache.james.mime4j.util.CharsetUtil;
4813-
4814-/**
4815- * Static methods for encoding header field values. This includes encoded-words
4816- * as defined in <a href='http://www.faqs.org/rfcs/rfc2047.html'>RFC 2047</a>
4817- * or display-names of an e-mail address, for example.
4818- */
4819-public class EncoderUtil {
4820- private static final byte[] BASE64_TABLE = Base64OutputStream.BASE64_TABLE;
4821- private static final char BASE64_PAD = '=';
4822-
4823- private static final BitSet Q_REGULAR_CHARS = initChars("=_?");
4824-
4825- private static final BitSet Q_RESTRICTED_CHARS = initChars("=_?\"#$%&'(),.:;<>@[\\]^`{|}~");
4826-
4827- private static final int MAX_USED_CHARACTERS = 50;
4828-
4829- private static final String ENC_WORD_PREFIX = "=?";
4830- private static final String ENC_WORD_SUFFIX = "?=";
4831-
4832- private static final int ENCODED_WORD_MAX_LENGTH = 75; // RFC 2047
4833-
4834- private static final BitSet TOKEN_CHARS = initChars("()<>@,;:\\\"/[]?=");
4835-
4836- private static final BitSet ATEXT_CHARS = initChars("()<>@.,;:\\\"[]");
4837-
4838- private static BitSet initChars(String specials) {
4839- BitSet bs = new BitSet(128);
4840- for (char ch = 33; ch < 127; ch++) {
4841- if (specials.indexOf(ch) == -1) {
4842- bs.set(ch);
4843- }
4844- }
4845- return bs;
4846- }
4847-
4848- /**
4849- * Selects one of the two encodings specified in RFC 2047.
4850- */
4851- public enum Encoding {
4852- /** The B encoding (identical to base64 defined in RFC 2045). */
4853- B,
4854- /** The Q encoding (similar to quoted-printable defined in RFC 2045). */
4855- Q
4856- }
4857-
4858- /**
4859- * Indicates the intended usage of an encoded word.
4860- */
4861- public enum Usage {
4862- /**
4863- * Encoded word is used to replace a 'text' token in any Subject or
4864- * Comments header field.
4865- */
4866- TEXT_TOKEN,
4867- /**
4868- * Encoded word is used to replace a 'word' entity within a 'phrase',
4869- * for example, one that precedes an address in a From, To, or Cc
4870- * header.
4871- */
4872- WORD_ENTITY
4873- }
4874-
4875- private EncoderUtil() {
4876- }
4877-
4878- /**
4879- * Encodes the display-name portion of an address. See <a
4880- * href='http://www.faqs.org/rfcs/rfc5322.html'>RFC 5322</a> section 3.4
4881- * and <a href='http://www.faqs.org/rfcs/rfc2047.html'>RFC 2047</a> section
4882- * 5.3. The specified string should not be folded.
4883- *
4884- * @param displayName
4885- * display-name to encode.
4886- * @return encoded display-name.
4887- */
4888- public static String encodeAddressDisplayName(String displayName) {
4889- // display-name = phrase
4890- // phrase = 1*( encoded-word / word )
4891- // word = atom / quoted-string
4892- // atom = [CFWS] 1*atext [CFWS]
4893- // CFWS = comment or folding white space
4894-
4895- if (isAtomPhrase(displayName)) {
4896- return displayName;
4897- } else if (hasToBeEncoded(displayName, 0)) {
4898- return encodeEncodedWord(displayName, Usage.WORD_ENTITY);
4899- } else {
4900- return quote(displayName);
4901- }
4902- }
4903-
4904- /**
4905- * Encodes the local part of an address specification as described in RFC
4906- * 5322 section 3.4.1. Leading and trailing CFWS should have been removed
4907- * before calling this method. The specified string should not contain any
4908- * illegal (control or non-ASCII) characters.
4909- *
4910- * @param localPart
4911- * the local part to encode
4912- * @return the encoded local part.
4913- */
4914- public static String encodeAddressLocalPart(String localPart) {
4915- // local-part = dot-atom / quoted-string
4916- // dot-atom = [CFWS] dot-atom-text [CFWS]
4917- // CFWS = comment or folding white space
4918-
4919- if (isDotAtomText(localPart)) {
4920- return localPart;
4921- } else {
4922- return quote(localPart);
4923- }
4924- }
4925-
4926- /**
4927- * Encodes the specified strings into a header parameter as described in RFC
4928- * 2045 section 5.1 and RFC 2183 section 2. The specified strings should not
4929- * contain any illegal (control or non-ASCII) characters.
4930- *
4931- * @param name
4932- * parameter name.
4933- * @param value
4934- * parameter value.
4935- * @return encoded result.
4936- */
4937- public static String encodeHeaderParameter(String name, String value) {
4938- name = name.toLowerCase(Locale.US);
4939-
4940- // value := token / quoted-string
4941- if (isToken(value)) {
4942- return name + "=" + value;
4943- } else {
4944- return name + "=" + quote(value);
4945- }
4946- }
4947-
4948- /**
4949- * Shortcut method that encodes the specified text into an encoded-word if
4950- * the text has to be encoded.
4951- *
4952- * @param text
4953- * text to encode.
4954- * @param usage
4955- * whether the encoded-word is to be used to replace a text token
4956- * or a word entity (see RFC 822).
4957- * @param usedCharacters
4958- * number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
4959- * @return the specified text if encoding is not necessary or an encoded
4960- * word or a sequence of encoded words otherwise.
4961- */
4962- public static String encodeIfNecessary(String text, Usage usage,
4963- int usedCharacters) {
4964- if (hasToBeEncoded(text, usedCharacters))
4965- return encodeEncodedWord(text, usage, usedCharacters);
4966- else
4967- return text;
4968- }
4969-
4970- /**
4971- * Determines if the specified string has to encoded into an encoded-word.
4972- * Returns <code>true</code> if the text contains characters that don't
4973- * fall into the printable ASCII character set or if the text contains a
4974- * 'word' (sequence of non-whitespace characters) longer than 77 characters
4975- * (including characters already used up in the line).
4976- *
4977- * @param text
4978- * text to analyze.
4979- * @param usedCharacters
4980- * number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
4981- * @return <code>true</code> if the specified text has to be encoded into
4982- * an encoded-word, <code>false</code> otherwise.
4983- */
4984- public static boolean hasToBeEncoded(String text, int usedCharacters) {
4985- if (text == null)
4986- throw new IllegalArgumentException();
4987- if (usedCharacters < 0 || usedCharacters > MAX_USED_CHARACTERS)
4988- throw new IllegalArgumentException();
4989-
4990- int nonWhiteSpaceCount = usedCharacters;
4991-
4992- for (int idx = 0; idx < text.length(); idx++) {
4993- char ch = text.charAt(idx);
4994- if (ch == '\t' || ch == ' ') {
4995- nonWhiteSpaceCount = 0;
4996- } else {
4997- nonWhiteSpaceCount++;
4998- if (nonWhiteSpaceCount > 77) {
4999- // Line cannot be folded into multiple lines with no more
5000- // than 78 characters each. Encoding as encoded-words makes
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: