MappingFile.java

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         // init vars
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             // get each mapping file package mappings
00094             PackageMapping pm = (PackageMapping) i.next();
00095 
00096             String pt = pm.getPackageType();
00097             String nuri = pm.getNamespaceURI();
00098 
00099             //add in the hashtable the namespace to package relation (cache)
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             // get each java -> xml type mapping
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()); //$NON-NLS-1$
00188         ret.append("\ngetMappings()=" + namespacePackageMapping); //$NON-NLS-1$
00189         ret.append("\ngetXmlTypeMappings()=" + xmlType2javaClassname); //$NON-NLS-1$
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         // After all theses tests, the 2 objects are equals in value
00223         return true;
00224     }
00225 
00226 }

Generated on Tue Feb 15 15:05:59 2005 for JOnAS by  doxygen 1.3.9.1