Update to current Spring JAR dependencies.

This commit is contained in:
Ben Alex 2005-03-22 11:17:22 +00:00
parent 2b6b81f39a
commit 9f66c0eae9
10 changed files with 155 additions and 27 deletions

View File

@ -26,15 +26,15 @@
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="var" path="MAVEN_REPO/resin/jars/resin-3.0.9.jar"/> <classpathentry kind="var" path="MAVEN_REPO/resin/jars/resin-3.0.9.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/retroweaver/jars/retroweaver-1.0fcs.jar"/> <classpathentry kind="var" path="MAVEN_REPO/retroweaver/jars/retroweaver-1.0fcs.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-aop-1.1.3.jar"/> <classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-aop-1.1.5.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-context-1.1.3.jar"/> <classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-context-1.1.5.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-core-1.1.3.jar"/> <classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-core-1.1.5.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-dao-1.1.3.jar"/> <classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-dao-1.1.5.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-mock-1.1.3.jar"/> <classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-mock-1.1.5.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-orm-1.1.3.jar"/> <classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-orm-1.1.5.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-web-1.1.3.jar"/> <classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-web-1.1.5.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-webmvc-1.1.3.jar"/> <classpathentry kind="var" path="MAVEN_REPO/springframework/jars/spring-webmvc-1.1.5.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/log4j/jars/log4j-1.2.8.jar"/> <classpathentry kind="var" path="MAVEN_REPO/log4j/jars/log4j-1.2.9.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/aopalliance/jars/aopalliance-1.0.jar"/> <classpathentry kind="var" path="MAVEN_REPO/aopalliance/jars/aopalliance-1.0.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/aspectj/jars/aspectjrt-1.2.jar"/> <classpathentry kind="var" path="MAVEN_REPO/aspectj/jars/aspectjrt-1.2.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/cas/jars/casclient-2.0.11.jar"/> <classpathentry kind="var" path="MAVEN_REPO/cas/jars/casclient-2.0.11.jar"/>
@ -43,8 +43,8 @@
<classpathentry kind="var" path="MAVEN_REPO/commons-collections/jars/commons-collections-3.1.jar"/> <classpathentry kind="var" path="MAVEN_REPO/commons-collections/jars/commons-collections-3.1.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/commons-logging/jars/commons-logging-1.0.4.jar"/> <classpathentry kind="var" path="MAVEN_REPO/commons-logging/jars/commons-logging-1.0.4.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/hsqldb/jars/hsqldb-1.7.3.0.jar"/> <classpathentry kind="var" path="MAVEN_REPO/hsqldb/jars/hsqldb-1.7.3.0.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/oro/jars/oro-2.0.7.jar"/> <classpathentry kind="var" path="MAVEN_REPO/oro/jars/oro-2.0.8.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/servletapi/jars/servletapi-2.3.jar"/> <classpathentry kind="var" path="MAVEN_REPO/servletapi/jars/servletapi-2.4.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/tomcat/jars/catalina-4.1.9.jar"/> <classpathentry kind="var" path="MAVEN_REPO/tomcat/jars/catalina-4.1.9.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/jetty/jars/org.mortbay.jetty-4.2.22.jar"/> <classpathentry kind="var" path="MAVEN_REPO/jetty/jars/org.mortbay.jetty-4.2.22.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-common-3.2.3.jar"/> <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jboss-common-3.2.3.jar"/>
@ -52,5 +52,6 @@
<classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jbosssx-3.2.3.jar"/> <classpathentry kind="var" path="MAVEN_REPO/jboss/jars/jbosssx-3.2.3.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"/> <classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/ehcache/jars/ehcache-1.1.jar"/> <classpathentry kind="var" path="MAVEN_REPO/ehcache/jars/ehcache-1.1.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/jspapi/jars/jsp-api-2.0.jar"/>
<classpathentry kind="output" path="target/eclipseclasses"/> <classpathentry kind="output" path="target/eclipseclasses"/>
</classpath> </classpath>

View File

