You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Rick Hillegas (JIRA)" <ji...@apache.org> on 2018/08/07 04:21:00 UTC

[jira] [Commented] (DERBY-6945) Re-package Derby as a collection of jigsaw modules

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

Rick Hillegas commented on DERBY-6945:
--------------------------------------

Attaching derby-6945-47-aa-runModulesWithLocalizations.diff. This patch makes it possible to run some simple Derby tests using the modulepath. The experiments verified that message localizations work with the modulepath. Tests included: 1) running a simple ij script with the embedded driver, 2) running a simple ij script with the client driver, 3) running sysinfo. The experiments tested the default English locale as well as the German locale de_DE and a nonexistent locale called xx_YY.

Some work was required to make localizations work with the modulepath. I abandoned the earlier attempt to make the message provider pattern work. Derby's approach to localization runs counter to the model supported by the message provider pattern. That pattern assumes that all of the localizations for a given component are co-located in a single jar file. That is not how Derby treats messages. In order to minimize the footprint of the engine jar, Derby provides a separate jar file for each supported language, and that jar file contains both localized engine messages as well as localized tools messages. The client component is the only jar file which contains all of its own localizations.

In order to support a simple heartbeat case (connect, create a table, insert a row, select the row), I had to make several adjustments to the engine module descriptor. Right now, generated query plans are compiled into the catch-all unnamed module. I had to grant reflective access to several engine packages so that the generated plans would run. I have logged DERBY-7006 to investigate closing this encapsulation hole.

I am running tests now.


Touches the following files:

{noformat}
----------------------------

M       build.xml

Build derbyTesting.jar the same way as the other jars are built,
rather than via a zip command.

----------------------------

D       java/org.apache.derby.client/org/apache/derby/loc/client/clientmessagesProviderImpl.java
D       java/org.apache.derby.commons/org/apache/derby/loc/client/spi/clientmessagesProvider.java

Abandon the message provider pattern for resolving client localizations.

----------------------------

M       java/org.apache.derby.commons/org/apache/derby/shared/common/info/JVMInfo.java
A       java/org.apache.derby.commons/org/apache/derby/shared/common/reference/ModuleUtil.java

Provide the first bits of module introspection:

1) Add the method JVMInfo.isModuleAware() to report whether the JVM is
running with a modulepath or a classpath.

2) Add some module-related utilities, in particular, the ability to
look up a module by name.

----------------------------

M       java/build/org/apache/derbyBuild/lastgoodjarcontents/insane.derbyTesting.jar.lastcontents
M       java/build/org/apache/derbyBuild/lastgoodjarcontents/insane.derbyclient.jar.lastcontents
M       java/build/org/apache/derbyBuild/lastgoodjarcontents/sane.derbyTesting.jar.lastcontents
M       java/build/org/apache/derbyBuild/lastgoodjarcontents/sane.derbyclient.jar.lastcontents
M       java/org.apache.derby.commons/org/apache/derby/shared/common/i18n/MessageService.java
M       java/org.apache.derby.commons/org/apache/derby/shared/common/i18n/MessageUtil.java

Add the ability to look up message localizations when the JVM is
running with a modulepath.

----------------------------

M       java/locales/module-info.template
M       java/org.apache.derby.client/module-info.java
M       java/org.apache.derby.commons/module-info.java
M       java/org.apache.derby.engine/module-info.java
M       java/org.apache.derby.tests/module-info.java
M       java/org.apache.derby.tools/module-info.java

Adjust module descriptors to support module lookup, message
localization, and the running of a simple heartbeat test.

----------------------------

M       java/org.apache.derby.tools/org/apache/derby/impl/tools/ij/utilMain.java
M
java/org.apache.derby.tools/org/apache/derby/impl/tools/sysinfo/Main.java

Adjust some classes so that ij and sysinfo can run with a modulepath
as well as a classpath.

----------------------------

M       java/org.apache.derby.server/org/apache/derby/drda/server.policy
M       java/org.apache.derby.server/org/apache/derby/drda/template.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/derbynet/GetCurrentPropertiesTest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/derbynet/NetworkServerControlApiTest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/derbynet/ProtocolTest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/derbynet/RuntimeInfoTest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/derbynet/SecureServerTest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/derbynet/ServerPropertiesTest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/derbynet/SysinfoTest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/engine/noDeregisterPermission.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbc4/noAbortPermission.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbcapi/LDAPTests.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/jdbcapi/XATest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/lang/SecurityPolicyReloadingTest.initial.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/lang/SecurityPolicyReloadingTest.modified.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/lang/SecurityPolicyReloadingTest.unreloadable.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/lang/luceneSupport.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/lang/no_derby_internals.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/lang/resultSetReader.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/management/CacheManagerMBeanTest.withPerm.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/management/CacheManagerMBeanTest.withoutPerm.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/replicationTests/Derby5937SlaveShutdownTest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/tools/derbyrunjartest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/tests/unit/fillLog.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/util/derby_tests.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/util/nwsvr.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/functionTests/util/useprocessfalse.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/unitTests/junit/AssertFailureTest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/unitTests/junit/AssertFailureTest1.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/unitTests/junit/MissingPermissionsTest.java
M       java/org.apache.derby.tests/org/apache/derbyTesting/unitTests/junit/MissingPermissionsTest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/unitTests/junit/MissingPermissionsTest1.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/unitTests/junit/MissingPermissionsTest2.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/unitTests/junit/SystemPrivilegesPermissionTest.policy
M       java/org.apache.derby.tests/org/apache/derbyTesting/unitTests/junit/SystemPrivilegesPermissionTest1.policy

