Skip to content

Commit 6bd0a01

Browse files
committed
Improve the code according to the Gradle recommendations on the writing
of plugins. Set the JCR_URL of the database used by the JCR implementation only if the JCR_NAME property parameter is set. Otherwise, JCR_URL isn't defined. This is for the preparation of the migration of the JCR from Apache Jackrabbit 2 to Apache Jackrabbit Oak.
1 parent fdcae97 commit 6bd0a01

25 files changed

+198
-206
lines changed

src/main/groovy/org/silverpeas/setup/SilverpeasConfigurationProperties.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class SilverpeasConfigurationProperties {
6262
final Property<File> silverpeasConfigurationDir
6363

6464
/**
65-
* The directory that contains the additional JBoss/Wildfly modules to install in JBoss/Wildfy
65+
* The directory that contains the additional JBoss/Wildfly modules to install in JBoss/Wildfly
6666
* for Silverpeas. By default SILVERPEAS_HOME/configuration/jboss/modules.
6767
*/
6868
@Input

src/main/groovy/org/silverpeas/setup/SilverpeasInstallationProperties.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class SilverpeasInstallationProperties {
6767
bundles = project.objects.newInstance(SoftwareBundles, project)
6868
}
6969

70+
@SuppressWarnings('unused')
7071
void bundles(Action<? extends SoftwareBundles> action) {
7172
action.execute(bundles)
7273
}

src/main/groovy/org/silverpeas/setup/SilverpeasLoggingProperties.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class SilverpeasLoggingProperties {
4949
boolean useLogger = true
5050

5151
/**
52-
* Additional to its own tasks, the ones in a Gradle script the logging system of the pluging
52+
* Additional to its own tasks, the ones in a Gradle script the logging system of the plugin
5353
* should take in charge. By default, none is taken in charge; only the tasks in the plugin are
5454
* supported by the logging system.
5555
*/

src/main/groovy/org/silverpeas/setup/SilverpeasSetupPlugin.groovy

Lines changed: 104 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ package org.silverpeas.setup
2525

2626

2727
import org.gradle.api.*
28+
import org.gradle.api.tasks.TaskProvider
2829
import org.silverpeas.setup.api.*
2930
import org.silverpeas.setup.configuration.JBossConfigurationTask
3031
import org.silverpeas.setup.configuration.SilverpeasConfigurationTask
@@ -72,44 +73,56 @@ class SilverpeasSetupPlugin implements Plugin<Project> {
7273
JBossServer jBossServer = new JBossServer(extension.jbossHome.path)
7374
initializePluginParameters(project, jBossServer)
7475

75-
Task construction = project.tasks.create(CONSTRUCT.name, SilverpeasConstructionTask) {
76-
it.silverpeasHome = extension.silverpeasHome
77-
it.installation = extension.installation
78-
it.settings = extension.settings
76+
TaskProvider<Task> construction = project.tasks.register(CONSTRUCT.name, SilverpeasConstructionTask) {
77+
silverpeasHome = extension.silverpeasHome
78+
installation = extension.installation
79+
settings = extension.settings
7980
}
8081

81-
Task jbossConf = project.tasks.create(CONFIGURE_JBOSS.name, JBossConfigurationTask) {
82-
it.driversDir = extension.installation.dsDriversDir.get()
83-
it.config = extension.config
84-
it.jboss = jBossServer
85-
it.settings = extension.settings
82+
TaskProvider<JBossConfigurationTask> jbossConf =
83+
project.tasks.register(CONFIGURE_JBOSS.name, JBossConfigurationTask) {
84+
driversDir = extension.installation.dsDriversDir.get()
85+
config = extension.config
86+
jboss = jBossServer.useLogger(log)
87+
settings = extension.settings
8688
}
8789

88-
Task silverpeasConf = project.tasks.create(CONFIGURE_SILVERPEAS.name, SilverpeasConfigurationTask) {
89-
it.silverpeasHome = extension.silverpeasHome
90-
it.config = extension.config
91-
it.settings = extension.settings
92-
}.dependsOn(construction)
93-
94-
Task configuration = project.tasks.create(CONFIGURE.name) {
95-
it.description = 'Configures both JBoss and Silverpeas'
96-
it.group = 'Build'
97-
}.doFirst {
98-
((JBossConfigurationTask) jbossConf).configureJBoss()
99-
}.doLast {
100-
((SilverpeasConfigurationTask) silverpeasConf).configureSilverpeas()
101-
}.dependsOn(construction)
102-
103-
Task migration = project.tasks.create(MIGRATE.name, SilverpeasMigrationTask) {
104-
it.migration = extension.migration
105-
it.settings = extension.settings
106-
}.dependsOn(configuration)
107-
108-
project.tasks.create(INSTALL.name, SilverpeasInstallationTask) {
109-
it.installation = extension.installation
110-
it.settings = extension.settings
111-
it.jboss = jBossServer
112-
}.dependsOn(construction, configuration, migration)
90+
TaskProvider<SilverpeasConfigurationTask> silverpeasConf =
91+
project.tasks.register(CONFIGURE_SILVERPEAS.name, SilverpeasConfigurationTask) {
92+
dependsOn construction
93+
94+
silverpeasHome = extension.silverpeasHome
95+
config = extension.config
96+
settings = extension.settings
97+
}
98+
99+
TaskProvider<Task> configuration = project.tasks.register(CONFIGURE.name) {
100+
description = 'Configures both JBoss/Wildfly and Silverpeas'
101+
group = 'Build'
102+
dependsOn construction
103+
104+
doFirst {
105+
jbossConf.get().configureJBoss()
106+
}
107+
doLast {
108+
silverpeasConf.get().configureSilverpeas()
109+
}
110+
}
111+
112+
TaskProvider<Task> migration = project.tasks.register(MIGRATE.name, SilverpeasMigrationTask) {
113+
dependsOn configuration
114+
115+
migration = extension.migration
116+
settings = extension.settings
117+
}
118+
119+
project.tasks.register(INSTALL.name, SilverpeasInstallationTask) {
120+
dependsOn migration
121+
122+
installation = extension.installation
123+
settings = extension.settings
124+
jboss = jBossServer.useLogger(log)
125+
}
113126

114127
initializePredefinedTasks(project, extension)
115128
}
@@ -123,25 +136,28 @@ class SilverpeasSetupPlugin implements Plugin<Project> {
123136
private static void setUpGradleAssemblingTaskForThisPlugin(Project project,
124137
SilverpeasSetupExtension extension) {
125138
try {
126-
Task assemble = project.tasks.getByName(ASSEMBLE.name).doLast {
127-
if (!extension.installation.distDir.get().exists()) {
128-
extension.installation.distDir.get().mkdirs()
139+
TaskProvider<Task> assemble = project.tasks.named(ASSEMBLE.name)
140+
assemble.configure {
141+
description = 'Assemble all the software bundles that made Silverpeas'
142+
onlyIf {
143+
!extension.installation.distDir.get().exists() &&
144+
!extension.installation.dsDriversDir.get().exists()
145+
}
146+
outputs.upToDateWhen {
147+
extension.installation.distDir.get().exists() &&
148+
extension.installation.dsDriversDir.get().exists()
149+
}
150+
doLast {
151+
if (!extension.installation.distDir.get().exists()) {
152+
extension.installation.distDir.get().mkdirs()
153+
}
154+
SilverpeasBuilder builder = new SilverpeasBuilder(project, FileLogger.getLogger(name))
155+
builder.driversDir = extension.installation.dsDriversDir.get()
156+
builder.silverpeasHome = extension.silverpeasHome
157+
builder.settings = extension.settings
158+
builder.extractSoftwareBundles(extension.installation.bundles,
159+
extension.installation.distDir.get())
129160
}
130-
SilverpeasBuilder builder = new SilverpeasBuilder(project, FileLogger.getLogger(delegate.name))
131-
builder.driversDir = extension.installation.dsDriversDir.get()
132-
builder.silverpeasHome = extension.silverpeasHome
133-
builder.settings = extension.settings
134-
builder.extractSoftwareBundles(extension.installation.bundles,
135-
extension.installation.distDir.get())
136-
}
137-
assemble.description = 'Assemble all the software bundles that made Silverpeas'
138-
assemble.onlyIf {
139-
!extension.installation.distDir.get().exists() &&
140-
!extension.installation.dsDriversDir.get().exists()
141-
}
142-
assemble.outputs.upToDateWhen {
143-
extension.installation.distDir.get().exists() &&
144-
extension.installation.dsDriversDir.get().exists()
145161
}
146162
} catch (UnknownTaskException e) {
147163
// nothing to do
@@ -159,25 +175,28 @@ class SilverpeasSetupPlugin implements Plugin<Project> {
159175
private static void setUpGradleBuildTaskForThisPlugin(Project project,
160176
SilverpeasSetupExtension extension) {
161177
try {
162-
Task build = project.tasks.getByName(BUILD.name).doLast {
163-
SilverpeasBuilder builder = new SilverpeasBuilder(project, FileLogger.getLogger(delegate.name))
164-
builder.silverpeasHome = extension.silverpeasHome
165-
builder.settings = extension.settings
166-
builder.developmentMode = extension.installation.developmentMode.get()
167-
builder.generateSilverpeasApplication(extension.installation.distDir.get())
168-
}
169-
build.description = 'Build the Silverpeas Collaborative Web Application'
170-
build.onlyIf {
171-
extension.installation.distDir.get().exists()
172-
}
173-
build.outputs.upToDateWhen {
174-
boolean ok = extension.installation.distDir.get().exists() &&
175-
Files.exists(Paths.get(extension.installation.distDir.get().path, 'WEB-INF', 'web.xml'))
176-
if (!extension.installation.developmentMode.get()) {
177-
ok = ok && Files.exists(
178-
Paths.get(project.buildDir.path, SilverpeasConstructionTask.SILVERPEAS_WAR))
178+
TaskProvider<Task> build = project.tasks.named(BUILD.name)
179+
build.configure {
180+
description = 'Build the Silverpeas Collaborative Web Application'
181+
onlyIf {
182+
extension.installation.distDir.get().exists()
183+
}
184+
outputs.upToDateWhen {
185+
boolean ok = extension.installation.distDir.get().exists() &&
186+
Files.exists(Paths.get(extension.installation.distDir.get().path, 'WEB-INF', 'web.xml'))
187+
if (!extension.installation.developmentMode.get()) {
188+
ok = ok && Files.exists(
189+
Paths.get(project.buildDir.path, SilverpeasConstructionTask.SILVERPEAS_WAR))
190+
}
191+
return ok
192+
}
193+
doLast {
194+
SilverpeasBuilder builder = new SilverpeasBuilder(project, FileLogger.getLogger(name))
195+
builder.silverpeasHome = extension.silverpeasHome
196+
builder.settings = extension.settings
197+
builder.developmentMode = extension.installation.developmentMode.get()
198+
builder.generateSilverpeasApplication(extension.installation.distDir.get())
179199
}
180-
return ok
181200
}
182201
} catch (UnknownTaskException e) {
183202
// nothing to do
@@ -296,35 +315,41 @@ class SilverpeasSetupPlugin implements Plugin<Project> {
296315
switch (settings.DB_SERVERTYPE) {
297316
case 'MSSQL':
298317
settings.DB_URL = "jdbc:jtds:sqlserver://${settings.DB_SERVER}:${settings.DB_PORT_MSSQL}/${settings.DB_NAME};sendStringParametersAsUnicode=false"
299-
settings.JCR_URL = "jdbc:jtds:sqlserver://${settings.DB_SERVER}:${settings.DB_PORT_MSSQL}/${settings.JCR_NAME};sendStringParametersAsUnicode=false"
318+
if (settings.JCR_NAME) {
319+
settings.JCR_URL = "jdbc:jtds:sqlserver://${settings.DB_SERVER}:${settings.DB_PORT_MSSQL}/${settings.JCR_NAME};sendStringParametersAsUnicode=false"
320+
}
300321
settings.DB_DRIVER = 'net.sourceforge.jtds.jdbc.Driver'
301-
settings.JACKRABBIT_PERSISTENCE_MANAGER = 'org.apache.jackrabbit.core.persistence.pool.MSSqlPersistenceManager'
302322
break
303323
case 'ORACLE':
304324
settings.DB_URL = "jdbc:oracle:thin:@${settings.DB_SERVER}:${settings.DB_PORT_ORACLE}:${settings.DB_NAME}"
305-
settings.JCR_URL = "jdbc:oracle:thin:@${settings.DB_SERVER}:${settings.DB_PORT_ORACLE}:${settings.JCR_NAME}"
325+
if (settings.JCR_NAME) {
326+
settings.JCR_URL = "jdbc:oracle:thin:@${settings.DB_SERVER}:${settings.DB_PORT_ORACLE}:${settings.JCR_NAME}"
327+
}
306328
settings.DB_DRIVER = 'oracle.jdbc.driver.OracleDriver'
307-
settings.JACKRABBIT_PERSISTENCE_MANAGER = 'org.apache.jackrabbit.core.persistence.pool.OraclePersistenceManager'
308329
break
309330
case 'POSTGRESQL':
310331
settings.DB_URL = "jdbc:postgresql://${settings.DB_SERVER}:${settings.DB_PORT_POSTGRESQL}/${settings.DB_NAME}"
311-
settings.JCR_URL = "jdbc:postgresql://${settings.DB_SERVER}:${settings.DB_PORT_POSTGRESQL}/${settings.JCR_NAME}"
332+
if (settings.JCR_NAME) {
333+
settings.JCR_URL = "jdbc:postgresql://${settings.DB_SERVER}:${settings.DB_PORT_POSTGRESQL}/${settings.JCR_NAME}"
334+
}
312335
settings.DB_DRIVER = 'org.postgresql.Driver'
313-
settings.JACKRABBIT_PERSISTENCE_MANAGER = 'org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager'
314336
break
315337
case 'H2':
316338
if (settings.DB_SERVER == ':file:') {
317339
Path databaseDirPath = Paths.get(settings.SILVERPEAS_HOME, 'h2')
318340
if (!Files.exists(databaseDirPath))
319341
Files.createDirectory(databaseDirPath)
320342
settings.DB_URL = "jdbc:h2:file:${settings.SILVERPEAS_HOME}/h2/${settings.DB_NAME};MV_STORE=FALSE;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"
321-
settings.JCR_URL = "jdbc:h2:file:${settings.SILVERPEAS_HOME}/h2/${settings.JCR_NAME};MV_STORE=FALSE;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"
343+
if (settings.JCR_NAME) {
344+
settings.JCR_URL = "jdbc:h2:file:${settings.SILVERPEAS_HOME}/h2/${settings.JCR_NAME};MV_STORE=FALSE;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"
345+
}
322346
} else {
323347
settings.DB_URL = "jdbc:h2:tcp://${settings.DB_SERVER}:${settings.DB_PORT_H2}/${settings.DB_NAME}"
324-
settings.JCR_URL = "jdbc:h2:tcp://${settings.DB_SERVER}:${settings.DB_PORT_H2}/${settings.JCR_NAME}"
348+
if (settings.JCR_NAME) {
349+
settings.JCR_URL = "jdbc:h2:tcp://${settings.DB_SERVER}:${settings.DB_PORT_H2}/${settings.JCR_NAME}"
350+
}
325351
}
326352
settings.DB_DRIVER = 'org.h2.Driver'
327-
settings.JACKRABBIT_PERSISTENCE_MANAGER = 'org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager'
328353
break
329354
default:
330355
throw new IllegalArgumentException("Unsupported database system: ${settings.DB_SERVERTYPE}")

src/main/groovy/org/silverpeas/setup/SoftwareBundles.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class SoftwareBundles {
4141
this.silverpeas.setFrom(bundles)
4242
}
4343

44+
@SuppressWarnings('unused')
4445
void setTiers(FileCollection bundles) {
4546
this.tiers.setFrom(bundles)
4647
}

src/main/groovy/org/silverpeas/setup/TaskEventLogging.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class TaskEventLogging extends BuildAdapter implements TaskExecutionListener {
107107

108108
@Override
109109
void buildFinished(final BuildResult result) {
110-
JBossServer jboss = new JBossServer(result.gradle.rootProject.extensions.silversetup.jbossHome.path)
110+
JBossServer jboss = new JBossServer(result.gradle.rootProject.extensions.silversetup.jbossHome.path as String)
111111
String status = "JBoss is ${jboss.status()}"
112112
String buildDuration = "The whole tasks took ${(long)((System.currentTimeMillis() - startTimestamp) / 1000)}s"
113113
if (buildStarted) {

src/main/groovy/org/silverpeas/setup/api/DataSourceProvider.groovy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,15 @@ import org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS
2727
import org.apache.commons.dbcp2.datasources.SharedPoolDataSource
2828

2929
import javax.sql.DataSource
30+
import java.time.Duration
3031

3132
/**
3233
* A provider of the DataSource object used to access the database.
3334
* @author mmoquillon
3435
*/
3536
class DataSourceProvider {
3637

37-
private final DataSource dataSource
38+
public final DataSource dataSource
3839

3940
DataSourceProvider(final Map<String, String> settings) {
4041
Objects.requireNonNull(settings)
@@ -47,7 +48,7 @@ class DataSourceProvider {
4748
SharedPoolDataSource tds = new SharedPoolDataSource()
4849
tds.setConnectionPoolDataSource(cpds)
4950
tds.setMaxTotal(10)
50-
tds.setDefaultMaxWaitMillis(50)
51+
tds.setDefaultMaxWait(Duration.ofMillis(50))
5152
dataSource = tds
5253
}
5354
}

0 commit comments

Comments
 (0)