[ 
https://issues.apache.org/jira/browse/DERBY-2733?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12557587#action_12557587
 ] 

John H. Embretsen commented on DERBY-2733:
------------------------------------------

Thank you for doing this Myrna, it is a great improvement!

The code change works fine with my Java ME VM (phoneME Advanced).

I will comment on the doc changes below, but first I'd like to present my view 
of how this should ideally work:

 - I think it would be easier to use IJ with a datasource (and to document it) 
if IJ tries to connect automatically to a database ONLY IF 
ij.dataSource.databaseName is set. It makes no sense doing it otherwise.
 - If ij.dataSource.databaseName is set, and IJ successfully connects to the 
database automatically on startup, this should be indicated to the user, e.g. 
"Connected to database [databaseName]".

Given the current implementation, I have the following comments regarding the 
doc changes:

First, I think it would be useful to explicitly say that ij will try to connect 
to your database automatically when you specify ij.dataSource. E.g.

"When you set the ij.dataSource property ij will automatically try to connect 
to a database. To establish a connection to a specific database using 
ij.dataSource, set the ij.dataSource.databaseName property. If you do not set 
this property, ij will start with an error..."

It's awkward, but I think it is needed given the current implementation.

Second, I think the sentence

"If you do not specify ij.dataSource.databaseName, you can still connect to a 
database after the error indicating that no database was found, but you should 
not specify the protocol, just the databasename, in the connect statement."

is a bit long and complex (I almost lose my breath reading it). Besides, I 
think "just the databasename" may be misleading (because you may include 
connection attributes as well), and that we should say "connect command" 
instead of "connect statement" (because that is how it is described in the 
Tools guide). I suggest the following:

"If you do not specify ij.dataSource.databaseName and get an error indicating 
that no database was found, you can still connect to a database manually by 
using ij's connect command. You should not specify the protocol (for example 
jdbc:derby:) in the connect command when using ij.dataSource."

Actually, I think Example 2 as it is in the current doc trunk is useful to show 
this "feature", but it should include the error message:

java -Dij.dataSource=org.apache.derby.jdbc.EmbeddedSimpleDataSource 
org.apache.derby.tools.ij
ERROR XJ004: Database '' not found.
ij version 10.4
ij> connect 'smalldb;create=true';
ij>

The doc page should include a reference to the documentation for the connect 
command.

Finally, the documentation for the connect command ( 
http://db.apache.org/derby/docs/dev/tools/rtoolsijcomref22318.html ) says:

"Connects to the database indicated by the ConnectionURLString. Specifically, 
takes the value of the string database connection URL and issues a 
java.sql.DriverManager.getConnection request to set the current connection to 
that database connection URL."

which is incorrect if you specify ij.dataSource (and do not include the 
protocol in the URL - sigh...). Something like this is more correct, I guess:

"Connects to the database indicated by the ConnectionURLString. Specifically, 
ij takes the value of the string (the database connection URL) and issues a 
getConnection request using java.sql.DriverManager or a javax.sql.DataSource 
implementation (see the ij.dataSource property) to set the current connection 
to that database connection URL."

(If the connect command docs should be handled in a separate Jira, feel free to 
create one, or let me know so I can do it myself).


> ij rolls through NullPointerException (NPE) with J2ME/JSR169/WEME 6.1.
> ----------------------------------------------------------------------
>
>                 Key: DERBY-2733
>                 URL: https://issues.apache.org/jira/browse/DERBY-2733
>             Project: Derby
>          Issue Type: Bug
>          Components: Tools
>    Affects Versions: 10.1.2.1, 10.2.2.0, 10.3.1.4
>         Environment: windows xp; j9 -jcl:foun11 -version:
> java version "J2ME Foundation Specification v1.1"
> IBM J9 2.3 Windows XP x86-32  (JIT enabled)
> J9VM - 20061023_08962_lHdSMR
> JIT  - 20060629_1804ifx1_r8
> GC   - 200609_15
> JCL  - 20061020_1321,foun11
> Licensed Materials - Property of IBM
> J9 - VM for the Java(TM) platform, Version 2.3
> (c) Copyright IBM Corp. 1991, 2006  All Rights Reserved
> Target: 20061023_08962_lHdSMR (Windows XP 5.1 build 2600 Service Pack 2 x86)
> JIT  - 20060629_1804ifx1_r8
>            Reporter: Myrna van Lunteren
>            Assignee: Myrna van Lunteren
>         Attachments: DERBY-2733-doc.diff, DERBY-2733-src.diff, 
> DERBY-2733.diff2, DERBY-2733_3.diff, DERBY-2733_doc_3.diff, 
> DERBY-2733_doc_4.diff, rtoolsijproprefdatasource.html, 
> rtoolsijproprefdatasource.html, rtoolsijproprefdatasource.html
>
>
> When starting ij - with, or without any derby.properties, ij first shows this:
> -------------------------------------------------------
> java.lang.reflect.InvocationTargetException
>         at 
> java.lang.reflect.AccessibleObject.invokeL(AccessibleObject.java:215)
>         at java.lang.reflect.Method.invoke(Method.java:272)
>         at 
> org.apache.derby.impl.tools.ij.util.getDataSourceConnection(util.java:426)
>         at org.apache.derby.impl.tools.ij.util.startJBMS(util.java:516)
>         at org.apache.derby.impl.tools.ij.util.startJBMS(util.java:585)
>         at 
> org.apache.derby.impl.tools.ij.ConnectionEnv.init(ConnectionEnv.java:64)
>         at 
> org.apache.derby.impl.tools.ij.utilMain.initFromEnvironment(utilMain.java:179)
>         at org.apache.derby.impl.tools.ij.Main.<init>(Main.java:230)
>         at org.apache.derby.impl.tools.ij.Main.getMain(Main.java:193)
>         at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:178)
>         at org.apache.derby.impl.tools.ij.Main.main(Main.java:73)
>         at org.apache.derby.tools.ij.main(ij.java:67)
> Caused by: java.lang.NullPointerException
>         at 
> org.apache.derby.jdbc.InternalDriver.embeddedDriverAcceptsURL(InternalDriver.java:116)
>         at 
> org.apache.derby.jdbc.InternalDriver.acceptsURL(InternalDriver.java:107)
>         at 
> org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:126)
>         at 
> org.apache.derby.jdbc.EmbeddedSimpleDataSource.getConnection(EmbeddedSimpleDataSource.java:406)
>         at 
> org.apache.derby.jdbc.EmbeddedSimpleDataSource.getConnection(EmbeddedSimpleDataSource.java:373)
>         at 
> java.lang.reflect.AccessibleObject.invokeL(AccessibleObject.java:213)
>         ... 11 more
> ij version 10.3
> ij>
> After that, ij does appear to start normal operations.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to