[ 
https://issues.apache.org/jira/browse/DERBY-5955?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dag H. Wanvik updated DERBY-5955:
---------------------------------

    Attachment: derby-5955-make-tests-run-02.stat
                derby-5955-make-tests-run-02.diff

Thanks, Knut and Rick!

Uploading a new patch revision; derby-5955-make-tests-run-02. I ran this on 
Java 1.5 to check any issues with Java 3/4 in the modified tests, I had to make 
one change to accommodate for that (DataSourceSerializationTest#deSerializeDs). 
I also refreshed the JEP-161 source repo and buildt with the latest sources of 
Java 8 CP2 and ran the the regression tests without errors.

Addressed Knut's code comments as follows:

> - The patch seems to add the svn:executable property to the serialized
>   data files. Is that needed?

No, they appeared automatically when I added them. I found I had to remove the 
property explicitly; done.

> - I'm assuming the XADataSource created by ij is only used internally
>   and never returned to the user? And that ij doesn't need the JNDI
>   functionality? If so, maybe it should always attempt to use the
>   non-JNDI variant, so that it doesn't load javax.naming classes
>   unnecessarily?

True and true. I think I'll keep the differentiation: since this functionality 
is used for testing the data sources, I fear it could as an (unpleasant) 
surprise that ij used the less capable data source on a full SE platform. They 
do share much of the code, but..

> 
> - In SerializeDataSources.java: Might be clearer to change if
>   (!(dsClassName.indexOf("NonJNDI") > 0)) ---> if
>   (!dsClassName.contains("NonJNDI"))

Agreed, done.

> 
> - The name of the JDBC.vmSupportsNonJNDI() method is a bit misleading,
>   as it returns false for some platforms that do support the NonJNDI
>   data source (for example, Java 7). Having a vmSupportsJNDI() method
>   instead might be less confusing.

This method pattern is a bit murky; there is precedence for using the 
"supports<Feature>" methods both ways here; JDBC.vmSupportJSR169 is exclusive; 
i.e. more capable runtimes return false.  JDBC.vmSupportJDBC3 is inclusive; 
i.e. more capable runtimes return true. I agree in the inclusive semantics are 
more intuitive.

I can change this, but then I'd need to add a guard at usage sites to make sure 
we don't use JDBC 4 level non-JNDI data sources under JDBC3 level runtimes too 
(CDC/JSR169). I'll think a bit about the best way to do this.

> - In Wrapper41DataSource, we first check for instanceof
>   NonJNDIEmbeddedDataSource40 and then
>   NonJNDIEmbeddedConnectionPoolDataSource40 and
>   NonJNDIEmbeddedXADataSource40. Since the latter two classes extend
>   NonJNDIEmbeddedDataSource40, only the first check will ever
>   succeed. So I think the _nonJNDIecpds and _nonJNDIexads fields can
>   be removed. And ditto for the non-JNDI client data sources.

Correct, fixed, thanks! The new data sources are different from the old ones in 
this respect.

Rick, I'll address the Javadoc changes you propose in a follow up patch.

                
> Prepare Derby to run with Compact Profiles (JEP 161)
> ----------------------------------------------------
>
>                 Key: DERBY-5955
>                 URL: https://issues.apache.org/jira/browse/DERBY-5955
>             Project: Derby
>          Issue Type: Improvement
>          Components: Documentation, JDBC, Services, SQL
>            Reporter: Dag H. Wanvik
>            Assignee: Dag H. Wanvik
>         Attachments: apidiff.zip, client-graph.png, 
> derby-5955-add-cp2-to-jars.diff, derby-5955-client-restructure-01.diff, 
> derby-5955-client-restructure-01.stat, 
> derby-5955-client-restructure-02-delta.diff, 
> derby-5955-client-restructure-02.diff, derby-5955-client-restructure-02.stat, 
> derby-5955-embed-restructure-01.diff, derby-5955-embed-restructure-01.stat, 
> derby-5955-embed-restructure-02.diff, derby-5955-embed-restructure-02.stat, 
> derby-5955-embed-restructure-03.diff, derby-5955-embed-restructure-03.stat, 
> derby-5955-embed-restructure-04.diff, derby-5955-embed-restructure-04.stat, 
> derby-5955-embed-restructure-followup.diff, 
> derby-5955-embed-restructure-followup.stat, 
> derby-5955-make-tests-run-01.diff, derby-5955-make-tests-run-01.stat, 
> derby-5955-make-tests-run-02.diff, derby-5955-make-tests-run-02.stat, 
> derby-5955-new-non-jndi-ds-01.diff, derby-5955-new-non-jndi-ds-01.stat, 
> derby-5955-new-non-jndi-ds-02.diff, derby-5955-new-non-jndi-ds-02.stat, 
> derby-5955-proof-of-concept-2.diff, derby-5955-proof-of-concept-2.stat, 
> derby-5955-proof-of-concept.diff, derby-5955-proof-of-concept.stat, 
> derby-5955-ser-b.zip, derby-5955-ser.zip, embedded-graph.png, 
> old-client-graph.png, old-embedded-graph.png, publishedapi.zip, 
> publishedapi.zip
>
>
> While waiting for a Java module system (aka project Jigsaw), it has been 
> decided to define a few subsets of the Java SE Platform Specification, cf JEP 
> 161 ( http://openjdk.java.net/jeps/161).
> A quote from the JEP: "More broadly, this feature is intended to enable the 
> migration of applications currently built on top of the Java ME Connected 
> Device Configuration (CDC) to appropriate Profiles of the Java SE Platform, 
> part of the long-term effort to converge CDC with Java SE."
> It would be good if we make Derby to run on such limited profiles. The 
> current proposal places JDBC in Compact Profile 2 (cf. link above), while 
> other libraries used by Derby, e.g. javax.naming (JNDI) are in Profile 3 
> (larger).
> It would be good if Derby could run on the smallest posible platform, i.e. 
> Profile 2, but that will probably involve some changes to make Derby 
> gracefully limit functionality when some libraries are missing.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to