Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-1256

Remove usage of non-portable methods in derby code

    XMLWordPrintableJSON

Details

    • Normal
    • High Value Fix

    Description

      Remove usage of non portable methods that use native encoding as they could potentially lead to bugs on platforms with different encodings.

      Replace with code using fixed conversion, or alternative mechanisms.
      If the call is required its use should be commented as to why it is required.

      I went through the classes in java.io package in jdk1.4.2 and have come up with a list of methods, constructors in the java.io.* classes that use native encoding and did a java search on eclipse for the code in java/engine, java/testing, java/drda, java/client.

      1)ByteArrayOutputStream.toString()
      testing - DerbyNetNewServer:
      System.out.println( bos.toString());
      server- NetworkServerCtrlInfo.getCLSSysInfo, getNetSysInfo,

      2)DataInputStream.readLine()
      ArrayInputStream - org.apache.derby.iapi.services.io - java/engine
      readLine()
      CorruptRandomAccessFile - org.apache.derbyTesting.functionTests.util.corruptio - java/testing
      readLine()

      3)InputStreamReader(InputStream)
      StatementDuration - org.apache.derby.diag - java/engine -
      next()
      ImportReadData - org.apache.derby.impl.load - java/engine -
      realOpenFile()
      ErrorLogReader - org.apache.derby.diag - java/engine -
      next()
      UCode_CharStream - org.apache.derby.impl.sql.compile - java/engine -
      ReInit(InputStream, int, int, int)
      xmlBinding - org.apache.derbyTesting.functionTests.tests.lang - java/testing -
      insertDocWithDTD(Connection, String, String, String, int)
      BaseMonitor - org.apache.derby.impl.services.monitor - java/engine -
      dumpTempWriter(boolean)
      DbFile - org.apache.derbyTesting.functionTests.util - java/testing -
      stringFromFile(InputStream)
      HandleResult - org.apache.derbyTesting.functionTests.harness - java/testing -
      handleResult(int, InputStream, InputStream, PrintWriter, String) (2 matches)
      ProcessStreamResult - org.apache.derbyTesting.functionTests.harness - java/testing -
      run()
      FileCompare - org.apache.derbyTesting.functionTests.harness - java/testing -
      doSysDiff(InputStream, String, String, File, PrintWriter)
      exec(String, File, PrintWriter, String, String, String, int, boolean, boolean, String, String, String)
      UCode_CharStream(InputStream, int, int, int)
      insertFiles(Connection, String, String, int) (2 matches)

      4) OuputStreamWriter(OutputStream)

      ExportWriteData - org.apache.derby.impl.load - java/engine
      openFile()
      ProcessStreamResult - org.apache.derbyTesting.functionTests.harness - java/testing
      ProcessStreamResult(InputStream, BufferedOutputStream, String, String)
      RawStore - org.apache.derby.impl.store.raw - java/engine
      run()

      5) RandomAccessFile.readLine()
      ArrayInputStream - org.apache.derby.iapi.services.io - java/engine -
      readLine()
      CorruptRandomAccessFile - org.apache.derbyTesting.functionTests.util.corruptio - java/testing -
      readLine()
      DerbyNetAutoStart - org.apache.derbyTesting.functionTests.tests.derbynet - java/testing -
      checkLog(RandomAccessFile, String[])

      PrintStream and PrintWriter , print methods uses platforms default charset encoding.
      =============
      There are also non portable methods in String class
      new String(byte[])
      new String(byte[],int,int)
      String.getBytes(). There are jira entries already for these- DERBY-900, DERBY-901,DERBY-902,DERBY-903.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              skambha Sunitha Kambhampati
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: