how do I return a BLOB to a byte[] in java extension

how do I return a BLOB to a byte[] in java extension

  

How do I return a BLOB to a Java Byte[] from within a java extension.

 result.outParamXml = (byte[]) outParamXml.getValue(); This does not work

I have the following code:

   public static ActGenOpdrachtView mosGenOpdrachtView(String inParamTransactie, String inParamBestemming, String inParamSleutelWaarde, String inParamCdeSrtKey, int inParamNawNrVerzend, int inParamPersoonNrVerzend, String inParamGebrOpdracht, int inParamIdHistLog, int inParamOpdrachtId, String inParamDBConnection) throws ConnectionNotFoundException, SQLException {

        ActGenOpdrachtView result = new ActGenOpdrachtView();

        result.outParamXml =  new byte[] {};

        DatabaseProvider dba = DatabaseAccess.forExternalDatabase(inParamDBConnection);


        SqlHelper h = dba.getSqlHelper();


        try {

               RequestTransaction trans = dba.getRequestTransaction();

               try {

                     Command cmd = trans.createCommand(String.format("begin EXEC_RAPPORT(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s); END;",

                                                       h.prefixParam("inParamTRANSACTIE"),

                                                       h.prefixParam("inParamBESTEMMING"),

                                                       h.prefixParam("inParamSLEUTEL_WAARDE"),

                                                       h.prefixParam("inParamCDE_SRT_KEY"),

                                                       h.prefixParam("inParamNAWNR_VERZEND"),

                                                       h.prefixParam("inParamPERSOONNR_VERZEND"),

                                                       h.prefixParam("inParamGEBR_OPDRACHT"),

                                                       h.prefixParam("inParamIdHistLog"),

                                                       h.prefixParam("inParamOpdrachtId"),

                                                       h.prefixParam("outParamXml")));

                     try {

                            cmd.createParameter(h.prefixParam("inParamTRANSACTIE"),         Types.VARCHAR, inParamTransactie);

                            cmd.createParameter(h.prefixParam("inParamBESTEMMING"),         Types.VARCHAR, inParamBestemming);

                            cmd.createParameter(h.prefixParam("inParamSLEUTEL_WAARDE"),     Types.VARCHAR, inParamSleutelWaarde);

                            cmd.createParameter(h.prefixParam("inParamCDE_SRT_KEY"),         Types.VARCHAR, inParamCdeSrtKey);

                            cmd.createParameter(h.prefixParam("inParamNAWNR_VERZEND"),         Types.INTEGER, inParamNawNrVerzend);

                            cmd.createParameter(h.prefixParam("inParamPERSOONNR_VERZEND"),     Types.INTEGER, inParamPersoonNrVerzend);

                            cmd.createParameter(h.prefixParam("inParamGEBR_OPDRACHT"),         Types.VARCHAR, inParamGebrOpdracht);

                           cmd.createParameter(h.prefixParam("inParamIdHistLog"),             Types.INTEGER, inParamIdHistLog);

                           cmd.createParameter(h.prefixParam("inParamOpdrachtId"),         Types.INTEGER, inParamOpdrachtId);

                            DataParameter outParamXml = cmd.createParameter(h.prefixParam("outParamXml"), Types.BLOB, null);

                           outParamXml.getDriverParameter().setDirection(ADOParameterDirection.Output);


                            cmd.executeNonQuery();


                          result.outParamXml = (byte[]) outParamXml.getValue();


                     } finally {

                            cmd.dispose();

                     }

               } finally {

                     trans.dispose();

               }      

        } catch (SQLException e) {

            throw e;

        }

        return result;

    }


    // output parameters

    public byte[] outParamXml;


}

Solution

Propblem sovled:

 Blob blobXml = (Blob) outParamXml. getValue();
 result.outParamXml = blobXml.getBytes(1, (int) blobXml.length() );
 blobXml.free();

Solution