[ 
http://issues.apache.org/jira/browse/DERBY-819?page=comments#action_12366695 ] 

Daniel John Debrunner commented on DERBY-819:
---------------------------------------------

review  derby819_2.diff

-1 veto still in place: If these BLOCKER issues are addressed, the veto is 
lifted
      - SystemProcedure changes need to be removed (see below)
      - NPE potential at statup needs to be addressed. (see below)
       - Test code just ignores the very exceptions it is meant to be testing. 
(see below)


- Why is a SQLExceptionFactory and SQLExceptionFactory 40 classes needed? With 
the way this is implemented, the new method
   it defines could just  included in InternalDriver and the 40 specific one in 
Driver40. Seems a lot of overhead for little value.

BLOCKER - We still have a window where before the driver is loaded any 
InternalDriver.getSQLExceptionFactory() could return null leading to a 
NullPointerException. Maybe just simply closing this by having InternalDriver 
initialize the static field to a factory that returns the plain SQLException 
would be sufficient.

- Copyright dates for the new files need to be 2005,2006 or just 2006 depending 
on when they were created

- no class javadoc for SQLExceptionFactory40

- SQLExceptionFactory40: Don't understand why there is a method 
getJDBC40Exception, why not just have the
   code in getSQLException

 -  SQLExceptionFactory40.getJDBC40Exception - No need to have the 'if (ex == 
null) ' just make ex  = new SQLException
     part of the else in the above block. Then no need to initialize ex = null 
at the beginning of the method. This is where Java
     is great, the compiler will tell you if ex is never initialized. WIth the 
code as-is I have to look to see under what conditions
     ex can be null for the 'if (ex == null) '  if I want to understand it. 
Thus I waste my time looking for a condition that can never exist.

- Removal of all the shortcut methods seems like the wrong approach to me, 
that's been discussed on the list.
   It's about 90% of this patch and could have been avoided, making the real 
changes easier to spot.

- Seems to be some unrelated changes included, addition of an extra parameter 
here.

-            throw 
Util.generateCsSQLException(SQLState.INVALID_API_PARAMETER,map,"map",
+            throw InternalDriver.getExceptionFactory()
+            .generateCsSQLException(SQLState.INVALID_API_PARAMETER,map,"map",
                                               
"java.sql.Connection.setTypeMap");

BLOCKER - Very strange changes in SystemProcedures.java, look like some global 
edit script gone wrong. Makes me *very* nervous about the rest of the patch, 
not having the shortcut methods removed would make the patch easier to manage 
and easier for the reviewers to spot issues like this.

BLOCKER - Tests have code like this:

+        } catch (SQLIntegrityConstraintViolationException e) {
+        }

How does this test that we are setting the SQLState and message correctly in 
these new exceptions? Maybe the coder accidently swapped the SQLState and 
message parameters.

> Provide JDBC4 SQLException subclasses support in Embedded driver
> ----------------------------------------------------------------
>
>          Key: DERBY-819
>          URL: http://issues.apache.org/jira/browse/DERBY-819
>      Project: Derby
>         Type: Sub-task
>   Components: JDBC
>  Environment: all
>     Reporter: Anurag Shekhar
>     Assignee: Anurag Shekhar
>     Priority: Minor
>  Attachments: .derby-819_2.stat, derby-819-onlyforreview.diff, 
> derby-819.diff, derby-819_2.diff, stat.out
>


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to