Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4916461

javax.sql.rowset.spi.SyncFactory.getInstance throws SyncFactoryException

XMLWordPrintable

    • b41
    • sparc
    • solaris_2.6



      Name: sdR10048 Date: 09/03/2003


      Filed By : SPB JCK team (###@###.###)
      JDK : java full version "1.5.0-beta-b16"
      JCK : 1.5
      Platform[s] : Solaris
      switch/Mode :
      JCK test owner : http://javaweb.eng/jct/sqe/JCK-tck/usr/owners.jto
      Failing Test [s] :
      api/javax_sql/rowset/spi/SyncFactory/index.html#Provider[SyncFactory0004]

      Specification excerpt:
      ======================
      --------- J2SE API spec v.1.5 ---------
      ...
          /**
           * Returns a SyncProvider instance. Once invoked a RowSet implementation
           * should then be able to call the Reader and Writer methods of this
           * instance to obtain handles back to the datasource.
           *
           * @param providerID the unique identifier of the provider
           * @throws SyncFactoryException If the SyncProvider cannot be found or
           * some error was encountered when trying to invoke this provider.
           * @return SyncProvider A <code>SyncProvider</code> implementation.
           */
          public static SyncProvider getInstance(String providerID)
      ...
      ---------- end-of-excerpt ---------------

      Problem description
      ===================
      javax.sql.rowset.spi.SyncFactory.getInstance(String providerID) throws SyncFactoryException if we provider the providerID of registered provider.
      See demo.
          
      Minimized test:
      ===============
      ------- MyProvider.java -------
      //
      // util class - please compile it first
      //

      import java.sql.SQLException;
      import javax.sql.RowSetReader;
      import javax.sql.RowSetWriter;
      import javax.sql.RowSetInternal;
      import javax.sql.rowset.spi.SyncProvider;
      import javax.sql.rowset.spi.SyncProviderException;

      public class MyProvider extends SyncProvider {

          private String providerID;
          private RowSetReader reader;
          private RowSetWriter writer;

          public MyProvider() {
              providerID = getClass().getName();
          }

          public String getProviderID() {
              return providerID;
          }
          
          public void setRowSetReader(RowSetReader reader) throws SQLException {
              reader = reader;
          }

          public void setRowSetWriter(RowSetWriter writer) throws SQLException {
              writer = writer;
          }
          
          public RowSetReader getRowSetReader() {
              return reader;
          }
          
          public RowSetWriter getRowSetWriter() {
              return writer;
          }
          
          public int getProviderGrade() {
              return SyncProvider.GRADE_NONE;
          }

          public int supportsUpdatableView() {
              return SyncProvider.NONUPDATABLE_VIEW_SYNC;
          }

          public int getDataSourceLock() throws SyncProviderException {
              return SyncProvider.DATASOURCE_NO_LOCK;
          }

          public void setDataSourceLock(int lock) throws SyncProviderException {
          }

          public RowSetInternal getRowSetInternal() {
              return null;
          }
      }

      ------- T.java -------
      import javax.sql.rowset.*;
      import javax.sql.rowset.serial.*;
      import javax.sql.rowset.spi.*;
      import java.util.*;
      import java.sql.*;
      import java.io.*;

      public class T {
          static String providerName =
              "MyProvider";

          public static void main(String[] args) {
              try {
                  SyncFactory.getRegisteredProviders();
                  SyncFactory.registerProvider(providerName);
                  SyncProvider provider = SyncFactory.getInstance(providerName);
                  System.out.println("out: "+provider);
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }


      ------- end-of-T.java -------

      Minimized test output:
      ======================
      javax.sql.rowset.spi.SyncFactoryException: ClassNotFoundException: MyProvider
              at javax.sql.rowset.spi.SyncFactory.getInstance(SyncFactory.java:467)
              at T.main(T.java:16)
      ======================================================================

      Name: sdR10048 Date: 09/05/2003

      C:\TEMP\7>dir
       Volume in drive C is HAPPY
       Volume Serial Number is D0C8-42FA

       Directory of C:\TEMP\7

      05.09.2003 17:19 <DIR> .
      05.09.2003 17:19 <DIR> ..
      05.09.2003 17:19 1?517 MyProvider.class
      05.09.2003 17:19 1?398 MyProvider.java
      05.09.2003 17:19 1?065 T.class
      05.09.2003 17:19 612 T.java
                     4 File(s) 4?592 bytes
                     2 Dir(s) 24?218?345?984 bytes free

      C:\TEMP\7>c:\java\bin\java -version
      java version "1.5.0-beta"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b16)
      Java HotSpot(TM) Client VM (build 1.5.0-beta-b16, mixed mode)

      C:\TEMP\7>c:\java\bin\java -classpath . T
      javax.sql.rowset.spi.SyncFactoryException: ClassNotFoundException: MyProvider
              at javax.sql.rowset.spi.SyncFactory.getInstance(SyncFactory.java:467)
              at T.main(T.java:14)

      ======================================================================

            jbrucesunw Jonathan Bruce (Inactive)
            dsvsunw Dsv Dsv (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: