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)
======================================================================