You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(16) |
Sep
(10) |
Oct
(1) |
Nov
(2) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(148) |
Feb
(80) |
Mar
(41) |
Apr
(85) |
May
(247) |
Jun
(345) |
Jul
(237) |
Aug
(241) |
Sep
(439) |
Oct
(321) |
Nov
(413) |
Dec
(302) |
2004 |
Jan
(143) |
Feb
(147) |
Mar
(200) |
Apr
(107) |
May
(15) |
Jun
(36) |
Jul
(11) |
Aug
(1) |
Sep
(36) |
Oct
|
Nov
(6) |
Dec
|
2005 |
Jan
|
Feb
|
Mar
|
Apr
(115) |
May
(74) |
Jun
(215) |
Jul
(82) |
Aug
(47) |
Sep
(32) |
Oct
(8) |
Nov
(70) |
Dec
(24) |
2006 |
Jan
|
Feb
(1) |
Mar
(4) |
Apr
(2) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <mr...@us...> - 2003-01-08 05:55:26
|
Update of /cvsroot/struts/struts-resume/test/ejb/org In directory sc8-pr-cvs1:/tmp/cvs-serv30421/org Log Message: Directory /cvsroot/struts/struts-resume/test/ejb/org added to the repository |
From: <mr...@us...> - 2003-01-08 05:55:20
|
Update of /cvsroot/struts/struts-resume/test/common/org/appfuse/common/util In directory sc8-pr-cvs1:/tmp/cvs-serv30395 Added Files: BaseUtilTest.java StringUtilTest.java UtilSuite.java Log Message: --- NEW FILE: BaseUtilTest.java --- package org.appfuse.common.util; import junit.framework.TestCase; // JUnitDoclet begin import import org.appfuse.common.util.BaseUtil; // JUnitDoclet end import /** * Generated by JUnitDoclet, a tool provided by * ObjectFab GmbH under LGPL. * Please see www.junitdoclet.org, www.gnu.org * and www.objectfab.de for informations about * the tool, the licence and the authors. */ public class BaseUtilTest // JUnitDoclet begin extends_implements extends TestCase // JUnitDoclet end extends_implements { // JUnitDoclet begin class org.appfuse.common.util.BaseUtil baseutil = null; // JUnitDoclet end class public BaseUtilTest(String name) { // JUnitDoclet begin method BaseUtilTest super(name); // JUnitDoclet end method BaseUtilTest } public org.appfuse.common.util.BaseUtil createInstance() throws Exception { // JUnitDoclet begin method testcase.createInstance return new org.appfuse.common.util.BaseUtil(); // JUnitDoclet end method testcase.createInstance } protected void setUp() throws Exception { // JUnitDoclet begin method testcase.setUp super.setUp(); baseutil = createInstance(); // JUnitDoclet end method testcase.setUp } protected void tearDown() throws Exception { // JUnitDoclet begin method testcase.tearDown baseutil = null; super.tearDown(); // JUnitDoclet end method testcase.tearDown } /** * JUnitDoclet moves marker to this method, if there is not match * for them in the regenerated code and if the marker is not empty. * This way, no test gets lost when regenerating after renaming. * Method testVault is supposed to be empty. */ public void testVault() throws Exception { // JUnitDoclet begin method testcase.testVault // JUnitDoclet end method testcase.testVault } public static void main(String[] args) { // JUnitDoclet begin method testcase.main junit.textui.TestRunner.run(BaseUtilTest.class); // JUnitDoclet end method testcase.main } } --- NEW FILE: StringUtilTest.java --- package org.appfuse.common.util; import junit.framework.TestCase; // JUnitDoclet begin import import org.appfuse.common.util.StringUtil; // JUnitDoclet end import /** * Generated by JUnitDoclet, a tool provided by * ObjectFab GmbH under LGPL. * Please see www.junitdoclet.org, www.gnu.org * and www.objectfab.de for informations about * the tool, the licence and the authors. */ public class StringUtilTest // JUnitDoclet begin extends_implements extends TestCase // JUnitDoclet end extends_implements { // JUnitDoclet begin class org.appfuse.common.util.StringUtil stringutil = null; // JUnitDoclet end class public StringUtilTest(String name) { // JUnitDoclet begin method StringUtilTest super(name); // JUnitDoclet end method StringUtilTest } public org.appfuse.common.util.StringUtil createInstance() throws Exception { // JUnitDoclet begin method testcase.createInstance return new org.appfuse.common.util.StringUtil(); // JUnitDoclet end method testcase.createInstance } protected void setUp() throws Exception { // JUnitDoclet begin method testcase.setUp super.setUp(); stringutil = createInstance(); // JUnitDoclet end method testcase.setUp } protected void tearDown() throws Exception { // JUnitDoclet begin method testcase.tearDown stringutil = null; super.tearDown(); // JUnitDoclet end method testcase.tearDown } public void testEncodePassword() throws Exception { // JUnitDoclet begin method encodePassword // JUnitDoclet end method encodePassword } /** * JUnitDoclet moves marker to this method, if there is not match * for them in the regenerated code and if the marker is not empty. * This way, no test gets lost when regenerating after renaming. * Method testVault is supposed to be empty. */ public void testVault() throws Exception { // JUnitDoclet begin method testcase.testVault // JUnitDoclet end method testcase.testVault } public static void main(String[] args) { // JUnitDoclet begin method testcase.main junit.textui.TestRunner.run(StringUtilTest.class); // JUnitDoclet end method testcase.main } } --- NEW FILE: UtilSuite.java --- package org.appfuse.common.util; import junit.framework.TestSuite; // JUnitDoclet begin import // JUnitDoclet end import /** * Generated by JUnitDoclet, a tool provided by * ObjectFab GmbH under LGPL. * Please see www.junitdoclet.org, www.gnu.org * and www.objectfab.de for informations about * the tool, the licence and the authors. */ public class UtilSuite // JUnitDoclet begin extends_implements // JUnitDoclet end extends_implements { // JUnitDoclet begin class // JUnitDoclet end class public static TestSuite suite() { TestSuite suite; suite = new TestSuite("org.appfuse.common.util"); suite.addTestSuite(org.appfuse.common.util.StringUtilTest.class); suite.addTestSuite(org.appfuse.common.util.BaseUtilTest.class); // JUnitDoclet begin method suite // JUnitDoclet end method suite return suite; } public static void main(String[] args) { // JUnitDoclet begin method testsuite.main junit.textui.TestRunner.run(suite()); // JUnitDoclet end method testsuite.main } } |
From: <mr...@us...> - 2003-01-08 05:55:02
|
Update of /cvsroot/struts/struts-resume/test/common/org/appfuse/common/util In directory sc8-pr-cvs1:/tmp/cvs-serv30259/util Log Message: Directory /cvsroot/struts/struts-resume/test/common/org/appfuse/common/util added to the repository |
From: <mr...@us...> - 2003-01-08 05:54:57
|
Update of /cvsroot/struts/struts-resume/test/common/org/appfuse/common In directory sc8-pr-cvs1:/tmp/cvs-serv30239/common Log Message: Directory /cvsroot/struts/struts-resume/test/common/org/appfuse/common added to the repository |
From: <mr...@us...> - 2003-01-08 05:54:52
|
Update of /cvsroot/struts/struts-resume/test/common/org/appfuse In directory sc8-pr-cvs1:/tmp/cvs-serv30210/appfuse Log Message: Directory /cvsroot/struts/struts-resume/test/common/org/appfuse added to the repository |
From: <mr...@us...> - 2003-01-08 05:54:46
|
Update of /cvsroot/struts/struts-resume/test/common/org In directory sc8-pr-cvs1:/tmp/cvs-serv30164/org Log Message: Directory /cvsroot/struts/struts-resume/test/common/org added to the repository |
From: <mr...@us...> - 2003-01-08 05:54:39
|
Update of /cvsroot/struts/struts-resume/test/web In directory sc8-pr-cvs1:/tmp/cvs-serv30107/web Log Message: Directory /cvsroot/struts/struts-resume/test/web added to the repository |
From: <mr...@us...> - 2003-01-08 05:54:39
|
Update of /cvsroot/struts/struts-resume/test/ejb In directory sc8-pr-cvs1:/tmp/cvs-serv30107/ejb Log Message: Directory /cvsroot/struts/struts-resume/test/ejb added to the repository |
From: <mr...@us...> - 2003-01-08 05:54:39
|
Update of /cvsroot/struts/struts-resume/test/common In directory sc8-pr-cvs1:/tmp/cvs-serv30107/common Log Message: Directory /cvsroot/struts/struts-resume/test/common added to the repository |
From: <mr...@us...> - 2003-01-08 05:54:33
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/util In directory sc8-pr-cvs1:/tmp/cvs-serv30082 Added Files: BaseUtil.java ConvertUtil.java RequestUtil.java SslUtil.java Log Message: --- NEW FILE: BaseUtil.java --- package org.appfuse.webapp.util; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * BaseUtil is used as a parent class for all other classes in the * webapp.utils package. */ public class BaseUtil { //~ Instance fields ======================================================== /** The <code>Log</code> instance for this package. */ protected Log log = LogFactory.getLog("org.appfuse.webapp.util"); } --- NEW FILE: ConvertUtil.java --- package org.appfuse.webapp.util; import org.apache.commons.beanutils.ConvertUtils; //import org.apache.commons.beanutils.converters.StringConverter; //import org.apache.commons.beanutils.converters.BlankStringToNullIntegerConverter; /** * Conversion utility to convert ActionForm's String properties * to real datatypes. * * <p> * <a href="ConvertUtil.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:54:31 $ */ public class ConvertUtil extends ConvertUtils { /** singleton's private instance */ private static ConvertUtil me; static { me = new ConvertUtil(); } private ConvertUtil() { } /** returns the Service Locator instance */ static public ConvertUtil getInstance() { return me; } } --- NEW FILE: RequestUtil.java --- /** * RequestUtil utility class Good ol' copy-n-paste from <a * href="http://www.javaworld.com/javaworld/jw-02-2002/ssl/utilityclass.txt"> * http://www.javaworld.com/javaworld/jw-02-2002/ssl/utilityclass.txt</a> * which is referenced in the following article: <a * href="http://www.javaworld.com/javaworld/jw-02-2002/jw-0215-ssl.html"> * http://www.javaworld.com/javaworld/jw-02-2002/jw-0215-ssl.html</a> */ package org.appfuse.webapp.util; import org.apache.struts.util.RequestUtils; // java imports import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class RequestUtil extends BaseUtil { //~ Static fields/initializers ============================================= private static final String STOWED_REQUEST_ATTRIBS = "ssl.redirect.attrib.stowed"; //~ Methods ================================================================ //private static String ALGORITHM; /** * Creates query String from request body parameters * * @param aRequest DOCUMENT ME! * * @return DOCUMENT ME! */ public static String getRequestParameters(HttpServletRequest aRequest) { // set the ALGORIGTHM as defined for the application //ALGORITHM = (String) aRequest.getAttribute(Constants.ENC_ALGORITHM); Map m = aRequest.getParameterMap(); return createQueryStringFromMap(m, "&").toString(); } /** * Builds a query string from a given map of parameters * * @param m A map of parameters * @param ampersand String to use for ampersands (e.g. "&" or "&" ) * * @return query string (with no leading "?") */ public static StringBuffer createQueryStringFromMap(Map m, String ampersand) { StringBuffer aReturn = new StringBuffer(""); Set aEntryS = m.entrySet(); Iterator aEntryI = aEntryS.iterator(); while (aEntryI.hasNext()) { Map.Entry aEntry = (Map.Entry) aEntryI.next(); Object o = aEntry.getValue(); if (o == null) { append(aEntry.getKey(), "", aReturn, ampersand); } else if (o instanceof String) { append(aEntry.getKey(), o, aReturn, ampersand); } else if (o instanceof String[]) { String[] aValues = (String[]) o; for (int i = 0; i < aValues.length; i++) { append(aEntry.getKey(), aValues[i], aReturn, ampersand); } } else { append(aEntry.getKey(), o, aReturn, ampersand); } } return aReturn; } /** * Appends new key and value pair to query string * * @param key parameter name * @param value value of parameter * @param queryString existing query string * @param ampersand string to use for ampersand (e.g. "&" or "&") * * @return query string (with no leading "?") */ private static StringBuffer append(Object key, Object value, StringBuffer queryString, String ampersand) { if (queryString.length() > 0) { queryString.append(ampersand); } // Use encodeURL from Struts' RequestUtils class - it's JDK 1.3 and 1.4 compliant queryString.append(RequestUtils.encodeURL(key.toString())); queryString.append("="); queryString.append(RequestUtils.encodeURL(value.toString())); return queryString; } /** * Stores request attributes in session * * @param aRequest DOCUMENT ME! */ public static void stowRequestAttributes(HttpServletRequest aRequest) { if (aRequest.getSession().getAttribute(STOWED_REQUEST_ATTRIBS) != null) { return; } Enumeration enum = aRequest.getAttributeNames(); Map map = new HashMap(); while (enum.hasMoreElements()) { String name = (String) enum.nextElement(); map.put(name, aRequest.getAttribute(name)); } aRequest.getSession().setAttribute(STOWED_REQUEST_ATTRIBS, map); } /** * Returns request attributes from session to request * * @param aRequest DOCUMENT ME! */ public static void reclaimRequestAttributes(HttpServletRequest aRequest) { Map map = (Map) aRequest.getSession().getAttribute(STOWED_REQUEST_ATTRIBS); if (map == null) { return; } Iterator itr = map.keySet().iterator(); while (itr.hasNext()) { String name = (String) itr.next(); aRequest.setAttribute(name, map.get(name)); } aRequest.getSession().removeAttribute(STOWED_REQUEST_ATTRIBS); } /** * Convenience method to get a cookie by name * * @param request DOCUMENT ME! * @param name DOCUMENT ME! * * @return DOCUMENT ME! */ public static Cookie getCookie(HttpServletRequest request, String name) { Cookie[] cookies = request.getCookies(); Cookie returnCookie = null; for (int i = 0; i < cookies.length; i++) { Cookie thisCookie = cookies[i]; if (thisCookie.getName().equals(name)) { returnCookie = thisCookie; break; } } return returnCookie; } /** * Convenience method for deleting a cookie by name * * @param response DOCUMENT ME! * @param cookie DOCUMENT ME! * * @return DOCUMENT ME! */ public static HttpServletResponse deleteCookie(HttpServletResponse response, Cookie cookie) { // Delete the cookie by setting its maximum age to zero cookie.setMaxAge(0); cookie.setPath("/"); response.addCookie(cookie); return response; } } --- NEW FILE: SslUtil.java --- package org.appfuse.webapp.util; import org.appfuse.common.Constants; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; /** * SslUtil utility class Good ol' copy-n-paste from <a * href="http://www.javaworld.com/javaworld/jw-02-2002/ssl/utilityclass.txt"> * http://www.javaworld.com/javaworld/jw-02-2002/ssl/utilityclass.txt</a> * which is referenced in the following article: <a * href="http://www.javaworld.com/javaworld/jw-02-2002/jw-0215-ssl.html"> * http://www.javaworld.com/javaworld/jw-02-2002/jw-0215-ssl.html</a> */ public class SslUtil extends BaseUtil { //~ Static fields/initializers ============================================= public static final String HTTP = "http"; public static final String HTTPS = "https"; public static final String HTTP_PORT_PARAM = "listenPort_http"; public static final String HTTPS_PORT_PARAM = "listenPort_https"; private static String HTTP_PORT = null; private static String HTTPS_PORT = null; public static final String STD_HTTP_PORT = "80"; public static final String STD_HTTPS_PORT = "443"; //~ Methods ================================================================ static public String getRedirectString(HttpServletRequest request, ServletContext servletContext, boolean isSecure) { // get the port numbers from the application context HTTP_PORT = (String) servletContext.getAttribute(Constants.HTTP_PORT); HTTPS_PORT = (String) servletContext.getAttribute(Constants.HTTPS_PORT); // get the scheme we want to use for this page and // get the scheme used in this request String desiredScheme = isSecure ? HTTPS : HTTP; String usingScheme = request.getScheme(); // Determine the port number we want to use // and the port number we used in this request String desiredPort = isSecure ? HTTPS_PORT : HTTP_PORT; String usingPort = String.valueOf(request.getServerPort()); String urlString = null; // Must also check ports, because of IE multiple redirect problem if (!desiredScheme.equals(usingScheme) || !desiredPort.equals(usingPort)) { urlString = buildNewUrlString(request, desiredScheme, usingScheme, desiredPort, usingPort); // Temporarily store attributes in session RequestUtil.stowRequestAttributes(request); } else { // Retrieve attributes from session RequestUtil.reclaimRequestAttributes(request); } return urlString; } /** * Builds the URL that we will redirect to * * @param request DOCUMENT ME! * @param desiredScheme DOCUMENT ME! * @param usingScheme DOCUMENT ME! * @param desiredPort DOCUMENT ME! * @param usingPort DOCUMENT ME! * * @return DOCUMENT ME! */ private static String buildNewUrlString(HttpServletRequest request, String desiredScheme, String usingScheme, String desiredPort, String usingPort) { StringBuffer url = request.getRequestURL(); url.replace(0, usingScheme.length(), desiredScheme); // Find the port used within the URL string int startIndex = url.toString().indexOf(usingPort); if (startIndex == -1) { // Port not found in URL if ((!(STD_HTTPS_PORT.equals(desiredPort) && HTTPS.equals(desiredScheme))) && (!(STD_HTTP_PORT.equals(desiredPort) && HTTP.equals(desiredScheme)))) { startIndex = url.toString().indexOf("/", url.toString().indexOf("/", url.toString() .indexOf("/") + 1) + 1); url.insert(startIndex, ":" + desiredPort); } } else { // Port found in URL if ((STD_HTTPS_PORT.equals(desiredPort) && HTTPS.equals(desiredScheme)) || (STD_HTTP_PORT.equals(desiredPort) && HTTP.equals(desiredScheme))) { url.delete(startIndex - 1, startIndex + usingPort.length()); } else { // desired port is not a default port // Replace requested port with desired port number in URL string url.replace(startIndex, startIndex + usingPort.length(), desiredPort); } } // add query string, if any String queryString = request.getQueryString(); if ((queryString != null) && (queryString.length() != 0)) { url.append("?" + queryString); } else { queryString = RequestUtil.getRequestParameters(request); if ((queryString != null) && (queryString.length() != 0)) { url.append("?" + queryString); } } return url.toString(); } } |
From: <mr...@us...> - 2003-01-08 05:54:23
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/taglib In directory sc8-pr-cvs1:/tmp/cvs-serv30030 Added Files: LabelTag.java Secure.java Log Message: --- NEW FILE: LabelTag.java --- package org.appfuse.webapp.taglib; import java.util.Iterator; import java.util.Locale; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.TagSupport; import org.apache.commons.validator.Field; import org.apache.commons.validator.Form; import org.apache.commons.validator.ValidatorResources; import org.apache.struts.Globals; import org.apache.struts.action.Action; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMapping; import org.apache.struts.util.RequestUtils; import org.apache.struts.util.ResponseUtils; import org.apache.struts.validator.ValidatorPlugIn; /** * <p>This class is designed to render a <label> tag for labeling your forms and * adds an asterik (*) for required fields. It was originally written by Erik * Hatcher (http://www.ehatchersolutions.com/JavaDevWithAnt/).</p> * * <p>It is designed to be used as follows: * <pre><appfuse:label key="userForm.username" /></pre> * </p> * * @jsp.tag name="label" bodycontent="empty" */ public class LabelTag extends TagSupport { protected String key = null; protected String styleClass = null; protected String errorClass = null; public int doStartTag() throws JspException { // Look up this key to see if its a field of the current form boolean requiredField = false; boolean validationError = false; ValidatorResources resources = (ValidatorResources) pageContext.getServletContext().getAttribute( ValidatorPlugIn.VALIDATOR_KEY); ActionMapping mapping = (ActionMapping) pageContext.getAttribute( Globals.MAPPING_KEY, PageContext.REQUEST_SCOPE); Locale locale = (Locale) pageContext.getAttribute( Globals.LOCALE_KEY, PageContext.SESSION_SCOPE); if (locale == null) { locale = Locale.getDefault(); } String formName = mapping.getAttribute(); System.out.println("formName: " + formName); String fieldName = key.substring(formName.length() + 1); if (resources != null) { Form form = resources.get(locale, formName); if (form != null) { Field field = (Field) form.getFieldMap().get(fieldName); if (field != null) { if (field.isDependency("required")) { requiredField = true; } } } } ActionErrors errors = (ActionErrors) pageContext.getAttribute( Globals.ERROR_KEY, PageContext.REQUEST_SCOPE); if (errors != null) { Iterator errorIterator = errors.get(fieldName); if (errorIterator.hasNext()) { validationError = true; } } // Retrieve the message string we are looking for String message = RequestUtils.message( pageContext, Action.MESSAGES_KEY, Globals.LOCALE_KEY, key); if (message == null) { JspException e = new JspException("Cannot find message for key: " + key); RequestUtils.saveException(pageContext, e); throw e; } String cssClass = (styleClass != null) ? styleClass : "label"; String cssErrorClass = (errorClass != null) ? errorClass : "labelError"; if (message == null || "".equals(message.trim())) { message = ""; } else { message = "<label for=\"" + fieldName + "\" class=\"" + (validationError ? cssErrorClass : cssClass) + "\">" + message + (requiredField ? "*" : "") + ":</label>"; } // Print the retrieved message to our output writer ResponseUtils.write(pageContext, message); // Continue processing this page return (SKIP_BODY); } /** * @jsp.attribute required="true" */ public void setKey(String key) { this.key = key; } /** * Setter for assigning a CSS class, default is label. * * @jsp.attribute required="false" */ public void setStyleClass(String styleClass) { this.styleClass = styleClass; } /** * Setter for assigning a CSS class when errors occur, * defaults to labelError. * * @jsp.attribute required="false" */ public void setErrorClass(String errorClass) { this.errorClass = errorClass; } } --- NEW FILE: Secure.java --- package org.appfuse.webapp.taglib; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyTagSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.appfuse.common.Constants; import org.appfuse.webapp.util.SslUtil; /** * This tag library is designed to be used on a JSP * to switch HTTP -> HTTPS protocols and vise versa. * * If you want to force the page to be viewed in SSL, * then you would do something like this:<br /><br /> * <pre> * <tag:secure /> * or * <tag:secure mode="secured" /> * </pre> * If you want the force the page to be viewed in * over standard http, then you would do something like:<br /> * <pre> * <tag:secure mode="unsecured" /> * </pre> * @jsp.tag name="secure" * bodycontent="empty" * * @author <a href="mailto:jon...@xe...">Jon Lipsky</a> * * Contributed by: * * XEsoft GmbH * Oskar-Messter-Strasse 18 * 85737 Ismaning, Germany * http://www.xesoft.com */ public class Secure extends BodyTagSupport { /** * The <code>Log</code> instance for this class. */ private Log log = LogFactory.getLog(Secure.class); public static String MODE_SECURED = "secured"; public static String MODE_UNSECURED = "unsecured"; public static String MODE_EITHER = "either"; protected String TAG_NAME = "Secure"; private String mode = MODE_SECURED; private String httpPort = null; private String httpsPort = null; /** * Sets the mode attribute. This is included in the tld file. * * @jsp.attribute * description="The mode attribute (secure | unsecured)" * required="false" * rtexprvalue="true" */ public void setMode(String aMode) { mode = aMode; } public int doStartTag() throws JspException { httpPort = (String)pageContext.getServletContext().getAttribute(Constants.HTTP_PORT); if (httpPort == null) { httpPort = SslUtil.STD_HTTP_PORT; } httpsPort = (String)pageContext.getServletContext().getAttribute(Constants.HTTPS_PORT); if (httpsPort == null) { httpsPort = SslUtil.STD_HTTPS_PORT; } return SKIP_BODY; } public int doAfterBody() throws JspException { return SKIP_BODY; } public int doEndTag() throws JspException { if (mode.equalsIgnoreCase(MODE_SECURED)) { if (pageContext.getRequest().isSecure() == false) { String vQueryString = ((HttpServletRequest) pageContext.getRequest()).getQueryString(); String vPageUrl = ((HttpServletRequest) pageContext.getRequest()).getRequestURI(); String vServer = pageContext.getRequest().getServerName(); StringBuffer vRedirect = new StringBuffer(""); vRedirect.append("https://"); vRedirect.append(vServer + ":" + httpsPort + vPageUrl); if (vQueryString != null) { vRedirect.append("?"); vRedirect.append(vQueryString); } if (log.isDebugEnabled()) { log.debug("attempting to redirect to: " + vRedirect); } try { ((HttpServletResponse) pageContext.getResponse()).sendRedirect(vRedirect.toString()); return SKIP_PAGE; } catch (Exception exc2) { throw new JspException(exc2.getMessage()); } } } else if (mode.equalsIgnoreCase(MODE_UNSECURED)) { if (pageContext.getRequest().isSecure() == true) { String vQueryString = ((HttpServletRequest) pageContext.getRequest()).getQueryString(); String vPageUrl = ((HttpServletRequest) pageContext.getRequest()).getRequestURI(); String vServer = pageContext.getRequest().getServerName(); StringBuffer vRedirect = new StringBuffer(""); vRedirect.append("http://"); vRedirect.append(vServer + vPageUrl); if (vQueryString != null) { vRedirect.append("?"); vRedirect.append(vQueryString); } try { ((HttpServletResponse) pageContext.getResponse()).sendRedirect(vRedirect.toString()); return SKIP_PAGE; } catch (Exception exc2) { throw new JspException(exc2.getMessage()); } } } else if (mode.equalsIgnoreCase(MODE_EITHER)) { return EVAL_PAGE; } else { throw new JspException("Illegal value for the attribute mode: " + mode); } return EVAL_PAGE; } } |
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/service In directory sc8-pr-cvs1:/tmp/cvs-serv29926 Added Files: ConversionException.java ResumeManager.java ResumeManagerImpl.java UserManager.java UserManagerImpl.java Log Message: --- NEW FILE: ConversionException.java --- package org.appfuse.webapp.service; import org.apache.struts.util.ModuleException; /** * Example of an application-specific exception for which a handler * can be configured. */ public class ConversionException extends ModuleException { /** * Construct a new instance of this exception */ public ConversionException() { super("errors.conversion"); } } --- NEW FILE: ResumeManager.java --- package org.appfuse.webapp.service; import org.appfuse.webapp.form.ResumeForm; import java.util.ArrayList; /** * Business Delegate (Proxy) Interface to handle communication between web and * persistence layer. * * <p> * <a href="ResumeManager.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:54:09 $ */ public interface ResumeManager { //~ Methods ================================================================ /** * Retrieves resumes based on a userId * * @param userId * @return ArrayList */ public ArrayList getResumesForUser(String userId) throws Exception; /** * Retrives a single resumeForm based on a resumeId * * @param resumeId * @return populated Resume */ public ResumeForm getResume(String resumeId) throws Exception; /** * Saves a resume's information. This method can also be used to add a new * resume. * * @param resumeForm the resume's information * @return updated resume information */ public ResumeForm saveResume(ResumeForm resumeForm) throws Exception; /** * Removes a resume from the database by id * * @param id the identifier of the resume to remove * @throws Exception when something goes wrong */ public void removeResume(ResumeForm resumeForm) throws Exception; } --- NEW FILE: ResumeManagerImpl.java --- package org.appfuse.webapp.service; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.appfuse.persistence.DAOFactory; import org.appfuse.persistence.Resume; import org.appfuse.persistence.ResumeDAO; import org.appfuse.webapp.form.ResumeForm; import java.util.ArrayList; import java.util.List; /** * Business Delegate (Proxy) Interface to handle communication between web and * persistence layer * * <p> * <a href="ResumeManagerImpl.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:54:09 $ */ public class ResumeManagerImpl implements ResumeManager { //~ Instance fields ======================================================== private Log log = LogFactory.getLog(ResumeManagerImpl.class); private DAOFactory factory; private ResumeDAO dao; private Resume resume; private ResumeForm resumeForm; //~ Constructors =========================================================== public ResumeManagerImpl(String daoType) throws Exception { factory = DAOFactory.createFactory(daoType); dao = factory.createResumeDAO(); } //~ Methods ================================================================ public ArrayList getResumesForUser(String userId) throws Exception { List resumes = dao.getResumesByUserId(Long.valueOf(userId)); if (log.isDebugEnabled()) { log.debug("resume list from dao: " + resumes); } ArrayList convertedResumes = new ArrayList(); // loop through each resume and convert to a resumeForm for (int i = 0; i < resumes.size(); i++) { resume = (Resume) resumes.get(i); resumeForm = new ResumeForm(); BeanUtils.copyProperties(resumeForm, resume); convertedResumes.add(resumeForm); } return convertedResumes; } public ResumeForm getResume(String resumeId) throws Exception { resumeForm = new ResumeForm(); resume = dao.getResume(Long.valueOf(resumeId)); if (log.isDebugEnabled()) { log.debug("resume from dao: " + resume); } // copy form properties to resume BeanUtils.copyProperties(resumeForm, resume); if (log.isDebugEnabled()) { log.debug("got resume with properties: " + resumeForm); } return resumeForm; } /** * This method will eventually need some more robust conversion to enable * converting Strings to proper datatypes. Here's a possible way that I * haven't tried yet: * * <p> * //register conversion utils for forms * ConvertUtils.register(new StringConverter(), String.class); * ConvertUtils.register(new BlankStringToNullIntegerConverter(), Integer.class); * ConvertUtils.register(new SqlTimestampConverter(), Timestamp. class); * ConvertUtils.register(new AddressConverter(), AddressesData. class); * ConvertUtils.register(new AddressConverter(), AddressForm. class); * * RTJD (read the JavaDocs): * http://jakarta.apache.org/commons/beanutils/apidocs/org/apache/commons/beanutils/ConvertUtils.html * </p> * * @see org.appfuse.webapp.service.ResumeManager#saveResume(ResumeForm) */ public ResumeForm saveResume(ResumeForm resumeForm) throws Exception { resume = new Resume(); // copy form properties to resume BeanUtils.copyProperties(resume, resumeForm); // copy properties converts a null string to a 0 long if (resume.getId().intValue() == 0) { resume.setId(null); } if (log.isDebugEnabled()) { log.debug("saving resume with properties: " + resume); } dao.saveResume(resume); return getResume(resume.getId().toString()); } /** * @see org.appfuse.webapp.service.ResumeManager#removeResume(String) */ public void removeResume(ResumeForm resumeForm) throws Exception { resume = new Resume(); resume.setId(Long.valueOf(resumeForm.getId())); dao.removeResume(resume); } } --- NEW FILE: UserManager.java --- package org.appfuse.webapp.service; import org.appfuse.webapp.form.UserForm; /** * Business Delegate (Proxy) Interface to handle communication between web and * persistence layer. * * <p> * <a href="UserManager.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:54:09 $ */ public interface UserManager { //~ Methods ================================================================ /** * Retrieves a user by name, and can create a new one * * @param username * @return User */ public UserForm getUser(String username) throws Exception; /** * Saves a user's information * * @param userForm the user's information * @return updated user information */ public UserForm saveUser(UserForm userForm) throws Exception; /** * Removes a user from the database by id */ public void removeUser(UserForm userForm) throws Exception; } --- NEW FILE: UserManagerImpl.java --- package org.appfuse.webapp.service; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.appfuse.persistence.DAOFactory; import org.appfuse.persistence.User; import org.appfuse.persistence.UserDAO; import org.appfuse.webapp.form.UserForm; /** * Business Delegate (Proxy) Interface to handle communication between web and * persistence layer * * <p> * <a href="UserManagerImpl.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:54:09 $ */ public class UserManagerImpl implements UserManager { //~ Instance fields ======================================================== private Log log = LogFactory.getLog(UserManagerImpl.class); private DAOFactory factory; private UserDAO dao; private User user; private UserForm userForm; //~ Constructors =========================================================== public UserManagerImpl(String daoType) throws Exception { factory = DAOFactory.createFactory(daoType); dao = factory.createUserDAO(); } //~ Methods ================================================================ public UserForm getUser(String username) throws Exception { user = dao.getUser(username); if (log.isDebugEnabled()) { log.debug("user from dao: " + user); } userForm = new UserForm(); // copy properties from user to form BeanUtils.copyProperties(userForm, user); if (log.isDebugEnabled()) { log.debug("user properties: " + userForm); } return userForm; } public UserForm saveUser(UserForm userForm) throws Exception { user = new User(); // copy form properties to user try { BeanUtils.copyProperties(user, userForm); // copy properties converts a null string to a 0 long if (user.getId().intValue() == 0) { user.setId(null); } } catch (IllegalArgumentException i) { log.error("Exception occured copying properties", i); throw new ConversionException(); } if (log.isDebugEnabled()) { log.debug("saving user with properties: " + user); } user = dao.saveUser(user); return getUser(user.getUsername()); } public void removeUser(UserForm userForm) throws Exception { user = new User(); if (log.isDebugEnabled()) { log.debug("removing user with id/username: " + userForm.getId() + "/" + userForm.getUsername()); } user.setId(Long.valueOf(userForm.getId())); dao.removeUser(user); } } |
From: <mr...@us...> - 2003-01-08 05:53:51
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/form In directory sc8-pr-cvs1:/tmp/cvs-serv29690 Added Files: BaseForm.java UploadForm.java Log Message: --- NEW FILE: BaseForm.java --- package org.appfuse.webapp.form; import java.io.Serializable; import java.lang.reflect.AccessibleObject; import java.lang.reflect.Field; import org.apache.struts.validator.ValidatorForm; /** * Base ActionForm bean. An ActionForm bean serves as an adapter to make data * entered into an HTML available to the rest of a Web application, usually by * transferring data to an internal object that uses native types and * implements a business logic interface. * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:53:48 $ */ public class BaseForm extends ValidatorForm implements Serializable { //~ Methods ================================================================ public String toString() { StringBuffer results = new StringBuffer(); Class clazz = getClass(); results.append(getClass().getName() + "\n"); Field[] fields = clazz.getDeclaredFields(); try { AccessibleObject.setAccessible(fields, true); for (int i = 0; i < fields.length; i++) { results.append("\t" + fields[i].getName() + "=" + fields[i].get(this) + "\n"); } } catch (Exception e) { // ignored! } return results.toString(); } } --- NEW FILE: UploadForm.java --- package org.appfuse.webapp.form; import org.apache.struts.upload.FormFile; /** * This class is modeled after the UploadForm from the struts-upload example * application. For more information on implementation details, please * see that application. * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:53:48 $ */ public class UploadForm extends BaseForm { //~ Static fields/initializers ============================================= public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED = "org.appfuse.webapp.MaxLengthExceeded"; //~ Instance fields ======================================================== /** The value of the text the user has sent as form data */ protected String name; /** The file that the user has uploaded */ protected FormFile theFile; //~ Methods ================================================================ /** * Retrieve the name the user has given the uploaded file * * @return the file's name */ public String getName() { return name; } /** * Set the name of the uploaded file (by the user) * * @param name */ public void setName(String name) { this.name = name; } /** * Retrieve a representation of the file the user has uploaded * * @return FormFile the uploaded file */ public FormFile getTheFile() { return theFile; } /** * Set a representation of the file the user has uploaded * * @param theFile the file to upload */ public void setTheFile(FormFile theFile) { this.theFile = theFile; } } |
From: <mr...@us...> - 2003-01-08 05:53:40
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/filter In directory sc8-pr-cvs1:/tmp/cvs-serv29536 Added Files: ActionFilter.java BreadCrumbFilter.java Log Message: --- NEW FILE: ActionFilter.java --- package org.appfuse.webapp.filter; // java imports import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.Globals; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.appfuse.common.Constants; import org.appfuse.webapp.form.UserForm; import org.appfuse.webapp.service.UserManager; import org.appfuse.webapp.service.UserManagerImpl; import org.appfuse.webapp.util.SslUtil; /** * This class is used to filter all requests to the <code>Action</code> * servlet and detect if a user is authenticated. If a user is authenticated, * but no user object exists, this class populates the <code>UserForm</code> * from the user store. * * <p><a href="ActionFilter.java.html"><i>View Source</i></a></p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:53:37 $ * * @web.filter * display-name="Action Filter" * name="actionFilter" * * Change this value to true if you want to secure your entire application. * This can also be done in web-security.xml by setting <transport-guarantee> * to CONFIDENTIAL. * * @web.filter-init-param * name="isSecure" * value="${secure-application}" * * @web.filter-mapping * url-pattern="*.do" */ public class ActionFilter implements Filter { /** * The <code>Log</code> instance for this class */ private Log log = LogFactory.getLog(ActionFilter.class); private FilterConfig filterConfig = null; private static Boolean secure = Boolean.FALSE; public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; /* This determines if the application uses SSL or not */ secure = Boolean.valueOf(filterConfig.getInitParameter("isSecure")); } /** * Destroys the filter. */ public void destroy() { filterConfig = null; } public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { // cast to the types I want to use HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; HttpSession session = request.getSession(true); // do pre filter work here // If using https, switch to http String redirectString = SslUtil.getRedirectString( request, filterConfig.getServletContext(), secure.booleanValue()); if (redirectString != null) { if (log.isDebugEnabled()) { log.debug( "protocol switch needed, redirecting to '" + redirectString + "'"); } // Redirect the page to the desired URL response.sendRedirect(response.encodeRedirectURL(redirectString)); // ensure we don't chain to requested resource return; } UserForm userForm = (UserForm) session.getAttribute(Constants.USER_KEY); ServletContext ctx = filterConfig.getServletContext(); String username = request.getRemoteUser(); // user authenticated, empty user object if (username != null && userForm == null) { try { UserManager mgr = new UserManagerImpl( (String) ctx.getAttribute(Constants.DAO_TYPE)); UserForm user = mgr.getUser(username); session.setAttribute(Constants.USER_KEY, user); } catch (Exception e) { log.error("Error getting user's information " + e); e.printStackTrace(); ActionErrors errors = new ActionErrors(); errors.add( ActionErrors.GLOBAL_ERROR, new ActionError("errors.general")); StringBuffer sb = new StringBuffer(); if (e.getCause() == null) { sb.append(e.getMessage()); } else { while (e.getCause() != null) { sb.append(e.getMessage()); sb.append("\n"); e = (Exception) e.getCause(); } } errors.add( ActionErrors.GLOBAL_ERROR, new ActionError("errors.detail", sb.toString())); request.setAttribute(Globals.ERROR_KEY, errors); RequestDispatcher dispatcher = request.getRequestDispatcher("/error.jsp"); dispatcher.forward(request, response); return; } } // go to original destination chain.doFilter(request, response); // post filter } } --- NEW FILE: BreadCrumbFilter.java --- package org.appfuse.webapp.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.collections.ArrayStack; import org.apache.commons.lang.NumberUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Intercepts requests and places URL into breadcrumb stack. * * <p> * <a href="BreadCrumbFilter.java.html"><i>View Source</i></a> * </p> * * @author <a href="mailto:la...@br...">Lance Lavandowska</a> * @version $Revision: 1.1 $ $Date: 2003/01/08 05:53:37 $ * * @web.filter * display-name="BreadCrumb Filter" * name="breadcrumbFilter" * * @web.filter-init-param * name="maxStackSize" * value="3" * * @web.filter-mapping * url-pattern="/*" */ public final class BreadCrumbFilter implements Filter { /** * The <code>Log</code> instance for this class */ private Log log = LogFactory.getLog(BreadCrumbFilter.class); private FilterConfig filterConfig = null; private int maxStackSize = 10; private String BREADCRUMB = "move.me"; public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain ) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; HttpSession ses = request.getSession(true); ArrayStack stack = (ArrayStack) ses.getAttribute(BREADCRUMB); if (stack == null) { stack = new ArrayStack(); } // This gives you a chance to look at your breadcrumb trail if (request.getQueryString() != null && request.getQueryString().equals("BreadCrumb")) { response.setContentType("text/html"); ServletOutputStream out = response.getOutputStream(); for (int i = 0; i < stack.size(); i++) { out.println(stack.peek(i).toString() + "<br />"); } out.flush(); out.close(); } else { chain.doFilter(req, resp); } //now that we've successfully returned, // add url to stack StringBuffer url = request.getRequestURL(); if (request.getQueryString() != null) { url.append("?").append(request.getQueryString()); } if (stack.size() == maxStackSize) { stack.remove(maxStackSize - 1); } stack.push(url.toString()); // make sure the user hasn't logged out and invalidated the session try { ses.setAttribute(BREADCRUMB, stack); } catch (IllegalStateException ise) { // ignore, user has logged out } } /** * Initialize controller values of filter. */ public void init(FilterConfig filterConfig) { this.filterConfig = filterConfig; // debug //System.out.println("BreadCrumbFilter is loaded"); if (!StringUtils .isEmpty(filterConfig.getInitParameter("maxStackSize"))) { String temp = filterConfig.getInitParameter("maxStackSize"); int mSS = NumberUtils.stringToInt(temp); if (mSS != 0) { maxStackSize = mSS; } } } /** destroy any instance values other than filterConfig **/ public void destroy() { maxStackSize = 10; } } |
From: <mr...@us...> - 2003-01-08 05:53:27
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/action In directory sc8-pr-cvs1:/tmp/cvs-serv29384 Added Files: BaseAction.java GeneralException.java InvalidResumeException.java LoginServlet.java LookupMethods.properties ResumeAction.java UploadAction.java UserAction.java Log Message: --- NEW FILE: BaseAction.java --- package org.appfuse.webapp.action; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.ResourceBundle; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.LookupDispatchAction; import org.appfuse.common.Constants; import org.appfuse.webapp.form.UserForm; import org.appfuse.webapp.util.SslUtil; /** * Implementation of <strong>Action</strong> that contains base methods for * logging and conducting pre/post perform actions. This class is intended to * be a base class for all Struts actions. * * <p> * <a href="BaseAction.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:53:23 $ */ public class BaseAction extends LookupDispatchAction { //~ Static fields/initializers ============================================= public static final String SECURE = "secure"; //~ Instance fields ======================================================== // The Log instance for this class. private Log log = LogFactory.getLog(BaseAction.class); //~ Methods ================================================================ // --------------------------------------------------------- Public Methods // Don't use class variables in Action objects. These are not thread safe. /** * Method to check and see if https is required for this resource * * @param mapping The ActionMapping used to select this instance * @param request The HTTP request we are processing * @param response The HTTP response we are creating * * @return DOCUMENT ME! */ protected boolean checkSsl(ActionMapping mapping, HttpServletRequest request, HttpServletResponse response) { String redirectString = SslUtil.getRedirectString(request, getServlet().getServletContext(), SECURE.equals(mapping.getParameter())); HttpSession session = request.getSession(); if (redirectString != null) { log.debug("protocol switch needed, redirecting..."); try { // Redirect the page to the desired URL response.sendRedirect(response.encodeRedirectURL(redirectString)); return true; } catch (Exception ioe) { log.error("redirect to new protocol failed..."); // Handle appropriately } } return false; } /** * Convenience method to get the userForm from the session * * @param session the current user's session * @return the user's populated form from the session */ protected UserForm getUserForm(HttpSession session) { // get the user form from the session return (UserForm) session.getAttribute(Constants.USER_KEY); } /** * Provides the mapping from resource key to method name * * @return Resource key / method name map */ public Map getKeyMethodMap() { Map map = new HashMap(); ResourceBundle methods = ResourceBundle.getBundle("org.appfuse.webapp.action.LookupMethods"); Enumeration keys = methods.getKeys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); map.put(key, methods.getString(key)); } return map; } /** * Convenience method for removing the obsolete form bean. * * @param mapping The ActionMapping used to select this instance * @param request The HTTP request we are processing */ protected void removeFormBean(ActionMapping mapping, HttpServletRequest request) { // Remove the obsolete form bean if (mapping.getAttribute() != null) { if ("request".equals(mapping.getScope())) { request.removeAttribute(mapping.getAttribute()); } else { HttpSession session = request.getSession(); session.removeAttribute(mapping.getAttribute()); } } } /** * Convenience method to update a formBean in it's scope * * @param mapping The ActionMapping used to select this instance * @param request The HTTP request we are processing * @param form The ActionForm */ protected void updateFormBean(ActionMapping mapping, HttpServletRequest request, ActionForm form) { // Remove the obsolete form bean if (mapping.getAttribute() != null) { if ("request".equals(mapping.getScope())) { request.setAttribute(mapping.getAttribute(), form); } else { HttpSession session = request.getSession(); session.setAttribute(mapping.getAttribute(), form); } } } /** * Convenience method for getting an action form base on it's mapped scope. * * @param mapping The ActionMapping used to select this instance * @param request The HTTP request we are processing * * @return ActionForm the form from the specifies scope, or null if nothing * found */ protected ActionForm getActionForm(ActionMapping mapping, HttpServletRequest request) { ActionForm actionForm = null; // Remove the obsolete form bean if (mapping.getAttribute() != null) { if ("request".equals(mapping.getScope())) { actionForm = (ActionForm) request.getAttribute(mapping.getAttribute()); } else { HttpSession session = request.getSession(); actionForm = (ActionForm) session.getAttribute(mapping.getAttribute()); } } return actionForm; } /** * Convenience method to get the DAO_TYPE from the ServletContext. I * envision this will be replaced when there is a Configuration object for * the entire application. * * @return the DAOType to use. Currently, only hibernate is supported. */ protected String getDAOType() { return (String) servlet.getServletContext().getAttribute(Constants.DAO_TYPE); } } --- NEW FILE: GeneralException.java --- package org.appfuse.webapp.action; import org.apache.struts.util.ModuleException; /** * This exception is designed to catch all exceptions and build a list of * exceptions that have occurred. */ public class GeneralException extends ModuleException { //~ Constructors =========================================================== /** * Construct a new instance of this exception */ public GeneralException() { super("errors.general"); } /** * Constructor for this exception that allows you to pass in an exception * with possible causes. * * @param e */ /* This is not possible yet, but I created an enhancement request for it: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15805 public GeneralException(Exception e) { super("errors.detail", getChainedExceptions(e)); } protected String getChainedExceptions(Exception e) { StringBuffer sb = new StringBuffer(); if (e.getCause() == null) { sb.append(e.getMessage()); } else { while (e.getCause() != null) { sb.append(e.getMessage()); sb.append("\n"); e = (Exception) e.getCause(); } } return sb.toString(); }*/ } --- NEW FILE: InvalidResumeException.java --- package org.appfuse.webapp.action; import org.apache.struts.util.ModuleException; /** * This exception is designed to catch all exceptions and build a list of * exceptions that have occurred. */ public class InvalidResumeException extends ModuleException { //~ Constructors =========================================================== /** * Construct a new instance of this exception */ public InvalidResumeException(String badId) { super("errors.invalid.resume", badId); } } --- NEW FILE: LoginServlet.java --- package org.appfuse.webapp.action; // java imports import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.util.RequestUtils; import org.appfuse.common.Constants; import org.appfuse.common.util.StringUtil; import org.appfuse.webapp.util.SslUtil; /** * Implementation of <strong>HttpServlet</strong> that is used * to get a username and password and encrypt the password * before sending to container-managed authentication. * * <p><a href="LoginServlet.java.html"><i>View Source</i></a></p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:53:24 $ * * @web.servlet * display-name="Login Servlet" * load-on-startup="3" * name="login" * * @web.servlet-init-param * name="authURL" * value="${form-auth-action}" * * Change the following value to false if you don't require SSL for login * * @web.servlet-init-param * name="isSecure" * value="${secure-login}" * * If you're not using Tomcat, change encrypt-password to true * * @web.servlet-init-param * name="encrypt-password" * value="${encrypt-password}" * * @web.servlet-init-param * name="algorithm" * value="${encrypt-algorithm}" * * @web.servlet-mapping * url-pattern="/auth/*" */ public final class LoginServlet extends HttpServlet { //========================================================================= // Private Member Variables //========================================================================= /** * The <code>Log</code> instance for this package. */ private Log log = LogFactory.getLog(LoginServlet.class); private static String authURL = null; private static String httpsPort = null; private static String httpPort = null; private static Boolean secure = Boolean.FALSE; private static String algorithm = null; private static Boolean encrypt = Boolean.FALSE; /** * Initializes the port numbers based on the port init parameters as defined * in web.xml */ private static void initializeSchemePorts(ServletContext servletContext) { if (httpPort == null) { String portNumber = servletContext.getInitParameter(SslUtil.HTTP_PORT_PARAM); httpPort = (portNumber == null? SslUtil.STD_HTTP_PORT: portNumber); } if (httpsPort == null) { String portNumber = servletContext.getInitParameter(SslUtil.HTTPS_PORT_PARAM); httpsPort = (portNumber == null? SslUtil.STD_HTTPS_PORT: portNumber); } } // --------------------------------------------------------- Public Methods /** * Validates the Init and Context parameters, configures authentication URL * * @throws ServletException if the init parameters are invalid or any * other problems occur during initialisation */ public void init() throws ServletException { // Get the container authentication URL for FORM-based Authentication // J2EE spec says should be j_security_check authURL = getInitParameter(Constants.AUTH_URL); // Get the encryption algorithm to use for encrypting passwords before // storing in database algorithm = getInitParameter(Constants.ENC_ALGORITHM); /* This determines if the login uses SSL or not */ secure = Boolean.valueOf(getInitParameter("isSecure")); /* This determines if the password should be encrypted programmatically */ encrypt = Boolean.valueOf(getInitParameter("encrypt-password")); if (log.isDebugEnabled()) { log.debug("Authentication URL: " + authURL); log.debug("Use SSL for login? " + secure); log.debug("Programmatic encryption of password? " + encrypt); log.debug("Encryption algorithm: " + algorithm); } // ensure the authorization url parameter is present if (authURL == null) { throw new ServletException("No 'authURL' Context Parameter supplied in web.xml"); } initializeSchemePorts(getServletContext()); getServletContext().setAttribute(Constants.HTTP_PORT, httpPort); getServletContext().setAttribute(Constants.HTTPS_PORT, httpsPort); getServletContext().setAttribute(Constants.SECURE_LOGIN, secure); getServletContext().setAttribute(Constants.ENC_ALGORITHM, algorithm); if (log.isDebugEnabled()) { log.debug("HTTP Port: " + httpPort); log.debug("HTTPS Port: " + httpsPort); } } /** * Route the user to the execute method * * @param request The HTTP request we are processing * @param response The HTTP response we are creating * * @exception IOException if an input/output error occurs * @exception ServletException if a servlet exception occurs */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { execute(request, response); } /** * Route the user to the execute method * * @param request The HTTP request we are processing * @param response The HTTP response we are creating * * @exception IOException if an input/output error occurs * @exception ServletException if a servlet exception occurs */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { execute(request, response); } /** * Process the specified HTTP request, and create the corresponding HTTP * response (or forward to another web component that will create it). * * @param request The HTTP request we are processing * @param response The HTTP response we are creating * * @exception IOException if an input/output error occurs * @exception ServletException if a servlet exception occurs */ public void execute ( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException { String redirectString = SslUtil.getRedirectString(request, getServletContext(), secure.booleanValue()); if (redirectString != null) { // Redirect the page to the desired URL response.sendRedirect(response.encodeRedirectURL(redirectString)); if (log.isDebugEnabled()) { log.debug("switching protocols, redirecting user"); } } // Extract attributes we will need String username = request.getParameter("j_username"); String password = request.getParameter("j_password"); String encryptedPassword = ""; if (encrypt.booleanValue()) { if (log.isDebugEnabled()) { log.debug("Encrypting password for user '" + username + "'"); } encryptedPassword = StringUtil.encodePassword(password, algorithm); } else { encryptedPassword = password; } // URLEncoder.encode is called to convert any non-allowed characters to // their URL Safe equivalent - response.encodeURL only adds the session id // If you're compiling on JDK 1.4, add 'algorithm' form the argument // list below String req = authURL + "?j_username=" + RequestUtils.encodeURL(username) + "&j_password=" + RequestUtils.encodeURL(encryptedPassword); if (redirectString == null) { // signifies already correct protocol if (log.isDebugEnabled()) { log.debug("Authenticating user '" + username + "'"); } response.sendRedirect(response.encodeRedirectURL(req)); } } } --- NEW FILE: LookupMethods.properties --- button.add=add button.cancel=cancel button.copy=copy button.edit=edit button.delete=delete button.save=save button.search=search --- NEW FILE: ResumeAction.java --- package org.appfuse.webapp.action; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.util.MessageResources; import org.appfuse.common.Constants; import org.appfuse.webapp.form.ResumeForm; import org.appfuse.webapp.service.ResumeManager; import org.appfuse.webapp.service.ResumeManagerImpl; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * Implementation of <strong>Action</strong> that interacts with the {@link * ResumeForm} and retrieves values. It interacts with the {@link * ResumeManager} to retrieve/persist values to the database. * * <p> * <a href="ResumeAction.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:53:24 $ * * @struts.action name="resumeForm" path="/viewResumes" scope="request" * validate="false" parameter="action" input="mainMenu" * * @struts.action name="resumeForm" path="/editResume" scope="request" * validate="false" parameter="action" input="viewResumes" * @struts.action-forward name="edit" path="resumeDetail" * * @struts.action name="resumeForm" path="/saveResume" scope="request" * validate="true" parameter="action" input="editResume" * @struts.action-forward name="list" path="resumeList" */ public final class ResumeAction extends BaseAction { //~ Instance fields ======================================================== /** The <code>Log</code> instance for this class */ private Log log = LogFactory.getLog(ResumeAction.class); //~ Methods ================================================================ public ActionForward cancel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'cancel' method"); } // return a forward to edit forward return mapping.findForward("viewResumes"); } public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'edit' method"); } // Extract attributes and parameters we will need ActionErrors errors = new ActionErrors(); ActionMessages messages = new ActionMessages(); MessageResources resources = getResources(request); HttpSession session = request.getSession(); ResumeForm resumeForm = (ResumeForm) form; int resumeId = 0; // throw and exception if a value that is not a number // is passed in for the resumeId (there's a link on // the resume list that allows users to do this). try { resumeId = Integer.parseInt(resumeForm.getId()); } catch (NumberFormatException n) { throw new InvalidResumeException(resumeForm.getId()); } // not used, but will be soon to prevent double posting! saveToken(request); ResumeManager mgr = new ResumeManagerImpl(getDAOType()); resumeForm = mgr.getResume(resumeForm.getId()); updateFormBean(mapping, request, resumeForm); // return a forward to edit forward return mapping.findForward("edit"); } public ActionForward remove(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'remove' method"); } // Extract attributes and parameters we will need ActionErrors errors = new ActionErrors(); ActionMessages messages = new ActionMessages(); MessageResources resources = getResources(request); HttpSession session = request.getSession(); ResumeForm resumeForm = (ResumeForm) form; ResumeManager mgr = new ResumeManagerImpl(getDAOType()); mgr.removeResume(resumeForm); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("resume.deleted", resumeForm.getName())); saveMessages(request, messages); // return a forward to edit forward return mapping.findForward("remove"); } public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'save' method"); } // Extract attributes and parameters we will need ActionErrors errors = new ActionErrors(); ActionMessages messages = new ActionMessages(); MessageResources resources = getResources(request); HttpSession session = request.getSession(); ResumeForm resumeForm = (ResumeForm) form; // set the userId if it's not set if (resumeForm.getUserId().equals("")) { resumeForm.setUserId(super.getUserForm(session).getId()); } ResumeManager mgr = new ResumeManagerImpl(getDAOType()); resumeForm = mgr.saveResume(resumeForm); updateFormBean(mapping, request, resumeForm); if (request.getParameter("new") != null) { messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("resume.added", resumeForm.getName())); saveMessages(request, messages); return mapping.findForward("viewResumes"); } else { messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("resume.updated")); saveMessages(request, messages); // return a forward to save forward return mapping.findForward("editResume"); } } public ActionForward search(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'search' method"); } ActionMessages messages = new ActionMessages(); ActionErrors errors = new ActionErrors(); MessageResources resources = getResources(request); HttpSession session = request.getSession(); // getDAOType() and getUserForm() are methods in BaseAction ResumeManager mgr = new ResumeManagerImpl(getDAOType()); ArrayList userResumes = mgr.getResumesForUser(getUserForm(session).getId()); request.setAttribute(Constants.USER_RESUMES, userResumes); // forward to action-forward defined using XDoclet at // the beginning of this class return mapping.findForward("list"); } } --- NEW FILE: UploadAction.java --- package org.appfuse.webapp.action; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import org.appfuse.webapp.form.UploadForm; /** * This class handles the uploading of a resume (or any file) and writing it to * the filesystem. Eventually, it will also add support for persisting the * files information into the database. * * <p> * <a href="UploadAction.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:53:24 $ */ public class UploadAction extends Action { //~ Instance fields ======================================================== // The Log instance for this class. private Log log = LogFactory.getLog(UploadAction.class); //~ Methods ================================================================ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // Did the user click the cancel button? if (isCancelled(request)) { // remove form bean request.removeAttribute(mapping.getAttribute()); // route user to main menu of default module return (mapping.findForward("mainMenu")); } //this line is here for when the input page is upload-utf8.jsp, //it sets the correct character encoding for the response String encoding = request.getCharacterEncoding(); if ((encoding != null) && (encoding.equalsIgnoreCase("utf-8"))) { response.setContentType("text/html; charset=utf-8"); } UploadForm theForm = (UploadForm) form; //retrieve the name String name = theForm.getName(); //retrieve the file representation FormFile file = theForm.getTheFile(); //retrieve the file name String fileName = file.getFileName(); //retrieve the content type String contentType = file.getContentType(); //retrieve the file size String size = (file.getFileSize() + " bytes"); String data = null; String location = null; // the directory to upload to String uploadDir = servlet.getServletContext().getRealPath("/resources") + "/" + request.getRemoteUser() + "/"; int userDirSize = 0; //write the file to the file specified File dirPath = new File(uploadDir); if (!dirPath.exists()) { dirPath.mkdirs(); } try { //retrieve the file data ByteArrayOutputStream baos = new ByteArrayOutputStream(); InputStream stream = file.getInputStream(); //write the file to the file specified OutputStream bos = new FileOutputStream(uploadDir + fileName); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) { bos.write(buffer, 0, bytesRead); } bos.close(); location = "The file has been written to \"" + dirPath.getAbsolutePath() + file.getFileName() + "\""; //close the stream stream.close(); } catch (FileNotFoundException fnfe) { return null; } catch (IOException ioe) { return null; } // place the data into the request for retrieval on next page request.setAttribute("name", name); request.setAttribute("fileName", fileName); request.setAttribute("contentType", contentType); request.setAttribute("size", size); request.setAttribute("data", data); request.setAttribute("location", location); //destroy the temporary file created file.destroy(); //return a forward to display.jsp return mapping.findForward("success"); } } --- NEW FILE: UserAction.java --- package org.appfuse.webapp.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.util.MessageResources; import org.appfuse.webapp.form.UserForm; import org.appfuse.webapp.service.UserManager; import org.appfuse.webapp.service.UserManagerImpl; /** * Implementation of <strong>Action</strong> that interacts with the {@link * UserForm} and retrieves values. It interacts with the {@link * BusinessManager} to retrieve/persist values to the database. * * <p> * <a href="UserAction.java.html"><i>View Source</i></a> * </p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:53:24 $ * * @struts.action name="userForm" path="/editUser" scope="session" * validate="false" parameter="action" input="mainMenu" * @struts.action name="userForm" path="/saveUser" scope="session" * validate="true" parameter="action" input="editProfile" * */ public final class UserAction extends BaseAction { //~ Instance fields ======================================================== /** The <code>Log</code> instance for this class */ private Log log = LogFactory.getLog(UserAction.class); //~ Methods ================================================================ public ActionForward cancel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'cancel' method"); } // return a forward to edit forward return mapping.findForward("cancelUser"); } public ActionForward remove(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'delete' method"); } // Extract attributes and parameters we will need ActionErrors errors = new ActionErrors(); ActionMessages messages = new ActionMessages(); MessageResources resources = getResources(request); HttpSession session = request.getSession(); // return a forward to edit forward return mapping.findForward("remove"); } public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'edit' method"); } // Extract attributes and parameters we will need ActionErrors errors = new ActionErrors(); ActionMessages messages = new ActionMessages(); MessageResources resources = getResources(request); HttpSession session = request.getSession(); saveToken(request); // return a forward to edit forward return mapping.findForward("edit"); } public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'save' method"); } // Extract attributes and parameters we will need ActionErrors errors = new ActionErrors(); ActionMessages messages = new ActionMessages(); MessageResources resources = getResources(request); HttpSession session = request.getSession(); UserForm userForm = (UserForm) form; UserManager mgr = new UserManagerImpl(getDAOType()); userForm = mgr.saveUser(userForm); updateFormBean(mapping, request, userForm); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("userProfile.updated")); saveMessages(request, messages); // return a forward to save forward return mapping.findForward("updateUser"); } public ActionForward search(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'search' method"); } ActionMessages messages = new ActionMessages(); ActionErrors errors = new ActionErrors(); MessageResources resources = getResources(request); HttpSession session = request.getSession(); // return a forward to save forward return mapping.findForward("list"); } } |
From: <mr...@us...> - 2003-01-08 05:53:08
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp In directory sc8-pr-cvs1:/tmp/cvs-serv29189 Added Files: StartupServlet.java Log Message: --- NEW FILE: StartupServlet.java --- package org.appfuse.webapp; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.appfuse.common.Constants; import cirrus.hibernate.Hibernate; import cirrus.hibernate.HibernateException; /** * Application Startup Servlet. All initialization is performed here.<br /> * First the Servlet Init Parameters are parsed and validated.<br /> * Then the Context init parameters are parsed and validated. <br /> * * <p><a href="StartupServlet.java.html"><i>View Source</i></a></p> * * @author Matt Raible * @version $Revision: 1.1 $ $Date: 2003/01/08 05:53:04 $ * * @web.servlet * display-name="Startup Servlet" * load-on-startup="1" * name="startup" */ public class StartupServlet extends HttpServlet { /** * The <code>Log</code> instance for this class */ private Log log = LogFactory.getLog(StartupServlet.class); /** * Validates the Init and Context parameters and sets servlet context * variables * * @throws ServletException if the init parameters are invalid or any * other problems occur during initialisation */ public void init() throws ServletException { // retrieve Servlet Init Parameters first... // ensure Context Parameters are present and valid String daoType = getServletContext().getInitParameter(Constants.DAO_TYPE); // if daoType is not specified, use DAO as default if (daoType == null) { log.warn("No 'daoType' Context Parameter supplied in web.xml, using default (hibernate)"); daoType = Constants.DAO_TYPE_HIBERNATE; } getServletContext().setAttribute(Constants.DAO_TYPE, daoType); // all Context Parameters present and valid... // Configure Hibernate. try { Hibernate.configure(); } catch (HibernateException h) { log.fatal("Error configuring Hibernate!", h); throw new ServletException("Error configuring Hibernate", h); } // output the retrieved values for the Init and Context Parameters if (log.isDebugEnabled()) { log.debug("daoType: " + daoType); log.debug("Initialization complete [OK]"); } } } // end of StartupServlet |
From: <mr...@us...> - 2003-01-08 05:53:00
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/util In directory sc8-pr-cvs1:/tmp/cvs-serv29066/util Log Message: Directory /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/util added to the repository |
From: <mr...@us...> - 2003-01-08 05:53:00
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/taglib In directory sc8-pr-cvs1:/tmp/cvs-serv29066/taglib Log Message: Directory /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/taglib added to the repository |
From: <mr...@us...> - 2003-01-08 05:53:00
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/service In directory sc8-pr-cvs1:/tmp/cvs-serv29066/service Log Message: Directory /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/service added to the repository |
From: <mr...@us...> - 2003-01-08 05:53:00
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/filter In directory sc8-pr-cvs1:/tmp/cvs-serv29066/filter Log Message: Directory /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/filter added to the repository |
From: <mr...@us...> - 2003-01-08 05:53:00
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/form In directory sc8-pr-cvs1:/tmp/cvs-serv29066/form Log Message: Directory /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/form added to the repository |
From: <mr...@us...> - 2003-01-08 05:53:00
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/action In directory sc8-pr-cvs1:/tmp/cvs-serv29066/action Log Message: Directory /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp/action added to the repository |
From: <mr...@us...> - 2003-01-08 05:52:52
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp In directory sc8-pr-cvs1:/tmp/cvs-serv28997/webapp Log Message: Directory /cvsroot/struts/struts-resume/src/web/org/appfuse/webapp added to the repository |
From: <mr...@us...> - 2003-01-08 05:52:47
|
Update of /cvsroot/struts/struts-resume/src/web/org/appfuse In directory sc8-pr-cvs1:/tmp/cvs-serv28924/appfuse Log Message: Directory /cvsroot/struts/struts-resume/src/web/org/appfuse added to the repository |
From: <mr...@us...> - 2003-01-08 05:52:42
|
Update of /cvsroot/struts/struts-resume/src/web/org In directory sc8-pr-cvs1:/tmp/cvs-serv28880/org Log Message: Directory /cvsroot/struts/struts-resume/src/web/org added to the repository |