Skip to content

Commit f487f1f

Browse files
committed
introduce --extends to scaffold generation scripts.
1 parent cecef1d commit f487f1f

File tree

8 files changed

+55
-15
lines changed

8 files changed

+55
-15
lines changed

grails-scaffolding/grails-app/commands/scaffolding/CreateScaffoldControllerCommand.groovy

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,13 @@ class CreateScaffoldControllerCommand implements GrailsApplicationCommand, Comma
5858

5959
String namespace = flag('namespace')
6060
boolean useService = isFlagPresent('service')
61+
String extendsClass = flag('extends')
6162

6263
Map<String, Object> templateModel = model.asMap()
6364
templateModel.put('useService', useService)
6465
templateModel.put('namespace', namespace ?: '')
66+
templateModel.put('extendsClass', extendsClass ?: '')
67+
templateModel.put('extendsClassName', extendsClass ? extendsClass.substring(extendsClass.lastIndexOf('.') + 1) : '')
6568

6669
String destinationPath = "grails-app/controllers/${model.packagePath}"
6770

grails-scaffolding/grails-app/commands/scaffolding/CreateScaffoldServiceCommand.groovy

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,16 @@ class CreateScaffoldServiceCommand implements GrailsApplicationCommand, CommandL
5656
}
5757
boolean overwrite = isFlagPresent('force')
5858
final Model model = model(sourceClass)
59+
60+
String extendsClass = flag('extends')
61+
62+
Map<String, Object> templateModel = model.asMap()
63+
templateModel.put('extendsClass', extendsClass ?: '')
64+
templateModel.put('extendsClassName', extendsClass ? extendsClass.substring(extendsClass.lastIndexOf('.') + 1) : '')
65+
5966
render(template: template('scaffolding/ScaffoldedService.groovy'),
6067
destination: file("grails-app/services/${model.packagePath}/${model.convention('Service')}.groovy"),
61-
model: model,
68+
model: templateModel,
6269
overwrite: overwrite)
6370
verbose('Scaffold service created for domain class')
6471

grails-scaffolding/grails-app/commands/scaffolding/GenerateScaffoldAllCommand.groovy

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,26 @@ class GenerateScaffoldAllCommand implements GrailsApplicationCommand, CommandLin
5858
final Model model = model(sourceClass)
5959

6060
String namespace = flag('namespace')
61+
String serviceExtends = flag('serviceExtends')
62+
String controllerExtends = flag('controllerExtends')
6163

6264
// Generate scaffolded service
65+
Map<String, Object> serviceTemplateModel = model.asMap()
66+
serviceTemplateModel.put('extendsClass', serviceExtends ?: '')
67+
serviceTemplateModel.put('extendsClassName', serviceExtends ? serviceExtends.substring(serviceExtends.lastIndexOf('.') + 1) : '')
68+
6369
render(template: template('scaffolding/ScaffoldedService.groovy'),
6470
destination: file("grails-app/services/${model.packagePath}/${model.convention('Service')}.groovy"),
65-
model: model,
71+
model: serviceTemplateModel,
6672
overwrite: overwrite)
6773
verbose('Scaffold service created for domain class')
6874

6975
// Generate scaffolded controller with service reference
7076
Map<String, Object> templateModel = model.asMap()
7177
templateModel.put('useService', true)
7278
templateModel.put('namespace', namespace ?: '')
79+
templateModel.put('extendsClass', controllerExtends ?: '')
80+
templateModel.put('extendsClassName', controllerExtends ? controllerExtends.substring(controllerExtends.lastIndexOf('.') + 1) : '')
7381

7482
String controllerDestinationPath = "grails-app/controllers/${model.packagePath}"
7583

grails-scaffolding/src/main/scripts/CreateScaffoldController.groovy

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,26 @@
1818
*/
1919

2020
description("Creates a scaffolded controller") {
21-
usage 'create-controller [controller name]'
21+
usage 'create-scaffold-controller [controller name]'
2222
completer org.grails.cli.interactive.completers.DomainClassCompleter
2323
argument name:'Controller Name', description:"The name of controller", required:true
2424
flag name:'force', description:"Whether to overwrite existing files"
2525
flag name:'namespace', description:"The namespace for the controller"
26-
flag name:'service', description:"Use RestfulServiceController instead of RestfulController as a base class"
26+
flag name:'service', description:"Use grails.plugin.scaffolding.RestfulServiceController instead of grails.rest.RestfulController"
27+
flag name:'extends', description:"The superclass for the controller (default: grails.rest.RestfulController)"
2728
}
2829

2930
def modelInstance = model(args[0])
3031
def overwrite = flag('force') ? true : false
3132
def namespace = flag('namespace')
3233
def useService = flag('service') ? true : false
34+
def extendsClass = flag('extends')
3335

3436
def templateModel = modelInstance.asMap()
3537
templateModel.put('useService', useService)
3638
templateModel.put('namespace', namespace ?: '')
39+
templateModel.put('extendsClass', extendsClass ?: '')
40+
templateModel.put('extendsClassName', extendsClass ? extendsClass.substring(extendsClass.lastIndexOf('.') + 1) : '')
3741

3842
def destinationPath = "grails-app/controllers/${modelInstance.packagePath}"
3943

grails-scaffolding/src/main/scripts/CreateScaffoldService.groovy

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,24 @@
1818
*/
1919

