Ultrakompakter HTTP Server
ulrich
2024-11-14 ca79593d7659cd9c6dcdd38692888b26dcbef4f5
src/de/uhilger/neon/Factory.java
@@ -19,6 +19,7 @@
import com.google.gson.Gson;
import com.sun.net.httpserver.Authenticator;
import com.sun.net.httpserver.Filter;
import com.sun.net.httpserver.HttpContext;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
@@ -161,6 +162,7 @@
          IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException {
    Map<String, HttpHandler> sharedHandlers = new HashMap();
    Iterator<ContextDescriptor> contextIterator = contextList.iterator();
    Authenticator auth = null;
    while (contextIterator.hasNext()) {
      ContextDescriptor cd = contextIterator.next();
      HttpHandler h = buildHandler(cd, sharedHandlers);
@@ -180,11 +182,34 @@
              ctx.getAttributes().put("serverDataProviderList", sdp);
          }
        }        
        Authenticator auth = createAuthenticator(d);
        if (auth instanceof Authenticator && cd.authenticator instanceof String) {
        if(cd.authenticator instanceof String) {
          if(!(auth instanceof Authenticator)) {
            auth = createAuthenticator(d);
          }
          if(auth instanceof Authenticator) {
            ctx.setAuthenticator(auth);      
            ctx.getAttributes().putAll(d.authenticator.attributes);
            fireAuthenticatorCreated(ctx, auth);
            fireAuthenticatorCreated(ctx, auth); // event umbenennen in etwas wie authAdded oder so
          }
        }
        //Authenticator auth = createAuthenticator(d);
        //if (auth instanceof Authenticator && cd.authenticator instanceof String) {
        //    ctx.setAuthenticator(auth);
        //    ctx.getAttributes().putAll(d.authenticator.attributes);
        //    fireAuthenticatorCreated(ctx, auth);
        //}
        if(cd.filter != null) {
          for(String filterClassName : cd.filter) {
            //
            Object filterObj = Class.forName(filterClassName)
                  .getDeclaredConstructor().newInstance();
            if(filterObj instanceof Filter) {
              Filter filter = (Filter) filterObj;
              ctx.getFilters().add(filter);
            }
          }
        }
        fireHandlerCreated(ctx, h);
        fireContextCreated(ctx);