Author: dkulp
Date: Sat Feb  9 07:21:36 2008
New Revision: 620138

URL: http://svn.apache.org/viewvc?rev=620138&view=rev
Log:
Fix generated schemas I broke last night


Modified:
    
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/AbstractDataBinding.java

Modified: 
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/AbstractDataBinding.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/AbstractDataBinding.java?rev=620138&r1=620137&r2=620138&view=diff
==============================================================================
--- 
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/AbstractDataBinding.java
 (original)
+++ 
incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/AbstractDataBinding.java
 Sat Feb  9 07:21:36 2008
@@ -20,6 +20,7 @@
 package org.apache.cxf.databinding;
 
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -32,6 +33,7 @@
 
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.common.xmlschema.SchemaCollection;
+import org.apache.cxf.helpers.XMLUtils;
 import org.apache.cxf.service.model.SchemaInfo;
 import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.ws.commons.schema.XmlSchema;
@@ -40,6 +42,13 @@
  * Supply default implementations, as appropriate, for DataBinding. 
  */
 public abstract class AbstractDataBinding implements DataBinding {
+    private static final Map<String, String> BUILTIN_SCHEMA_LOCS = new 
HashMap<String, String>();
+    {
+        BUILTIN_SCHEMA_LOCS.put("http://www.w3.org/2005/08/addressing";,
+                     "http://www.w3.org/2006/03/addressing/ws-addr.xsd";);
+    }
+    
+    
     protected int mtomThreshold;
     
     private Collection<DOMSource> schemas;
@@ -68,9 +77,11 @@
                 Element e = (Element)n;
                 if (e.getLocalName().equals("import")) {
                     e.removeAttribute("schemaLocation");
+                    updateSchemaLocation(e);
                 }
             }
         }
+        XMLUtils.printDOM(d);
         SchemaInfo schema = new SchemaInfo(serviceInfo, ns);
         schema.setSystemId(systemId);
         XmlSchema xmlSchema = col.read(d, null);
@@ -79,6 +90,14 @@
         return xmlSchema;
     }
     
+    protected void updateSchemaLocation(Element e) {
+        String ns = e.getAttribute("namespace");
+        String newLoc = BUILTIN_SCHEMA_LOCS.get(ns);
+        if (newLoc != null) {
+            e.setAttribute("schemaLocation", newLoc);
+        }
+    }
+
     /**
       * @return Returns the namespaceMap.
      */


Reply via email to