Changeset 36396
- Timestamp:
- 01/10/10 15:17:13 (3 years ago)
- Location:
- lang/java/misc/oauth-filter/src/org/hidetake/util/oauth
- Files:
-
- 2 modified
-
OAuthValidationFilter.java (modified) (6 diffs)
-
ValidationEventListener.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/java/misc/oauth-filter/src/org/hidetake/util/oauth/OAuthValidationFilter.java
r36391 r36396 28 28 * 29 29 * <ul> 30 * <li>net.oauth.OAuthAccessor: Required .</li>31 * <li>org.hidetake.util.oauth.ValidationEventListener: Optional .</li>30 * <li>net.oauth.OAuthAccessor: Required, specify an accessor class.</li> 31 * <li>org.hidetake.util.oauth.ValidationEventListener: Optional, specify event listeners, comma separated.</li> 32 32 * </ul> 33 33 * … … 53 53 private final OAuthValidator validator = new SimpleOAuthValidator(); 54 54 private OAuthAccessor accessor; 55 private ValidationEventListener eventListener;55 private List<ValidationEventListener> eventListeners; 56 56 57 57 @Override … … 70 70 } 71 71 72 // load event listener 73 String eventHandlerName = config.getInitParameter("org.hidetake.util.oauth.ValidationEventListener"); 74 if(eventHandlerName == null) { 75 eventListener = null; 72 // load event listeners 73 String eventListenerNames = config.getInitParameter("org.hidetake.util.oauth.ValidationEventListener"); 74 if(eventListenerNames == null) { 76 75 } 77 76 else { 78 eventListener = (ValidationEventListener) Class.forName(eventHandlerName).newInstance(); 77 for(String eventListenerName : eventListenerNames.split(",")) { 78 ValidationEventListener eventListener = 79 (ValidationEventListener) Class.forName(eventListenerName).newInstance(); 80 eventListeners.add(eventListener); 81 } 79 82 } 80 83 } … … 100 103 // construct a message object 101 104 StringBuilder url = parseRequestUrl(hreq); 102 if(eventListener == null) { 103 } 104 else { 105 for(ValidationEventListener eventListener : eventListeners) { 105 106 eventListener.manipulateURL(url, hreq); 106 107 } … … 110 111 // validate signature 111 112 validator.validateMessage(message, accessor); 112 if(eventListener == null) { 113 } 114 else { 113 for(ValidationEventListener eventListener : eventListeners) { 115 114 eventListener.onValidationComplete(hres); 116 115 } … … 118 117 } 119 118 catch (OAuthException e) { 120 if(eventListener == null) { 119 boolean sent = false; 120 for(ValidationEventListener eventListener : eventListeners) { 121 sent |= eventListener.onOAuthException(hreq, hres, e); 122 } 123 if(!sent) { 124 // default behavior 121 125 hres.sendError(HttpServletResponse.SC_FORBIDDEN); 122 126 } 123 else {124 eventListener.onOAuthException(hres);125 }126 127 } 127 128 catch (URISyntaxException e) { 128 if(eventListener == null) { 129 boolean sent = false; 130 for(ValidationEventListener eventListener : eventListeners) { 131 sent |= eventListener.onURISyntaxException(hreq, hres, e); 132 } 133 if(!sent) { 134 // default behavior 129 135 hres.sendError(HttpServletResponse.SC_FORBIDDEN); 130 }131 else {132 eventListener.onURISyntaxException(hres);133 136 } 134 137 } -
lang/java/misc/oauth-filter/src/org/hidetake/util/oauth/ValidationEventListener.java
r36387 r36396 23 23 * <p>Default implementation: sends 403 response to web browser.</p> 24 24 * 25 * @return true if response has been sent, false otherwise 26 * @param request servlet request object 25 27 * @param response servlet response object 28 * @param e exception 26 29 */ 27 public void onOAuthException(HttpServletResponse response);30 public boolean onOAuthException(HttpServletRequest request, HttpServletResponse response, OAuthException e); 28 31 29 32 /** … … 32 35 * <p>Default implementation: sends 403 response to web browser.</p> 33 36 * 37 * @return true if response has been sent, false otherwise 38 * @param request servlet request object 34 39 * @param response servlet response object 40 * @param e exception 35 41 */ 36 public void onURISyntaxException(HttpServletResponse response);42 public boolean onURISyntaxException(HttpServletRequest request, HttpServletResponse response, URISyntaxException e); 37 43 38 44 /**
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)