@ -52,9 +52,9 @@ public class MockHttpServletRequest implements HttpServletRequest {
private HttpSession session = new MockHttpSession(); private HttpSession session = new MockHttpSession();
private Map attribMap = new HashMap(); private Map attribMap = new HashMap();
private Map cookiesMap = new HashMap();
private Map headersMap = new HashMap(); private Map headersMap = new HashMap();
private Map paramMap = new HashMap(); private Map paramMap = new HashMap();
private Map cookiesMap = new HashMap();
private Principal principal; private Principal principal;
private String contextPath = ""; private String contextPath = "";
private String pathInfo; // null for no extra path private String pathInfo; // null for no extra path
@ -76,12 +76,14 @@ public class MockHttpServletRequest implements HttpServletRequest {
this.queryString = queryString; this.queryString = queryString;
} }
public MockHttpServletRequest(Map headers, HttpSession session, String queryString, Cookie[] cookies) { public MockHttpServletRequest(Map headers, HttpSession session,
this.queryString = queryString; String queryString, Cookie[] cookies) {
this.queryString = queryString;
this.headersMap = headers; this.headersMap = headers;
this.session = session; this.session = session;
for (int i = 0; i < cookies.length; i++) { for (int i = 0; i < cookies.length; i++) {
cookiesMap.put(cookies[i].getName(), cookies[i]); cookiesMap.put(cookies[i].getName(), cookies[i]);
} }
} }
@ -172,6 +174,18 @@ public class MockHttpServletRequest implements HttpServletRequest {
throw new UnsupportedOperationException("mock method not implemented"); throw new UnsupportedOperationException("mock method not implemented");
} }
public String getLocalAddr() {
throw new UnsupportedOperationException("mock method not implemented");
}
public String getLocalName() {
throw new UnsupportedOperationException("mock method not implemented");
}
public int getLocalPort() {
throw new UnsupportedOperationException("mock method not implemented");
}
public Locale getLocale() { public Locale getLocale() {
throw new UnsupportedOperationException("mock method not implemented"); throw new UnsupportedOperationException("mock method not implemented");
} }
@ -246,6 +260,10 @@ public class MockHttpServletRequest implements HttpServletRequest {
throw new UnsupportedOperationException("mock method not implemented"); throw new UnsupportedOperationException("mock method not implemented");
} }
public int getRemotePort() {
throw new UnsupportedOperationException("mock method not implemented");
}
public String getRemoteUser() { public String getRemoteUser() {
throw new UnsupportedOperationException("mock method not implemented"); throw new UnsupportedOperationException("mock method not implemented");
} }

View File

@ -53,6 +53,10 @@ public class MockHttpServletResponse implements HttpServletResponse {
throw new UnsupportedOperationException("mock method not implemented"); throw new UnsupportedOperationException("mock method not implemented");
} }
public void setCharacterEncoding(String arg0) {
throw new UnsupportedOperationException("mock method not implemented");
}
public String getCharacterEncoding() { public String getCharacterEncoding() {
throw new UnsupportedOperationException("mock method not implemented"); throw new UnsupportedOperationException("mock method not implemented");
} }
@ -73,6 +77,10 @@ public class MockHttpServletResponse implements HttpServletResponse {
throw new UnsupportedOperationException("mock method not implemented"); throw new UnsupportedOperationException("mock method not implemented");
} }
public String getContentType() {
throw new UnsupportedOperationException("mock method not implemented");
}
public Cookie getCookieByName(String name) { public Cookie getCookieByName(String name) {
return (Cookie) cookiesMap.get(name); return (Cookie) cookiesMap.get(name);
} }

View File

