[Laszlo-checkins] r3948 - openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler

ptw@openlaszlo.org ptw at openlaszlo.org
Tue Feb 27 09:30:09 PST 2007


Author: ptw
Date: 2007-02-27 09:30:03 -0800 (Tue, 27 Feb 2007)
New Revision: 3948

Modified:
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/CanvasCompiler.java
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java
   openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/LibraryCompiler.java
Log:
Change 20070227-ptw-X by ptw at dueling-banjos.local on 2007-02-27 11:13:24 EST
    in /Users/ptw/OpenLaszlo/3.4.1

Summary: Add autoincludes to schema only at top level

Bugs Fixed:
LPP-3565 'Dashboard has compilation errors'

Technical Reviewer: hminsky (Message-ID: <8c61fad60702270927r32af6157ob217117d6e488131 at mail.gmail.com>)
QA Reviewer: tyoung (pending)
Doc Reviewer: n/a (pending)

Details:
    Move updating of schema for autoincludes out of the Canvas and
    Library compilers up to the top-level compiler.  At the top level,
    process the root document for auto-included libraries and amend
    the schema with the library definitions before processing the
    document.

Tests:
    smokecheck, dashboard, calendar, amazon

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/CanvasCompiler.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/CanvasCompiler.java	2007-02-27 16:37:44 UTC (rev 3947)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/CanvasCompiler.java	2007-02-27 17:30:03 UTC (rev 3948)
@@ -159,16 +159,6 @@
         
     }
         
-    void updateSchema(Element element, ViewSchema schema, Set visited) {
-        for (Iterator iter = getLibraries(element).iterator();
-             iter.hasNext(); ) {
-            File file = (File) iter.next();
-            Compiler.updateSchemaFromLibrary(file, mEnv, schema, visited);
-        }
-        // Visit the children:
-        super.updateSchema(element, schema, visited);
-    }
-    
     private Map createCanvasObject(Element element, Canvas canvas) {
         NodeModel model =
             NodeModel.elementOnlyAsModel(element, mEnv.getSchema(), mEnv);

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java	2007-02-27 16:37:44 UTC (rev 3947)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java	2007-02-27 17:30:03 UTC (rev 3948)
@@ -333,13 +333,13 @@
             } catch (org.jdom.JDOMException e) {
                 throw new ChainedException(e);
             }
-            Compiler.updateSchema(doc.getRootElement(), env,
-                                  env.getSchema(), new HashSet());
+            ViewSchema schema = env.getSchema();
+            Compiler.updateRootSchema(root, env, schema, new HashSet());
             if (SchemaLogger.isDebugEnabled()) {
                 org.jdom.output.XMLOutputter xmloutputter =
                     new org.jdom.output.XMLOutputter();
                 try {
-                    SchemaLogger.debug(xmloutputter.outputString(env.getSchema().getSchemaDOM()));
+                    SchemaLogger.debug(xmloutputter.outputString(schema.getSchemaDOM()));
                 } catch (org.jdom.JDOMException e) {
                     throw new ChainedException(e);
                 }
@@ -353,7 +353,7 @@
             if ("false".equals(env.getProperty(env.LINK_PROPERTY))) {
               LibraryWriter lw = new LibraryWriter(props, ostr, mMediaCache, true, env);
               env.setApplicationFile(file);
-              lw.setRoot(doc.getRootElement());
+              lw.setRoot(root);
               writer = lw;
             } else {
               writer = new SWFWriter(env.getProperties(), ostr, mMediaCache, true, env);
@@ -567,6 +567,19 @@
         }
     }
 
+    static void updateRootSchema(Element root, CompilationEnvironment env,
+                             ViewSchema schema, Set visited)
+    {
+      ToplevelCompiler ec = (ToplevelCompiler)getElementCompiler(root, env);
+      // Update schema for auto-includes
+      for (Iterator iter = ec.getLibraries(root).iterator();
+           iter.hasNext(); ) {
+        File library = (File) iter.next();
+        Compiler.updateSchemaFromLibrary(library, env, schema, visited);
+      }
+      ec.updateSchema(root, schema, visited);
+    }
+
     static void updateSchema(Element element, CompilationEnvironment env,
                              ViewSchema schema, Set visited)
     {

Modified: openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/LibraryCompiler.java
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/LibraryCompiler.java	2007-02-27 16:37:44 UTC (rev 3947)
+++ openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/LibraryCompiler.java	2007-02-27 17:30:03 UTC (rev 3948)
@@ -124,15 +124,6 @@
     void updateSchema(Element element, ViewSchema schema, Set visited) {
         element = resolveLibraryElement(element, mEnv, visited, false);
         if (element != null) {
-            // If compiling a library we need to get the auto-includes
-            // into the schema
-            if (element.getParentElement() == null) {
-                for (Iterator iter = getLibraries(element).iterator();
-                     iter.hasNext(); ) {
-                    File file = (File) iter.next();
-                    Compiler.updateSchemaFromLibrary(file, mEnv, schema, visited);
-                }
-            }
             super.updateSchema(element, schema, visited);
             // TODO [hqm 2005-02-09] can we compare any 'proxied' attribute here
             // with the parent element (canvas) to warn if it conflicts.



More information about the Laszlo-checkins mailing list