[jboss-cvs] JBossAS SVN: r72740 - in trunk/testsuite: src/main/org/jboss/test/cluster/classloader/leak/test and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Apr 25 16:22:57 EDT 2008
Author: bstansberry at jboss.com
Date: 2008-04-25 16:22:57 -0400 (Fri, 25 Apr 2008)
New Revision: 72740
Added:
trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/FieldGranularityClassloaderLeakUnitTestCase.java
trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ReplicableClassesClassloaderLeakUnitTestCase.java
trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingNoReplicableServlet.java
trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingServlet.java
Removed:
trunk/testsuite/src/resources/cluster/classloader/leak/war/nocluster/WEB-INF/
Modified:
trunk/testsuite/imports/sections/cluster.xml
trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ClassloaderLeakUnitTestCase.java
trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/ReplicableServlet.java
trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/SimpleServlet.java
Log:
[JBAS-5405] Add classloader leak tests for simple use of @Replicable classes
Modified: trunk/testsuite/imports/sections/cluster.xml
===================================================================
--- trunk/testsuite/imports/sections/cluster.xml 2008-04-25 17:26:05 UTC (rev 72739)
+++ trunk/testsuite/imports/sections/cluster.xml 2008-04-25 20:22:57 UTC (rev 72740)
@@ -508,18 +508,18 @@
<include name="org/jboss/test/cluster/classloader/leak/web/aop/*"/>
</classes>
</war>
- <war destfile="${build.lib}/cluster-clleak-field-no-replicable.war"
- webxml="${build.resources}/cluster/classloader/leak/war/field/noreplicable/WEB-INF/web.xml">
- <webinf dir="${build.resources}/cluster/classloader/leak/war/field/WEB-INF">
- <include name="jboss-web.xml"/>
- </webinf>
- <classes dir="${build.classes}">
- <include name="org/jboss/test/classloader/leak/web/*"/>
- <include name="org/jboss/test/cluster/classloader/leak/web/*"/>
- </classes>
- </war>
- <war destfile="${build.lib}/cluster-clleak-nocluster-replicable.war"
- webxml="${build.resources}/cluster/classloader/leak/war/nocluster/WEB-INF/web.xml">
+ <war destfile="${build.lib}/cluster-clleak-field-no-replicable.war"
+ webxml="${build.resources}/cluster/classloader/leak/war/field/noreplicable/WEB-INF/web.xml">
+ <webinf dir="${build.resources}/cluster/classloader/leak/war/field/WEB-INF">
+ <include name="jboss-web.xml"/>
+ </webinf>
+ <classes dir="${build.classes}">
+ <include name="org/jboss/test/classloader/leak/web/*"/>
+ <include name="org/jboss/test/cluster/classloader/leak/web/*"/>
+ </classes>
+ </war>
+ <war destfile="${build.lib}/cluster-clleak-nocache-replicable.war"
+ webxml="${build.resources}/cluster/classloader/leak/war/nocache/WEB-INF/web.xml">
<webinf dir="${build.resources}/cluster/classloader/leak/war/WEB-INF">
<include name="jboss-web.xml"/>
</webinf>
@@ -528,7 +528,24 @@
<include name="org/jboss/test/cluster/classloader/leak/web/*"/>
<include name="org/jboss/test/cluster/classloader/leak/web/aop/*"/>
</classes>
+ <fileset dir="${build.resources}/cluster/classloader/leak/war/nocache">
+ <include name="simple.jsp"/>
+ </fileset>
</war>
+ <war destfile="${build.lib}/cluster-clleak-nocache-no-replicable.war"
+ webxml="${build.resources}/cluster/classloader/leak/war/nocache/noreplicable/WEB-INF/web.xml">
+ <webinf dir="${build.resources}/cluster/classloader/leak/war/WEB-INF">
+ <include name="jboss-web.xml"/>
+ </webinf>
+ <classes dir="${build.classes}">
+ <include name="org/jboss/test/classloader/leak/web/*"/>
+ <include name="org/jboss/test/cluster/classloader/leak/web/*"/>
+ <include name="org/jboss/test/cluster/classloader/leak/web/aop/*"/>
+ </classes>
+ <fileset dir="${build.resources}/cluster/classloader/leak/war/nocache">
+ <include name="simple.jsp"/>
+ </fileset>
+ </war>
<war destfile="${build.lib}/cluster-clleak-simple-ejb.war"
webxml="${build.resources}/cluster/classloader/leak/war/ejb2/WEB-INF/web.xml">
<classes dir="${build.classes}">
Modified: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ClassloaderLeakUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ClassloaderLeakUnitTestCase.java 2008-04-25 17:26:05 UTC (rev 72739)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ClassloaderLeakUnitTestCase.java 2008-04-25 20:22:57 UTC (rev 72740)
@@ -45,10 +45,6 @@
public class ClassloaderLeakUnitTestCase extends ClassloaderLeakTestBase
{
private static final String SIMPLE_WAR = "cluster-clleak-simple.war";
- private static final String SIMPLE_REPLICABLE_WAR = "cluster-clleak-simple-replicable.war";
- private static final String FIELD_WAR = "cluster-clleak-field.war";
- private static final String FIELD_NO_REPLICABLE_WAR = "cluster-clleak-field-no-replicable.war";
- private static final String NO_CLUSTER_REPLICABLE_WAR = "cluster-clleak-nocluster-replicable.war";
private static final String SIMPLE_EJB = "cluster-clleak-ejb.jar";
private static final String SIMPLE_EAR = "cluster clleak-simple.ear";
private static final String SIMPLE_ISOLATED_EAR = "cluster-clleak-simple-isolated.ear";
@@ -74,29 +70,9 @@
return getDeploySetup(ClassloaderLeakUnitTestCase.class, "classloader-leak-test.sar");
}
-// public void testSimpleWar() throws Exception
-// {
-// warTest(SIMPLE_WAR);
-// }
-//
-// public void testSimpleReplicableWar() throws Exception
-// {
-// warTest(SIMPLE_REPLICABLE_WAR);
-// }
-//
-// public void testFieldWar() throws Exception
-// {
-// warTest(FIELD_WAR);
-// }
-//
-// public void testFieldNoReplicableWar() throws Exception
-// {
-// warTest(FIELD_NO_REPLICABLE_WAR);
-// }
-
- public void testNoClusterReplicableWar() throws Exception
+ public void testSimpleWar() throws Exception
{
- warTest(NO_CLUSTER_REPLICABLE_WAR);
+ warTest(SIMPLE_WAR);
}
// public void testSimpleEjb() throws Exception
Added: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/FieldGranularityClassloaderLeakUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/FieldGranularityClassloaderLeakUnitTestCase.java (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/FieldGranularityClassloaderLeakUnitTestCase.java 2008-04-25 20:22:57 UTC (rev 72740)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.cluster.classloader.leak.test;
+
+import junit.framework.Test;
+
+/**
+ * Test for classloader leaks following deployment, use and undeployment
+ * of various packages (wars, ejb jars and ears with and without scoped
+ * classloaders).
+ * <p/>
+ * If these tests are run with JBoss Profiler's jbossAgent (.dll or .so) on the path
+ * and the AS is started with -agentlib:jbossAgent, in case of classloader leakage
+ * an extensive report will be logged to the server log, showing the path to root of
+ * all references to the classloader.
+ *
+ * @author Brian Stansberry
+ */
+public class FieldGranularityClassloaderLeakUnitTestCase extends ClassloaderLeakTestBase
+{
+ private static final String SIMPLE_REPLICABLE_WAR = "cluster-clleak-simple-replicable.war";
+ private static final String FIELD_WAR = "cluster-clleak-field.war";
+ private static final String FIELD_NO_REPLICABLE_WAR = "cluster-clleak-field-no-replicable.war";
+
+
+ public FieldGranularityClassloaderLeakUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+
+ public static Test suite() throws Exception
+ {
+ return getDeploySetup(FieldGranularityClassloaderLeakUnitTestCase.class, "classloader-leak-test.sar");
+ }
+
+ public void testSimpleReplicableWar() throws Exception
+ {
+ warTest(SIMPLE_REPLICABLE_WAR);
+ }
+
+ public void testFieldWar() throws Exception
+ {
+ warTest(FIELD_WAR);
+ }
+
+ public void testFieldNoReplicableWar() throws Exception
+ {
+ warTest(FIELD_NO_REPLICABLE_WAR);
+ }
+
+ protected String getWarContextPath()
+ {
+ return "clustered-clleak";
+ }
+
+ protected String[] getEjbKeys()
+ {
+ return new String[]{};
+ }
+
+ protected void makeEjbRequests() throws Exception
+ {
+ throw new UnsupportedOperationException("No EJB tests");
+ }
+}
Added: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ReplicableClassesClassloaderLeakUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ReplicableClassesClassloaderLeakUnitTestCase.java (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/test/ReplicableClassesClassloaderLeakUnitTestCase.java 2008-04-25 20:22:57 UTC (rev 72740)
@@ -0,0 +1,93 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.cluster.classloader.leak.test;
+
+import junit.framework.Test;
+
+/**
+ * Test for classloader leaks following deployment, use and undeployment
+ * of wars that instantiate AOP-prepared classes. These wars do very little
+ * with the classes; just instantiate some objects, populate fields, etc; don't
+ * even cache the objects in a session. Basically testing for pure AOP issues.
+ * <p/>
+ * If these tests are run with JBoss Profiler's jbossAgent (.dll or .so) on the path
+ * and the AS is started with -agentlib:jbossAgent, in case of classloader leakage
+ * an extensive report will be logged to the server log, showing the path to root of
+ * all references to the classloader.
+ *
+ * @author Brian Stansberry
+ */
+public class ReplicableClassesClassloaderLeakUnitTestCase
+ extends org.jboss.test.classloader.leak.test.ClassloaderLeakTestBase
+{
+ private static final String NO_CACHE_REPLICABLE_WAR = "cluster-clleak-nocache-replicable.war";
+ private static final String NO_CACHE_NO_REPLICABLE_WAR = "cluster-clleak-nocache-no-replicable.war";
+
+
+ public ReplicableClassesClassloaderLeakUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+
+ public static Test suite() throws Exception
+ {
+ return getDeploySetup(ReplicableClassesClassloaderLeakUnitTestCase.class, "classloader-leak-test.sar");
+ }
+
+ /**
+ * Test with a version of the classes that haven't been aspectized. This
+ * is a form of "control" for the testNoCacheReplicableWar() test.
+ *
+ * @throws Exception
+ */
+ public void testNoCacheNoReplicableWar() throws Exception
+ {
+ warTest(NO_CACHE_NO_REPLICABLE_WAR);
+ }
+
+ /**
+ * Test with a version of the classes that have been aopc prepared. This is
+ * the real test.
+ *
+ * @throws Exception
+ */
+ public void testNoCacheReplicableWar() throws Exception
+ {
+ warTest(NO_CACHE_REPLICABLE_WAR);
+ }
+
+ protected String getWarContextPath()
+ {
+ return "clustered-clleak";
+ }
+
+ protected String[] getEjbKeys()
+ {
+ return new String[]{};
+ }
+
+ protected void makeEjbRequests() throws Exception
+ {
+ throw new UnsupportedOperationException("No EJB tests");
+ }
+}
Added: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingNoReplicableServlet.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingNoReplicableServlet.java (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingNoReplicableServlet.java 2008-04-25 20:22:57 UTC (rev 72740)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.cluster.classloader.leak.web;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class NoCachingNoReplicableServlet extends HttpServlet
+{
+ private static final long serialVersionUID = 1L;
+
+ protected void doGet(HttpServletRequest req, HttpServletResponse res)
+ throws ServletException, IOException
+ {
+ org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET", Thread.currentThread().getContextClassLoader());
+ org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET_TCCL", Thread.currentThread().getContextClassLoader());
+
+ Person ben = new Person();
+ Address addr = new Address();
+ addr.setZip(95123);
+ addr.setCity("San Jose");
+ ben.setAge(100);
+ ben.setName("Ben");
+ ben.setAddress(addr);
+ List languages = new ArrayList();
+ languages.add("Farsi");
+ ben.setLanguages(languages);
+
+ res.setContentType("text/text");
+ PrintWriter writer = res.getWriter();
+ writer.println("WEBAPP");
+ writer.flush();
+ }
+
+}
Added: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingServlet.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingServlet.java (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/NoCachingServlet.java 2008-04-25 20:22:57 UTC (rev 72740)
@@ -0,0 +1,64 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.cluster.classloader.leak.web;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jboss.test.cluster.classloader.leak.web.aop.Address;
+import org.jboss.test.cluster.classloader.leak.web.aop.Person;
+
+public class NoCachingServlet extends HttpServlet
+{
+ private static final long serialVersionUID = 1L;
+
+ protected void doGet(HttpServletRequest req, HttpServletResponse res)
+ throws ServletException, IOException
+ {
+ org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET", Thread.currentThread().getContextClassLoader());
+ org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET_TCCL", Thread.currentThread().getContextClassLoader());
+
+ Person ben = new Person();
+ Address addr = new Address();
+ addr.setZip(95123);
+ addr.setCity("San Jose");
+ ben.setAge(100);
+ ben.setName("Ben");
+ ben.setAddress(addr);
+ List languages = new ArrayList();
+ languages.add("Farsi");
+ ben.setLanguages(languages);
+
+ res.setContentType("text/text");
+ PrintWriter writer = res.getWriter();
+ writer.println("WEBAPP");
+ writer.flush();
+ }
+
+}
Modified: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/ReplicableServlet.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/ReplicableServlet.java 2008-04-25 17:26:05 UTC (rev 72739)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/ReplicableServlet.java 2008-04-25 20:22:57 UTC (rev 72740)
@@ -23,6 +23,8 @@
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -30,8 +32,6 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.jboss.test.cluster.classloader.leak.web.aop.Address;
import org.jboss.test.cluster.classloader.leak.web.aop.Person;
@@ -45,9 +45,6 @@
org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET", Thread.currentThread().getContextClassLoader());
org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET_TCCL", Thread.currentThread().getContextClassLoader());
- Log log = LogFactory.getLog("WEBAPP");
- log.info("Logging from " + getClass().getName());
-
HttpSession session = req.getSession();
Person ben = (Person) session.getAttribute("TEST_PERSON");
if (ben == null)
@@ -59,11 +56,15 @@
ben.setAge(100);
ben.setName("Ben");
ben.setAddress(addr);
+ List languages = new ArrayList();
+ languages.add("Farsi");
+ ben.setLanguages(languages);
session.setAttribute("TEST_PERSON", ben);
}
else
{
ben.setAge(ben.getAge() + 1);
+ ben.getLanguages().add("Java");
}
res.setContentType("text/text");
Modified: trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/SimpleServlet.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/SimpleServlet.java 2008-04-25 17:26:05 UTC (rev 72739)
+++ trunk/testsuite/src/main/org/jboss/test/cluster/classloader/leak/web/SimpleServlet.java 2008-04-25 20:22:57 UTC (rev 72740)
@@ -23,6 +23,8 @@
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -30,11 +32,6 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jboss.test.cluster.classloader.leak.web.Address;
-import org.jboss.test.cluster.classloader.leak.web.Person;
-
public class SimpleServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
@@ -45,9 +42,6 @@
org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET", Thread.currentThread().getContextClassLoader());
org.jboss.test.classloader.leak.clstore.ClassLoaderStore.getInstance().storeClassLoader("SERVLET_TCCL", Thread.currentThread().getContextClassLoader());
- Log log = LogFactory.getLog("WEBAPP");
- log.info("Logging from " + getClass().getName());
-
HttpSession session = req.getSession();
Person ben = (Person) session.getAttribute("TEST_PERSON");
if (ben == null)
@@ -59,11 +53,15 @@
ben.setAge(100);
ben.setName("Ben");
ben.setAddress(addr);
+ List languages = new ArrayList();
+ languages.add("Farsi");
+ ben.setLanguages(languages);
session.setAttribute("TEST_PERSON", ben);
}
else
{
ben.setAge(ben.getAge() + 1);
+ ben.getLanguages().add("Java");
}
res.setContentType("text/text");
More information about the jboss-cvs-commits
mailing list