001: /**********************************************************************************
002: * $URL: https://source.sakaiproject.org/svn/portal/tags/sakai_2-4-1/portal-api/api/src/java/org/sakaiproject/portal/api/PortalHandler.java $
003: * $Id: PortalHandler.java 29143 2007-04-19 01:10:38Z ajpoland@iupui.edu $
004: ***********************************************************************************
005: *
006: * Copyright (c) 2003, 2004, 2005, 2006, 2007 The Sakai Foundation.
007: *
008: * Licensed under the Educational Community License, Version 1.0 (the "License");
009: * you may not use this file except in compliance with the License.
010: * You may obtain a copy of the License at
011: *
012: * http://www.opensource.org/licenses/ecl1.php
013: *
014: * Unless required by applicable law or agreed to in writing, software
015: * distributed under the License is distributed on an "AS IS" BASIS,
016: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: * See the License for the specific language governing permissions and
018: * limitations under the License.
019: *
020: **********************************************************************************/package org.sakaiproject.portal.api;
021:
022: import java.io.IOException;
023:
024: import javax.servlet.ServletContext;
025: import javax.servlet.ServletException;
026: import javax.servlet.http.HttpServletRequest;
027: import javax.servlet.http.HttpServletResponse;
028:
029: import org.sakaiproject.tool.api.Session;
030:
031: /**
032: * Tools that want to add handlers into the portal URL space may impliment this
033: * interface. The once injected into the portal the portal will invoke the
034: * register and deregister methods as part of the life cycle.
035: *
036: * @author ieb
037: * @since Sakai 2.4
038: * @version $Rev: 29143 $
039: */
040: public interface PortalHandler {
041:
042: /**
043: * Return codes, stop processing immediately
044: */
045: public static final int ABORT = 0;
046:
047: /**
048: * Stop processing
049: */
050: public static final int END = 1;
051:
052: /**
053: * try next handler
054: */
055: public static final int NEXT = 2;
056:
057: /**
058: * stop processing and mark reset as done
059: */
060: public static final int RESET_DONE = 3;
061:
062: /**
063: * Perform a get, the method should inspect parts[] and other parameters to
064: * determin if it should perform the operation, returning one of the above
065: * codes
066: *
067: * @param parts
068: * @param req
069: * @param res
070: * @param session
071: * @return
072: * @throws IOException
073: * @throws ServletException
074: * @throws ToolHandlerException
075: */
076: int doGet(String[] parts, HttpServletRequest req,
077: HttpServletResponse res, Session session)
078: throws PortalHandlerException;
079:
080: /**
081: * get the fragment of the URL that represents part[1] and is used to
082: * register the handler in the portal.
083: *
084: * @return
085: */
086: String getUrlFragment();
087:
088: /**
089: * deregister the the portal, invoked by the portal
090: *
091: * @param portal
092: */
093: void deregister(Portal portal);
094:
095: /**
096: * register this handler with the portal, invoked by the portal
097: *
098: * @param portal
099: * @param portalService
100: * @param servletContext
101: */
102: void register(Portal portal, PortalService portalService,
103: ServletContext servletContext);
104:
105: /**
106: * perform a post but only accept it the handler accepts a post.
107: *
108: * @param parts
109: * @param req
110: * @param res
111: * @param session
112: * @return
113: * @throws PortalHandlerException
114: */
115: int doPost(String[] parts, HttpServletRequest req,
116: HttpServletResponse res, Session session)
117: throws PortalHandlerException;
118: }
|