axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vidyanand Murunikkara" <>
Subject RE: Axis attachment naming enhancement (code attached)
Date Thu, 30 Jan 2003 20:34:18 GMT


Could you please folow the guidelines set out here . Once it is
done someone who is familiar with mime attachments will take a loot at
it and do the needful.


-----Original Message-----
From: Jim Lerner []
Sent: Thursday, January 30, 2003 12:11 PM
Subject: Axis attachment naming enhancement (code attached)

I am submitting for your approval (and integration) changes to 
Axis-1_1beta that allows Axis to create unique names for file 
attachments that bear a passing resemblance to the original filename. 
 This is critical for applications that use the filename [extension] for

disambiguation, and also in the case of multiple attachments on a single

message.  It's my understanding that there are a number of Axis users 
out there who have suffered for lack of a solution to this problem.

The premise is simple: add a MIME header to each attachment with the 
original filename.  When the file is sent to Axis, Axis' 
ManagedMemoryDataSource will use this name to create a uniquely named 
temporary file (eg. Axis98765_myfile.xls) rather than the usual 
(Axis98765axis).  Likewise, when Axis receives a file to be sent back to

the caller, a MIME header on the attachment indicates the original name 
(Axis98765_myfile.xls).  This is not quite optimal, but it is easy 
enough for the client to parse and use, given that the underscore is 
guaranteed to be the first one in the filename.  Existing applications 
that don't set the MIME header will continue to see the previous file 
naming behavior.

The changes that I've made (in the attached files) are as follows:


setMimeHeader(DataSource's getName()) when creating an attachment part 
from a DataHandler and
when setting a DataHandler for an existing AttachmentPart.

inform ManagedMemoryDataSource of the X_ORIGINAL_FILENAME MIME heading.

added new constructor with extra parameter for original name (other 
constructors use this(..., null))
added storage for the original filename
use the original name when constructing the temporary file into which 
the in-memory file is flushed.

Please let me know if you need any further clarification, any of this 
needs to be reworked, etc.  I'm hoping that you'll find this to be 
useful, correct, and worth integrating into the CVS repository.

- Jim

View raw message