diff --git a/src/zutil/net/http/page/HttpDigestAuthPage.java b/src/zutil/net/http/page/HttpDigestAuthPage.java
index e6084cb..cdf8ea7 100755
--- a/src/zutil/net/http/page/HttpDigestAuthPage.java
+++ b/src/zutil/net/http/page/HttpDigestAuthPage.java
@@ -15,13 +15,12 @@ import java.util.Map;
import java.util.logging.Logger;
/**
- * A abstract page that requires HTTP Digest authentication
- * to access the subclass HttpPage.
+ * A class that encapsulates a HttpPage around a HTTP Digest authentication requirement.
*
* @see rfc2069
* @author Ziver
*/
-public abstract class HttpDigestAuthPage implements HttpPage{
+public class HttpDigestAuthPage implements HttpPage{
private static final Logger logger = LogUtil.getLogger();
private static final String DEFAULT_REALM = "Login";
@@ -41,8 +40,17 @@ public abstract class HttpDigestAuthPage implements HttpPage{
private String realm = DEFAULT_REALM;
private HashMap userMap = new HashMap<>();
private SecureRandom secRandom = new SecureRandom();
+ private HttpPage targetPage;
+ /**
+ *
+ * @param page
+ */
+ public HttpDigestAuthPage(HttpPage page){
+ targetPage = page;
+ }
+
public void setRealm(String realm){
this.realm = realm;
@@ -84,7 +92,7 @@ public abstract class HttpDigestAuthPage implements HttpPage{
authMap.get(AUTH_RESPONSE))) {
// Safe area, user authenticated
logger.fine("User '"+authMap.get(AUTH_USERNAME)+"' has been authenticated for realm '"+realm+"'");
- authRespond(out, headers, session, cookie, request);
+ targetPage.respond(out, headers, session, cookie, request);
}
else{
out.setStatusCode(403);
@@ -154,10 +162,4 @@ public abstract class HttpDigestAuthPage implements HttpPage{
}
- public abstract void authRespond(HttpPrintStream out,
- HttpHeader headers,
- Map session,
- Map cookie,
- Map request) throws IOException;
-
}
diff --git a/test/zutil/net/http/page/HttpDigestAuthPageTest.java b/test/zutil/net/http/page/HttpDigestAuthPageTest.java
index 36c7b5c..9911db2 100755
--- a/test/zutil/net/http/page/HttpDigestAuthPageTest.java
+++ b/test/zutil/net/http/page/HttpDigestAuthPageTest.java
@@ -7,10 +7,7 @@ import org.junit.BeforeClass;
import org.junit.Test;
import zutil.Hasher;
import zutil.io.IOUtil;
-import zutil.net.http.HttpHeader;
-import zutil.net.http.HttpHeaderParser;
-import zutil.net.http.HttpPrintStream;
-import zutil.net.http.HttpTestUtil;
+import zutil.net.http.*;
import java.io.IOException;
import java.util.HashMap;
@@ -26,11 +23,11 @@ public class HttpDigestAuthPageTest {
private static final String PAGE_USERNAME = "username";
private static final String PAGE_PASSWORD = "password";
- private HttpDigestTestPage page;
+ private HttpDigestAuthPage page;
@Before
public void init(){
- page = new HttpDigestTestPage();
+ page = new HttpDigestAuthPage(new TestPage());
page.addUser(PAGE_USERNAME, PAGE_PASSWORD.toCharArray());
}
@@ -113,9 +110,9 @@ public class HttpDigestAuthPageTest {
return authHeaders;
}
- private static class HttpDigestTestPage extends HttpDigestAuthPage{
+ private static class TestPage implements HttpPage {
@Override
- public void authRespond(HttpPrintStream out,
+ public void respond(HttpPrintStream out,
HttpHeader headers,
Map session,
Map cookie,