1 package org.objectweb.celtix.tools.processors.wsdl2.internal; 2 3 import java.util.Iterator ; 4 import java.util.List ; 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 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 mimeParts = ext.getMIMEParts(); 45 Iterator itParts = mimeParts.iterator(); 46 while (itParts.hasNext()) { 47 MIMEPart mPart = (MIMEPart)itParts.next(); 48 Iterator 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 mimeJavaType = getJavaTypeForMimeType(mPart); 54 if (JavaType.Style.IN.equals(style)) { 55 String 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.setClassName(mimeJavaType); 64 } 65 } else if (JavaType.Style.OUT.equals(style)) { 66 if (mimeParts.size() > 2) { 67 String 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.setClassName(mimeJavaType); 81 jp.setHolderClass(mimeJavaType); 82 } 83 } 84 } else { 85 if (!jm.getReturn().getClassName().equals(mimeJavaType)) { 86 jm.getReturn().setClassName(mimeJavaType); 88 } 89 } 90 } 91 } 92 } 93 } 94 } 95 } 96 | Popular Tags |