Ultrakompakter HTTP Server
ulrich
2024-12-08 f21fac0d6f7c73c7b0bcdcc3a6ef6de000edb76d
src/de/uhilger/neon/Factory.java
@@ -17,6 +17,7 @@
 */
package de.uhilger.neon;
import de.uhilger.neon.entity.ActorDescriptor;
import com.google.gson.Gson;
import com.sun.net.httpserver.Authenticator;
import com.sun.net.httpserver.Filter;
@@ -48,6 +49,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import de.uhilger.neon.Scanner.ScannerListener;
import java.util.Set;
/**
 * Einen Neon-Server aus einer Beschreibungsdatei herstellen
@@ -67,7 +69,7 @@
 */
public class Factory implements ScannerListener {
  
  private Map<String, List<TempActor>> actorMap;
  private Map<String, List<ActorDescriptor>> actorMap;
  public Factory() {
    listeners = new ArrayList<>();
@@ -194,8 +196,8 @@
         */
        ctxAttrs.putAll(cd.attributes);
        ctxAttrs.put("serverDataProviderList", sdp);
        if (h instanceof Handler handler) {
          wire(handler, cd.attributes.get("contextName"));
        if (h instanceof Handler) {
          wire((Handler) h, cd.attributes.get("contextName"));
        }
        if (cd.authenticator instanceof String) {
          if (!(auth instanceof Authenticator)) {
@@ -212,8 +214,8 @@
            //
            Object filterObj = Class.forName(filterClassName)
                    .getDeclaredConstructor().newInstance();
            if (filterObj instanceof Filter filter) {
              ctx.getFilters().add(filter);
            if (filterObj instanceof Filter) {
              ctx.getFilters().add((Filter) filterObj);
            }
          }
        }
@@ -348,10 +350,10 @@
   * @param contextName Name des Kontext, dem der Handler zugeordnet ist
   */
  private void wire(Handler h, String contextName) {
    List<TempActor> actorList = actorMap.get(contextName);
    Iterator<TempActor> i = actorList.iterator();
    List<ActorDescriptor> actorList = actorMap.get(contextName);
    Iterator<ActorDescriptor> i = actorList.iterator();
    while(i.hasNext()) {
      TempActor actor = i.next();
      ActorDescriptor actor = i.next();
      h.setActor(actor.getHttpMethod(), actor.getRoute(), actor.getActorClassName());
    }
  }
@@ -413,13 +415,13 @@
      if (action != null) {
        List<String> actionHandlers = Arrays.asList(action.handler());
        for (String contextName : actionHandlers) {
           TempActor tempActor = new TempActor();
           ActorDescriptor tempActor = new ActorDescriptor();
           tempActor.setContextName(contextName);
           tempActor.setHttpMethod(action.type());
           tempActor.setRoute(action.route());
           tempActor.setActorClassName(foundClass.getName());
           
           List<TempActor> actorList = actorMap.get(contextName);
           List<ActorDescriptor> actorList = actorMap.get(contextName);
           if(actorList == null) {
             actorList = new ArrayList<>();
           }