Scott,

agree, please find a patch

Pavel

> -----Original Message-----
> From: Scott Nichol [mailto:snicholnews@;scottnichol.com]
> Sent: Tuesday, November 05, 2002 10:17 PM
> To: [EMAIL PROTECTED]
> Subject: Re: Question: MimeType usage
> 
> 
> From your description, I guess you have traced into
> MimeType#match(String) to see that it instantiates a MimeType 
> so it can
> call MimeType#match(MimeType), right?  If that is the case, 
> it seems to
> me that something that will speed execution without worrying about the
> actual logic in the call is to create class variables for the types we
> always compare against:
> 
> private static final MimeType MT_APPLICATION_OCTET_STREAM = new
> MimeType("application/octet-stream");
> 
> if (ctype.match(MT_APPLICATION_OCTET_STREAM) ...
> 
> Scott Nichol
> 
> ----- Original Message -----
> From: "Pavel Ausianik" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Tuesday, November 05, 2002 10:55 AM
> Subject: Question: MimeType usage
> 
> 
> > Hi,
> >
> >
> > Need an advice of expert on MymeTypes. We have a code in the lib,
> which
> > could save around 2% of time in class 
> org.apache.soap.rpc.SOAPContext
> method
> > addBodyPart.
> >
> >            MimeType ctype = new MimeType(dh.getContentType());
> >             part.setHeader(Constants.HEADER_CONTENT_TYPE,
> >                            ctype.toString());
> > ....
> >
> >             if (ctype.match("application/octet-stream") ||
> >                 ctype.match("image/*") ||
> >                 ctype.match("audio/*") ||
> >                 ctype.match("video/*"))
> >
> >
> > Unfortunately match method requres create additional MimeType
> instances and
> > scan over String
> >
> > Will be this code fragment safe to rewrite as follows:
> >
> >            String ctype = dh.getContentType())
> >             part.setHeader(Constants.HEADER_CONTENT_TYPE,
> >                            ctype);
> > ....
> >
> >             if (ctype.equals("application/octet-stream") ||
> >                 ctype.equals("image/*") || // or maybe
> > ctype.startsWith("image/"
> >                 ctype.equals("audio/*") ||
> >                 ctype.equals("video/*"))
> >
> > Best regards,
> > Pavel
> >
> > --
> > To unsubscribe, e-mail:   
> <mailto:soap-dev-unsubscribe@;xml.apache.org>
> > For additional commands, e-mail: 
> <mailto:soap-dev-help@;xml.apache.org>
> >
> >
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:soap-dev-unsubscribe@;xml.apache.org>
> For additional commands, e-mail: <mailto:soap-dev-help@;xml.apache.org>
> 

Index: SOAPContext.java
===================================================================
RCS file: /home/cvspublic/xml-soap/java/src/org/apache/soap/rpc/SOAPContext.java,v
retrieving revision 1.12
diff -u -r1.12 SOAPContext.java
--- SOAPContext.java    11 Oct 2002 19:21:41 -0000      1.12
+++ SOAPContext.java    6 Nov 2002 16:18:02 -0000
@@ -90,6 +90,12 @@
     protected Boolean       gzip = null;
     protected Boolean       acceptGzip = null;
 
+    // Constants for checking type for base64 encoding
+    private static MimeType MIME_STREAM;
+    private static MimeType MIME_IMAGE;
+    private static MimeType MIME_AUDIO;
+    private static MimeType MIME_VIDEO;
+
     /**
      * This flag indicates if setRootPart() was called, so we can distinguish
      * default root part resolution from deliberate root part indication.
@@ -121,6 +127,20 @@
      */
     public SOAPContext() {
         parts = null;
+        // Initialize mime types
+        if (MIME_STREAM == null) {
+            synchronized (SOAPContext.class) {
+                if (MIME_STREAM == null) {
+                    try {
+                        MIME_STREAM = new MimeType("application", "octet-stream");
+                        MIME_IMAGE = new MimeType("image", "*");
+                        MIME_AUDIO = new MimeType("audio", "*");
+                        MIME_VIDEO = new MimeType("video", "*");
+                    }
+                    catch (MimeTypeParseException e) {}
+                }
+            }
+        }
     }
 
     /**
@@ -361,10 +381,10 @@
              * exception for text/*, which should be UTF-8 encoded.
              * To do: find a way to do the latter...
              */
-            if (ctype.match("application/octet-stream") ||
-                ctype.match("image/*") ||
-                ctype.match("audio/*") ||
-                ctype.match("video/*"))
+            if (ctype.match(MIME_STREAM) ||
+                ctype.match(MIME_IMAGE) ||
+                ctype.match(MIME_AUDIO) ||
+                ctype.match(MIME_VIDEO))
                 part.setHeader("Content-Transfer-Encoding", "8bit");
         } catch(MessagingException me) {
             throw new IllegalArgumentException(

--
To unsubscribe, e-mail:   <mailto:soap-dev-unsubscribe@;xml.apache.org>
For additional commands, e-mail: <mailto:soap-dev-help@;xml.apache.org>

Reply via email to