Changes for page ERRest In Depth
Last modified by Pascal Robert on 2012/06/10 16:01
From version 42.1
edited by Pascal Robert
on 2012/06/10 15:08
on 2012/06/10 15:08
Change comment:
There is no comment for this version
To version 45.1
edited by Pascal Robert
on 2012/06/10 16:01
on 2012/06/10 16:01
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -20,16 +20,112 @@ 20 20 21 21 {{code}} 22 22 23 -Application.dispatchRequest -> 24 -ERXRouteRequestHandler.handleRequest -> 25 -ERXRouteRequestHandler._handleRequest -> 26 -RestEntitiesController(ERXRouteController).performActionNamed -> 27 -RestEntitiesController(ERXRouteController).performRouteActionNamed -> RestEntitiesController(ERXRouteController).performActionWithArguments(Method, Object...) -> 28 -Method.invoke -> ... 23 +Application.dispatchRequest -> 24 +ERXRouteRequestHandler.handleRequest -> 25 +ERXRouteRequestHandler._handleRequest -> 26 +RestEntitiesController(ERXRouteController).performActionNamed(String actionName, false throwExceptions) -> 27 +RestEntitiesController(ERXRouteController).performRouteActionNamed -> RestEntitiesController(ERXRouteController).performActionWithArguments(Method, Object...) -> 28 +Method.invoke -> ... 29 29 RestEntitiesController.indexAction() 30 30 31 31 {{/code}} 32 32 33 +performActionNamed: 34 + 35 +{{code}} 36 + 37 +if (transactionAdaptor.transactionsEnabled() && !transactionAdaptor.isExecutingTransaction(context(), request())) { 38 + if (!transactionAdaptor.willHandleRequest(context(), request())) { 39 + if (transactionAdaptor.didHandleRequest(context(), request())) { 40 + results = stringResponse("Transaction request enqueued."); 41 + } else { 42 + results = stringResponse("Transaction executed."); 43 + } 44 + } 45 +} 46 + 47 +if (results == null) { 48 + checkAccess(); 49 +} 50 + 51 +if (results == null && isAutomaticHtmlRoutingEnabled() && format() == ERXRestFormat.html()) { 52 + results = performHtmlActionNamed(actionName); 53 +} 54 + 55 +if (results == null) { 56 + results = performRouteActionNamed(actionName); 57 +} 58 + 59 +if (results == null) { 60 + results = response(null, ERXKeyFilter.filterWithAttributes()); 61 +} 62 +else if (results instanceof IERXRouteComponent) { 63 + _takeRouteParametersFromRequest(results); 64 +} 65 + 66 +{{/code}} 67 + 68 +ERXRouteController.checkAccess() 69 + 70 +Will do nothing by default. Override it to check for security. 71 + 72 +{{code}} 73 + 74 +protected void checkAccess() throws SecurityException { 75 +} 76 + 77 +{{/code}} 78 + 79 +ERXRouteController.performHtmlActionNamed 80 + 81 +{{code}} 82 + 83 + protected WOActionResults performHtmlActionNamed(String actionName) throws Exception { 84 + WOActionResults results = null; 85 + 86 + String pageName = pageNameForAction(actionName); 87 + if (_NSUtilities.classWithName(pageName) != null) { 88 + try { 89 + results = pageWithName(pageName); 90 + if (!(results instanceof IERXRouteComponent)) { 91 + log.error(pageName + " does not implement IERXRouteComponent, so it will be ignored."); 92 + results = null; 93 + } 94 + } 95 + catch (WOPageNotFoundException e) { 96 + log.info(pageName + " does not exist, falling back to route controller."); 97 + results = null; 98 + } 99 + } 100 + else { 101 + log.info(pageName + " does not exist, falling back to route controller."); 102 + } 103 + 104 + if (results == null && shouldFailOnMissingHtmlPage()) { 105 + results = performUnknownAction(actionName); 106 + } 107 + 108 + return results; 109 + } 110 + 111 +{{/code}} 112 + 113 +{{code}} 114 + 115 + protected String pageNameForAction(String actionName) { 116 + return entityName() + ERXStringUtilities.capitalize(actionName) + "Page"; 117 + } 118 + 119 +{{/code}} 120 + 121 +{{code}} 122 + 123 + protected boolean shouldFailOnMissingHtmlPage() { 124 + return false; 125 + } 126 + 127 +{{/code}} 128 + 33 33 ERXRestUtils 34 34 35 35 request > route