# HG changeset patch
# User wleggette
# Date 1241674622 18000
# Node ID ac60fab7a6cdbb282c4b34386995d02163479c60
# Parent  e893e2106ca61abc6a0c9b15606639fe182a3c62
Fixes issue where specifying user types in an xsdconfig for types that are not 
currently be compiled (but are being referenced) does not work.

diff -r e893e2106ca6 -r ac60fab7a6cd 
src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java
--- a/src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java    Thu May 
07 00:30:19 2009 -0500
+++ b/src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java    Thu May 
07 00:37:02 2009 -0500
@@ -100,11 +100,11 @@
                 sImpl.setFullJavaName(pickFullJavaClassName(usedNames, 
findTopName(sImpl), pickedName, sImpl.isDocumentType(), 
sImpl.isAttributeType()));
                 sImpl.setFullJavaImplName(pickFullJavaImplName(usedNames, 
sImpl.getFullJavaName()));
 
-                setUserTypes(sImpl, state);
-
                 setExtensions(sImpl, state);
             }
         }
+        
+        setUserTypes(state);
 
         verifyInterfaceNameCollisions(usedNames, state);
     }
@@ -135,17 +135,23 @@
         }
     }
 
-    private static void setUserTypes(SchemaTypeImpl sImpl, StscState state)
+    private static void setUserTypes(StscState state)
     {
         BindingConfig config = state.getBindingConfig();
 
-        if (config != null)
+        UserType[] utypes = StscState.get().getBindingConfig().getUserTypes();
+                
+        for (int i = 0; i < utypes.length; i++)
         {
-            UserType utype = config.lookupUserTypeForQName(sImpl.getName());
-            if (utype != null)
+            SchemaTypeImpl sImpl = state.findGlobalType(utypes[i].getName(), 
null, null);
+            if (sImpl != null)
             {
-                sImpl.setUserTypeName(utype.getJavaName());
-                sImpl.setUserTypeHandlerName(utype.getStaticHandler());
+                sImpl.setUserTypeName(utypes[i].getJavaName());
+                sImpl.setUserTypeHandlerName(utypes[i].getStaticHandler());
+            }
+            else
+            {
+                System.err.println("Warning: cannot match user type for " + 
utypes[i].getName());
             }
         }
     }
diff -r e893e2106ca6 -r ac60fab7a6cd 
src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
--- a/src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java      
Thu May 07 00:30:19 2009 -0500
+++ b/src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java      
Thu May 07 00:37:02 2009 -0500
@@ -394,6 +394,11 @@
 
         return (UserType) _userTypes.get(qname);
     }
+    
+    public UserType[] getUserTypes()
+    {
+        return (UserType[])this._userTypes.values().toArray(new UserType[0]);
+    }
 
     public InterfaceExtension[] getInterfaceExtensions()
     {

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@xmlbeans.apache.org
For additional commands, e-mail: dev-h...@xmlbeans.apache.org

Reply via email to