KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > tools > processors > wsdl2 > internal > MIMEProcessor


1 package org.objectweb.celtix.tools.processors.wsdl2.internal;
2
3 import java.util.Iterator JavaDoc;
4 import java.util.List JavaDoc;
5
6 import javax.wsdl.extensions.ExtensibilityElement;
7 import javax.wsdl.extensions.mime.MIMEContent;
8 import javax.wsdl.extensions.mime.MIMEMultipartRelated;
9 import javax.wsdl.extensions.mime.MIMEPart;
10
11 import org.objectweb.celtix.common.i18n.Message;
12 import org.objectweb.celtix.tools.common.ProcessorEnvironment;
13 import org.objectweb.celtix.tools.common.ToolException;
14 import org.objectweb.celtix.tools.common.model.JavaMethod;
15 import org.objectweb.celtix.tools.common.model.JavaParameter;
16 import org.objectweb.celtix.tools.common.model.JavaType;
17 import org.objectweb.celtix.tools.utils.ProcessorUtil;
18
19 public class MIMEProcessor extends AbstractProcessor {
20
21     public MIMEProcessor(ProcessorEnvironment penv) {
22         super(penv);
23     }
24
25     private static String JavaDoc getJavaTypeForMimeType(MIMEPart mPart) {
26         if (mPart.getExtensibilityElements().size() > 1) {
27             return "javax.activation.DataHandler";
28         } else {
29             ExtensibilityElement extElement = (ExtensibilityElement)mPart.getExtensibilityElements().get(0);
30             if (extElement instanceof MIMEContent) {
31                 MIMEContent mimeContent = (MIMEContent)extElement;
32                 if ("image/jpeg".equals(mimeContent.getType()) || "image/gif".equals(mimeContent.getType())) {
33                     return "java.awt.Image";
34                 } else if ("text/xml".equals(mimeContent.getType())
35                            || "application/xml".equals(mimeContent.getType())) {
36                     return "javax.xml.transform.Source";
37                 }
38             }
39         }
40         return "javax.activation.DataHandler";
41     }
42
43     public void process(JavaMethod jm, MIMEMultipartRelated ext, JavaType.Style style) throws ToolException {
44         List JavaDoc mimeParts = ext.getMIMEParts();
45         Iterator JavaDoc itParts = mimeParts.iterator();
46         while (itParts.hasNext()) {
47             MIMEPart mPart = (MIMEPart)itParts.next();
48             Iterator JavaDoc extns = mPart.getExtensibilityElements().iterator();
49             while (extns.hasNext()) {
50                 ExtensibilityElement extElement = (ExtensibilityElement)extns.next();
51                 if (extElement instanceof MIMEContent) {
52                     MIMEContent mimeContent = (MIMEContent)extElement;
53                     String JavaDoc mimeJavaType = getJavaTypeForMimeType(mPart);
54                     if (JavaType.Style.IN.equals(style)) {
55                         String JavaDoc paramName = ProcessorUtil.mangleNameToVariableName(mimeContent.getPart());
56                         JavaParameter jp = jm.getParameter(paramName);
57                         if (jp == null) {
58                             Message message = new Message("MIMEPART_CANNOT_MAP", LOG, mimeContent.getPart());
59                             throw new ToolException(message);
60                         }
61                         if (!jp.getClassName().equals(mimeJavaType)) {
62                             // jp.setType(mimeJavaType);
63
jp.setClassName(mimeJavaType);
64                         }
65                     } else if (JavaType.Style.OUT.equals(style)) {
66                         if (mimeParts.size() > 2) {
67                             // more than 1 mime:content part (1 root soap body),
68
// javaReturn will be set to void and
69
// all output parameter will be treated as the
70
// holder class
71
String JavaDoc paramName = ProcessorUtil.mangleNameToVariableName(mimeContent.getPart());
72                             JavaParameter jp = jm.getParameter(paramName);
73                             if (jp == null) {
74                                 Message message = new Message("MIMEPART_CANNOT_MAP", LOG, mimeContent
75                                     .getPart());
76                                 throw new ToolException(message);
77                             } else {
78                                 if (!jp.getClassName().equals(mimeJavaType)) {
79                                     // jp.setType(mimeJavaType);
80
jp.setClassName(mimeJavaType);
81                                     jp.setHolderClass(mimeJavaType);
82                                 }
83                             }
84                         } else {
85                             if (!jm.getReturn().getClassName().equals(mimeJavaType)) {
86                                 // jm.getReturn().setType(mimeJavaType);
87
jm.getReturn().setClassName(mimeJavaType);
88                             }
89                         }
90                     }
91                 }
92             }
93         }
94     }
95 }
96
Popular Tags