comparison src/goodjava/webserver/handlers/DomainHandler.java @ 1850:64b7076c635c default tip

better link_to_domain
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 22 Feb 2025 20:26:31 -0700
parents 9d9683e76496
children
comparison
equal deleted inserted replaced
1849:9f2680fe532b 1850:64b7076c635c
20 public final class DomainHandler implements Handler { 20 public final class DomainHandler implements Handler {
21 private static final Logger logger = LoggerFactory.getLogger(DomainHandler.class); 21 private static final Logger logger = LoggerFactory.getLogger(DomainHandler.class);
22 22
23 public interface Factory { 23 public interface Factory {
24 public Handler newHandler(String domain); 24 public Handler newHandler(String domain);
25 }
26
27 public interface HandlerCloseable extends Closeable {
28 public boolean isClosed();
25 } 29 }
26 30
27 private static class MyTask extends TimerTask { 31 private static class MyTask extends TimerTask {
28 private final Set<Handler> dontGc; 32 private final Set<Handler> dontGc;
29 33
68 72
69 public Handler getHandler(String domain) { 73 public Handler getHandler(String domain) {
70 domain = domain.toLowerCase().intern(); 74 domain = domain.toLowerCase().intern();
71 synchronized(domain) { 75 synchronized(domain) {
72 Handler handler = map.get(domain); 76 Handler handler = map.get(domain);
77 if( handler instanceof HandlerCloseable && ((HandlerCloseable)handler).isClosed() ) {
78 removeHandler(domain);
79 handler = null;
80 }
73 if( handler == null ) { 81 if( handler == null ) {
74 //if(ref!=null) logger.info("gc "+domain); 82 //if(ref!=null) logger.info("gc "+domain);
75 handler = factory.newHandler(domain); 83 handler = factory.newHandler(domain);
76 if( handler == null ) 84 if( handler == null )
77 return null; 85 return null;