Adjust policy files to account for the fact that the shared module
must be given permission to read the system property jdk.module.path.
{noformat}


> Re-package Derby as a collection of jigsaw modules
> --------------------------------------------------
>
>                 Key: DERBY-6945
>                 URL: https://issues.apache.org/jira/browse/DERBY-6945
>             Project: Derby
>          Issue Type: Improvement
>    Affects Versions: 10.13.1.2
>            Reporter: Rick Hillegas
>            Priority: Major
>         Attachments: derby-6945-01-aa-remove_derbyPreBuild_dep.diff, derby-6945-02-ab-newDerbySharedJar.diff, derby-6945-02-ac-newDerbySharedJar.diff, derby-6945-03-aa-partitionTest.diff, derby-6945-04-aa-moveRunClass.diff, derby-6945-05-aa-removeRedundant_Attribute_SQLState.diff, derby-6945-06-aa-removeOtherSharedDuplicates.diff, derby-6945-07-aa-net_client_overlap.diff, derby-6945-08-aa-move_shared_iapi_under_shared.diff, derby-6945-08-ab-move_shared_iapi_under_shared.diff, derby-6945-08-ad-move_shared_iapi_under_shared.diff, derby-6945-09-ab-moveInternalDriver.diff, derby-6945-10-aa-moveDriver42.diff, derby-6945-11-ab-moveAutoloadedDriver.diff, derby-6945-12-ab-moveClientDataSourceInterface.diff, derby-6945-13-aa-create-ClientAutoloadedDriver.diff, derby-6945-14-aa-moveMoreEmbeddedClassesOutOfPublicAPI.diff, derby-6945-15-aa-moveMoreClientClassesOutOfPublicAPI.diff, derby-6945-16-aa-consolidatePublicAPI.diff, derby-6945-17-aa-resealPackagesIn-derbyshared.diff, derby-6945-18-aa-resealLocalizationPackage.diff, derby-6945-19-ad-movePublicAPIintoToolsJar.diff, derby-6945-20-aa-removeClasslister.diff, derby-6945-21-aa-simplifyBuildScripts.diff, derby-6945-21-ab-simplifyBuildScripts.diff, derby-6945-22-ad-isolateClassesByArtifact.diff, derby-6945-22-ae-isolateClassesByArtifact.diff, derby-6945-22-af-isolateClassesByArtifact.diff, derby-6945-23-aa-upgradeToAnt_1.10.2.diff, derby-6945-24-aa-fixNativeAuthenticationServiceTest.diff, derby-6945-25-ab-moduleDescriptors.diff, derby-6945-26-aa-packagePrivateTests.diff, derby-6945-27-aa-adjustModulesForTests.diff, derby-6945-28-aa-testingModuleDescriptor.diff, derby-6945-29-aa-disable-SimpleApp-test.diff, derby-6945-30-ab-move-clientmessages-toolsmessages.diff, derby-6945-31-aa-clientmessages-ResourceBundleProvider.diff, derby-6945-32-aa-messageLookupCleanup.diff, derby-6945-33-ab-moveLocalizations.diff, derby-6945-34-aa-licenseHeaders.diff, derby-6945-35-aa-removeSpuriousCharacter.diff, derby-6945-36-aa-moduleDescriptorsForLocaleJars.diff, derby-6945-38-aa-javadocCleanup.diff, derby-6945-39-aa-javadocCleanup.diff, derby-6945-40-aa-generatedSource-dirNames.diff, derby-6945-41-ac-cleanupProductJavadoc.diff, derby-6945-42-aa-cleanupTestJavadoc.diff, derby-6945-43-aa-cleanupPublicAPIforJavadoc.diff, derby-6945-44-aa-moduleAwareJavadoc.diff, derby-6945-45-aa-fixWarnings.diff, derby-6945-46-aa-jacocoSourceRoots.diff, derby-6945-47-aa-runModulesWithLocalizations.diff, derby-6945-XX-moveDataSourceFactories, jdeps.out.tar, weirdAnt.out
>
>
> Once we commit to building with Java 9 (see DERBY-6856), we should consider re-packaging Derby as a set of jigsaw modules. This would result in a different set of release artifacts. This might be a good opportunity to address the Tomcat artifactory issues raised by issue DERBY-6944.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)