damn, and I thought this is a tapestry mailing list...
but I guess I must look for tapestry help at cayene mailing list... *g*
Ron


david b wrote:
Hello,
I starting to make a simple application using Tapestry 3.1 I have tomcat 5.5.7 
using JDK 1.5.
My next step was to integrate a call to hibernate but this part is not working 
yet.

Going to this url: http://localhost:8080//firstApp/app?service=page/Login

I am getting this error: org.apache.tapestry.ApplicationRuntimeException
Unable to invoke method doLogin on [EMAIL PROTECTED]: null

java.lang.reflect.InvocationTargetException
java.lang.NoClassDefFoundError
org/dom4j/io/SAXReader

Stack Trace:
    * org.hibernate.util.XMLHelper.createSAXReader(XMLHelper.java:35)
    * org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1218)
    * org.hibernate.cfg.Configuration.configure(Configuration.java:1162)
    * org.hibernate.cfg.Configuration.configure(Configuration.java:1148)
    * 
com.entercite.finance.persistence.HibernateFactory.buildSessionFactory(HibernateFactory.java:26)
    * 
com.entercite.finance.persistence.abstrt.AbstractDao.<init>(AbstractDao.java:21)
    * 
com.entercite.finance.persistence.LoginDaoImpl.<init>(LoginDaoImpl.java:12)
    * 
com.entercite.finance.model.abstrt.LoginComponent.isValidLogin(LoginComponent.java:52)
* com.entercite.finance.model.abstrt.LoginComponent.doLogin(LoginComponent.java:35) Here is the development structure and code.
C:\
   |-main
      |
      |-HelloTapestry
      |  |-ant
      |  |--build.bat
      |
      |-build
      |   |-log
      |   |-WEB-INF
      |       |-web.xml
      |       |-classes
      |       |  |-hibernate.cfg.xml
      |       |-lib (Copy of all from lib)
      |       |-web
      |          |-Home.html
      |
      |-Config
      |   |-hibernate.cfg.xml
      |
      |-deploy (firstApp.war)
      |
      |-lib
      |   |-tapestry-3.0.jar, tapestry-contrib-3.0.jar, ognl-2.6.3.jar, 
log4j-1.2.11.jar
      |   |-A bunch of apache commons jars
      |   |-jakarta-oro-2.0.6.jar, javassist-2.5.1.jar, spring.jar, 
hibernate3.jar, bsf-2.3.0.jar
      |
      |-src
         |
         |-context
         |   |-Login.html
         |   |-login.page
         |   |-Main.html
         |   |
         |   |-WEB-INF
         |        |-web.xml
         |-java
            |-com
               |-entercite
                    |-finance
                        |
                        |-model
                        |   |-Login.java
                        |   |-abstrt
                        |       |-LoginComponent.java
                        |-persistence
                            |-HibernateFactory.java
                            |-LoginDaoImpl.java
                            |
                            |-abstrt
                            |   |-AbstractDao.java
                            |-exception
                            |   |-DataAccessLayerException.java
                            |-intrface
                                |-ILoginDao.java


web.xml
----------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
      "http://java.sun.com/dtd/web-app_2_3.dtd";>

<web-app>
  <display-name>Tutorial: Test</display-name>
  <servlet>
    <servlet-name>app</servlet-name>
    <servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/app</url-pattern>
  </servlet-mapping>
</web-app>

----------------------------------------------------------------------------

login.html
----------------------------------------------------------------------------
<html jwcid="@Shell" title="Login">
<body>

<span jwcid="@Conditional" condition="ognl:message">
  <font color="red">
    <span jwcid="@Insert" value="ognl:message"> Error Message </span>
  </font>
</span>

<p/>

<form jwcid="@Form" listener="ognl:listeners.loginComponent">
  <table>
    <tr>
      <th>User Name:</th>
      <td>
        <input type="text" jwcid="@TextField"
           value="ognl:login.userName"
           size="30"/>
      </td>
    </tr>
    <tr>
      <th>Password:</th>
      <td>
        <input type="password" jwcid="@TextField"
           value="ognl:login.password"
           hidden="ognl:true"
           size="30"/>
      </td>
    </tr>
    <tr>
      <td><input type="submit" value="Login"/></td>
    </tr>
  </table>
</form>

