You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xmlbeans.apache.org by wl...@cleversafe.com on 2009/05/05 23:26:25 UTC

[PATCH 1 of 1] Fixes issue where specifying user types in an xsdconfig for types that are not currently be compiled (but are being referenced) does not work

# HG changeset patch
# User wleggette
# Date 1241558735 18000
# Branch clean
# Node ID c86ba8bafc666343e02ab9f57c0a4ef6b6f1f935
# Parent  3b1f6f066c53dfe478de2c0464e3c72bfa83567c
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 3b1f6f066c53 -r c86ba8bafc66 src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java
--- a/src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java	Tue May 05 16:24:47 2009 -0500
+++ b/src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java	Tue May 05 16:25:35 2009 -0500
@@ -60,7 +60,11 @@
 
         // First distribute the global names among the top entities.
         if (javaize)
+        {
             assignGlobalJavaNames(allSeenTypes);
+            assignUserTypes();
+        }
+            
 
         // now fully javaize everything deeply.
         for (int i = 0; i < allSeenTypes.size(); i++)
@@ -100,19 +104,33 @@
                 sImpl.setFullJavaName(pickFullJavaClassName(usedNames, findTopName(sImpl), pickedName, sImpl.isDocumentType(), sImpl.isAttributeType()));
                 sImpl.setFullJavaImplName(pickFullJavaImplName(usedNames, sImpl.getFullJavaName()));
 
-                UserType utype = StscState.get().getBindingConfig().lookupUserTypeForQName(sImpl.getName());
-                if (utype != null)
-                {
-                    sImpl.setUserTypeName(utype.getJavaName());
-                    sImpl.setUserTypeHandlerName(utype.getStaticHandler());
-                }
-
                 setExtensions(sImpl, state);
             }
         }
 
         verifyInterfaceNameCollisions(usedNames, state);
     }
+    
+    static void assignUserTypes()
+    {
+        StscState state = StscState.get();
+        UserType[] utypes = StscState.get().getBindingConfig().getUserTypes();
+        
+        
+        for (int i = 0; i < utypes.length; i++)
+        {
+            SchemaTypeImpl sImpl = state.findGlobalType(utypes[i].getName(), null, null);
+            if (sImpl != null)
+            {
+                sImpl.setUserTypeName(utypes[i].getJavaName());
+                sImpl.setUserTypeHandlerName(utypes[i].getStaticHandler());
+            }
+            else
+            {
+                System.err.println("Warning: cannot match user type for " + utypes[i].getName());
+            }
+        }
+    }
 
     private static void verifyInterfaceNameCollisions(Set usedNames, StscState state)
     {
diff -r 3b1f6f066c53 -r c86ba8bafc66 src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
--- a/src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java	Tue May 05 16:24:47 2009 -0500
+++ b/src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java	Tue May 05 16:25:35 2009 -0500
@@ -396,6 +396,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-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org


Re: [PATCH 1 of 1] Fixes issue where specifying user types in an xsdconfig for types that are not currently be compiled (but are being referenced) does not work

Posted by Wesley Leggette <wl...@cleversafe.com>.
I've got a new one of this that applies to trunk. Will send shortly.


On 5/5/09 16:26, "wleggette@cleversafe.com" <wl...@cleversafe.com>
wrote:

> # HG changeset patch
> # User wleggette
> # Date 1241558735 18000
> # Branch clean
> # Node ID c86ba8bafc666343e02ab9f57c0a4ef6b6f1f935
> # Parent  3b1f6f066c53dfe478de2c0464e3c72bfa83567c
> 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 3b1f6f066c53 -r c86ba8bafc66
> src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java
> --- a/src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java Tue May
> 05 16:24:47 2009 -0500
> +++ b/src/typeimpl/org/apache/xmlbeans/impl/schema/StscJavaizer.java Tue May
> 05 16:25:35 2009 -0500
> @@ -60,7 +60,11 @@
>  
>          // First distribute the global names among the top entities.
>          if (javaize)
> +        {
>              assignGlobalJavaNames(allSeenTypes);
> +            assignUserTypes();
> +        }
> +            
>  
>          // now fully javaize everything deeply.
>          for (int i = 0; i < allSeenTypes.size(); i++)
> @@ -100,19 +104,33 @@
>                  sImpl.setFullJavaName(pickFullJavaClassName(usedNames,
> findTopName(sImpl), pickedName, sImpl.isDocumentType(),
> sImpl.isAttributeType()));
>                  sImpl.setFullJavaImplName(pickFullJavaImplName(usedNames,
> sImpl.getFullJavaName()));
>  
> -                UserType utype =
> StscState.get().getBindingConfig().lookupUserTypeForQName(sImpl.getName());
> -                if (utype != null)
> -                {
> -                    sImpl.setUserTypeName(utype.getJavaName());
> -                    sImpl.setUserTypeHandlerName(utype.getStaticHandler());
> -                }
> -
>                  setExtensions(sImpl, state);
>              }
>          }
>  
>          verifyInterfaceNameCollisions(usedNames, state);
>      }
> +    
> +    static void assignUserTypes()
> +    {
> +        StscState state = StscState.get();
> +        UserType[] utypes =
> StscState.get().getBindingConfig().getUserTypes();
> +        
> +        
> +        for (int i = 0; i < utypes.length; i++)
> +        {
> +            SchemaTypeImpl sImpl = state.findGlobalType(utypes[i].getName(),
> null, null);
> +            if (sImpl != null)
> +            {
> +                sImpl.setUserTypeName(utypes[i].getJavaName());
> +                sImpl.setUserTypeHandlerName(utypes[i].getStaticHandler());
> +            }
> +            else
> +            {
> +                System.err.println("Warning: cannot match user type for " +
> utypes[i].getName());
> +            }
> +        }
> +    }
>  
>      private static void verifyInterfaceNameCollisions(Set usedNames,
> StscState state)
>      {
> diff -r 3b1f6f066c53 -r c86ba8bafc66
> src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
> --- a/src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java Tue
> May 05 16:24:47 2009 -0500
> +++ b/src/xmlconfig/org/apache/xmlbeans/impl/config/BindingConfigImpl.java Tue
> May 05 16:25:35 2009 -0500
> @@ -396,6 +396,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-unsubscribe@xmlbeans.apache.org
> For additional commands, e-mail: dev-help@xmlbeans.apache.org
> 


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