db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Hillegas (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DERBY-6945) Re-package Derby as a collection of jigsaw modules
Date Tue, 07 Aug 2018 04:21:00 GMT

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

Mime
View raw message