<hr/>
<p><a href="#" jwcid="@PageLink" page="Home">Return to Home page</a>.</p>
</body>
</html>
----------------------------------------------------------------------------

Login.page
----------------------------------------------------------------------------
<?xml version="1.0"?>
<!DOCTYPE page-specification PUBLIC "-//Apache Software Foundation//Tapestry Specification 3.0//EN" "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd";> <page-specification class="com.entercite.finance.model.abstrt.LoginComponent">
  <property-specification name="message" type="java.lang.String"/>
  <property-specification name="login" 
type="com.entercite.finance.model.Login"/>
</page-specification>
----------------------------------------------------------------------------

login
----------------------------------------------------------------------------
package com.entercite.finance.model;
import java.util.*;

public class Login {
    private Integer loginId = new Integer(0);
    private String userName = "";
    private String password = "";
    private Integer permissionType = new Integer(0);

    public void setLoginId(Integer loginId){ this.loginId = loginId; }
    public Integer getLoginId(){return this.loginId;}

    public void setUserName(String userName){ this.userName = userName;}
    public String getUserName(){return this.userName;}

    public void setPassword(String password){this.password = password;}
    public String getPassword(){return this.password;}

    public void setPermissionType(Integer permissionType){this.permissionType = 
permissionType;}
    public Integer getPermissionType(){return this.permissionType;}
}
----------------------------------------------------------------------------


LoginComponent
----------------------------------------------------------------------------
package com.entercite.finance.model.abstrt;

import com.entercite.finance.model.Login;
import com.entercite.finance.persistence.intrface.*;
import com.entercite.finance.persistence.LoginDaoImpl;

import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.html.BasePage;

/**
 *
 */
public abstract class LoginComponent extends BasePage {

    private Login login = new Login();
    public abstract void setMessage(String message);

    public LoginComponent() { }

    public Login getLogin(){ return this.login; };
    public void setLogin(Login login){ this.login = login; };

    public void setUserName(String userName){ 
this.getLogin().setUserName(userName); }
    public String getUserName(){ return this.getLogin().getUserName(); }

    public void setPassword(String password){ 
this.getLogin().setPassword(password); }
    public String getPassword(){ return this.getLogin().getPassword(); }

    public void doLogin(IRequestCycle cycle) {

        String u = this.getLogin().getUserName();
        String p = this.getLogin().getPassword();

        if(isValidLogin(u,p) ) {
            System.out.println("push to main");
            cycle.activate("Main");
        } else {
            setMessage("Invalid user name or password.");
        }
    }

    private boolean isValidLogin(String userName, String password) {
System.out.println("Attempt");
        com.entercite.finance.persistence.intrface.ILoginDao ldi =
            new com.entercite.finance.persistence.LoginDaoImpl();    
<-----(call this impl)
System.out.println("Attempt 1");
        this.login = ldi.find(userName, password);
System.out.println("Attempt 2");
        if(login != null){
System.out.println("Attempt 3");
            return true;

        } else {
System.out.println("Attempt 4");
            return false;
        }
    }
}

ILoginDao
----------------------------------------------------------------------------
package com.entercite.finance.persistence.intrface;
import java.util.*;
import com.entercite.finance.model.*;
import com.entercite.finance.persistence.exception.*;

public interface ILoginDao {
    public void create(Login login) throws DataAccessLayerException;
    public Login find(String name, String password) throws 
DataAccessLayerException;
}


LoginDaoImpl
----------------------------------------------------------------------------
package com.entercite.finance.persistence;

import org.hibernate.HibernateException;

import com.entercite.finance.persistence.abstrt.AbstractDao;
import com.entercite.finance.model.*;
import com.entercite.finance.persistence.intrface.ILoginDao;
import com.entercite.finance.persistence.exception.*;

import java.util.*;

public class LoginDaoImpl extends AbstractDao implements ILoginDao {

<---THEN IT USES THE SUPER CONSTRUCTOR--->

    public void create(Login login) throws DataAccessLayerException {
        saveOrUpdate(login);
    }

    public Login find(String name, String password) throws 
DataAccessLayerException {
        return (Login)find(Login.class, name, password);
    }
}


AbstractDao
----------------------------------------------------------------------------
package com.entercite.finance.persistence.abstrt;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import java.util.List;

