getNamedDispatcher and named JSP pages
Izzy Alanis <[email protected]> Mon, 28 Dec 2009 10:17:16 -0500
| Newsgroups | gmane.comp.web.httpunit.devel |
|---|---|
| Message-ID | <[email protected]> |
--0016e6475cca9692f8047bcb66d5
Content-Type: text/plain; charset=ISO-8859-1
I needed to unit test an app that used getNamedDispatcher to reference
a named jsp page. So, the servlet does something like:
RequestDispatcher errorPage =
getServletContext().getNamedDispatcher("errorPage");
errorPage.forward(request, response);
Where "errorPage" is defined in the web.xml as:
<servlet>
<servlet-name>errorPage</servlet-name>
<display-name>Generic Error Page</display-name>
<jsp-file>/errorPage.jsp</jsp-file>
</servlet>
Anyway, I've used httpunit before and am happy with it, but I was
surprised to find that getNamedDispatcher wasn't implemented, so I
patched up something quick to make it work (for me, ymmv).
http://pastebin.com/f15093292
--0016e6475cca9692f8047bcb66d5
Content-Type: application/octet-stream;
name="NamedRequestDispatchers_and_NamedJSPFiles.patch"
Content-Disposition: attachment;
filename="NamedRequestDispatchers_and_NamedJSPFiles.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g3re4br50
SW5kZXg6IGh0dHB1bml0L3NyYy9jb20vbWV0ZXJ3YXJlL3NlcnZsZXR1bml0L1dlYkFwcGxpY2F0
aW9uLmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gaHR0cHVuaXQvc3JjL2NvbS9tZXRlcndhcmUvc2Vydmxl
dHVuaXQvV2ViQXBwbGljYXRpb24uamF2YQkocmV2aXNpb24gMTA2MSkKKysrIGh0dHB1bml0L3Ny
Yy9jb20vbWV0ZXJ3YXJlL3NlcnZsZXR1bml0L1dlYkFwcGxpY2F0aW9uLmphdmEJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDYgKzU3LDExIEBACiAgICAgLyoqIEEgbWFwcGluZyBvZiByZXNvdXJjZSBu
YW1lcyB0byBzZXJ2bGV0IGNvbmZpZ3VyYXRpb25zLiAqKi8KICAgICBwcml2YXRlIFdlYlJlc291
cmNlTWFwIF9zZXJ2bGV0TWFwcGluZyA9IG5ldyBXZWJSZXNvdXJjZU1hcCgpOwogCisgICAgLyoq
IEEgbWFwcGluZyBvZiBmaWx0ZXIgbmFtZXMgdG8gRmlsdGVyQ29uZmlndXJhdGlvbnMgKi8KKyAg
ICBwcml2YXRlIEhhc2h0YWJsZSBfZmlsdGVycyA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAvKiog
QSBtYXBwaW5nIG9mIHNlcnZsZXQgbmFtZXMgdG8gU2VydmxldENvbmZpZ3VyYXRpb25zICovCisg
ICAgcHJpdmF0ZSBIYXNodGFibGUgX3NlcnZsZXRzID0gbmV3IEhhc2h0YWJsZSgpOworCiAgICAg
LyoqIEEgbWFwcGluZyBvZiByZXNvdXJjZSBuYW1lcyB0byBmaWx0ZXIgY29uZmlndXJhdGlvbnMu
ICoqLwogICAgIHByaXZhdGUgRmlsdGVyVXJsTWFwIF9maWx0ZXJVcmxNYXBwaW5nID0gbmV3IEZp
bHRlclVybE1hcCgpOwogCkBAIC0yNjUsNyArMjcwLDExIEBACiAgICAgICAgIHJldHVybiBfc2Vy
dmxldE1hcHBpbmcuZ2V0KCB1cmwgKTsKICAgICB9CiAKKyAgICBTZXJ2bGV0Q29uZmlndXJhdGlv
biBnZXRTZXJ2bGV0QnlOYW1lKFN0cmluZyBuYW1lKSB7CisgICAgICAgIHJldHVybiAoU2Vydmxl
dENvbmZpZ3VyYXRpb24pIF9zZXJ2bGV0cy5nZXQobmFtZSk7CisgICAgfQogCisKICAgICAvKioK
ICAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBhcHBsaWNhdGlvbiB1c2VzIEJhc2ljIEF1dGhl
bnRpY2F0aW9uLgogICAgICAqLwpAQCAtNDE3LDYgKzQyNiw3IEBACiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbmwuZ2V0TGVuZ3RoKCk7IGkrKykgcmVnaXN0ZXJGaWx0ZXJDbGFzcyggbmFt
ZVRvQ2xhc3MsIChFbGVtZW50KSBubC5pdGVtKCBpICkgKTsKICAgICAgICAgbmwgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggImZpbHRlci1tYXBwaW5nIiApOwogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG5sLmdldExlbmd0aCgpOyBpKyspIHJlZ2lzdGVyRmlsdGVyKCBuYW1l
VG9DbGFzcywgKEVsZW1lbnQpIG5sLml0ZW0oIGkgKSApOworCV9maWx0ZXJzID0gbmFtZVRvQ2xh
c3M7CiAgICAgfQogCiAKQEAgLTQ3OCw2ICs0ODgsNyBAQAogICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG5sLmdldExlbmd0aCgpOyBpKyspIHJlZ2lzdGVyU2VydmxldENsYXNzKCBuYW1lVG9D
bGFzcywgKEVsZW1lbnQpIG5sLml0ZW0oIGkgKSApOwogICAgICAgICBubCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCAic2VydmxldC1tYXBwaW5nIiApOwogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG5sLmdldExlbmd0aCgpOyBpKyspIHJlZ2lzdGVyU2VydmxldCggbmFtZVRv
Q2xhc3MsIChFbGVtZW50KSBubC5pdGVtKCBpICkgKTsKKwlfc2VydmxldHMgPSBuYW1lVG9DbGFz
czsKICAgICB9CiAKIApAQCAtNTUyLDYgKzU2Myw3IEBACiAKICAgICAgICAgcHJpdmF0ZSBTZXJ2
bGV0IF9zZXJ2bGV0OwogICAgICAgICBwcml2YXRlIFN0cmluZyBfc2VydmxldE5hbWU7CisJcHJp
dmF0ZSBTdHJpbmcgX2pzcEZpbGU7CiAgICAgICAgIHByaXZhdGUgaW50IF9sb2FkT3JkZXIgPSBE
T05UX0FVVE9MT0FEOwogCiAgICAgICAgIFNlcnZsZXRDb25maWd1cmF0aW9uKCBTdHJpbmcgY2xh
c3NOYW1lICkgewpAQCAtNTY1LDggKzU3NywxMSBAQAogCiAKICAgICAgICAgU2VydmxldENvbmZp
Z3VyYXRpb24oIEVsZW1lbnQgc2VydmxldEVsZW1lbnQgKSB0aHJvd3MgU0FYRXhjZXB0aW9uIHsK
LSAgICAgICAgICAgIHN1cGVyKCBzZXJ2bGV0RWxlbWVudCwgInNlcnZsZXQtY2xhc3MiICk7Cisg
ICAgICAgICAgICBzdXBlciggc2VydmxldEVsZW1lbnQsICJzZXJ2bGV0LWNsYXNzIiwgCisJCVhN
TFV0aWxzLmdldENoaWxkTm9kZVZhbHVlKCBzZXJ2bGV0RWxlbWVudCwgInNlcnZsZXQtY2xhc3Mi
LCAib3JnLmFwYWNoZS5qYXNwZXIuc2VydmxldC5Kc3BTZXJ2bGV0IiApICk7CiAgICAgICAgICAg
ICBfc2VydmxldE5hbWUgPSBYTUxVdGlscy5nZXRDaGlsZE5vZGVWYWx1ZSggc2VydmxldEVsZW1l
bnQsICJzZXJ2bGV0LW5hbWUiICk7CisJICAgIF9qc3BGaWxlID0gWE1MVXRpbHMuZ2V0Q2hpbGRO
b2RlVmFsdWUoIHNlcnZsZXRFbGVtZW50LCAianNwLWZpbGUiLCAiIik7CisJICAgIGlmKCIiLmVx
dWFscyhfanNwRmlsZSkpIF9qc3BGaWxlID0gbnVsbDsKICAgICAgICAgICAgIGZpbmFsIE5vZGVM
aXN0IGxvYWRPcmRlciA9IHNlcnZsZXRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCAibG9h
ZC1vbi1zdGFydHVwIiApOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2FkT3Jk
ZXIuZ2V0TGVuZ3RoKCk7IGkrKykgewogICAgICAgICAgICAgICAgIFN0cmluZyBvcmRlciA9IFhN
TFV0aWxzLmdldFRleHRWYWx1ZSggbG9hZE9yZGVyLml0ZW0oaSkgKTsKQEAgLTYwMSw2ICs2MTYs
MTEgQEAKICAgICAgICAgfQogCiAKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRKc3BGaWxlKCkg
eworICAgICAgICAgICAgcmV0dXJuIF9qc3BGaWxlOworICAgICAgICB9CisKKwogICAgICAgICBi
b29sZWFuIGlzTG9hZE9uU3RhcnR1cCgpIHsKICAgICAgICAgICAgIHJldHVybiBfbG9hZE9yZGVy
ICE9IERPTlRfQVVUT0xPQUQ7CiAgICAgICAgIH0KSW5kZXg6IGh0dHB1bml0L3NyYy9jb20vbWV0
ZXJ3YXJlL3NlcnZsZXR1bml0L1dlYlJlc291cmNlQ29uZmlndXJhdGlvbi5qYXZhCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGh0dHB1bml0L3NyYy9jb20vbWV0ZXJ3YXJlL3NlcnZsZXR1bml0L1dlYlJlc291cmNl
Q29uZmlndXJhdGlvbi5qYXZhCShyZXZpc2lvbiAxMDYxKQorKysgaHR0cHVuaXQvc3JjL2NvbS9t
ZXRlcndhcmUvc2VydmxldHVuaXQvV2ViUmVzb3VyY2VDb25maWd1cmF0aW9uLmphdmEJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDcgKzQ5LDEyIEBACiAKIAogICAgIFdlYlJlc291cmNlQ29uZmlndXJh
dGlvbiggRWxlbWVudCByZXNvdXJjZUVsZW1lbnQsIFN0cmluZyByZXNvdXJjZU5vZGVOYW1lICkg
dGhyb3dzIFNBWEV4Y2VwdGlvbiB7Ci0gICAgICAgIHRoaXMoIFhNTFV0aWxzLmdldENoaWxkTm9k
ZVZhbHVlKCByZXNvdXJjZUVsZW1lbnQsIHJlc291cmNlTm9kZU5hbWUgKSApOworCXRoaXMoIHJl
c291cmNlRWxlbWVudCwgcmVzb3VyY2VOb2RlTmFtZSwgWE1MVXRpbHMuZ2V0Q2hpbGROb2RlVmFs
dWUoIHJlc291cmNlRWxlbWVudCwgcmVzb3VyY2VOb2RlTmFtZSApICk7CisgICAgfQorCisKKyAg
ICBXZWJSZXNvdXJjZUNvbmZpZ3VyYXRpb24oIEVsZW1lbnQgcmVzb3VyY2VFbGVtZW50LCBTdHJp
bmcgcmVzb3VyY2VOb2RlTmFtZSwgU3RyaW5nIGNsYXNzTmFtZSApIHRocm93cyBTQVhFeGNlcHRp
b24geworICAgICAgICB0aGlzKCBjbGFzc05hbWUgKTsKICAgICAgICAgZmluYWwgTm9kZUxpc3Qg
aW5pdFBhcmFtcyA9IHJlc291cmNlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSggImluaXQt
cGFyYW0iICk7CiAgICAgICAgIGZvciAoaW50IGkgPSBpbml0UGFyYW1zLmdldExlbmd0aCgpIC0g
MTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgIF9pbml0UGFyYW1zLnB1dCggWE1MVXRpbHMu
Z2V0Q2hpbGROb2RlVmFsdWUoIChFbGVtZW50KSBpbml0UGFyYW1zLml0ZW0oIGkgKSwgInBhcmFt
LW5hbWUiICksCkluZGV4OiBodHRwdW5pdC9zcmMvY29tL21ldGVyd2FyZS9zZXJ2bGV0dW5pdC9T
ZXJ2bGV0VW5pdFNlcnZsZXRDb250ZXh0LmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHR0cHVuaXQvc3Jj
L2NvbS9tZXRlcndhcmUvc2VydmxldHVuaXQvU2VydmxldFVuaXRTZXJ2bGV0Q29udGV4dC5qYXZh
CShyZXZpc2lvbiAxMDYxKQorKysgaHR0cHVuaXQvc3JjL2NvbS9tZXRlcndhcmUvc2VydmxldHVu
aXQvU2VydmxldFVuaXRTZXJ2bGV0Q29udGV4dC5qYXZhCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2
ICsyMyw3IEBACiBpbXBvcnQgamF2YS5pby5GaWxlOwogaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0
U3RyZWFtOwogaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGph
dmEuaW8uSU9FeGNlcHRpb247CiBpbXBvcnQgamF2YS5pby5QcmludFN0cmVhbTsKIGltcG9ydCBq
YXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb247CiBpbXBvcnQgamF2YS5uZXQuVVJMOwpAQCAt
MzQsNiArMzUsNyBAQAogCiBpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0Q29udGV4dDsKIGlt
cG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRFeGNlcHRpb247CitpbXBvcnQgamF2YXguc2Vydmxl
dC4qOwogCiAKIApAQCAtMTc2LDggKzE3OCw1NCBAQAogICAgICAqCiAgICAgICogVGhpcyBtZXRo
b2QgcmV0dXJucyBudWxsIGlmIHRoZSBTZXJ2bGV0Q29udGV4dCBjYW5ub3QgcmV0dXJuIGEgUmVx
dWVzdERpc3BhdGNoZXIgZm9yIGFueSByZWFzb24uCiAgICAgICoqLwotICAgIHB1YmxpYyBqYXZh
eC5zZXJ2bGV0LlJlcXVlc3REaXNwYXRjaGVyIGdldE5hbWVkRGlzcGF0Y2hlcihqYXZhLmxhbmcu
U3RyaW5nIEEpIHsKLSAgICAgICAgcmV0dXJuIG51bGw7ICAgLy8gWFhYIG5vdCBpbXBsZW1lbnRl
ZAorICAgIHB1YmxpYyBqYXZheC5zZXJ2bGV0LlJlcXVlc3REaXNwYXRjaGVyIGdldE5hbWVkRGlz
cGF0Y2hlciggU3RyaW5nIHNlcnZsZXROYW1lICkgeworCWZpbmFsIFdlYkFwcGxpY2F0aW9uLlNl
cnZsZXRDb25maWd1cmF0aW9uIHNlcnZsZXRDb25maWcgPSBfYXBwbGljYXRpb24uZ2V0U2Vydmxl
dEJ5TmFtZShzZXJ2bGV0TmFtZSk7CisJaWYoc2VydmxldENvbmZpZz09bnVsbCkgcmV0dXJuIG51
bGw7CisJU2VydmxldCB0ZW1wU2VydmxldDsKKwlFeGNlcHRpb24gdGVtcEV4Y2VwdGlvbjsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRlbXBTZXJ2bGV0ID0gc2VydmxldENvbmZpZy5nZXRT
ZXJ2bGV0KCk7CisJICAgIHRlbXBFeGNlcHRpb24gPSBudWxsOworCX0gY2F0Y2ggKEV4Y2VwdGlv
biBlKSB7CisJCXRlbXBTZXJ2bGV0ID0gbnVsbDsKKwkJdGVtcEV4Y2VwdGlvbiA9IGU7CisgICAg
ICAgIH0KKwlmaW5hbCBTZXJ2bGV0IHNlcnZsZXQgPSB0ZW1wU2VydmxldDsKKwlmaW5hbCBFeGNl
cHRpb24gaW5zdGFudGlhdGlvbkV4Y2VwdGlvbiA9IHRlbXBFeGNlcHRpb247CisKKwlyZXR1cm4g
bmV3IGphdmF4LnNlcnZsZXQuUmVxdWVzdERpc3BhdGNoZXIoKSB7CisJCXB1YmxpYyB2b2lkIGZv
cndhcmQoIFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QsIFNlcnZsZXRSZXNwb25zZSByZXNwb25zZSAp
IHRocm93cyBTZXJ2bGV0RXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CisJCQlpZihpbnN0YW50aWF0
aW9uRXhjZXB0aW9uIT1udWxsKSB7IAorCQkJCWlmKGluc3RhbnRpYXRpb25FeGNlcHRpb24gaW5z
dGFuY2VvZiBTZXJ2bGV0RXhjZXB0aW9uKSB7CisJCQkJCXRocm93IChTZXJ2bGV0RXhjZXB0aW9u
KSBpbnN0YW50aWF0aW9uRXhjZXB0aW9uOworCQkJCX0gZWxzZSB7CisJCQkJCVNlcnZsZXRFeGNl
cHRpb24gZSA9IG5ldyBTZXJ2bGV0RXhjZXB0aW9uKGluc3RhbnRpYXRpb25FeGNlcHRpb24uZ2V0
TWVzc2FnZSgpKTsKKwkJCQkJZS5pbml0Q2F1c2UoaW5zdGFudGlhdGlvbkV4Y2VwdGlvbik7CisJ
CQkJCXRocm93IGU7CisJCQkJfQorCQkJfQorCQkJaWYoc2VydmxldENvbmZpZy5nZXRKc3BGaWxl
KCkhPW51bGwpIHsKKwkJCQlyZXF1ZXN0LnNldEF0dHJpYnV0ZSgib3JnLmFwYWNoZS5jYXRhbGlu
YS5qc3BfZmlsZSIsIHNlcnZsZXRDb25maWcuZ2V0SnNwRmlsZSgpKTsKKwkJCX0KKwkJCXJlc3Bv
bnNlLnJlc2V0KCk7CisJCQlzZXJ2bGV0LnNlcnZpY2UoIHJlcXVlc3QsIHJlc3BvbnNlICk7CisJ
CX0KKwkJcHVibGljIHZvaWQgaW5jbHVkZSggU2VydmxldFJlcXVlc3QgcmVxdWVzdCwgU2Vydmxl
dFJlc3BvbnNlIHJlc3BvbnNlICkgdGhyb3dzIFNlcnZsZXRFeGNlcHRpb24sIElPRXhjZXB0aW9u
IHsKKwkJCWlmKGluc3RhbnRpYXRpb25FeGNlcHRpb24hPW51bGwpIHsgCisJCQkJaWYoaW5zdGFu
dGlhdGlvbkV4Y2VwdGlvbiBpbnN0YW5jZW9mIFNlcnZsZXRFeGNlcHRpb24pIHsKKwkJCQkJdGhy
b3cgKFNlcnZsZXRFeGNlcHRpb24pIGluc3RhbnRpYXRpb25FeGNlcHRpb247CisJCQkJfSBlbHNl
IHsKKwkJCQkJU2VydmxldEV4Y2VwdGlvbiBlID0gbmV3IFNlcnZsZXRFeGNlcHRpb24oaW5zdGFu
dGlhdGlvbkV4Y2VwdGlvbi5nZXRNZXNzYWdlKCkpOworCQkJCQllLmluaXRDYXVzZShpbnN0YW50
aWF0aW9uRXhjZXB0aW9uKTsKKwkJCQkJdGhyb3cgZTsKKwkJCQl9CisJCQl9CisJCQlpZihzZXJ2
bGV0Q29uZmlnLmdldEpzcEZpbGUoKSE9bnVsbCkgeworCQkJCXJlcXVlc3Quc2V0QXR0cmlidXRl
KCJvcmcuYXBhY2hlLmNhdGFsaW5hLmpzcF9maWxlIiwgc2VydmxldENvbmZpZy5nZXRKc3BGaWxl
KCkpOworCQkJfQorCQkJc2VydmxldC5zZXJ2aWNlKCByZXF1ZXN0LCByZXNwb25zZSApOworCQl9
CisJfTsKICAgICB9CiAKIAo=
--0016e6475cca9692f8047bcb66d5
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev
--0016e6475cca9692f8047bcb66d5
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Httpunit-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/httpunit-develop
--0016e6475cca9692f8047bcb66d5--