You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by ra...@apache.org on 2004/11/11 05:02:21 UTC

cvs commit: xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema SchemaAnnotationImpl.java SchemaTypeCodePrinter.java SchemaTypeSystemImpl.java

radup       2004/11/10 20:02:21

  Modified:    v2/src/typeimpl/org/apache/xmlbeans/impl/schema
                        SchemaAnnotationImpl.java
                        SchemaTypeCodePrinter.java
                        SchemaTypeSystemImpl.java
  Log:
  Performance improvements loading xsb files.
  
  Revision  Changes    Path
  1.4       +52 -6     xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaAnnotationImpl.java
  
  Index: SchemaAnnotationImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaAnnotationImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SchemaAnnotationImpl.java	6 Aug 2004 02:28:30 -0000	1.3
  +++ SchemaAnnotationImpl.java	11 Nov 2004 04:02:21 -0000	1.4
  @@ -22,6 +22,7 @@
   import org.apache.xmlbeans.SchemaAnnotation;
   import org.apache.xmlbeans.SchemaTypeSystem;
   import org.apache.xmlbeans.XmlCursor;
  +import org.apache.xmlbeans.XmlException;
   import org.apache.xmlbeans.XmlObject;
   import org.w3.x2001.xmlSchema.AppinfoDocument;
   import org.w3.x2001.xmlSchema.Annotated;
  @@ -32,15 +33,61 @@
   public class SchemaAnnotationImpl implements SchemaAnnotation
   {
       private SchemaContainer _container;
  +    private String[] _appInfoAsXml;
       private AppinfoDocument.Appinfo[] _appInfo;
  +    private String[] _documentationAsXml;
       private DocumentationDocument.Documentation[] _documentation;
       private Attribute[] _attributes;
   
       public XmlObject[] getApplicationInformation()
  -    {   return _appInfo; }
  +    {
  +        if (_appInfo == null)
  +        {
  +            int n = _appInfoAsXml.length;
  +            _appInfo = new AppinfoDocument.Appinfo[n];
  +            for (int i = 0; i < n; i++)
  +            {
  +                String appInfo = _appInfoAsXml[i];
  +                try
  +                {
  +                    _appInfo[i] = AppinfoDocument.Factory.
  +                        parse(appInfo).getAppinfo();
  +                }
  +                catch(XmlException e)
  +                {
  +                    // problem in the classfile
  +                    _appInfo[i] = AppinfoDocument.Factory.
  +                        newInstance().getAppinfo();
  +                }
  +            }
  +        }
  +        return _appInfo;
  +    }
   
       public XmlObject[] getUserInformation()
  -    {   return _documentation; }
  +    {
  +        if (_documentation == null)
  +        {
  +            int n = _documentationAsXml.length;
  +            _documentation = new DocumentationDocument.Documentation[n];
  +            for (int i = 0; i <  n; i++)
  +            {
  +                String doc = _documentationAsXml[i];
  +                try 
  +                {
  +                    _documentation[i] = DocumentationDocument.Factory.
  +                        parse(doc).getDocumentation();
  +                }
  +                catch (XmlException e)
  +                {
  +                    // problem in the classfile
  +                    _documentation[i] = DocumentationDocument.Factory.
  +                        newInstance().getDocumentation();
  +                }
  +            }
  +        }
  +        return _documentation;
  +    }
   
       public Attribute[] getAttributes()
       {   return _attributes; }
  @@ -125,13 +172,12 @@
       }
   
       /*package*/ SchemaAnnotationImpl(SchemaContainer c,
  -        AppinfoDocument.Appinfo[] aap,
  -        DocumentationDocument.Documentation[] adoc,
  +        String[] aapStrings, String[] adocStrings,
           Attribute[] aat)
       {
           _container = c;
  -        _appInfo = aap;
  -        _documentation = adoc;
  +        _appInfoAsXml = aapStrings;
  +        _documentationAsXml = adocStrings;
           _attributes = aat;
       }
   
  
  
  
  1.13      +4 -1      xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeCodePrinter.java
  
  Index: SchemaTypeCodePrinter.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeCodePrinter.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SchemaTypeCodePrinter.java	9 Oct 2004 17:30:16 -0000	1.12
  +++ SchemaTypeCodePrinter.java	11 Nov 2004 04:02:21 -0000	1.13
  @@ -279,7 +279,10 @@
           indent();
           emit("private " + shortName + "() { }");
           emit("public static final org.apache.xmlbeans.SchemaTypeSystem typeSystem = loadTypeSystem();");
  -        emit("static { typeSystem.resolve(); }");
  +        // Commenting out this line has the effect of not loading all components in a
  +        // typesystem upfront, but just as they are needed, which may improve
  +        // performance significantly
  +//         emit("static { typeSystem.resolve(); }");
           emit("private static final org.apache.xmlbeans.SchemaTypeSystem loadTypeSystem()");
           emit("{");
           indent();
  
  
  
  1.14      +6 -26     xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java
  
  Index: SchemaTypeSystemImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v2/src/typeimpl/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- SchemaTypeSystemImpl.java	1 Nov 2004 04:25:58 -0000	1.13
  +++ SchemaTypeSystemImpl.java	11 Nov 2004 04:02:21 -0000	1.14
  @@ -1749,42 +1749,22 @@
   
               // Read documentation items
               n = readInt();
  -            DocumentationDocument.Documentation[] documentationItems =
  -                new DocumentationDocument.Documentation[n];
  +            String[] docStrings = new String[n];
               for (int i = 0; i <  n; i++)
               {
  -                String doc = readString();
  -                try 
  -                {
  -                    documentationItems[i] = DocumentationDocument.Factory.
  -                        parse(doc).getDocumentation();
  -                }
  -                catch (XmlException e)
  -                {
  -                    throw new RuntimeException( e.getMessage(), e );
  -                }
  +                docStrings[i] = readString();
               }
   
               // Read application info items
               n = readInt();
  -            AppinfoDocument.Appinfo[] appInfoItems =
  -                new AppinfoDocument.Appinfo[n];
  +            String[] appInfoStrings = new String[n];
               for (int i = 0; i < n; i++)
               {
  -                String appInfo = readString();
  -                try
  -                {
  -                    appInfoItems[i] = AppinfoDocument.Factory.
  -                        parse(appInfo).getAppinfo();
  -                }
  -                catch(XmlException e)
  -                {
  -                    throw new RuntimeException( e.getMessage(), e );
  -                }
  +                appInfoStrings[i] = readString();
               }
   
  -            return new SchemaAnnotationImpl(c, appInfoItems,
  -                documentationItems, attributes);
  +            return new SchemaAnnotationImpl(c, appInfoStrings,
  +                docStrings, attributes);
           }
   
           void writeAnnotations(SchemaAnnotation[] anns)
  
  
  

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