I have fixed the bug in GenIC so here is the fix: 

370:    src.println("if (rs.next() == false) {");
371:    src.indentPlus();
        src.println("TraceEjb.error(\"Object not found in database ("+
                    method.getName()+")\");");
        src.println("throw new ObjectNotFoundException(\"Object not found in
database ("+
                    method.getName()+")\");");
        src.indentMinus();
        src.println("}");
        src.indentMinus();
// BEGIN MHALAS:
        src.println("} catch (ObjectNotFoundException oe) {");
        src.println("throw oe;");
// END MHALAS
        src.println("} catch (Exception e) {");
        src.indentPlus();


600:    } catch (Exception e) {
6001:     throw new GenICException(e.getMessage());
        }
        src.indentMinus();
        src.println("} catch (Exception e) {");
        src.indentPlus();
// BEGIN MHALAS:
        src.println("if (e instanceof ObjectNotFoundException)");
        src.println("{");
        src.indentPlus();
        src.println("throw (ObjectNotFoundException)e;");
        src.indentMinus();
        src.println("}");
// END MHALAS
        src.println("TraceEjb.error(\"Failed to find bean from database ("+
                    method.getName()+")\", e);");
        src.println("throw new FinderException(\"Failed to find bean from
database ("+
                    method.getName()+")\");");

Attached is the fixed .java file as well as compiled .class files. 

If you are impacted by this bug, you can just patch your JEREMIE_jonas.jar
and RMI_jonas.jar file using following commands.

jar -uvf JEREMIE_jonas.jar
org\objectweb\jonas_ejb\tools\GenICEntityCMbyJDBCBean.class
jar -uvf RMI_jonas.jar
org\objectweb\jonas_ejb\tools\GenICEntityCMbyJDBCBean.class

Regards,

Miro Halas

-----Original Message-----
From: Hélène JOANIN [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, January 17, 2001 1:36 AM
To: Nolen, Randy
Cc: [EMAIL PROTECTED]
Subject: Re: Bug in generated code


"Nolen, Randy" wrote:
> 
> Hi,
> 
> I've found what appears to be a bug in code generated with Jonas V2.2.4.
In
> the code snippet below, you'll see that when the requested key is not
found
> in the database, an ObjectNotFoundException is thrown. Then the exception
> that was just thrown is caught and a new FinderException is thrown
instead.
> The result is that the caller will never be able to catch an
> ObjectNotFoundException (and there will always be an error message on the
> output for what may not actually be an error :-) ).
> 
> public com.compuware.cgf.beans.core.InTypeID
> ejbFindByPrimaryKey(com.compuware.cgf.beans.core.InTypeID p1)  throws
> javax.ejb.FinderException {
> 
>
TraceEjb.debugGenIC("JOnAScom_compuware_aqp_beans_dectree_DecisionTreeNodeHo
> me.ejbFindByPrimaryKey(com.compuware.cgf.beans.core.InTypeID)");
>   Connection conn = null;
>   PreparedStatement pStmt = null;
>   try {
>       DataSource ds = (DataSource)(this.ejbHome.getDataSource());
>       conn = ds.getConnection();
>       pStmt = conn.prepareStatement("select SCOPE, ID, VERSION from
> T_DECISION_TREE_NODE where SCOPE=? and ID=? and VERSION=?");
>       pStmt.setInt(1, p1.m_iScopeID);
>       pStmt.setInt(2, p1.m_iID);
>       pStmt.setInt(3, p1.m_iVersionNum);
>       ResultSet rs = pStmt.executeQuery();
>       if (rs.next() == false) {
>           TraceEjb.error("Object not found in database
(findByPrimaryKey)");
>           throw new ObjectNotFoundException("Object not found in database
> (findByPrimaryKey)");
>       }
>   } catch (Exception e) {
>       TraceEjb.error("Failed to find bean from database
(findByPrimaryKey)",
> e);
>       throw new FinderException("Failed to find bean from database
> (findByPrimaryKey)");
>   } finally {
>       if (pStmt != null) {
>           try {
>               pStmt.close();
>           } catch (Exception ignore) {
>               TraceEjb.error("Failed to close the PreparedStatement
> (findByPrimaryKey)" ,ignore);
>           }
>       }
>       if (conn != null) {
>           try {
>               conn.close();
>           } catch (Exception ignore) {
>               TraceEjb.error("Failed to close the Connection
> (findByPrimaryKey)" ,ignore);
>           }
>       }
>   }
>   return(p1);
> }
> 
> Is this actually a bug or was it intended to operate this way?
> 
> Thanks,
> Randy Nolen
> 

Hi Randy,

It seems to be real bug... :-(
Thanks for this relevent remark.

Hélène.
-- 
-=- Hélène JOANIN -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  mailto:[EMAIL PROTECTED]   http://www.evidian.com
  Phone: 33.4.76.29.73.53            Fax: 33.4.76.29.76.00
  Download our EJB Server JOnAS at http://www.objectweb.org
----
To unsubscribe, send email to [EMAIL PROTECTED] and
include in the body of the message "unsubscribe jonas-users".
For general help, send email to [EMAIL PROTECTED] and
include in the body of the message "help".

GenICEntityCMbyJDBCBean.java

GenICEntityCMbyJDBCBean.class

Reply via email to