FBConnectionHelper.getCri(info, null);
FBConnectionHelper.getCri(info, FBConnectionHelper.getDefaultCri());
    public Connection connect(String url, java.util.Properties info)        throws SQLException    {        if (url == null || !url.startsWith(FIREBIRD_PROTOCOL))        {            return null;        } // end of if ()        Integer blobBufferLength = null;        try {            int iQuestionMark = url.indexOf("?");            if (iQuestionMark > -1) {                if(info == null) info = new Properties();                String propString = url.substring(iQuestionMark+1);                StringTokenizer st = new StringTokenizer(propString,"&");                while(st.hasMoreTokens()) {                    String propertyString = st.nextToken();                    int iIs = propertyString.indexOf("=");                    if(iIs > -1) {                        String property = propertyString.substring(0, iIs);                        String value = propertyString.substring(iIs+1);                        info.setProperty(property,value);                        if (property.equals(BLOB_BUFFER_LENGTH))                         {                            try                             {                                blobBufferLength = new Integer(value);                            }                            catch (NumberFormatException e)                            {                                throw new SQLException("Blob buffer length " + value + " could not be converted to an integer");                            } // end of try-catch                                                    } // end of if ()                                            }                }                url = url.substring(0,iQuestionMark);            }            FBConnectionRequestInfo conCri =                FBConnectionHelper.getCri(info, null);            FBTpb tpb = FBConnectionHelper.getTpb(info);            // extract the user            String user = info.getProperty(USER);            if (user == null)                user = conCri.getStringProperty(ISCConstants.isc_dpb_user_name);            if (user == null)                throw new SQLException(                    "User for database connection not specified.");            // extract the password            String password = info.getProperty(PASSWORD);            if (password == null)                password = conCri.getStringProperty(ISCConstants.isc_dpb_password);            if (password == null)                throw new SQLException(                    "Password for database connection not specified.");            // extract the database URL            String databaseURL = url.substring(FIREBIRD_PROTOCOL.length());            FBManagedConnectionFactory mcf = new FBManagedConnectionFactory();            mcf.setDatabase(databaseURL);            mcf.setConnectionRequestInfo(conCri);            mcf.setTpb(tpb);            if (blobBufferLength != null)             {                mcf.setBlobBufferLength(blobBufferLength);                            } // end of if ()            mcf = mcf.canonicalize();            FBDataSource dataSource = null;            synchronized (mcfToDataSourceMap)            {                dataSource = (FBDataSource)mcfToDataSourceMap.get(mcf);                                if (dataSource == null) {                    dataSource = (FBDataSource)mcf.createConnectionFactory();                    mcfToDataSourceMap.put(mcf, dataSource);                } // end of if ()            }            return dataSource.getConnection(user, password);        } catch(javax.resource.ResourceException resex) {            throw new SQLException(resex.getMessage());        }    }