Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 229185 Details for
Bug 404546
Request parameters are empty on page reload
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Proposed patch
bug-404546.patch (text/plain), 21.49 KB, created by
Ivan Furnadjiev
on 2013-03-29 09:30:23 EDT
(
hide
)
Description:
Proposed patch
Filename:
MIME Type:
Creator:
Ivan Furnadjiev
Created:
2013-03-29 09:30:23 EDT
Size:
21.49 KB
patch
obsolete
>diff --git a/bundles/org.eclipse.rap.rwt/js/rwt/widgets/Display.js b/bundles/org.eclipse.rap.rwt/js/rwt/widgets/Display.js >index cbfd730..0ce679f 100644 >--- a/bundles/org.eclipse.rap.rwt/js/rwt/widgets/Display.js >+++ b/bundles/org.eclipse.rap.rwt/js/rwt/widgets/Display.js >@@ -44,6 +44,7 @@ > > init : function() { > this._server.getMessageWriter().appendHead( "rwt_initialize", true ); >+ this._appendQueryString(); > this._appendWindowSize(); > this._appendSystemDPI(); > this._appendColorDepth(); >@@ -211,6 +212,13 @@ > var clientObject = rwt.remote.ObjectRegistry.getObject( "rwt.client.ClientInfo" ); > var remoteObject = rwt.remote.Server.getInstance().getRemoteObject( clientObject ); > remoteObject.set( "timezoneOffset", clientObject.getTimezoneOffset() ); >+ }, >+ >+ _appendQueryString : function() { >+ var queryString = window.location.search; >+ if( queryString !== "" ) { >+ this._server.getMessageWriter().appendHead( "queryString", queryString.substr( 1 ) ); >+ } > } > > }; >diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/LifeCycleServiceHandler.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/LifeCycleServiceHandler.java >index deff2f7..f2944d8 100644 >--- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/LifeCycleServiceHandler.java >+++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/LifeCycleServiceHandler.java >@@ -13,7 +13,6 @@ > > import java.io.IOException; > import java.text.MessageFormat; >-import java.util.Map; > > import javax.servlet.ServletRequest; > import javax.servlet.ServletResponse; >@@ -81,8 +80,6 @@ > private void handleGetRequest( ServletRequest request, HttpServletResponse response ) > throws IOException > { >- Map<String, String[]> parameters = request.getParameterMap(); >- RequestParameterBuffer.store( parameters ); > if( RWT.getClient() instanceof WebClient ) { > startupPage.send( response ); > } else { >@@ -105,7 +102,7 @@ > reinitializeUISession( request ); > reinitializeServiceStore(); > } >- RequestParameterBuffer.merge(); >+ UrlParameters.merge(); > runLifeCycle(); > } > writeProtocolMessage( response ); >@@ -167,15 +164,11 @@ > > private static void reinitializeUISession( HttpServletRequest request ) { > UISessionImpl uiSession = ( UISessionImpl )ContextProvider.getUISession(); >- Map<String, String[]> bufferedParameters = RequestParameterBuffer.getBufferedParameters(); > ApplicationContextImpl applicationContext = uiSession.getApplicationContext(); > uiSession.shutdown(); > UISessionBuilder builder = new UISessionBuilder( applicationContext, request ); > uiSession = builder.buildUISession(); > ContextProvider.getContext().setUISession( uiSession ); >- if( bufferedParameters != null ) { >- RequestParameterBuffer.store( bufferedParameters ); >- } > } > > private static void reinitializeServiceStore() { >diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/RequestParameterBuffer.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/RequestParameterBuffer.java >deleted file mode 100644 >index bf80789..0000000 >--- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/RequestParameterBuffer.java >+++ /dev/null >@@ -1,79 +0,0 @@ >-/******************************************************************************* >- * Copyright (c) 2002, 2012 Innoopract Informationssysteme GmbH and others. >- * All rights reserved. This program and the accompanying materials >- * are made available under the terms of the Eclipse Public License v1.0 >- * which accompanies this distribution, and is available at >- * http://www.eclipse.org/legal/epl-v10.html >- * >- * Contributors: >- * Innoopract Informationssysteme GmbH - initial API and implementation >- * EclipseSource - ongoing development >- ******************************************************************************/ >-package org.eclipse.rap.rwt.internal.service; >- >-import java.util.HashMap; >-import java.util.Map; >- >-import javax.servlet.http.HttpServletRequest; >- >-import org.eclipse.rap.rwt.service.UISession; >- >- >-/** >- * This class serves as a session-wide buffer to store and later on merge the >- * once stored request parameters with those of the current request. >- */ >-final class RequestParameterBuffer { >- >- private static final String BUFFER = RequestParameterBuffer.class.getName() + "#buffer:-)"; >- >- /** >- * Buffers the given <code>parameters</code> within the session for later use >- * with <code>merge</code>. If the session has already parameters stored, the >- * method returns immediately. >- */ >- static void store( Map<String, String[]> parameters ) { >- // [rst] The following if statement is a fix for bug 265008, but later lead to bug 369549, >- // commented since according to bug 265008, the fix is not needed anymore. >- // [if] Store parameters only once. >- // Workaround for bug 265008 >- // if( getBufferedParameters() == null ) { >- HashMap<String, String[]> buffer = new HashMap<String, String[]>( parameters ); >- UISession uiSession = ContextProvider.getUISession(); >- uiSession.setAttribute( BUFFER, buffer ); >- // } >- } >- >- /** >- * Merges previously <code>store</code>d request parameters with those of the >- * current request. Parameters of the current request take precedence over the >- * stored parameters. >- * <p> >- * If there are no stored parameters, this method does nothing. >- * </p> >- * <p> >- * After this method has completed, the buffered request parameters are >- * discarded. >- * </p> >- */ >- static void merge() { >- Map<String, String[]> bufferedParams = getBufferedParameters(); >- if( bufferedParams != null ) { >- HttpServletRequest request = ContextProvider.getRequest(); >- WrappedRequest wrappedRequest = new WrappedRequest( request, bufferedParams ); >- ServiceContext context = ContextProvider.getContext(); >- context.setRequest( wrappedRequest ); >- } >- ContextProvider.getUISession().removeAttribute( BUFFER ); >- } >- >- @SuppressWarnings("unchecked") >- static Map<String, String[]> getBufferedParameters() { >- return ( Map<String, String[]> )ContextProvider.getUISession().getAttribute( BUFFER ); >- } >- >- private RequestParameterBuffer() { >- // prevent instantiation >- } >- >-} >diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/RequestParams.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/RequestParams.java >index f0a4f99..d544505 100644 >--- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/RequestParams.java >+++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/RequestParams.java >@@ -15,6 +15,7 @@ > > public static final String RWT_INITIALIZE = "rwt_initialize"; > public static final String RWT_SHUTDOWN = "rwt_shutdown"; >+ public static final String QUERY_STRING = "queryString"; > > private RequestParams() { > // prevent instantiation >diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/UrlParameters.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/UrlParameters.java >new file mode 100644 >index 0000000..af9a913 >--- /dev/null >+++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/UrlParameters.java >@@ -0,0 +1,81 @@ >+/******************************************************************************* >+ * Copyright (c) 2013 EclipseSource and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * EclipseSource - initial API and implementation >+ ******************************************************************************/ >+package org.eclipse.rap.rwt.internal.service; >+ >+import static org.eclipse.rap.rwt.internal.protocol.ProtocolUtil.readHeadPropertyValue; >+ >+import java.io.UnsupportedEncodingException; >+import java.net.URLDecoder; >+import java.util.HashMap; >+import java.util.Map; >+ >+import javax.servlet.http.HttpServletRequest; >+ >+import org.eclipse.rap.rwt.internal.util.HTTP; >+ >+ >+final class UrlParameters { >+ >+ static void merge() { >+ if( hasInitializeParameter() ) { >+ Map<String, String[]> parameters = getAll(); >+ if( parameters != null ) { >+ HttpServletRequest request = ContextProvider.getRequest(); >+ WrappedRequest wrappedRequest = new WrappedRequest( request, parameters ); >+ ServiceContext context = ContextProvider.getContext(); >+ context.setRequest( wrappedRequest ); >+ } >+ } >+ } >+ >+ private static Map<String, String[]> getAll() { >+ String queryString = readHeadPropertyValue( RequestParams.QUERY_STRING ); >+ return queryString == null ? null : createParametersMap( queryString ); >+ } >+ >+ static Map<String, String[]> createParametersMap( String queryString ) { >+ Map<String, String[]> result = new HashMap<String, String[]>(); >+ String[] parameters = queryString.split( "&" ); >+ for( String parameter : parameters ) { >+ String[] parts = parameter.split( "=" ); >+ try { >+ String name = URLDecoder.decode( parts[ 0 ], HTTP.CHARSET_UTF_8 ); >+ String value = parts.length == 1 ? "" : URLDecoder.decode( parts[ 1 ], HTTP.CHARSET_UTF_8 ); >+ String[] oldValues = result.get( name ); >+ result.put( name, appendValue( oldValues, value ) ); >+ } catch( UnsupportedEncodingException exception ) { >+ // should never happens >+ } >+ } >+ return result; >+ } >+ >+ private static String[] appendValue( String[] oldValues, String newValue ) { >+ String[] result = null; >+ if( oldValues == null ) { >+ result = new String[] { newValue }; >+ } else { >+ result = new String[ oldValues.length + 1 ]; >+ System.arraycopy( oldValues, 0, result, 0, oldValues.length ); >+ result[ result.length - 1 ] = newValue; >+ } >+ return result; >+ } >+ >+ private static boolean hasInitializeParameter() { >+ return "true".equals( readHeadPropertyValue( RequestParams.RWT_INITIALIZE ) ); >+ } >+ >+ private UrlParameters() { >+ // prevent instantiation >+ } >+ >+} >diff --git a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/LifeCycleServiceHandler_Test.java b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/LifeCycleServiceHandler_Test.java >index e78b627..44ee9cb 100644 >--- a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/LifeCycleServiceHandler_Test.java >+++ b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/LifeCycleServiceHandler_Test.java >@@ -11,10 +11,10 @@ > ******************************************************************************/ > package org.eclipse.rap.rwt.internal.service; > >-import static junit.framework.Assert.assertNotSame; > import static org.eclipse.rap.rwt.internal.service.ContextProvider.getApplicationContext; > import static org.junit.Assert.assertEquals; > import static org.junit.Assert.assertFalse; >+import static org.junit.Assert.assertNotSame; > import static org.junit.Assert.assertNull; > import static org.junit.Assert.assertSame; > import static org.junit.Assert.assertTrue; >@@ -220,20 +220,6 @@ > > UISessionImpl uiSession = ( UISessionImpl )ContextProvider.getUISession(); > assertSame( applicationContext, uiSession.getApplicationContext() ); >- } >- >- @Test >- public void testRequestParametersAreBufferedAfterSessionRestart() throws IOException { >- initializeUISession(); >- TestRequest request = Fixture.fakeNewGetRequest(); >- request.setParameter( "foo", "bar" ); >- service( new LifeCycleServiceHandler( getLifeCycleFactory(), mockStartupPage() ) ); >- >- LifeCycleServiceHandler.markSessionStarted(); >- simulateInitialUiRequest(); >- service( new LifeCycleServiceHandler( getLifeCycleFactory(), mockStartupPage() ) ); >- >- assertEquals( "bar", ContextProvider.getRequest().getParameter( "foo" ) ); > } > > /* >diff --git a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/RequestParameterBuffer_Test.java b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/RequestParameterBuffer_Test.java >deleted file mode 100644 >index d905a68..0000000 >--- a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/RequestParameterBuffer_Test.java >+++ /dev/null >@@ -1,103 +0,0 @@ >-/******************************************************************************* >- * Copyright (c) 2009, 2012 EclipseSource and others. >- * All rights reserved. This program and the accompanying materials >- * are made available under the terms of the Eclipse Public License v1.0 >- * which accompanies this distribution, and is available at >- * http://www.eclipse.org/legal/epl-v10.html >- * >- * Contributors: >- * EclipseSource - initial API and implementation >- * Frank Appel - replaced singletons and static fields (Bug 337787) >- ******************************************************************************/ >-package org.eclipse.rap.rwt.internal.service; >- >-import static org.junit.Assert.assertArrayEquals; >-import static org.junit.Assert.assertEquals; >-import static org.junit.Assert.assertNotSame; >-import static org.junit.Assert.assertNull; >- >-import java.util.HashMap; >-import java.util.Map; >- >-import org.eclipse.rap.rwt.testfixture.Fixture; >-import org.eclipse.rap.rwt.testfixture.TestRequest; >-import org.junit.After; >-import org.junit.Before; >-import org.junit.Test; >- >- >-public class RequestParameterBuffer_Test { >- >- @Before >- public void setUp() { >- Fixture.setUp(); >- } >- >- @After >- public void tearDown() { >- Fixture.tearDown(); >- } >- >- @Test >- public void testStore() { >- Map<String, String[]> originalParameters = new HashMap<String, String[]>(); >- originalParameters.put( "key", new String[] { "value" } ); >- >- RequestParameterBuffer.store( originalParameters ); >- >- Map bufferedParameters = RequestParameterBuffer.getBufferedParameters(); >- assertNotSame( originalParameters, bufferedParameters ); >- assertArrayEquals( new String[]{ "value" }, ( String[] )bufferedParameters.get( "key" ) ); >- } >- >- @Test >- public void testStoreOverridesBuffer() { >- // see bug 369549 >- Map<String, String[]> originalParameters = new HashMap<String, String[]>(); >- originalParameters.put( "key1", new String[] { "value1" } ); >- originalParameters.put( "key2", new String[] { "value2" } ); >- Map<String, String[]> newParameters = new HashMap<String, String[]>(); >- newParameters.put( "key2", new String[] { "value2a" } ); >- newParameters.put( "key3", new String[] { "value3" } ); >- >- RequestParameterBuffer.store( originalParameters ); >- RequestParameterBuffer.store( newParameters ); >- >- Map bufferedParameters = RequestParameterBuffer.getBufferedParameters(); >- assertNull( bufferedParameters.get( "key1" ) ); >- assertArrayEquals( new String[] { "value2a" }, (String[])bufferedParameters.get( "key2" ) ); >- assertArrayEquals( new String[] { "value3" }, (String[])bufferedParameters.get( "key3" ) ); >- } >- >- @Test >- public void testMerge() { >- Map<String, String[]> parameters = new HashMap<String, String[]>(); >- parameters.put( "key1", new String[] { "value1" } ); >- parameters.put( "key2", new String[] { "value2" } ); >- RequestParameterBuffer.store( parameters ); >- >- TestRequest request = Fixture.fakeNewRequest(); >- request.setParameter( "key2", "value2a" ); >- request.setParameter( "key3", "value3" ); >- RequestParameterBuffer.merge(); >- >- assertEquals( "value1", ContextProvider.getRequest().getParameter( "key1" ) ); >- assertEquals( "value2a", ContextProvider.getRequest().getParameter( "key2" ) ); >- assertEquals( "value3", ContextProvider.getRequest().getParameter( "key3" ) ); >- } >- >- @Test >- public void testMergeOnlyOnce() { >- Map<String, String[]> parameters = new HashMap<String, String[]>(); >- parameters.put( "key1", new String[] { "value1" } ); >- RequestParameterBuffer.store( parameters ); >- >- Fixture.fakeNewRequest(); >- RequestParameterBuffer.merge(); >- Fixture.fakeNewRequest(); >- RequestParameterBuffer.merge(); >- >- assertNull( ContextProvider.getRequest().getParameter( "key1" ) ); >- } >- >-} >diff --git a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/UrlParameters_Test.java b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/UrlParameters_Test.java >new file mode 100644 >index 0000000..4bb8681 >--- /dev/null >+++ b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/UrlParameters_Test.java >@@ -0,0 +1,110 @@ >+/******************************************************************************* >+ * Copyright (c) 2013 EclipseSource and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * EclipseSource - initial API and implementation >+ ******************************************************************************/ >+package org.eclipse.rap.rwt.internal.service; >+ >+import static org.junit.Assert.assertEquals; >+import static org.junit.Assert.assertNull; >+ >+import java.util.Map; >+ >+import org.eclipse.rap.rwt.testfixture.Fixture; >+import org.junit.After; >+import org.junit.Before; >+import org.junit.Test; >+ >+ >+public class UrlParameters_Test { >+ >+ @Before >+ public void setUp() { >+ Fixture.setUp(); >+ Fixture.fakeNewRequest(); >+ } >+ >+ @After >+ public void tearDown() { >+ Fixture.tearDown(); >+ } >+ >+ @Test >+ public void testMerge_InitialPostRequest() { >+ Fixture.fakeHeadParameter( RequestParams.RWT_INITIALIZE, "true" ); >+ Fixture.fakeHeadParameter( RequestParams.QUERY_STRING, "key1=value1&key2=value2" ); >+ >+ UrlParameters.merge(); >+ >+ assertEquals( "value1", ContextProvider.getRequest().getParameter( "key1" ) ); >+ assertEquals( "value2", ContextProvider.getRequest().getParameter( "key2" ) ); >+ } >+ >+ @Test >+ public void testMerge_NotInitialPostRequest() { >+ Fixture.fakeHeadParameter( RequestParams.QUERY_STRING, "key1=value1&key2=value2" ); >+ >+ UrlParameters.merge(); >+ >+ assertNull( ContextProvider.getRequest().getParameter( "key1" ) ); >+ assertNull( ContextProvider.getRequest().getParameter( "key2" ) ); >+ } >+ >+ @Test >+ public void testCreateParametersMap() { >+ String queryString = "key1=value1&key2=value2"; >+ Map<String, String[]> parametersMap = UrlParameters.createParametersMap( queryString ); >+ >+ assertEquals( 2, parametersMap.size() ); >+ assertEquals( "value1", parametersMap.get( "key1" )[ 0 ] ); >+ assertEquals( "value2", parametersMap.get( "key2" )[ 0 ] ); >+ } >+ >+ @Test >+ public void testCreateParametersMap_MultipleValues() { >+ String queryString = "key1=value1&key1=value2"; >+ Map<String, String[]> parametersMap = UrlParameters.createParametersMap( queryString ); >+ >+ assertEquals( 1, parametersMap.size() ); >+ assertEquals( "value1", parametersMap.get( "key1" )[ 0 ] ); >+ assertEquals( "value2", parametersMap.get( "key1" )[ 1 ] ); >+ } >+ >+ @Test >+ public void testCreateParametersMap_WithoutValue() { >+ String queryString = "key1="; >+ Map<String, String[]> parametersMap = UrlParameters.createParametersMap( queryString ); >+ >+ assertEquals( "", parametersMap.get( "key1" )[ 0 ] ); >+ } >+ >+ @Test >+ public void testCreateParametersMap_WithoutEqualAndValue() { >+ String queryString = "key1"; >+ Map<String, String[]> parametersMap = UrlParameters.createParametersMap( queryString ); >+ >+ assertEquals( "", parametersMap.get( "key1" )[ 0 ] ); >+ } >+ >+ @Test >+ public void testCreateParametersMap_DecodeParameterName() { >+ String queryString = "key%2F1=value1"; >+ Map<String, String[]> parametersMap = UrlParameters.createParametersMap( queryString ); >+ >+ assertEquals( "value1", parametersMap.get( "key/1" )[ 0 ] ); >+ } >+ >+ @Test >+ public void testCreateParametersMap_DecodeParameterValue() { >+ String queryString = "key1=value%2F1"; >+ Map<String, String[]> parametersMap = UrlParameters.createParametersMap( queryString ); >+ >+ assertEquals( "value/1", parametersMap.get( "key1" )[ 0 ] ); >+ } >+ >+} >diff --git a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/WrappedRequest_Test.java b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/WrappedRequest_Test.java >index 9861b6f..36b8a28 100644 >--- a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/WrappedRequest_Test.java >+++ b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/WrappedRequest_Test.java >@@ -109,14 +109,11 @@ > public void testStartupRequestWithParameter() throws Exception { > ApplicationContextImpl applicationContext = getApplicationContext(); > applicationContext.getEntryPointManager().register( "/rap", DefaultEntryPoint.class, null ); >- TestRequest getRequest = Fixture.fakeNewGetRequest(); >- getRequest.setParameter( "param", "value" ); > ServiceHandler handler = getApplicationContext().getServiceManager().getHandler(); >- handler.service( ContextProvider.getRequest(), ContextProvider.getResponse() ); > >- TestRequest uiRequest = Fixture.fakeNewRequest(); >- uiRequest.setParameter( "param", null ); >+ Fixture.fakeNewRequest(); > Fixture.fakeHeadParameter( RequestParams.RWT_INITIALIZE, "true" ); >+ Fixture.fakeHeadParameter( RequestParams.QUERY_STRING, "param=value" ); > handler.service( ContextProvider.getRequest(), ContextProvider.getResponse() ); > > assertEquals( "value", ContextProvider.getRequest().getParameter( "param" ) );
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 404546
: 229185