The recent changes in xsp.xsl in 2.1.3 seem to be breaking the esql logicsheet or they are uncovering a  bug in the esql logic-sheet.  ESQL is pretty much broken in 2.1.3 for me.  Can someone forward to the dev list? 
 
Thanks,
Corey
 
1.3 xsp.xsl
 
  <xsl:template match="text()">
    <xsl:choose>
      <xsl:when test="namespace-uri(..) = $xsp-uri and (local-name(..) = 'logic' or local-name(..) = 'expr')">
        <xsl:value-of select="."/>  <!---        This change  ?>
      </xsl:when>
      <xsl:otherwise>
        this.characters("<xsl:value-of select="XSLTExtension:escape($extension, .)"/>");
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
 
1.4 xsp.xsl
 
  <xsl:template match="text()">
    <xsl:choose>
      <xsl:when test="namespace-uri(..) = $xsp-uri and (local-name(..) = 'logic' or local-name(..) = 'expr')">
        <xsl:value-of select="XSLTExtension:escape($extension, .)"/>    <!---        This change  ?>
      </xsl:when>
      <xsl:otherwise>
        this.characters("<xsl:value-of select="XSLTExtension:escapeJava($extension, .)"/>");
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
 
Causes the following xsp:
 
<xsp:page language="java" xmlns:xsp="http://apache.org/xsp" xmlns:esql="http://apache.org/cocoon/SQL/v2">
 <database>
  <esql:connection>
   <esql:pool>natlib</esql:pool>
   <esql:execute-query>
    <esql:query>SELECT * FROM Core WHERE DigitalID=100006111</esql:query>
    <esql:results>
     <esql:row-results>
      <row>
       <esql:get-columns/>
      </row>
     </esql:row-results>
    </esql:results>
    <esql:no-results>No results</esql:no-results>
    <esql:error-results>Error in query</esql:error-results>
   </esql:execute-query>
  </esql:connection>
 </database>
</xsp:page>
 
Which produces:  (note the nested xsp:logic elements)
...
  <xsp:logic>
    <xsp:logic>private Stack _esql_connections = new Stack();                  
    private Cocoon2EsqlConnection _esql_connection = null;
    private Stack _esql_queries = new Stack();
    private AbstractEsqlQuery _esql_query = null;
    private SQLException _esql_exception = null;
    private StringWriter _esql_exception_writer = null;
 
    </xsp:logic>
            private static ComponentSelector _esql_selector = null;
 
            protected ComponentSelector _esql_get_selector() throws org.apache.avalon.framework.component.ComponentException {
              if (_esql_selector == null) {
                try {
                  _esql_selector = (ComponentSelector) manager.lookup(DataSourceComponent.ROLE + "Selector");
                } catch (ComponentException cme) {
                  getLogger().error("Could not look up the datasource component", cme);
                }
              }
              return _esql_selector;
            }
     
 
            protected void _esql_printObject ( Object obj, AttributesImpl xspAttr) throws SAXException
            {
               if ( obj instanceof List) {
           ListIterator j=((List)obj).listIterator();
          
    <xsp:element name="sql-list">
      <xsp:logic>
                       while (j.hasNext()){
                     
        <xsp:element name="sql-list-item">
          <xsp:attribute name="pos">
            <xsp:expr>j.nextIndex()</xsp:expr>
          </xsp:attribute>
          <xsp:logic>this._esql_printObject(j.next(),xspAttr);</xsp:logic>
        </xsp:element>
                       };
..
 
Which results in java all messed up:
 

   /**
    * Generated by XSP. Edit at your own risk, :-)
    */
   public class query_xsp extends XSPGenerator {
 
       // Files this XSP depends on
       private static File[] _dependentFiles = new File[] {
 
           };
 
       // Initialize attributes used by modifiedSince() (see AbstractServerPage)
       {
           this.dateCreated = 1069271463674L;
           this.dependencies = _dependentFiles;
       }
 
       /* Built-in parameters available for use */
       // context    - org.apache.cocoon.environment.Context
       // request    - org.apache.cocoon.environment.Request
       // response   - org.apache.cocoon.environment.Response
       // parameters - parameters defined in the sitemap
       // objectModel- java.util.Map
       // resolver   - org.apache.cocoon.environment.SourceResolver
 
       /* User Class Declarations */
       private Stack _esql_connections = new Stack();
   private Cocoon2EsqlConnection _esql_connection = null;
   private Stack _esql_queries = new Stack();
   private AbstractEsqlQuery _esql_query = null;
   private SQLException _esql_exception = null;
   private StringWriter _esql_exception_writer = null;
 
 
/ Something is missing !!!!

   this.contentHandler.startElement(
     "",
     "sql-list",
     "sql-list",
     xspAttr
   );
 
   xspAttr.clear();
 
 
 
   xspAttr.addAttribute(
     "",
     "pos",
     "pos",
     "CDATA",
     String.valueOf(j.nextIndex())
   );
 

   this.contentHandler.startElement(
     "",
     "sql-list-item",
     "sql-list-item",
     xspAttr
   );
 
   xspAttr.clear();
 
 
 
 

Reply via email to