Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 413668
Collapse All | Expand All

(-)a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/service/LifeCycleServiceHandler.java (-1 / +13 lines)
Lines 104-110 Link Here
104
    throws IOException
104
    throws IOException
105
  {
105
  {
106
    setJsonResponseHeaders( response );
106
    setJsonResponseHeaders( response );
107
    if( isSessionShutdown() ) {
107
    if( !isContentTypeValid( request ) ) {
108
      writeInvalidContentType( response );
109
    } else if( isSessionShutdown() ) {
108
      shutdownUISession();
110
      shutdownUISession();
109
    } else if( isSessionTimeout() ) {
111
    } else if( isSessionTimeout() ) {
110
      writeSessionTimeoutError( response );
112
      writeSessionTimeoutError( response );
Lines 159-164 Link Here
159
    return sentRequestId != null && sentRequestId.asInt() == currentRequestId - 1;
161
    return sentRequestId != null && sentRequestId.asInt() == currentRequestId - 1;
160
  }
162
  }
161
163
164
  private static boolean isContentTypeValid( ServletRequest request ) {
165
    String contentType = request.getContentType();
166
    return contentType != null && contentType.startsWith( HTTP.CONTENT_TYPE_JSON );
167
  }
168
162
  private static void shutdownUISession() {
169
  private static void shutdownUISession() {
163
    UISessionImpl uiSession = ( UISessionImpl )ContextProvider.getUISession();
170
    UISessionImpl uiSession = ( UISessionImpl )ContextProvider.getUISession();
164
    uiSession.shutdown();
171
    uiSession.shutdown();
Lines 176-181 Link Here
176
    writeError( response, HttpServletResponse.SC_FORBIDDEN, errorType );
183
    writeError( response, HttpServletResponse.SC_FORBIDDEN, errorType );
177
  }
184
  }
178
185
186
  private static void writeInvalidContentType( HttpServletResponse response ) throws IOException {
187
    String errorType = "invalid content type";
188
    writeError( response, HttpServletResponse.SC_BAD_REQUEST, errorType );
189
  }
190
179
  private static void writeError( HttpServletResponse response,
191
  private static void writeError( HttpServletResponse response,
180
                                  int statusCode,
192
                                  int statusCode,
181
                                  String errorType ) throws IOException
193
                                  String errorType ) throws IOException
(-)a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/service/LifeCycleServiceHandler_Test.java (+20 lines)
Lines 350-355 Link Here
350
  }
350
  }
351
351
352
  @Test
352
  @Test
353
  public void testHandlesInvalidRequestContentType() throws IOException {
354
    simulateUiRequestWithIllegalContentType();
355
356
    service( new LifeCycleServiceHandler( getLifeCycleFactory(), mockStartupPage() ) );
357
358
    TestResponse response = getResponse();
359
    assertEquals( HttpServletResponse.SC_BAD_REQUEST, response.getStatus() );
360
    Message message = getMessageFromResponse();
361
    assertEquals( "invalid content type", message.getError() );
362
    assertEquals( 0, message.getOperationCount() );
363
  }
364
365
  @Test
353
  public void testSendBufferedResponse() throws IOException {
366
  public void testSendBufferedResponse() throws IOException {
354
    LifeCycleServiceHandler.markSessionStarted();
367
    LifeCycleServiceHandler.markSessionStarted();
355
    simulateUiRequest();
368
    simulateUiRequest();
Lines 444-449 Link Here
444
    request.setServletPath( "/test" );
457
    request.setServletPath( "/test" );
445
  }
458
  }
446
459
460
  private void simulateUiRequestWithIllegalContentType() {
461
    Fixture.fakeNewRequest();
462
    TestRequest request = ( TestRequest )ContextProvider.getRequest();
463
    request.setContentType( "text/plain" );
464
    request.setServletPath( "/test" );
465
  }
466
447
  private static LifeCycleFactory mockLifeCycleFactory() {
467
  private static LifeCycleFactory mockLifeCycleFactory() {
448
    LifeCycle lifecycle = mock( LifeCycle.class );
468
    LifeCycle lifecycle = mock( LifeCycle.class );
449
    LifeCycleFactory lifeCycleFactory = mock( LifeCycleFactory.class );
469
    LifeCycleFactory lifeCycleFactory = mock( LifeCycleFactory.class );
(-)a/tests/org.eclipse.rap.rwt.testfixture/src/org/eclipse/rap/rwt/testfixture/Fixture.java (+1 lines)
Lines 326-331 Link Here
326
326
327
  public static TestRequest fakeNewRequest() {
327
  public static TestRequest fakeNewRequest() {
328
    TestRequest request = createNewRequest( HTTP.METHOD_POST );
328
    TestRequest request = createNewRequest( HTTP.METHOD_POST );
329
    request.setContentType( HTTP.CONTENT_TYPE_JSON );
329
    request.setBody( createEmptyMessage() );
330
    request.setBody( createEmptyMessage() );
330
    createNewServiceContext( request, new TestResponse() );
331
    createNewServiceContext( request, new TestResponse() );
331
    fakeResponseWriter();
332
    fakeResponseWriter();

Return to bug 413668