You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Luis Gois <lu...@netc.pt> on 2001/09/16 20:26:41 UTC

Re : Xsp logic simpler error

You've made an inner class but you're calling it as a method!

Try this :

<xsp:logic>
    make_xsl anObject = new make_xsl();
    anObject.main();
</xsp:logic>

you main() method won't be called as you instatiate your make_xsl class, like it would happen if this was your program's starting/main class.

Luis Gois

Re: Xsp logic simpler error

Posted by cib <c....@laposte.net>.
Thanks to Luis Gois for answering
it now says:
"No method matching main() found in inner class org.apache.cocoon.www.pages.make1_xsp. make_xsl."
I really don't know why there is a space between make1_xsp. and  make_xsl. Is it normal?

*******
Here is my code for make1.xsp
*******
<?xml version="1.0" encoding="ISO-8859-1"?>

<xsp:page
          language="java"
          xmlns:xsp="http://apache.org/xsp"
          xmlns:esql="http://apache.org/cocoon/SQL/v2">

<xsp:structure>
  <xsp:include>java.io.*</xsp:include>
</xsp:structure>

<xsp:logic>
class make_xsl {
  public void main(String[] args) throws IOException {
 FileReader entree = new FileReader(("http//:localhost/cocoon/test/make.xsl"));
  FileWriter sortie = new FileWriter("output.txt");
 int c;
 while ( (c = entree.read()) != -1 )             
sortie.write(c);             
sortie.close();         
entree.close();      
     }
}
</xsp:logic>

  <page>

<xsp:logic>
    make_xsl anObject = new make_xsl();
    anObject.main();
</xsp:logic>

If you see this, it works.
  </page>
</xsp:page>


Surely I didn't put the anObject call at the right place. My java is rather experimental.
Thanks again.

*******
I ADD THE CODE OF make1_xsp.java (I strip the code of usual imports):
*******


package org.apache.cocoon.www.pages;
import java.io.*;

/**
 * Generated by XSP. Edit at your own risk, :-)
 */
public class make1_xsp extends XSPGenerator {

  static {
    dateCreated = 1000658859410L;
    dependencies = new File[]{
                   };
  }

  /* Built-in parameters available for use */
  // context    - ServletContext
  // request    - HttpServletRequest
  // response   - HttpServletResponse
  // parameters - parameters defined in the sitemap

  /* User Class Declarations */

  class EsqlConnection {

    Connection connection = null;
    String dburl = null;
    java.util.Properties info = new java.util.Properties();
    int use_limit_clause = 0;
    static final int LIMIT_CLAUSE_POSTGRESQL = 1;
    static final int LIMIT_CLAUSE_MYSQL = 2;
  }
  class EsqlQuery {
    String query;
    Statement statement;
    PreparedStatement prepared_statement;
    ResultSet resultset;
    ResultSetMetaData resultset_metadata;
    /** the position of the current row in the resultset **/
    int position = -1;
    int max_rows = -1;
    int skip_rows = 0;
    boolean results;
  }

  private final String getAscii(ResultSet set, String column) {
    InputStream asciiStream = null;
    byte[] buffer = null;

    try {
      Clob dbClob = set.getClob(column);
      int length = (int) dbClob.length();
      asciiStream = new BufferedInputStream(dbClob.getAsciiStream());
      buffer = new byte[length];
      asciiStream.read(buffer);
      asciiStream.close();
    } catch (Exception e) {
      throw new RuntimeException("Error getting clob data: " +
                                 e.getMessage());
    }
    finally { if (asciiStream != null)
              try {
                  asciiStream.close();
              } catch (Exception ase) {
                  throw new RuntimeException(
                    "Error closing clob stream: " + ase.getMessage());
                }
            }
    if (buffer == null)
      return "";

    return new String(buffer);
  }

  class make_xsl {
    public void main(String[] args) throws IOException {
      FileReader entree = new FileReader(("http//:localhost/cocoon/test/make.xsl"));
      FileWriter sortie = new FileWriter("output.txt");
      int c;
      while ((c = entree.read()) != -1)
        sortie.write(c);
      sortie.close();
      entree.close();
    }
  }


  /**
   * Generate XML data.
   */
  public void generate() throws SAXException {
    this.contentHandler.startDocument();
    AttributesImpl xspAttr = new AttributesImpl();



    this.contentHandler.startPrefixMapping("xspdoc", "http://apache.org/cocoon/XSPDoc/v1");

    this.contentHandler.startPrefixMapping("esql", "http://apache.org/cocoon/SQL/v2");

    this.contentHandler.startPrefixMapping("xsp", "http://apache.org/xsp");


    this.contentHandler.startElement("", "page", "page", xspAttr);

    xspAttr.clear();


    Stack _esql_connections = new Stack();
    EsqlConnection _esql_connection = null;
    Stack _esql_queries = new Stack();
    EsqlQuery _esql_query = null;
    SQLException _esql_exception = null;
    StringWriter _esql_exception_writer = null;

    this.characters("\n\n");

    make_xsl anObject = new make_xsl();
    anObject.main();

    this.characters("\n\nIf you see this, it works.\n  ");


    this.contentHandler.endElement("", "page", "page");


    this.contentHandler.endPrefixMapping("xspdoc");

    this.contentHandler.endPrefixMapping("esql");

    this.contentHandler.endPrefixMapping("xsp");


    this.contentHandler.endDocument();
  }
}



  ----- Original Message ----- 
  From: Luis Gois 
  To: cocoon-users@xml.apache.org ; vendo1@caramail.com 
  Sent: Sunday, September 16, 2001 8:26 PM
  Subject: Re : Xsp logic simpler error 


  You've made an inner class but you're calling it as a method!

  Try this :

  <xsp:logic>
      make_xsl anObject = new make_xsl();
      anObject.main();
  </xsp:logic>

  you main() method won't be called as you instatiate your make_xsl class, like it would happen if this was your program's starting/main class.

  Luis Gois