Author: chris.laprun(a)jboss.com
Date: 2007-10-25 20:27:58 -0400 (Thu, 25 Oct 2007)
New Revision: 8776
Added:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ApplicationScopeGetPortlet.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ApplicationScopeSetPortlet.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/jboss-portlet.xml
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/portlet.xml
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/web.xml
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/build.xml
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/NeedPortletHandleTest.java
Log:
- Added test case to check correct handling of application scope variables on the
producer.
Modified: branches/JBoss_Portal_Branch_2_6/wsrp/build.xml
===================================================================
--- branches/JBoss_Portal_Branch_2_6/wsrp/build.xml 2007-10-25 19:27:47 UTC (rev 8775)
+++ branches/JBoss_Portal_Branch_2_6/wsrp/build.xml 2007-10-26 00:27:58 UTC (rev 8776)
@@ -628,6 +628,15 @@
<!-- Multipart test portlet -->
<!--<package-test-portlet archiveName="multipart"
portletName="Multipart"/>-->
+
+ <!-- Application scope test portlet -->
+ <jar
jarfile="${build.lib.test}/test-applicationscope-portlet.war">
+ <fileset
dir="${build.resources.test}/test-applicationscope-portlet-war"/>
+ <fileset dir="${build.classes}">
+ <include
name="org/jboss/portal/test/wsrp/portlet/ApplicationScopeSetPortlet.class"/>
+ <include
name="org/jboss/portal/test/wsrp/portlet/ApplicationScopeGetPortlet.class"/>
+ </fileset>
+ </jar>
</target>
<!-- Packages all the test related artifacts. Note that compilation should have
been already executed -->
Added:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ApplicationScopeGetPortlet.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ApplicationScopeGetPortlet.java
(rev 0)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ApplicationScopeGetPortlet.java 2007-10-26
00:27:58 UTC (rev 8776)
@@ -0,0 +1,48 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2007, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt 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.portal.test.wsrp.portlet;
+
+import javax.portlet.GenericPortlet;
+import javax.portlet.PortletException;
+import javax.portlet.PortletSecurityException;
+import javax.portlet.PortletSession;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import java.io.IOException;
+import java.io.Writer;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
+ * @version $Revision$
+ * @since 2.6.3
+ */
+public class ApplicationScopeGetPortlet extends GenericPortlet
+{
+ protected void doView(RenderRequest renderRequest, RenderResponse renderResponse)
throws PortletException, PortletSecurityException, IOException
+ {
+ renderResponse.setContentType("text/html");
+ Writer writer = renderResponse.getWriter();
+ writer.write("appVar=" +
renderRequest.getPortletSession().getAttribute("appVar",
PortletSession.APPLICATION_SCOPE));
+ }
+}
Property changes on:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ApplicationScopeGetPortlet.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ApplicationScopeSetPortlet.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ApplicationScopeSetPortlet.java
(rev 0)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ApplicationScopeSetPortlet.java 2007-10-26
00:27:58 UTC (rev 8776)
@@ -0,0 +1,46 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2007, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt 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.portal.test.wsrp.portlet;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.GenericPortlet;
+import javax.portlet.PortletException;
+import javax.portlet.PortletSecurityException;
+import javax.portlet.PortletSession;
+import java.io.IOException;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
+ * @version $Revision$
+ * @since 2.6.3
+ */
+public class ApplicationScopeSetPortlet extends GenericPortlet
+{
+ public void processAction(ActionRequest actionRequest, ActionResponse actionResponse)
throws PortletException, PortletSecurityException, IOException
+ {
+ PortletSession session = actionRequest.getPortletSession();
+ session.setAttribute("appVar",
actionRequest.getParameter("appVar"), PortletSession.APPLICATION_SCOPE);
+ }
+}
Property changes on:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/portlet/ApplicationScopeSetPortlet.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java 2007-10-25
19:27:47 UTC (rev 8775)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/MarkupTestCase.java 2007-10-26
00:27:58 UTC (rev 8776)
@@ -47,6 +47,7 @@
import org.jboss.portal.wsrp.core.UpdateResponse;
import java.rmi.RemoteException;
+import java.util.List;
/**
* @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
@@ -88,9 +89,7 @@
checkException(e, WSRPExceptionFactory.UNSUPPORTED_MODE);
}
// reactivate check for exception once tests go through WS stack see:
JBPORTAL-1712
- /*catch (UnsupportedModeFault unsupportedModeFault)
- {
- }*/
+// catch (UnsupportedModeFault unsupportedModeFault) { }
}
public void testGetMarkupWithSessionID() throws Exception
@@ -109,10 +108,7 @@
checkException(e, WSRPExceptionFactory.OPERATION_FAILED);
}
// reactivate check for exception once tests go through WS stack see:
JBPORTAL-1712
- /*catch (OperationFailedFault operationFailedFault)
- {
- // expected fault.
- }*/
+// catch (OperationFailedFault operationFailedFault){}
}
public void testGetMarkupEditNoSession() throws Exception
@@ -269,9 +265,7 @@
checkException(e, WSRPExceptionFactory.OPERATION_FAILED);
}
// reactivate check for exception once tests go through WS stack see:
JBPORTAL-1712
- /*catch (OperationFailedFault expected)
- {
- }*/
+// catch (OperationFailedFault expected){}
}
public void testMarkupCaching() throws Exception
@@ -467,6 +461,40 @@
undeploy(archive);
}
+ public void testApplicationScopeVariableHandling() throws Exception
+ {
+ undeploy(DEFAULT_MARKUP_PORTLET_WAR);
+ String archive = "test-applicationscope-portlet.war";
+ deploy(archive);
+
+ // get handles: current archive contains 2 portlets, one to set the application
scoped variable, another one to read it
+ List<String> handles = getHandlesForCurrentlyDeployedArchive();
+ String handle = handles.get(0);
+ String setHandle, getHandle;
+ if (handle.contains("Set"))
+ {
+ setHandle = handle;
+ getHandle = handles.get(1);
+ }
+ else
+ {
+ getHandle = handle;
+ setHandle = handles.get(1);
+ }
+
+ // set appVar to value in the application scope by the first portlet
+ PerformBlockingInteraction pbi =
WSRPTypeFactory.createDefaultPerformBlockingInteraction(setHandle);
+ pbi.getInteractionParams().setFormParameters(new NamedString[]{new
NamedString("appVar", "value")});
+ markupService.performBlockingInteraction(pbi);
+
+ // the second portlet reads the appVar value and outputs it
+ GetMarkup gm = createMarkupRequest(getHandle);
+ MarkupResponse res = markupService.getMarkup(gm);
+ checkMarkupResponse(res, "appVar=value");
+
+ undeploy(archive);
+ }
+
private String checkPBIAndGetNavigationalState(String symbol) throws Exception
{
PerformBlockingInteraction performBlockingInteraction =
Modified:
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/NeedPortletHandleTest.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/NeedPortletHandleTest.java 2007-10-25
19:27:47 UTC (rev 8775)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/main/org/jboss/portal/test/wsrp/v1/producer/NeedPortletHandleTest.java 2007-10-26
00:27:58 UTC (rev 8776)
@@ -38,7 +38,9 @@
import org.jboss.portal.wsrp.handler.RequestHeaderClientHandler;
import java.rmi.RemoteException;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -50,7 +52,7 @@
{
private String mostUsedPortletWARFileName;
private String currentlyDeployedArchiveName;
- private Map war2Handle = new HashMap(7);
+ private Map<String, List<String>> war2Handles = new HashMap<String,
List<String>>(7);
public NeedPortletHandleTest(String portletWARFileName)
@@ -69,15 +71,34 @@
protected String getDefaultHandle() throws RemoteException, InvalidRegistrationFault,
OperationFailedFault
{
- return (String)war2Handle.get(mostUsedPortletWARFileName);
+ return getFirstHandleFor(mostUsedPortletWARFileName);
}
+ /**
+ * @param archiveName
+ * @return
+ * @since 2.6.3
+ */
+ private String getFirstHandleFor(String archiveName)
+ {
+ return war2Handles.get(archiveName).get(0);
+ }
+
protected String getHandleForCurrentlyDeployedArchive() throws RemoteException,
InvalidRegistrationFault, OperationFailedFault
{
- return (String)war2Handle.get(currentlyDeployedArchiveName);
+ return getFirstHandleFor(currentlyDeployedArchiveName);
}
/**
+ * @return
+ * @since 2.6.3
+ */
+ protected List<String> getHandlesForCurrentlyDeployedArchive()
+ {
+ return war2Handles.get(currentlyDeployedArchiveName);
+ }
+
+ /**
* Each time we deploy a new archive, check to see if the service description has
changed and add any new portlet
* handles found.
*
@@ -89,7 +110,7 @@
super.deploy(archiveName);
currentlyDeployedArchiveName = archiveName;
- if (!war2Handle.containsKey(archiveName))
+ if (!war2Handles.containsKey(archiveName))
{
GetServiceDescription getServiceDescription =
WSRPTypeFactory.createGetServiceDescription();
ServiceDescription serviceDescription =
serviceDescriptionService.getServiceDescription(getServiceDescription);
@@ -101,7 +122,14 @@
String warName = handle.substring(1, handle.indexOf('.')) +
".war";
if (warName.equals(archiveName))
{
- war2Handle.put(warName, handle);
+ List<String> handles = war2Handles.get(warName);
+ if (handles == null)
+ {
+ handles = new ArrayList<String>(3);
+ war2Handles.put(warName, handles);
+ }
+
+ handles.add(handle);
}
}
}
@@ -125,7 +153,7 @@
// only remove the mapping if we're not undeploying the most used portlet
(optimization, as it avoids parsing the SD)
if (!mostUsedPortletWARFileName.equals(archiveName))
{
- war2Handle.remove(archiveName);
+ war2Handles.remove(archiveName);
}
}
@@ -158,7 +186,20 @@
*/
protected GetMarkup createMarkupRequestForCurrentlyDeployedPortlet() throws Exception
{
- GetMarkup getMarkup =
WSRPTypeFactory.createDefaultMarkupRequest(getHandleForCurrentlyDeployedArchive());
+ return createMarkupRequest(getHandleForCurrentlyDeployedArchive());
+ }
+
+ /**
+ * @param handle
+ * @return
+ * @throws RemoteException
+ * @throws InvalidRegistrationFault
+ * @throws OperationFailedFault
+ * @since 2.6.3
+ */
+ protected GetMarkup createMarkupRequest(String handle) throws RemoteException,
InvalidRegistrationFault, OperationFailedFault
+ {
+ GetMarkup getMarkup = WSRPTypeFactory.createDefaultMarkupRequest(handle);
getMarkup.getMarkupParams().setMarkupCharacterSets(new
String[]{WSRPConstants.DEFAULT_CHARACTER_SET});
return getMarkup;
Added:
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/jboss-portlet.xml
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/jboss-portlet.xml
(rev 0)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/jboss-portlet.xml 2007-10-26
00:27:58 UTC (rev 8776)
@@ -0,0 +1,33 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2007, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<portlet-app>
+ <portlet>
+ <portlet-name>Application Scope Set Test Portlet</portlet-name>
+ <remotable>true</remotable>
+ </portlet>
+ <portlet>
+ <portlet-name>Application Scope Get Test Portlet</portlet-name>
+ <remotable>true</remotable>
+ </portlet>
+</portlet-app>
\ No newline at end of file
Added:
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/portlet.xml
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/portlet.xml
(rev 0)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/portlet.xml 2007-10-26
00:27:58 UTC (rev 8776)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2007, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<portlet-app
xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1...
version="1.0">
+ <portlet>
+ <portlet-name>Application Scope Set Test Portlet</portlet-name>
+ <display-name>Application Scope Set Test Portlet</display-name>
+
<portlet-class>org.jboss.portal.test.wsrp.portlet.ApplicationScopeSetPortlet</portlet-class>
+
+ <supports>
+ <mime-type>text/html</mime-type>
+ <portlet-mode>view</portlet-mode>
+ </supports>
+
+ <portlet-info>
+ <title>title</title>
+ </portlet-info>
+ </portlet>
+
+ <portlet>
+ <portlet-name>Application Scope Get Test Portlet</portlet-name>
+ <display-name>Application Scope Get Test Portlet</display-name>
+
<portlet-class>org.jboss.portal.test.wsrp.portlet.ApplicationScopeGetPortlet</portlet-class>
+
+ <supports>
+ <mime-type>text/html</mime-type>
+ <portlet-mode>view</portlet-mode>
+ </supports>
+
+ <portlet-info>
+ <title>title</title>
+ </portlet-info>
+ </portlet>
+</portlet-app>
\ No newline at end of file
Added:
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/web.xml
===================================================================
---
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/web.xml
(rev 0)
+++
branches/JBoss_Portal_Branch_2_6/wsrp/src/resources/tests/test-applicationscope-portlet-war/WEB-INF/web.xml 2007-10-26
00:27:58 UTC (rev 8776)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2007, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<web-app version="2.4"
+
xmlns="http://java.sun.com/xml/ns/j2ee"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+</web-app>
\ No newline at end of file