Changeset 5415
- Timestamp:
- 06/30/14 22:41:52 (10 years ago)
- Location:
- OAIProvider/trunk/src/main/java/eu/clarin/oai/provider/impl
- Files:
-
- 1 deleted
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
OAIProvider/trunk/src/main/java/eu/clarin/oai/provider/impl/OAIProvider.java
r1926 r5415 38 38 private Timer timer = new Timer("OAI-Provider-Maintenance", true); 39 39 private AtomicBoolean isAvailable = new AtomicBoolean(true); 40 private IPFilter ipfilter = new IPFilter();41 40 private RepositoryAdapter repository; 42 41 … … 45 44 throw new NullPointerException("repository == null"); 46 45 } 47 46 48 47 // register basic verbs 49 48 this.registerVerb(new VerbIdentify()); … … 74 73 i.remove(); 75 74 logger.debug("resumption token with id '{}' " + 76 " expired", token.getId()); 75 " expired", token.getId()); 77 76 } 78 77 } // synchronized (token) … … 91 90 } 92 91 93 public IPFilter getIPFilter() {94 return ipfilter;95 }96 97 92 public void shutdown() { 98 93 timer.cancel(); … … 102 97 HttpServletResponse response) { 103 98 try { 104 final String remoteAddr = request.getRemoteAddr(); 105 if (ipfilter.accept(remoteAddr)) { 106 try { 107 if (isAvailable.get()) { 108 doProcess(request, response); 109 } else { 110 response.setHeader("Retry-After", "3600"); 111 sendHttpResponse(response, 112 HttpServletResponse.SC_SERVICE_UNAVAILABLE, 113 "The OAI provider is currently not available."); 114 } 115 } catch (OAIException e) { 116 logger.error("An error internal error occured", e); 117 sendHttpResponse( 118 response, 119 HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 120 "An internal error occured", e); 121 } catch (XMLStreamException e) { 122 logger.error("An error occured while serializing reponse", e); 123 sendHttpResponse( 124 response, 125 HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 126 "An error occured while serializing reponse", e); 127 } 128 } else { 129 logger.warn("request denied for remote host {}", remoteAddr); 130 sendHttpResponse(response, HttpServletResponse.SC_FORBIDDEN, 131 "The OAI provider will not serve you."); 99 try { 100 if (isAvailable.get()) { 101 doProcess(request, response); 102 } else { 103 response.setHeader("Retry-After", "3600"); 104 sendHttpResponse(response, 105 HttpServletResponse.SC_SERVICE_UNAVAILABLE, 106 "The OAI provider is currently not available."); 107 } 108 } catch (OAIException e) { 109 logger.error("An error internal error occured", e); 110 sendHttpResponse(response, 111 HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 112 "An internal error occured", e); 113 } catch (XMLStreamException e) { 114 logger.error("An error occured while serializing reponse", e); 115 sendHttpResponse(response, 116 HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 117 "An error occured while serializing reponse", e); 132 118 } 133 119 } catch (IOException e) { … … 177 163 /* 178 164 * special handling of resumptionToken, because if it is 179 * available is must be the only argument. 165 * available is must be the only argument. 180 166 */ 181 167 if (verb.supportsArgument(DefaultArguments.ARG_RESUMPTIONTOKEN) && … … 302 288 // remove from unhandled argument list 303 289 remaining.remove(arg.getName()); 304 290 305 291 // check if valid 306 292 Object parsedValue = … … 338 324 } 339 325 340 326 341 327 private void sendHttpResponse(HttpServletResponse response, int status, 342 328 String message) throws IOException { 343 329 sendHttpResponse(response, status, message, null); 344 330 } 345 331 346 332 347 333 private void sendHttpResponse(HttpServletResponse response, int status,
Note: See TracChangeset
for help on using the changeset viewer.