import com.entercite.finance.persistence.*;
import com.entercite.finance.persistence.exception.*;

public abstract class AbstractDao {

    private Session session;
    private Transaction tx;

    public AbstractDao() {

       HibernateFactory.buildSessionFactory();   <----(Which calls this)
    }

    protected void saveOrUpdate(Object obj){

        try {
            startOperation();
            session.saveOrUpdate(obj);
            tx.commit();

        } catch (HibernateException e) {
            handleException(e);
        } finally {
            HibernateFactory.close(session);
        }

    }

    protected void delete(Object obj) {

        try {
            startOperation();
            session.delete(obj);
            tx.commit();

        } catch (HibernateException e) {
            handleException(e);
        } finally {
            HibernateFactory.close(session);
        }

    }

    protected Object find(Class clazz, Integer id){

        Object obj = null;

        try {
            startOperation();
            obj = session.load(clazz, id);
            tx.commit();

        } catch (HibernateException e) {
            handleException(e);
        } finally {
            HibernateFactory.close(session);
        }

        return obj;

    }

    protected Object find(Class clazz, String value1, String value2){

        Object obj = null;

        try {
            startOperation();
            Query query = session.createQuery(
                "from " + clazz.getName() +
                " where login = " + value1 +
                " and password = " + value2 );

            obj = query.uniqueResult();
            tx.commit();

        } catch (HibernateException e) {
            handleException(e);
        } finally {
            HibernateFactory.close(session);
        }

        return obj;

    }


    /**
     * Find all class from one table using the following object
     *
     [EMAIL PROTECTED] Class - this is the table to load data from
     [EMAIL PROTECTED] Integer - the id to use in the where clause
     *
     [EMAIL PROTECTED] List - containing all objects you were looking for
     */
    protected List findAll(Class clazz, Integer id) {

        List objects = null;

        try {

            startOperation();
            Query query = session.createQuery("from " + clazz.getName() + " where id 
= " + id );
            objects = query.list();
            tx.commit();

        } catch (HibernateException e) {
            handleException(e);
        } finally {
            HibernateFactory.close(session);
        }

        return objects;

    }

    protected void handleException(HibernateException e) throws 
DataAccessLayerException {
        HibernateFactory.rollback(tx);
        throw new DataAccessLayerException(e);

    }

    protected void startOperation() throws HibernateException {
        session = HibernateFactory.openSession();
        tx = session.beginTransaction();

    }
}



HibernateFactory
----------------------------------------------------------------------------
package com.entercite.finance.persistence;

import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.HibernateException;
import org.hibernate.cfg.Configuration;

import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;

public class HibernateFactory {

    private static SessionFactory sessionFactory;
    private static Log log = LogFactory.getLog(HibernateFactory.class);

    public static SessionFactory buildSessionFactory() throws 
HibernateException {

System.out.println("bsf 1");
        if(sessionFactory != null){
            closeFactory();
        }
System.out.println("bsf 2");
        Configuration configuration = new Configuration();
System.out.println("bsf 3");
        sessionFactory = configuration.configure().buildSessionFactory();  <---IT 
PUKES HERE IT APPEARS>
System.out.println("bsf 4");

        return sessionFactory;
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static Session openSession() throws HibernateException {
        return sessionFactory.openSession();
    }

    public static void closeFactory() {
        if (sessionFactory != null) {
            try {
                sessionFactory.close();
            } catch (HibernateException ignored) {
                log.error("Couldn't close SessionFactory", ignored);
            }
        }
    }

    public static void close(Session session) {
        if (session != null) {
            try {
                session.close();
            } catch (HibernateException ignored) {
                log.error("Couldn't close Session", ignored);
            }
        }
    }

    public static void rollback(Transaction tx) {
        try {
            if (tx != null) {
                tx.rollback();
            }
        } catch (HibernateException ignored) {
            log.error("Couldn't rollback Transaction", ignored);
        }
    }
}


hibernate.cfg.xml
----------------------------------------------------------------------------
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd";>

<hibernate-configuration>
  <session-factory>
<property name="connection.username">root</property>
    <property name="connection.password">xxx</property>
    <property name="connection.url">//localhost:3306/budget</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping resource="com/entercite/finance/model/Login.hbm.xml"/> </session-factory>
</hibernate-configuration>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to