KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > tools > processors > wsdl2 > validators > MIMEBindingValidator


1 package org.objectweb.celtix.tools.processors.wsdl2.validators;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.List JavaDoc;
6
7 import javax.wsdl.Binding;
8 import javax.wsdl.BindingOperation;
9 import javax.wsdl.Definition;
10 import javax.wsdl.extensions.ExtensibilityElement;
11 import javax.wsdl.extensions.mime.MIMEContent;
12 import javax.wsdl.extensions.mime.MIMEMultipartRelated;
13 import javax.wsdl.extensions.mime.MIMEPart;
14 import javax.wsdl.extensions.soap.SOAPBody;
15
16 public class MIMEBindingValidator
17     extends AbstractValidator {
18
19     public MIMEBindingValidator(Definition def) {
20         super(def);
21     }
22
23     public boolean isValid() {
24         Iterator JavaDoc itBinding = def.getBindings().keySet().iterator();
25         while (itBinding.hasNext()) {
26             Binding binding = (Binding)def.getBindings().get(itBinding.next());
27             Iterator JavaDoc itOperation = binding.getBindingOperations().iterator();
28             while (itOperation.hasNext()) {
29                 BindingOperation bindingOperation = (BindingOperation)itOperation.next();
30                 Iterator JavaDoc itInputExt = bindingOperation.getBindingInput().getExtensibilityElements()
31                     .iterator();
32                 while (itInputExt.hasNext()) {
33                     ExtensibilityElement extElement = (ExtensibilityElement)itInputExt.next();
34                     if (extElement instanceof MIMEMultipartRelated) {
35                         Iterator JavaDoc itMimeParts = ((MIMEMultipartRelated)extElement).getMIMEParts()
36                             .iterator();
37                         if (!doValidate(itMimeParts, bindingOperation.getName())) {
38                             return false;
39                         }
40                     }
41                 }
42             }
43         }
44         return true;
45     }
46
47     private boolean doValidate(Iterator JavaDoc mimeParts, String JavaDoc operationName) {
48         boolean gotRootPart = false;
49         while (mimeParts.hasNext()) {
50             MIMEPart mPart = (MIMEPart)mimeParts.next();
51             List JavaDoc<MIMEContent> mimeContents = new ArrayList JavaDoc<MIMEContent>();
52             Iterator JavaDoc extns = mPart.getExtensibilityElements().iterator();
53             while (extns.hasNext()) {
54                 ExtensibilityElement extElement = (ExtensibilityElement)extns.next();
55                 if (extElement instanceof SOAPBody) {
56                     if (gotRootPart) {
57                         addErrorMessage("Operation("
58                                         + operationName
59                                         + "): There's more than one soap body mime part"
60                                         + " in its binding input");
61                         return false;
62                     }
63                     gotRootPart = true;
64                 } else if (extElement instanceof MIMEContent) {
65                     mimeContents.add((MIMEContent)extElement);
66                 }
67             }
68             if (!doValidateMimeContentPartNames(mimeContents.iterator(), operationName)) {
69                 return false;
70             }
71         }
72         if (!gotRootPart) {
73             addErrorMessage("Operation("
74                             + operationName
75                             + "): There's no soap body in mime part"
76                             + " in its binding input");
77             return false;
78         }
79         return true;
80     }
81
82     private boolean doValidateMimeContentPartNames(Iterator JavaDoc mimeContents, String JavaDoc operationName) {
83         // validate mime:content(s) in the mime:part as per R2909
84
String JavaDoc partName = null;
85         while (mimeContents.hasNext()) {
86             MIMEContent mimeContent = (MIMEContent)mimeContents.next();
87             String JavaDoc mimeContnetPart = mimeContent.getPart();
88             if (mimeContnetPart == null) {
89                 addErrorMessage("Operation("
90                                 + operationName
91                                 + "): Must provide part attribute value for meme:content elements");
92                 return false;
93             } else {
94                 if (partName == null) {
95                     partName = mimeContnetPart;
96                 } else {
97                     if (!partName.equals(mimeContnetPart)) {
98                         addErrorMessage("Operation("
99                                         + operationName
100                                         + "): Part attribute value for meme:content "
101                                         + "elements are different");
102                         return false;
103                     }
104                 }
105             }
106         }
107         return true;
108     }
109 }
110
Popular Tags