Hi!

I have an EAR file that I want to deploy in Geronimo.
I use some CMP Beans there and some of these need a self written
TypeConverter, which looks the following (it implements the TypeConverter
Interface from the tranql-jar file that geronimo uses):
package mypackage;
import java.sql.Timestamp;
import java.util.Date;
import org.tranql.sql.TypeConversionException;
import org.tranql.sql.TypeConverter;
public class MyTypeConverter implements TypeConverter {
        static final long serialVersionUID = 0L;
        public static final MyTypeConverter CONVERTER = new MyTypeConverter();
        public SaschasTypeConverter() {
        }       
        public Object convertJavaToSQLType(Object obj)
                        throws TypeConversionException {
                Object returnObj = obj;
                if (obj == null) {
                        return null;
                } else if (obj instanceof Boolean)
                        returnObj = ((Boolean) obj).equals(Boolean.TRUE)
                                        ? new Integer(0)
                                        : new Integer(1);
                else if (obj instanceof Date)
                        returnObj = new Timestamp(((Date) obj).getTime());
                else
                        throw new TypeConversionException(
                                        "No conversion possible for Java Type: 
" + obj.getClass());
                return returnObj;
        }
        public Object convertSQLToJavaType(Object obj)
                        throws TypeConversionException {
                Object returnObj = obj;
                if (obj == null) {
                        return null;
                } else if (obj instanceof Integer)
                        returnObj = ((Integer) obj).equals(new Integer(0))
                                        ? Boolean.TRUE
                                        : Boolean.FALSE;
                else if (obj instanceof Timestamp)
                        returnObj = new Date(((Timestamp) obj).getTime());
                else
                        throw new TypeConversionException(
                                        "No conversion possible for SQL Type: " 
+ obj.getClass());
                return returnObj;
        }
}

The deployment for the Bean I have problems with looks like this:
<entity>
        <ejb-name>MyEntityBean</ejb-name>
        <table-name>TABLE</table-name>
        <cmp-field-mapping>
                <cmp-field-name>row1</cmp-field-name>
                <cmp-field-class>java.lang.String</cmp-field-class>
                <table-column>ROW1</table-column>
        </cmp-field-mapping>
        <cmp-field-mapping>
                <cmp-field-name>row2</cmp-field-name>
                <cmp-field-class>java.lang.String</cmp-field-class>
                <table-column>ROW2</table-column>
        </cmp-field-mapping>
                <cmp-field-mapping>
                <cmp-field-name>row3</cmp-field-name>
                <cmp-field-class>java.lang.Integer</cmp-field-class>
                <table-column>CUST_COUNTRY</table-column>
                <sql-type>ROW3</sql-type>
        </cmp-field-mapping>
                <cmp-field-name>row4</cmp-field-name>
                <cmp-field-class>java.lang.Boolean</cmp-field-class>
                <table-column>ROW4</table-column>
                <sql-type>INTEGER</sql-type>
                <type-converter>mypackage.MyTypeConverter</type-converter>
        </cmp-field-mapping>
        <cmp-field-mapping>
                <cmp-field-name>row5</cmp-field-name>
                <cmp-field-class>java.util.Date</cmp-field-class>
                <table-column>ROW5</table-column>
                <sql-type>TIMESTAMP</sql-type>
                <type-converter>mypackage.MyTypeConverter</type-converter>
        </cmp-field-mapping>
        <resource-ref>
                <ref-name>jdbc/MyDataBase</ref-name>
                <resource-link>mydatabase</resource-link>
        </resource-ref
>
</entity>

So long everything looks fine to me, but when I deploy my Application I get
the following exception:
        
Deployment failed:
Could not deploy module
Show full details

Could not deploy module
org.apache.geronimo.common.DeploymentException: Could not deploy module
        ...
Caused by: org.apache.geronimo.common.DeploymentException: Cannot create
type converter mypackage.MyTypeConverter
        at
org.openejb.deployment.SchemataBuilder.processEnterpriseBeans(SchemataBuilder.java:436)
        ... 32 more
Caused by: java.lang.ClassCastException: mypackage.MyTypeConverter
        at
org.openejb.deployment.SchemataBuilder.processEnterpriseBeans(SchemataBuilder.java:434)
        ... 33 more

I had a look at the geronimo source code and notices that the Exception is
thrown at these lines in the ScemataBuilder:
try
{
        Class typeConverterClass = 
cl.loadClass(mapping.getTypeConverter().trim());
        typeConverter = (TypeConverter)typeConverterClass.newInstance();
}
catch(Exception e)
{
        throw new DeploymentException("Cannot create type converter " +
mapping.getTypeConverter(), e);
}

My problem: I have absolutely no Idea, why Geronimo cannot cast
MyTypeConverter to a generic TypeConverter... I assume that it has anything
to do with the ClassLoader Geronimo uses, but I don't see any possible
solution for me... 

I would really be pleased if anybody could help me with this problem.
Thx, Sascha
-- 
View this message in context: 
http://www.nabble.com/ClassCastException-when-using-a-self-written-TypeConverter-tf4029440s134.html#a11445617
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.

Reply via email to