Changeset 36396

Show
Ignore:
Timestamp:
01/10/10 15:17:13 (3 years ago)
Author:
int128
Message:

複数のListenerに対応

Location:
lang/java/misc/oauth-filter/src/org/hidetake/util/oauth
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/java/misc/oauth-filter/src/org/hidetake/util/oauth/OAuthValidationFilter.java

    r36391 r36396  
    2828 *  
    2929 * <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> 
    3232 * </ul> 
    3333 *  
     
    5353        private final OAuthValidator validator = new SimpleOAuthValidator(); 
    5454        private OAuthAccessor accessor; 
    55         private ValidationEventListener eventListener; 
     55        private List<ValidationEventListener> eventListeners; 
    5656 
    5757        @Override 
     
    7070                        } 
    7171 
    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) { 
    7675                        } 
    7776                        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                                } 
    7982                        } 
    8083                } 
     
    100103                        // construct a message object 
    101104                        StringBuilder url = parseRequestUrl(hreq); 
    102                         if(eventListener == null) { 
    103                         } 
    104                         else { 
     105                        for(ValidationEventListener eventListener : eventListeners) { 
    105106                                eventListener.manipulateURL(url, hreq); 
    106107                        } 
     
    110111                        // validate signature 
    111112                        validator.validateMessage(message, accessor); 
    112                         if(eventListener == null) { 
    113                         } 
    114                         else { 
     113                        for(ValidationEventListener eventListener : eventListeners) { 
    115114                                eventListener.onValidationComplete(hres); 
    116115                        } 
     
    118117                } 
    119118                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 
    121125                                hres.sendError(HttpServletResponse.SC_FORBIDDEN); 
    122126                        } 
    123                         else { 
    124                                 eventListener.onOAuthException(hres); 
    125                         } 
    126127                } 
    127128                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 
    129135                                hres.sendError(HttpServletResponse.SC_FORBIDDEN); 
    130                         } 
    131                         else { 
    132                                 eventListener.onURISyntaxException(hres); 
    133136                        } 
    134137                } 
  • lang/java/misc/oauth-filter/src/org/hidetake/util/oauth/ValidationEventListener.java

    r36387 r36396  
    2323         * <p>Default implementation: sends 403 response to web browser.</p> 
    2424         *  
     25         * @return true if response has been sent, false otherwise  
     26         * @param request servlet request object 
    2527         * @param response servlet response object 
     28         * @param e exception 
    2629         */ 
    27         public void onOAuthException(HttpServletResponse response); 
     30        public boolean onOAuthException(HttpServletRequest request, HttpServletResponse response, OAuthException e); 
    2831 
    2932        /** 
     
    3235         * <p>Default implementation: sends 403 response to web browser.</p> 
    3336         *  
     37         * @return true if response has been sent, false otherwise  
     38         * @param request servlet request object 
    3439         * @param response servlet response object 
     40         * @param e exception 
    3541         */ 
    36         public void onURISyntaxException(HttpServletResponse response); 
     42        public boolean onURISyntaxException(HttpServletRequest request, HttpServletResponse response, URISyntaxException e); 
    3743 
    3844        /**