That method is defined in the DbAdapter interface; you don't need to cast it. 
See MySQLMergerFactory (post CAY-1108 patch) for an example.

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Øyvind Harboe
Sent: Thursday, September 25, 2008 3:55 AM
To: [EMAIL PROTECTED]
Subject: Upcast problems w/SQLServerMergerFactory and AutoAdapter

1. I'm getting the exception below in my code:

org.apache.cayenne.dba.sqlserver.SQLServerMergerFactory$4.createSql(SQLServerMergerFactory.java:108)

2. This happens when I execute the code below:

t.createSql(mergerContext.getAdapter());

3. If #2 is legal, then I don't understand how an upcast to DbAdapter
to SQLServerAdapter
can work for AutoAdapter


  @Override
    public MergerToken createSetNotNullToDb(DbEntity entity, final
DbAttribute column) {

        return new SetNotNullToDb(entity, column) {

            @Override
            public List<String> createSql(DbAdapter adapter) {
                StringBuffer sqlBuffer = new StringBuffer();


                sqlBuffer.append("ALTER TABLE ");
                sqlBuffer.append(getEntity().getFullyQualifiedName());
                sqlBuffer.append(" ALTER COLUMN ");

                SQLServerAdapter sqladapter = (SQLServerAdapter) adapter;
                sqladapter.createTableAppendColumn(sqlBuffer, column);

                return Collections.singletonList(sqlBuffer.toString());
            }

        };
    }

-- 
Øyvind Harboe
http://www.zylin.com/zy1000.html
ARM7 ARM9 XScale Cortex
JTAG debugger and flash programmer

Reply via email to