Details
Description
doWithWebDescriptor takes a GPathResult parameter. GPathResult is intended to be read only but partially supports modification. Consider the following 3 code blocks. There is no way for plugin C to remove elements added by previous plugins. The replaceNode method demonstrated has the side effect of also removing the node added by plugin B.
class AGrailsPlugin {
def doWithWebDescriptor = { xml ->
def mappingElement = xml.'servlet'
mappingElement[mappingElement.size() - 1] + {
'servlet' {
'servlet-name'('a')
'servlet-class'('com.discorp.web.AServlet')
}
}
}
}
class BGrailsPlugin {
def loadAfter = ['a']
def doWithWebDescriptor = { xml ->
def mappingElement = xml.'servlet'
mappingElement[mappingElement.size() - 1] + {
'servlet' {
'servlet-name'('b')
'servlet-class'('com.discorp.web.BServlet')
}
}
}
}
class CGrailsPlugin {
def loadAfter = ['b']
def doWithWebDescriptor = { xml ->
def n = xml.servlet.find { node -> node.'servlet-name'.text() == 'a' }
n.replaceNode {}
}
}
A real-world example is a JBoss plugin I'm working on that needs to remove log4j configuration from web.xml. If the JBoss plugin is loaded after another plugin that modifies web.xml (e.g. AcegiPlugin) those plugins modifications are lost.
Issue Links
- duplicates
-
GRAILS-2977
Cannot insert plugin filter mapping in desired location of web.xml
-
Activity
Peter Ledbrook
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Link |
This issue duplicates |
Peter Ledbrook
made changes -
| Fix Version/s | 1.1 [ 13674 ] |
Graeme Rocher
made changes -
| Priority | Major [ 3 ] | Minor [ 4 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.1-beta2 [ 14752 ] | |
| Fix Version/s | 1.1-beta1 [ 13674 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.1-beta3 [ 14824 ] | |
| Fix Version/s | 1.1-beta2 [ 14752 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.1-beta3 [ 14824 ] | |
| Fix Version/s | 1.1-RC1 [ 14929 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.1-RC1 [ 14929 ] | |
| Fix Version/s | 1.2 [ 14155 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.2-M2 [ 15425 ] | |
| Fix Version/s | 1.2-M1 [ 14155 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.2-M3 [ 15547 ] | |
| Fix Version/s | 1.2-M2 [ 15425 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.2-RC1 [ 15774 ] | |
| Fix Version/s | 1.2-M3 [ 15547 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.2-M4 [ 15774 ] | |
| Fix Version/s | 1.2-RC1 [ 15959 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.3 [ 15400 ] | |
| Fix Version/s | 1.2-RC1 [ 15959 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.3-M1 [ 15400 ] | |
| Fix Version/s | 1.3-RC1 [ 16274 ] |
Graeme Rocher
made changes -
| Fix Version/s | 1.3-RC1 [ 16274 ] |
Graeme Rocher
made changes -
| Assignee | Graeme Rocher [ graemerocher ] |
Contegix Support
made changes -
| Project Import | Thu Mar 24 21:22:24 CDT 2011 [ 1301019744151 ] |
Graeme Rocher
made changes -
| Resolution | Duplicate [ 3 ] | |
| Fix Version/s | 2.0-M1 [ 12504 ] | |
| Status | Open [ 1 ] | Closed [ 6 ] |
Burt Beckwith
made changes -
| Workflow | jira [ 28885 ] | Grails [ 42050 ] |
Burt Beckwith
made changes -
| Workflow | Grails [ 42050 ] | Copy of Grails [ 49503 ] |
Burt Beckwith
made changes -
| Workflow | Copy of Grails [ 49503 ] | Grails [ 56913 ] |
Burt Beckwith
made changes -
| Workflow | Grails [ 56913 ] | Grails2 [ 64491 ] |
Burt Beckwith
made changes -
| Workflow | Grails2 [ 64491 ] | jira [ 78299 ] |
Burt Beckwith
made changes -
| Workflow | jira [ 78299 ] | Grails2 [ 86468 ] |
Peter Ledbrook
made changes -
| Workflow | Grails2 [ 86468 ] | jira [ 94835 ] |
Peter Ledbrook
made changes -
| Workflow | jira [ 94835 ] | Grails2 [ 102976 ] |
Reduced priority of non critical issues which have current workarounds