00001
00027 package org.objectweb.jonas_ws.deployment.api;
00028
00029 import java.util.Hashtable;
00030 import java.util.Iterator;
00031 import java.util.List;
00032 import java.util.Map;
00033
00034 import javax.xml.namespace.QName;
00035
00036 import org.objectweb.jonas_lib.deployment.xml.Qname;
00037
00038 import org.objectweb.jonas_ws.deployment.xml.JavaWsdlMapping;
00039 import org.objectweb.jonas_ws.deployment.xml.JavaXmlTypeMapping;
00040 import org.objectweb.jonas_ws.deployment.xml.PackageMapping;
00041
00042
00054 public class MappingFile {
00055
00057 private Map namespacePackageMapping;
00058
00060 private Map xmlType2javaClassname;
00061
00063 private JavaWsdlMapping javaWSDLMapping;
00064
00070 public MappingFile(JavaWsdlMapping jwMapping) {
00071
00072 javaWSDLMapping = jwMapping;
00073
00074
00075 namespacePackageMapping = new Hashtable();
00076 xmlType2javaClassname = new Hashtable();
00077
00078 fillPackageMapping(jwMapping);
00079 fillXmlTypeMapping(jwMapping);
00080
00081 }
00082
00083
00089 private void fillPackageMapping(JavaWsdlMapping mapping) {
00090 List pml = mapping.getPackageMappingList();
00091
00092 for (Iterator i = pml.iterator(); i.hasNext();) {
00093
00094 PackageMapping pm = (PackageMapping) i.next();
00095
00096 String pt = pm.getPackageType();
00097 String nuri = pm.getNamespaceURI();
00098
00099
00100 namespacePackageMapping.put(nuri, pt);
00101 }
00102 }
00103
00109 private void fillXmlTypeMapping(JavaWsdlMapping mapping) {
00110
00111 List jxml = mapping.getJavaXmlTypeMappingList();
00112 for (Iterator i = jxml.iterator(); i.hasNext();) {
00113
00114 JavaXmlTypeMapping jxtm = (JavaXmlTypeMapping) i.next();
00115
00116 QName xmlName = null;
00117 String javaName = jxtm.getJavaType();
00118 Qname rootType = jxtm.getRootTypeQname();
00119 if (rootType != null) {
00120 xmlName = rootType.getQName();
00121 } else {
00122 xmlName = jxtm.getAnonymousTypeQname().getQName();
00123 }
00124
00125 xmlType2javaClassname.put(xmlName, javaName);
00126 }
00127 }
00128
00132 public JavaWsdlMapping getXmlJavaWsdlMapping() {
00133 return javaWSDLMapping;
00134 }
00135
00142 public Map getMappings() {
00143 return namespacePackageMapping;
00144 }
00145
00155 public String getMapping(String namespaceURI) {
00156 return (String) namespacePackageMapping.get(namespaceURI);
00157 }
00158
00166 public String getClassname(QName xmlType) {
00167 return (String) xmlType2javaClassname.get(xmlType);
00168 }
00169
00175 public Iterator getXmlTypeMappings() {
00176 return xmlType2javaClassname.keySet().iterator();
00177 }
00178
00184 public String toString() {
00185 StringBuffer ret = new StringBuffer();
00186
00187 ret.append("\n" + getClass().getName());
00188 ret.append("\ngetMappings()=" + namespacePackageMapping);
00189 ret.append("\ngetXmlTypeMappings()=" + xmlType2javaClassname);
00190
00191 return ret.toString();
00192 }
00193
00197 public int hashCode() {
00198 return this.namespacePackageMapping.hashCode() + this.xmlType2javaClassname.hashCode();
00199 }
00200
00208 public boolean equals(Object other) {
00209 if (this == other) {
00210 return true;
00211 }
00212 if (other == null) {
00213 return false;
00214 }
00215 if (!(other instanceof MappingFile)) {
00216 return false;
00217 }
00218 MappingFile ref = (MappingFile) other;
00219 if (!namespacePackageMapping.equals(ref.getMappings())) {
00220 return false;
00221 }
00222
00223 return true;
00224 }
00225
00226 }