2020
description("Creates a scaffolded service") {
21-
usage 'create-service [service name]'
21+
usage 'create-scaffold-service [service name]'
2222
completer org.grails.cli.interactive.completers.DomainClassCompleter
2323
argument name:'Service Name', description:"The name of service", required:true
2424
flag name:'force', description:"Whether to overwrite existing files"
25+
flag name:'extends', description:"The superclass for the service (default: grails.plugin.scaffolding.GormService)"
2526
}
2627

2728
def modelInstance = model(args[0])
2829
def overwrite = flag('force') ? true : false
30+
def extendsClass = flag('extends')
31+
32+
def templateModel = modelInstance.asMap()
33+
templateModel.put('extendsClass', extendsClass ?: '')
34+
templateModel.put('extendsClassName', extendsClass ? extendsClass.substring(extendsClass.lastIndexOf('.') + 1) : '')
2935

3036
render template: template('scaffolding/ScaffoldedService.groovy'),
3137
destination: file("grails-app/services/${modelInstance.packagePath}/${modelInstance.convention("Service")}.groovy"),
32-
model: modelInstance,
38+
model: templateModel,
3339
overwrite: overwrite
3440

3541
return true

grails-scaffolding/src/main/scripts/GenerateScaffoldAll.groovy

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,32 @@ description("Generates a scaffolded service and controller") {
2323
argument name:'Domain Class Name', description:"The name of domain class", required:true
2424
flag name:'force', description:"Whether to overwrite existing files"
2525
flag name:'namespace', description:"The namespace for the controller"
26+
flag name:'serviceExtends', description:"The superclass for the service (default: grails.plugin.scaffolding.GormService)"
27+
flag name:'controllerExtends', description:"The superclass for the controller (default: grails.plugin.scaffolding.RestfulServiceController)"
2628
}
2729

2830
def modelInstance = model(args[0])
2931
def overwrite = flag('force') ? true : false
3032
def namespace = flag('namespace')
33+
def serviceExtends = flag('serviceExtends')
34+
def controllerExtends = flag('controllerExtends')
3135

3236
// Generate scaffolded service
37+
def serviceTemplateModel = modelInstance.asMap()
38+
serviceTemplateModel.put('extendsClass', serviceExtends ?: '')
39+
serviceTemplateModel.put('extendsClassName', serviceExtends ? serviceExtends.substring(serviceExtends.lastIndexOf('.') + 1) : '')
40+
3341
render template: template('scaffolding/ScaffoldedService.groovy'),
3442
destination: file("grails-app/services/${modelInstance.packagePath}/${modelInstance.convention("Service")}.groovy"),
35-
model: modelInstance,
43+
model: serviceTemplateModel,
3644
overwrite: overwrite
3745

3846
// Generate scaffolded controller with service reference
39-
def templateModel = modelInstance.asMap()
40-
templateModel.put('useService', true)
41-
templateModel.put('namespace', namespace ?: '')
47+
def controllerTemplateModel = modelInstance.asMap()
48+
controllerTemplateModel.put('useService', true)
49+
controllerTemplateModel.put('namespace', namespace ?: '')
50+
controllerTemplateModel.put('extendsClass', controllerExtends ?: '')
51+
controllerTemplateModel.put('extendsClassName', controllerExtends ? controllerExtends.substring(controllerExtends.lastIndexOf('.') + 1) : '')
4252

4353
def controllerDestinationPath = "grails-app/controllers/${modelInstance.packagePath}"
4454

@@ -48,7 +58,7 @@ if (namespace) {
4858

4959
render template: template('scaffolding/ScaffoldedController.groovy'),
5060
destination: file("${controllerDestinationPath}/${modelInstance.convention("Controller")}.groovy"),
51-
model: templateModel,
61+
model: controllerTemplateModel,
5262
overwrite: overwrite
5363

5464
return true

grails-scaffolding/src/main/templates/scaffolding/ScaffoldedController.groovy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
import ${packageName}.${className}<% } else { %><%=packageName ? "package ${packageName}" : ''%><% } %>
44

5-
import grails.plugin.scaffolding.annotation.Scaffold<% if (useService) { %>
5+
import grails.plugin.scaffolding.annotation.Scaffold<% if (extendsClass) { %>
6+
import ${extendsClass}<% } else if (useService) { %>
67
import grails.plugin.scaffolding.RestfulServiceController<% } %>
78

8-
<% if (useService) { %>@Scaffold(RestfulServiceController<${className}>)<% } else { %>@Scaffold(${className})<% } %>
9+
<% if (extendsClass) { %>@Scaffold(${extendsClassName}<${className}>)<% } else if (useService) { %>@Scaffold(RestfulServiceController<${className}>)<% } else { %>@Scaffold(${className})<% } %>
910
class ${className}Controller {<% if (namespace) { %>
1011
static namespace = '${namespace}'
1112
<% } %>}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<%=packageName ? "package ${packageName}" : ''%>
22

3-
import grails.plugin.scaffolding.annotation.Scaffold
3+
import grails.plugin.scaffolding.annotation.Scaffold<% if (extendsClass) { %>
4+
import ${extendsClass}<% } %>
45

5-
@Scaffold(${className})
6+
<% if (extendsClass) { %>@Scaffold(${extendsClassName}<${className}>)<% } else { %>@Scaffold(${className})<% } %>
67
class ${className}Service {
78
}

0 commit comments

Comments
 (0)