From 4d253a518cdd889ad84c8f873aa615e14b6d9ca8 Mon Sep 17 00:00:00 2001
From: ulrich
Date: Fri, 23 Feb 2024 12:35:51 +0000
Subject: [PATCH] Filter hinzugefuegt

---
 src/de/uhilger/neon/Factory.java |   29 ++++++++++++++++++++++++++---
 1 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/src/de/uhilger/neon/Factory.java b/src/de/uhilger/neon/Factory.java
index b6550ba..6e2f441 100644
--- a/src/de/uhilger/neon/Factory.java
+++ b/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,32 @@
               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);
+        //}
+        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);

--
Gitblit v1.9.3