Two things that immediately spring to mind.
getDsn() is misnamed, or does the wrong thing. It doesn't return a DSN, it returns the entire object (return this).
I your CFQUERY tag you're not calling getDsn(), you're just using it as a value, eg: "getDsn" is a reference to the method itself, but "getDsn()" is actually CALLING the method.
Oh a third thing: something called getDsn() would not normally take an argument that is the very thing it is supposedly getting. IE: why is getDsn() taking an argument of dsn? It should be RETURNING the DSN name, not having it passed into it.
the reason i have have argument because it was set in application.cfm page.
<cfobject type="component" name="request.voucher" component="#request.cfc#.voucher">
<cfset variables.dsn = request.voucher.GetDSN(#DBSource#) />
i have try calling getDSN(), but got this and don't know what to pass it in?
The DSN parameter to the GetDSN function is required but was not passed in.