@ -1,4 +1,4 @@
/* Copyright 2004 Acegi Technology Pty Limited /* Copyright 2004, 2005 Acegi Technology Pty Limited
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -244,6 +244,21 @@ public class FilterInvocationTests extends TestCase {
"mock method not implemented"); "mock method not implemented");
} }
public String getLocalAddr() {
throw new UnsupportedOperationException(
"mock method not implemented");
}
public String getLocalName() {
throw new UnsupportedOperationException(
"mock method not implemented");
}
public int getLocalPort() {
throw new UnsupportedOperationException(
"mock method not implemented");
}
public Locale getLocale() { public Locale getLocale() {
throw new UnsupportedOperationException( throw new UnsupportedOperationException(
"mock method not implemented"); "mock method not implemented");
@ -299,6 +314,11 @@ public class FilterInvocationTests extends TestCase {
"mock method not implemented"); "mock method not implemented");
} }
public int getRemotePort() {
throw new UnsupportedOperationException(
"mock method not implemented");
}
public RequestDispatcher getRequestDispatcher(String arg0) { public RequestDispatcher getRequestDispatcher(String arg0) {
throw new UnsupportedOperationException( throw new UnsupportedOperationException(
"mock method not implemented"); "mock method not implemented");
@ -341,6 +361,11 @@ public class FilterInvocationTests extends TestCase {
"mock method not implemented"); "mock method not implemented");
} }
public void setCharacterEncoding(String arg0) {
throw new UnsupportedOperationException(
"mock method not implemented");
}
public String getCharacterEncoding() { public String getCharacterEncoding() {
throw new UnsupportedOperationException( throw new UnsupportedOperationException(
"mock method not implemented"); "mock method not implemented");
@ -361,6 +386,11 @@ public class FilterInvocationTests extends TestCase {
"mock method not implemented"); "mock method not implemented");
} }
public String getContentType() {
throw new UnsupportedOperationException(
"mock method not implemented");
}
public void setLocale(Locale arg0) { public void setLocale(Locale arg0) {
throw new UnsupportedOperationException( throw new UnsupportedOperationException(
"mock method not implemented"); "mock method not implemented");

View File

@ -31,7 +31,7 @@
<action dev="benalex" type="update">ContextHolderAwareRequestWrapper methods return null if user is anonymous</action> <action dev="benalex" type="update">ContextHolderAwareRequestWrapper methods return null if user is anonymous</action>
<action dev="benalex" type="update">AbstractBasicAclEntry improved compatibility with Hibernate</action> <action dev="benalex" type="update">AbstractBasicAclEntry improved compatibility with Hibernate</action>
<action dev="benalex" type="update">User now provides a more useful toString() method</action> <action dev="benalex" type="update">User now provides a more useful toString() method</action>
<action dev="benalex" type="update">Use Spring 1.1.5 JARs</action> <action dev="benalex" type="update">Update to match Spring 1.1.5 official JAR dependencies (NB: now using Servlet 2.4 and related JSP/taglib JARs)</action>
<action dev="benalex" type="fix">SecurityEnforcementFilter caused NullPointerException when anonymous authentication used with BasicProcessingFilterEntryPoint</action> <action dev="benalex" type="fix">SecurityEnforcementFilter caused NullPointerException when anonymous authentication used with BasicProcessingFilterEntryPoint</action>
<action dev="benalex" type="fix">FilterChainProxy now supports replacement of ServletRequest and ServetResponse by Filter beans</action> <action dev="benalex" type="fix">FilterChainProxy now supports replacement of ServletRequest and ServetResponse by Filter beans</action>
<action dev="fbos" type="fix">Corrected Authz parsing of whitespace in GrantedAuthoritys</action> <action dev="fbos" type="fix">Corrected Authz parsing of whitespace in GrantedAuthoritys</action>
@ -39,6 +39,9 @@
<action dev="benalex" type="fix">HttpSessionContextIntegrationFilter now handles HttpSession invalidation without redirection</action> <action dev="benalex" type="fix">HttpSessionContextIntegrationFilter now handles HttpSession invalidation without redirection</action>
<action dev="benalex" type="fix">StringSplitUtils.split() ignored delimiter argument</action> <action dev="benalex" type="fix">StringSplitUtils.split() ignored delimiter argument</action>
<action dev="benalex" type="fix">DigestProcessingFilter now provides userCache getter and setter</action> <action dev="benalex" type="fix">DigestProcessingFilter now provides userCache getter and setter</action>
<action dev="benalex" type="fix">Contacts Sample made to work with UserDetails-based Principal</action>
<action dev="benalex" type="update">Documentation improvements</action>
<action dev="benalex" type="update">Test coverage improvements</action>
</release> </release>
<release version="0.8.0" date="2005-03-03"> <release version="0.8.0" date="2005-03-03">
<action dev="benalex" type="add">Added Digest Authentication support (RFC 2617 and RFC 2069)</action> <action dev="benalex" type="add">Added Digest Authentication support (RFC 2617 and RFC 2069)</action>

View File

@ -194,7 +194,7 @@
<dependency> <dependency>
<groupId>jstl</groupId> <groupId>jstl</groupId>
<artifactId>jstl</artifactId> <artifactId>jstl</artifactId>
<version>1.0.2</version> <version>1.0.6</version>
<type>jar</type> <type>jar</type>
<properties> <properties>
<war.bundle>true</war.bundle> <war.bundle>true</war.bundle>
@ -203,13 +203,14 @@
<dependency> <dependency>
<groupId>servletapi</groupId> <groupId>servletapi</groupId>
<artifactId>servletapi</artifactId> <artifactId>servletapi</artifactId>
<version>2.3</version> <version>2.4</version>
<type>jar</type> <type>jar</type>
<url>http://java.sun.com/products/servlet</url>
</dependency> </dependency>
<dependency> <dependency>
<groupId>oro</groupId> <groupId>oro</groupId>
<artifactId>oro</artifactId> <artifactId>oro</artifactId>
<version>2.0.7</version> <version>2.0.8</version>
<type>jar</type> <type>jar</type>
<url>http://jakarta.apache.org/oro/</url> <url>http://jakarta.apache.org/oro/</url>
<properties> <properties>
@ -229,7 +230,7 @@
<dependency> <dependency>
<groupId>log4j</groupId> <groupId>log4j</groupId>
<artifactId>log4j</artifactId> <artifactId>log4j</artifactId>
<version>1.2.8</version> <version>1.2.9</version>
<type>jar</type> <type>jar</type>
<properties> <properties>
<war.bundle>true</war.bundle> <war.bundle>true</war.bundle>
@ -338,7 +339,7 @@
<dependency> <dependency>
<groupId>taglibs</groupId> <groupId>taglibs</groupId>
<artifactId>standard</artifactId> <artifactId>standard</artifactId>
<version>1.0.4</version> <version>1.0.6</version>
<type>jar</type> <type>jar</type>
<url>http://jakarta.apache.org/taglibs/</url> <url>http://jakarta.apache.org/taglibs/</url>
<properties> <properties>
@ -377,6 +378,16 @@
<version>2.5</version> <version>2.5</version>
<type>plugin</type> <type>plugin</type>
</dependency> </dependency>
<dependency>
<groupId>jspapi</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<type>jar</type>
<url>http://java.sun.com/products/jsp</url>
<properties>
<war.bundle>false</war.bundle>
</properties>
</dependency>
</dependencies> </dependencies>
<build> <build>
<sourceDirectory>${basedir}/src/main/java</sourceDirectory> <sourceDirectory>${basedir}/src/main/java</sourceDirectory>

View File

@ -15,15 +15,18 @@
package sample.contact; package sample.contact;
import net.sf.acegisecurity.Authentication;
import net.sf.acegisecurity.UserDetails;
import net.sf.acegisecurity.acl.basic.AclObjectIdentity; import net.sf.acegisecurity.acl.basic.AclObjectIdentity;
import net.sf.acegisecurity.acl.basic.BasicAclExtendedDao; import net.sf.acegisecurity.acl.basic.BasicAclExtendedDao;
import net.sf.acegisecurity.acl.basic.NamedEntityObjectIdentity; import net.sf.acegisecurity.acl.basic.NamedEntityObjectIdentity;
import net.sf.acegisecurity.acl.basic.SimpleAclEntry; import net.sf.acegisecurity.acl.basic.SimpleAclEntry;
import net.sf.acegisecurity.context.ContextHolder; import net.sf.acegisecurity.context.security.SecureContextUtils;
import net.sf.acegisecurity.context.security.SecureContext;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.support.ApplicationObjectSupport;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
@ -34,7 +37,8 @@ import java.util.Random;
* @author Ben Alex * @author Ben Alex
* @version $Id$ * @version $Id$
*/ */
public class ContactManagerBackend implements ContactManager, InitializingBean { public class ContactManagerBackend extends ApplicationObjectSupport
implements ContactManager, InitializingBean {
//~ Instance fields ======================================================== //~ Instance fields ========================================================
private BasicAclExtendedDao basicAclExtendedDao; private BasicAclExtendedDao basicAclExtendedDao;
@ -44,10 +48,18 @@ public class ContactManagerBackend implements ContactManager, InitializingBean {
//~ Methods ================================================================ //~ Methods ================================================================
public List getAll() { public List getAll() {
if (logger.isDebugEnabled()) {
logger.debug("Returning all contacts");
}
return contactDao.findAll(); return contactDao.findAll();
} }
public List getAllRecipients() { public List getAllRecipients() {
if (logger.isDebugEnabled()) {
logger.debug("Returning all recipients");
}
List list = contactDao.findAllPrincipals(); List list = contactDao.findAllPrincipals();
list.addAll(contactDao.findAllRoles()); list.addAll(contactDao.findAllRoles());
@ -63,6 +75,10 @@ public class ContactManagerBackend implements ContactManager, InitializingBean {
} }
public Contact getById(Integer id) { public Contact getById(Integer id) {
if (logger.isDebugEnabled()) {
logger.debug("Returning contact with id: " + id);
}
return contactDao.getById(id); return contactDao.getById(id);
} }
@ -80,6 +96,10 @@ public class ContactManagerBackend implements ContactManager, InitializingBean {
* @return DOCUMENT ME! * @return DOCUMENT ME!
*/ */
public Contact getRandomContact() { public Contact getRandomContact() {
if (logger.isDebugEnabled()) {
logger.debug("Returning random contact");
}
Random rnd = new Random(); Random rnd = new Random();
List contacts = contactDao.findAll(); List contacts = contactDao.findAll();
int getNumber = rnd.nextInt(contacts.size()); int getNumber = rnd.nextInt(contacts.size());
@ -94,6 +114,11 @@ public class ContactManagerBackend implements ContactManager, InitializingBean {
simpleAclEntry.setMask(permission.intValue()); simpleAclEntry.setMask(permission.intValue());
simpleAclEntry.setRecipient(recipient); simpleAclEntry.setRecipient(recipient);
basicAclExtendedDao.create(simpleAclEntry); basicAclExtendedDao.create(simpleAclEntry);
if (logger.isDebugEnabled()) {
logger.debug("Added permission " + permission + " for recipient "
+ recipient + " contact " + contact);
}
} }
public void afterPropertiesSet() throws Exception { public void afterPropertiesSet() throws Exception {
@ -114,6 +139,11 @@ public class ContactManagerBackend implements ContactManager, InitializingBean {
// Grant the current principal access to the contact // Grant the current principal access to the contact
addPermission(contact, getUsername(), addPermission(contact, getUsername(),
new Integer(SimpleAclEntry.ADMINISTRATION)); new Integer(SimpleAclEntry.ADMINISTRATION));
if (logger.isDebugEnabled()) {
logger.debug("Created contact " + contact
+ " and granted admin permission to recipient " + getUsername());
}
} }
public void delete(Contact contact) { public void delete(Contact contact) {
@ -121,19 +151,39 @@ public class ContactManagerBackend implements ContactManager, InitializingBean {
// Delete the ACL information as well // Delete the ACL information as well
basicAclExtendedDao.delete(makeObjectIdentity(contact)); basicAclExtendedDao.delete(makeObjectIdentity(contact));
if (logger.isDebugEnabled()) {
logger.debug("Deleted contact " + contact
+ " including ACL permissions");
}
} }
public void deletePermission(Contact contact, String recipient) { public void deletePermission(Contact contact, String recipient) {
basicAclExtendedDao.delete(makeObjectIdentity(contact), recipient); basicAclExtendedDao.delete(makeObjectIdentity(contact), recipient);
if (logger.isDebugEnabled()) {
logger.debug("Deleted contact " + contact
+ " ACL permissions for recipient " + recipient);
}
} }
public void update(Contact contact) { public void update(Contact contact) {
contactDao.update(contact); contactDao.update(contact);
if (logger.isDebugEnabled()) {
logger.debug("Updated contact " + contact);
}
} }
protected String getUsername() { protected String getUsername() {
return ((SecureContext) ContextHolder.getContext()).getAuthentication() Authentication auth = SecureContextUtils.getSecureContext()
.getPrincipal().toString(); .getAuthentication();
if (auth.getPrincipal() instanceof UserDetails) {
return ((UserDetails) auth.getPrincipal()).getUsername();
} else {
return auth.getPrincipal().toString();
}
} }
private AclObjectIdentity makeObjectIdentity(Contact contact) { private AclObjectIdentity makeObjectIdentity(Contact contact) {

View File

@ -20,6 +20,7 @@ log4j.rootLogger=WARN, stdout, fileout
#log4j.logger.net.sf.acegisecurity.ui.httpinvoker=DEBUG, stdout, fileout #log4j.logger.net.sf.acegisecurity.ui.httpinvoker=DEBUG, stdout, fileout
#log4j.logger.net.sf.acegisecurity.util=DEBUG, stdout, fileout #log4j.logger.net.sf.acegisecurity.util=DEBUG, stdout, fileout
#log4j.logger.net.sf.acegisecurity.providers.dao=DEBUG, stdout, fileout #log4j.logger.net.sf.acegisecurity.providers.dao=DEBUG, stdout, fileout
log4j.logger.sample.contact=DEBUG, stdout, fileout
# Console output... # Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout=org.apache.log4j.ConsoleAppender

View File

@ -0,0 +1,2 @@
err.name.webContact.name=Name 3-50 characters is required.
err.name.webContact.email=Email 3-50 characters is required.

View File

@ -11,6 +11,10 @@
<!-- ========================== WEB DEFINITIONS ======================= --> <!-- ========================== WEB DEFINITIONS ======================= -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename"><value>messages</value></property>
</bean>
<bean id="publicIndexController" class="sample.contact.PublicIndexController"> <bean id="publicIndexController" class="sample.contact.PublicIndexController">
<property name="contactManager"><ref bean="contactManager"/></property> <property name="contactManager"><ref bean="contactManager"/></property>
</bean> </bean>