Revision: 1336
Author: mathiasbr
Date: 2006-08-22 14:01:52 -0700 (Tue, 22 Aug 2006)
ViewCVS: http://svn.sourceforge.net/spring-rich-c/?rev=1336&view=rev
Log Message:
-----------
spring-binding updated to 1.0-rc3
removed spring-orm dependency as it is not used
Modified Paths:
--------------
trunk/spring-richclient/pom.xml
trunk/spring-richclient/samples/petclinic/business/pom.xml
trunk/spring-richclient/samples/simple/src/main/java/org/springframework/richclient/samples/simple/ui/convert/DateToText.java
trunk/spring-richclient/samples/simple/src/main/java/org/springframework/richclient/samples/simple/ui/convert/TextToDate.java
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/application/DefaultConversionService.java
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/CollectionConverter.java
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/GlazedListModelConverter.java
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/ListModelConverter.java
trunk/spring-richclient/support/src/test/java/org/springframework/binding/form/support/AbstractFormModelTests.java
trunk/spring-richclient/support/src/test/java/org/springframework/binding/form/support/DefaultFormModelTests.java
Modified: trunk/spring-richclient/pom.xml
===================================================================
--- trunk/spring-richclient/pom.xml 2006-08-22 20:23:04 UTC (rev 1335)
+++ trunk/spring-richclient/pom.xml 2006-08-22 21:01:52 UTC (rev 1336)
@@ -611,7 +611,29 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-binding</artifactId>
- <version>0.2005-07-22</version>
+ <version>1.0-rc3</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ognl</groupId>
+ <artifactId>ognl</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.springmodules</groupId>
@@ -623,7 +645,21 @@
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
- <version>1.1</version> <!-- 1.0.1 <= x -->
+ <version>1.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>logkit</groupId>
+ <artifactId>logkit</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>avalon-framework</groupId>
+ <artifactId>avalon-framework</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<!-- Dependency injection -->
@@ -748,11 +784,6 @@
</dependency>
<dependency>
<groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
Modified: trunk/spring-richclient/samples/petclinic/business/pom.xml
===================================================================
--- trunk/spring-richclient/samples/petclinic/business/pom.xml 2006-08-22
20:23:04 UTC (rev 1335)
+++ trunk/spring-richclient/samples/petclinic/business/pom.xml 2006-08-22
21:01:52 UTC (rev 1336)
@@ -43,10 +43,6 @@
</dependency>
<dependency>
<groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
Modified:
trunk/spring-richclient/samples/simple/src/main/java/org/springframework/richclient/samples/simple/ui/convert/DateToText.java
===================================================================
---
trunk/spring-richclient/samples/simple/src/main/java/org/springframework/richclient/samples/simple/ui/convert/DateToText.java
2006-08-22 20:23:04 UTC (rev 1335)
+++
trunk/spring-richclient/samples/simple/src/main/java/org/springframework/richclient/samples/simple/ui/convert/DateToText.java
2006-08-22 21:01:52 UTC (rev 1336)
@@ -20,6 +20,7 @@
import org.springframework.binding.convert.support.AbstractFormattingConverter;
import org.springframework.binding.format.support.DateFormatter;
+import org.springframework.binding.util.MapAccessor;
/**
* Convert a Date value to a String. This will determine how all Date fields
are rendered
@@ -62,7 +63,7 @@
/**
* Convert the Date to a String using the configured format.
*/
- protected Object doConvert( Object source, Class targetClass ) throws
Exception {
+ protected Object doConvert( Object source, Class targetClass, MapAccessor
context ) throws Exception {
return (source == null) ? "" : format.formatValue(source);
}
Modified:
trunk/spring-richclient/samples/simple/src/main/java/org/springframework/richclient/samples/simple/ui/convert/TextToDate.java
===================================================================
---
trunk/spring-richclient/samples/simple/src/main/java/org/springframework/richclient/samples/simple/ui/convert/TextToDate.java
2006-08-22 20:23:04 UTC (rev 1335)
+++
trunk/spring-richclient/samples/simple/src/main/java/org/springframework/richclient/samples/simple/ui/convert/TextToDate.java
2006-08-22 21:01:52 UTC (rev 1336)
@@ -23,6 +23,7 @@
import org.springframework.binding.convert.support.AbstractConverter;
import org.springframework.binding.format.support.DateFormatter;
+import org.springframework.binding.util.MapAccessor;
import org.springframework.util.StringUtils;
/**
@@ -60,7 +61,7 @@
* @return converted Date
* @throws Exception on parsing failure
*/
- protected Object doConvert( Object source, Class targetClass ) throws
Exception {
+ protected Object doConvert( Object source, Class targetClass, MapAccessor
context ) throws Exception {
String src = (String) source;
// If the user entered slashes, convert them to dashes
Modified:
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/application/DefaultConversionService.java
===================================================================
---
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/application/DefaultConversionService.java
2006-08-22 20:23:04 UTC (rev 1335)
+++
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/application/DefaultConversionService.java
2006-08-22 21:01:52 UTC (rev 1336)
@@ -21,8 +21,9 @@
import org.springframework.binding.convert.support.AbstractConverter;
import org.springframework.binding.convert.support.AbstractFormattingConverter;
-import org.springframework.binding.format.FormatterLocator;
-import org.springframework.binding.format.support.SimpleFormatterLocator;
+import org.springframework.binding.format.FormatterFactory;
+import org.springframework.binding.format.support.SimpleFormatterFactory;
+import org.springframework.binding.util.MapAccessor;
import org.springframework.richclient.convert.support.CollectionConverter;
import org.springframework.richclient.convert.support.ListModelConverter;
import org.springframework.util.StringUtils;
@@ -30,11 +31,11 @@
public class DefaultConversionService extends
org.springframework.binding.convert.support.DefaultConversionService {
public DefaultConversionService() {
- super(false);
addDefaultConverters();
}
protected void addDefaultConverters() {
+ super.addDefaultConverters();
addConverter(new TextToDate(getFormatterLocator(), true));
addConverter(new DateToText(getFormatterLocator(), true));
addConverter(new TextToNumber(getFormatterLocator(), true));
@@ -45,16 +46,16 @@
addConverter(new ListModelConverter());
}
- private FormatterLocator getFormatterLocator() {
- return new SimpleFormatterLocator();
+ private FormatterFactory getFormatterLocator() {
+ return new SimpleFormatterFactory();
}
public static final class TextToDate extends AbstractFormattingConverter {
private final boolean allowEmpty;
- protected TextToDate(FormatterLocator formatterLocator, boolean
allowEmpty) {
- super(formatterLocator);
+ protected TextToDate(FormatterFactory formatterFactory, boolean
allowEmpty) {
+ super(formatterFactory);
this.allowEmpty = allowEmpty;
}
@@ -66,8 +67,8 @@
return new Class[] { Date.class };
}
- protected Object doConvert(Object source, Class targetClass) throws
Exception {
- return (!allowEmpty || StringUtils.hasText((String) source)) ?
getFormatterLocator().getDateTimeFormatter()
+ protected Object doConvert(Object source, Class targetClass,
MapAccessor context) throws Exception {
+ return (!allowEmpty || StringUtils.hasText((String)source)) ?
getFormatterFactory().getDateTimeFormatter()
.parseValue((String) source, Date.class) : null;
}
}
@@ -76,7 +77,7 @@
private final boolean allowEmpty;
- protected DateToText(FormatterLocator formatterLocator, boolean
allowEmpty) {
+ protected DateToText(FormatterFactory formatterLocator, boolean
allowEmpty) {
super(formatterLocator);
this.allowEmpty = allowEmpty;
}
@@ -89,8 +90,8 @@
return new Class[] { String.class };
}
- protected Object doConvert(Object source, Class targetClass) throws
Exception {
- return (!allowEmpty || source != null) ?
getFormatterLocator().getDateTimeFormatter().formatValue(source)
+ protected Object doConvert(Object source, Class targetClass,
MapAccessor context) throws Exception {
+ return (!allowEmpty || source != null) ?
getFormatterFactory().getDateTimeFormatter().formatValue(source)
: "";
}
}
@@ -99,7 +100,7 @@
private final boolean allowEmpty;
- protected TextToNumber(FormatterLocator formatterLocator, boolean
allowEmpty) {
+ protected TextToNumber(FormatterFactory formatterLocator, boolean
allowEmpty) {
super(formatterLocator);
this.allowEmpty = allowEmpty;
}
@@ -113,8 +114,8 @@
BigInteger.class, BigDecimal.class, };
}
- protected Object doConvert(Object source, Class targetClass) throws
Exception {
- return (!allowEmpty || StringUtils.hasText((String) source)) ?
getFormatterLocator().getNumberFormatter(
+ protected Object doConvert(Object source, Class targetClass,
MapAccessor context) throws Exception {
+ return (!allowEmpty || StringUtils.hasText((String)source)) ?
getFormatterFactory().getNumberFormatter(
targetClass).parseValue((String) source, targetClass) :
null;
}
}
@@ -123,7 +124,7 @@
private final boolean allowEmpty;
- protected NumberToText(FormatterLocator formatterLocator, boolean
allowEmpty) {
+ protected NumberToText(FormatterFactory formatterLocator, boolean
allowEmpty) {
super(formatterLocator);
this.allowEmpty = allowEmpty;
}
@@ -137,8 +138,8 @@
return new Class[] { String.class };
}
- protected Object doConvert(Object source, Class targetClass) throws
Exception {
- return (!allowEmpty || source != null) ?
getFormatterLocator().getNumberFormatter(source.getClass())
+ protected Object doConvert(Object source, Class targetClass,
MapAccessor context) throws Exception {
+ return (!allowEmpty || source != null) ?
getFormatterFactory().getNumberFormatter(source.getClass())
.formatValue(source) : "";
}
}
@@ -181,7 +182,7 @@
return new Class[] { Boolean.class };
}
- protected Object doConvert(Object source, Class targetClass) throws
Exception {
+ protected Object doConvert(Object source, Class targetClass,
MapAccessor context) throws Exception {
String text = (String) source;
if (!StringUtils.hasText(text)) {
return null;
@@ -229,7 +230,7 @@
return new Class[] { String.class };
}
- protected Object doConvert(Object source, Class targetClass) throws
Exception {
+ protected Object doConvert(Object source, Class targetClass,
MapAccessor context) throws Exception {
Boolean bool = (Boolean) source;
if (this.trueString != null && bool.booleanValue()) {
return trueString;
Modified:
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/CollectionConverter.java
===================================================================
---
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/CollectionConverter.java
2006-08-22 20:23:04 UTC (rev 1335)
+++
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/CollectionConverter.java
2006-08-22 21:01:52 UTC (rev 1336)
@@ -23,6 +23,7 @@
import org.springframework.binding.convert.Converter;
import org.springframework.binding.convert.support.AbstractConverter;
+import org.springframework.binding.util.MapAccessor;
import org.springframework.core.ReflectiveVisitorHelper;
/**
@@ -43,7 +44,7 @@
private Object visitor = new ValuesVisitor();
- protected Object doConvert(Object sourceValue, Class targetClass) throws
Exception {
+ protected Object doConvert(Object sourceValue, Class targetClass,
MapAccessor context) throws Exception {
List values = (List) visitorHelper.invokeVisit(visitor, sourceValue);
if (Object[].class == targetClass) {
return values.toArray();
Modified:
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/GlazedListModelConverter.java
===================================================================
---
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/GlazedListModelConverter.java
2006-08-22 20:23:04 UTC (rev 1335)
+++
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/GlazedListModelConverter.java
2006-08-22 21:01:52 UTC (rev 1336)
@@ -18,6 +18,7 @@
import javax.swing.ListModel;
import org.springframework.binding.convert.support.AbstractConverter;
+import org.springframework.binding.util.MapAccessor;
import ca.odell.glazedlists.EventList;
import ca.odell.glazedlists.swing.EventListModel;
@@ -33,7 +34,7 @@
private static final Class[] TARGET_CLASSES = new Class[]
{ListModel.class};
private static final Class[] SOURCE_CLASSES = new Class[]
{EventList.class};
- protected Object doConvert(Object source, Class targetClass) throws
Exception {
+ protected Object doConvert(Object source, Class targetClass, MapAccessor
context) throws Exception {
return new EventListModel((EventList) source);
}
Modified:
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/ListModelConverter.java
===================================================================
---
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/ListModelConverter.java
2006-08-22 20:23:04 UTC (rev 1335)
+++
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/convert/support/ListModelConverter.java
2006-08-22 21:01:52 UTC (rev 1336)
@@ -23,6 +23,7 @@
import javax.swing.ListModel;
import org.springframework.binding.convert.support.AbstractConverter;
+import org.springframework.binding.util.MapAccessor;
import org.springframework.binding.value.support.ListListModel;
import org.springframework.core.ReflectiveVisitorHelper;
@@ -39,7 +40,7 @@
private final ReflectiveVisitorHelper visitorHelper = new
ReflectiveVisitorHelper();
- protected Object doConvert(Object sourceValue, Class targetClass) throws
Exception {
+ protected Object doConvert(Object sourceValue, Class targetClass,
MapAccessor context) throws Exception {
return visitorHelper.invokeVisit(this, sourceValue);
}
Modified:
trunk/spring-richclient/support/src/test/java/org/springframework/binding/form/support/AbstractFormModelTests.java
===================================================================
---
trunk/spring-richclient/support/src/test/java/org/springframework/binding/form/support/AbstractFormModelTests.java
2006-08-22 20:23:04 UTC (rev 1335)
+++
trunk/spring-richclient/support/src/test/java/org/springframework/binding/form/support/AbstractFormModelTests.java
2006-08-22 21:01:52 UTC (rev 1336)
@@ -19,8 +19,10 @@
import java.beans.PropertyChangeListener;
import org.springframework.beans.NotReadablePropertyException;
+import org.springframework.binding.convert.ConversionException;
import org.springframework.binding.convert.ConversionExecutor;
import org.springframework.binding.convert.ConversionService;
+import
org.springframework.binding.convert.support.GenericConversionService.NoOpConverter;
import org.springframework.binding.form.CommitListener;
import org.springframework.binding.form.FormModel;
import org.springframework.binding.support.BeanPropertyAccessStrategy;
@@ -324,7 +326,8 @@
assertEquals(String.class, cs.lastSource);
assertEquals(Integer.class, cs.lastTarget);
- cs.executer = new ConversionExecutor(null, null);
+ cs.executer = new ConversionExecutor(String.class, Integer.class,
+ new NoOpConverter(String.class, Integer.class));
ValueModel cvm = fm.getValueModel("simpleProperty", Integer.class);
assertEquals(3, cs.calls);
assertEquals(Integer.class, cs.lastSource);
@@ -460,5 +463,10 @@
fail("this method should never be called");
return null;
}
+
+ public ConversionExecutor[] getConversionExecutorsFrom(Class
sourceClass) throws ConversionException {
+ fail("this method should never be called");
+ return null;
+ }
}
}
Modified:
trunk/spring-richclient/support/src/test/java/org/springframework/binding/form/support/DefaultFormModelTests.java
===================================================================
---
trunk/spring-richclient/support/src/test/java/org/springframework/binding/form/support/DefaultFormModelTests.java
2006-08-22 20:23:04 UTC (rev 1335)
+++
trunk/spring-richclient/support/src/test/java/org/springframework/binding/form/support/DefaultFormModelTests.java
2006-08-22 21:01:52 UTC (rev 1336)
@@ -15,10 +15,13 @@
*/
package org.springframework.binding.form.support;
+import java.util.Map;
import java.util.Set;
+import org.springframework.binding.convert.ConversionException;
import org.springframework.binding.convert.ConversionExecutor;
-import org.springframework.binding.convert.support.AbstractConverter;
+import org.springframework.binding.convert.Converter;
+import
org.springframework.binding.convert.support.GenericConversionService.NoOpConverter;
import org.springframework.binding.form.BindingErrorMessageProvider;
import org.springframework.binding.form.FormModel;
import org.springframework.binding.form.ValidatingFormModel;
@@ -38,7 +41,7 @@
/**
* Tests for @link DefaultFormModel
*
- * @author Oliver Hutchison
+ * @author Oliver Hutchison
*/
public class DefaultFormModelTests extends AbstractFormModelTests {
@@ -51,11 +54,11 @@
}
public void testPropertyChangeCausesValidation() {
- DefaultFormModel fm = (DefaultFormModel)getFormModel(new TestBean());
+ DefaultFormModel fm = (DefaultFormModel) getFormModel(new TestBean());
TestValidator v = new TestValidator();
fm.setValidator(v);
TestConversionService cs = new TestConversionService();
- cs.executer = new ConversionExecutor(new NoOpConverter(String.class,
String.class), String.class);
+ cs.executer = new ConversionExecutor(String.class, String.class, new
NoOpConverter(String.class, String.class));
fm.setConversionService(cs);
ValueModel vm = fm.getValueModel("simpleProperty");
assertEquals(1, v.count);
@@ -90,7 +93,7 @@
v.results = getValidationResults("message1");
vm.setValue("1");
assertEquals(2, v.count);
- assertEquals(1, r.getMessageCount());
+ assertEquals(1, r.getMessageCount());
assertContainsMessage("message1", r.getMessages());
v.results = getValidationResults("message2");
@@ -117,7 +120,7 @@
}
public void testRaiseClearValidationMessage() {
- TestDefaultFormModel fm = (TestDefaultFormModel)getFormModel(new
TestBean());
+ TestDefaultFormModel fm = (TestDefaultFormModel) getFormModel(new
TestBean());
ValidationResultsModel r = fm.getValidationResults();
TestValidator v = new TestValidator();
fm.setValidator(v);
@@ -150,7 +153,7 @@
}
public void testChangingValidatingClearsMessagesOrValidates() {
- DefaultFormModel fm = (DefaultFormModel)getFormModel(new TestBean());
+ DefaultFormModel fm = (DefaultFormModel) getFormModel(new TestBean());
ValidationResultsModel r = fm.getValidationResults();
TestValidator v = new TestValidator();
v.results = getValidationResults("message1");
@@ -193,7 +196,7 @@
public void testSetThrowsExceptionRaisesValidationMessage() {
final ErrorBean errorBean = new ErrorBean();
- DefaultFormModel fm = (DefaultFormModel)getFormModel(errorBean);
+ DefaultFormModel fm = (DefaultFormModel) getFormModel(errorBean);
final ValueModel vm = fm.getValueModel("error");
vm.setValue("test");
@@ -205,9 +208,10 @@
}
public void testTypeConversionThrowsExceptionRaisesValidationMessage() {
- DefaultFormModel fm = (DefaultFormModel)getFormModel(new TestBean());
+ DefaultFormModel fm = (DefaultFormModel) getFormModel(new TestBean());
TestConversionService cs = new TestConversionService();
- cs.executer = new ConversionExecutor(null, null);
+ cs.executer = new ConversionExecutor(String.class, Integer.class, new
ExceptionConverter(String.class,
+ Integer.class));
fm.setConversionService(cs);
final ValueModel vm = fm.getValueModel("simpleProperty",
Integer.class);
@@ -217,7 +221,7 @@
public void testValidatingEvents() {
TestPropertyChangeListener pcl = new
TestPropertyChangeListener(ValidatingFormModel.VALIDATING_PROPERTY);
- DefaultFormModel fm = (DefaultFormModel)getFormModel(new TestBean());
+ DefaultFormModel fm = (DefaultFormModel) getFormModel(new TestBean());
fm.addPropertyChangeListener(ValidatingFormModel.VALIDATING_PROPERTY,
pcl);
assertTrue(fm.isEnabled());
@@ -245,8 +249,8 @@
// no additional asserts, this test should just not throw an exception!
}
-
- public void testDefaultFormModelFromValueModel() throws Exception {
+
+ public void testDefaultFormModelFromValueModel() throws Exception {
TestBean testBean = new TestBean();
ValueModel valueModel = new ValueHolder(testBean);
DefaultFormModel model = new DefaultFormModel(valueModel);
@@ -260,8 +264,8 @@
}
private void assertContainsMessage(String message, Set messages) {
- assertTrue("Set of messages does not contain expected message '" +
message + "'",
- messages.contains(new
DefaultValidationMessage("simpleProperty", Severity.ERROR, message)));
+ assertTrue("Set of messages does not contain expected message '" +
message + "'", messages
+ .contains(new DefaultValidationMessage("simpleProperty",
Severity.ERROR, message)));
}
public static class TestValidator implements Validator {
@@ -290,30 +294,6 @@
}
}
- public static class NoOpConverter extends AbstractConverter {
-
- private Class sourceClass;
-
- private Class targetClass;
-
- public NoOpConverter(Class sourceClass, Class targetClass) {
- this.sourceClass = sourceClass;
- this.targetClass = targetClass;
- }
-
- protected Object doConvert(Object source, Class targetClass) throws
Exception {
- return source;
- }
-
- public Class[] getSourceClasses() {
- return new Class[] {sourceClass};
- }
-
- public Class[] getTargetClasses() {
- return new Class[] {targetClass};
- }
- }
-
private static class TestDefaultFormModel extends DefaultFormModel {
public TestDefaultFormModel(Object bean) {
super(bean, false);
@@ -344,4 +324,29 @@
super.clearValidationMessage(validationMessage);
}
}
+
+ private static class ExceptionConverter implements Converter {
+
+ private final Class sourceClass;
+
+ private final Class targetClass;
+
+ public ExceptionConverter(Class sourceClass, Class targetClass) {
+ this.sourceClass = sourceClass;
+ this.targetClass = targetClass;
+ }
+
+ public Object convert(Object source, Class targetClass, Map context)
throws ConversionException {
+ throw new ConversionException("test", targetClass);
+ }
+
+ public Class[] getSourceClasses() {
+ return new Class[] { sourceClass };
+ }
+
+ public Class[] getTargetClasses() {
+ return new Class[] { targetClass };
+ }
+
+ }
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
spring-rich-c-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spring-rich-c-cvs