diff options
Diffstat (limited to 'id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/RequestManager.java')
-rw-r--r-- | id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/RequestManager.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/RequestManager.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/RequestManager.java new file mode 100644 index 000000000..a043bfde5 --- /dev/null +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/RequestManager.java @@ -0,0 +1,48 @@ +package at.gv.egovernment.moa.id.protocols.pvp2x.requestHandler; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import at.gv.egovernment.moa.id.MOAIDException; +import at.gv.egovernment.moa.id.auth.data.AuthenticationSession; +import at.gv.egovernment.moa.id.protocols.pvp2x.binding.MOARequest; +import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.SAMLRequestNotSupported; + +public class RequestManager { + + private static RequestManager instance = null; + + private List<IRequestHandler> handler; + + public static synchronized RequestManager getInstance() { + if(instance == null) { + instance = new RequestManager(); + } + return instance; + } + + private RequestManager() { + handler = new ArrayList<IRequestHandler>(); + handler.add(new AuthnRequestHandler()); + handler.add(new ArtifactResolution()); + } + + public void handle(MOARequest obj, HttpServletRequest req, HttpServletResponse resp, AuthenticationSession moasession) + throws SAMLRequestNotSupported, MOAIDException { + Iterator<IRequestHandler> it = handler.iterator(); + while(it.hasNext()) { + IRequestHandler handler = it.next(); + if(handler.handleObject(obj)) { + handler.process(obj, req, resp, moasession); + return; + } + } + + // not handled + throw new SAMLRequestNotSupported(); + } +} |