And below, a corrected version:



   protected static boolean objectEquals(final XmlObject a, final XmlObject
b)
   {
      if (a == null)
      {
         if (b == null)
            return true;
         else
            return false;
      }

      if (b == null)
         return false;

      final SchemaType sa = a.schemaType();
      final SchemaType sb = b.schemaType();

      if (sa.getContentType() == SchemaType.NOT_COMPLEX_TYPE)
      {
         if (sb.getContentType() == SchemaType.NOT_COMPLEX_TYPE)
            return a.valueEquals(b);
         else
            return false;
      }

      if (!sa.equals(sb))
         return false;

      // compare attributes
      for (final SchemaProperty property : sa.getAttributeProperties())
      {
         final XmlObject pa = a.selectAttribute(property.getName());
         final XmlObject pb = b.selectAttribute(property.getName());
         if (!RegistryBase.objectEquals(pa, pb))
            return false;
      }

      // compare elements
      for (final SchemaProperty property : sa.getElementProperties())
      {
         final XmlObject[] ea = a.selectChildren(property.getName());
         final XmlObject[] eb = b.selectChildren(property.getName());

         if (ea.length != eb.length)
            return false;
         for (int i = 0; i < ea.length; i++)
         {
            if (!RegistryBase.objectEquals(ea[i], eb[i]))
               return false;
         }

      }

      return a.valueEquals(b);
   }


On 5/2/09 23:25, "Wesley Leggette" <wlegge...@cleversafe.com> wrote:

> In my application code, I've attempted to implement a somewhat generic
> content aware comparison. Would anyone care to review this and let me know
> if it seems correct? If it is a sound approach, should I look to make a
> patch adding this to xmlbeans proper?
> 
> 
> Thanks,
> Wesley
> 
> 
> ----------
> 
> 
>    private boolean objectEquals(final XmlObject a, final XmlObject b)
>    {
>       if (a == null)
>       {
>          if (b == null)
>             return true;
>          else
>             return false;
>       }
> 
>       if (b == null)
>          return false;
> 
>       if (a instanceof SimpleValue)
>       {
>          if (b instanceof SimpleValue)
>             return a.valueEquals(b);
>          else
>             return false;
>       }
> 
>       final SchemaType sa = a.schemaType();
>       final SchemaType sb = b.schemaType();
> 
>       if (!sa.equals(sb))
>          return false;
> 
>       // compare attributes
>       for (final SchemaProperty property : sa.getAttributeProperties())
>       {
>          final XmlObject pa = a.selectAttribute(property.getName());
>          final XmlObject pb = b.selectAttribute(property.getName());
>          if (!objectEquals(pa, pb))
>             return false;
>       }
> 
>       // compare elements
>       for (final SchemaProperty property : sa.getElementProperties())
>       {
>          final XmlObject[] ea = a.selectChildren(property.getName());
>          final XmlObject[] eb = b.selectChildren(property.getName());
> 
>          if (ea.length != eb.length)
>             return false;
>          for (int i = 0; i < ea.length; i++)
>             objectEquals(ea[i], eb[i]);
>       }
> 
>       return a.valueEquals(b);
>    }
> 
> 
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@xmlbeans.apache.org
> For additional commands, e-mail: dev-h...@xmlbeans.apache.org
> 


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

Reply via email to