Skip to content
This repository has been archived by the owner on Nov 30, 2021. It is now read-only.

Commit

Permalink
JBPM-5219: reseting screen view after a document upload. That prevent…
Browse files Browse the repository at this point in the history
…s errors uploading documents on MultipleSubForms (#62)
  • Loading branch information
pefernan authored and csadilek committed Jul 26, 2016
1 parent b8ef6ce commit f731f9e
Show file tree
Hide file tree
Showing 8 changed files with 316 additions and 13 deletions.
Expand Up @@ -30,30 +30,36 @@ public abstract class BaseUIComponent extends UIBeanHandler {
public abstract void doStart(CommandRequest request);

@Inject
private LocaleManager localeManager;
protected LocaleManager localeManager;

@Override
public synchronized CommandResponse handle(CommandRequest request, String action) throws Exception {
CurrentComponentRenderer componentRenderer = CurrentComponentRenderer.lookup();
CurrentComponentRenderer componentRenderer = getCurrentComponentRenderer();

componentRenderer.setCurrentComponent(this);
setEnabledForActionHandling(true);
componentRenderer.setCurrentComponent( this );
setEnabledForActionHandling( true );

CommandResponse response = super.handle(request, action);
String ajaxParam = request.getRequestObject().getParameter("ajaxAction");
boolean isAjax = ajaxParam != null && Boolean.valueOf(ajaxParam).booleanValue();
CommandResponse response = super.handle( request, action );

if (firstTime || !isAjax) {
if ( firstTime ) {
response = null;
firstTime = false;
}

return response;
}

public void actionStart(CommandRequest request) {
protected CurrentComponentRenderer getCurrentComponentRenderer() {
return CurrentComponentRenderer.lookup();
}

public void actionStart( CommandRequest request ) {
firstTime = true;
doStart(request);
localeManager.setCurrentLang(request.getRequestObject().getParameter("locale"));
doStart( request );
localeManager.setCurrentLang( request.getRequestObject().getParameter("locale") );
}

public boolean isFirstTime() {
return firstTime;
}
}
Expand Up @@ -149,11 +149,18 @@ public synchronized CommandResponse handle(CommandRequest request, String action
afterInvokeAction(request, action);

if (response == null) {
response = new ShowScreenResponse(CurrentComponentRenderer.lookup().getCurrentComponent().getBaseComponentJSP());
response = new ShowScreenResponse( getCurrentComponentRenderer().getCurrentComponent().getBaseComponentJSP() );
}

if (!(response instanceof SendStreamResponse)) {
setEnabledForActionHandling(false);

String ajaxParam = request.getRequestObject().getParameter("ajaxAction");
boolean isAjax = ajaxParam != null && Boolean.valueOf(ajaxParam).booleanValue();

if ( !isAjax ) {
response = null;
}
}

if (log.isDebugEnabled()) log.debug("Leaving handle " + getBeanName() + " - " + action);
Expand All @@ -164,6 +171,10 @@ public synchronized CommandResponse handle(CommandRequest request, String action
return null;
}

protected CurrentComponentRenderer getCurrentComponentRenderer() {
return CurrentComponentRenderer.lookup();
}

protected void beforeInvokeAction(CommandRequest request, String action) throws Exception {
}

Expand Down
Expand Up @@ -18,7 +18,7 @@
public class ShowCurrentScreenResponse extends ShowScreenResponse {

public ShowCurrentScreenResponse() {
super("/controllerResponse.jsp");
super( "/formModeler/controllerResponse.jsp" );
}

public ShowCurrentScreenResponse(String jsp) {
Expand Down
@@ -0,0 +1,127 @@
package org.jbpm.formModeler.service.bb.mvc.components.handling;

import javax.servlet.http.HttpServletRequest;

import org.jbpm.formModeler.service.bb.mvc.components.CurrentComponentRenderer;
import org.jbpm.formModeler.service.bb.mvc.controller.CommandRequest;
import org.jbpm.formModeler.service.bb.mvc.controller.CommandResponse;
import org.jbpm.formModeler.service.bb.mvc.controller.responses.SendStreamResponse;
import org.junit.Test;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

public abstract class AbstractBeanHandlerTest<T extends BeanHandler> {

protected CommandRequest request;
protected HttpServletRequest httpServletRequest;

protected CurrentComponentRenderer renderer;

protected BaseUIComponent component;

protected T handlerComponent;

public abstract T getHandlerComponent();

protected void initTest( final boolean isAjax ) {

renderer = mock( CurrentComponentRenderer.class );

component = mock( BaseUIComponent.class );

when( component.getBaseComponentJSP() ).thenReturn( "/test/myComponent.jsp" );

when( renderer.getCurrentComponent() ).thenReturn( component );

handlerComponent = getHandlerComponent();

request = mock( CommandRequest.class );

httpServletRequest = mock( HttpServletRequest.class );

when( request.getRequestObject() ).thenReturn( httpServletRequest );

when( httpServletRequest.getParameter( "ajaxAction" ) ).thenReturn( isAjax ? "true" : "false" );
}

@Test
public void testDefaultAjaxActionWithResponse() throws Exception {

initTest( true );

CommandResponse response = handlerComponent.handle( request, "withResponse" );

verify( request, atLeastOnce() ).getRequestObject();

verify( httpServletRequest ).getParameter( "ajaxAction" );

assertNotNull( "Response cannot be null", response );
}

@Test
public void testDefaultNonAjaxActionWithResponse() throws Exception {

initTest( false );

CommandResponse response = handlerComponent.handle( request, "withResponse" );

verify( request, atLeastOnce() ).getRequestObject();

verify( httpServletRequest ).getParameter( "ajaxAction" );

assertNull( "Response must be null", response );
}

@Test
public void testDefaultAjaxActionWithoutResponse() throws Exception {

initTest( true );

CommandResponse response = handlerComponent.handle( request, "withoutResponse" );

verify( request, atLeastOnce() ).getRequestObject();

verify( httpServletRequest ).getParameter( "ajaxAction" );

assertNotNull( "Response cannot be null", response );
}

@Test
public void testDefaultNonAjaxActionWithoutResponse() throws Exception {

initTest( false );

CommandResponse response = handlerComponent.handle( request, "withoutResponse" );

verify( request, atLeastOnce() ).getRequestObject();

verify( httpServletRequest ).getParameter( "ajaxAction" );

assertNull( "Response be null", response );
}

@Test
public void testActionWithStreamResponse() throws Exception {

doTestActionWithStreamResponse( true );

doTestActionWithStreamResponse( false );
}

protected void doTestActionWithStreamResponse( boolean ajax ) throws Exception {

initTest( true );

CommandResponse response = handlerComponent.handle( request, "download" );

verify( request, never() ).getRequestObject();

verify( httpServletRequest, never() ).getParameter( "ajaxAction" );

assertNotNull( "Response cannot be null", response );

assertTrue( "Response must be SendStreamResponse", response instanceof SendStreamResponse );

}
}
@@ -0,0 +1,46 @@
package org.jbpm.formModeler.service.bb.mvc.components.handling;

import javax.servlet.http.HttpServletRequest;

import org.jbpm.formModeler.service.LocaleManager;
import org.jbpm.formModeler.service.bb.mvc.components.CurrentComponentRenderer;
import org.jbpm.formModeler.service.bb.mvc.components.handling.mocks.MyBaseUIComponent;
import org.jbpm.formModeler.service.bb.mvc.controller.CommandRequest;
import org.jbpm.formModeler.service.bb.mvc.controller.CommandResponse;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

@RunWith(MockitoJUnitRunner.class)
public class BaseUIComponentTest extends AbstractBeanHandlerTest<BaseUIComponent> {

protected LocaleManager localeManager;

@Override
public BaseUIComponent getHandlerComponent() {
localeManager = mock( LocaleManager.class );

return new MyBaseUIComponent( localeManager, renderer );
}

@Test
public void testStartComponent() throws Exception {

initTest( true );

CommandResponse response = handlerComponent.handle( request, "Start" );

verify( request, atLeastOnce() ).getRequestObject();

verify( httpServletRequest ).getParameter( "ajaxAction" );

verify( localeManager, atLeastOnce() ).setCurrentLang( anyString() );

assertNull( "Response must be null", response );

assertFalse( "Shouldn't be first time", handlerComponent.isFirstTime() );
}
}
@@ -0,0 +1,14 @@
package org.jbpm.formModeler.service.bb.mvc.components.handling;

import org.jbpm.formModeler.service.bb.mvc.components.handling.mocks.MyBeanHandler;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)
public class BeanHandlerTest extends AbstractBeanHandlerTest<BeanHandler> {

@Override
public BeanHandler getHandlerComponent() {
return new MyBeanHandler( renderer );
}
}
@@ -0,0 +1,58 @@
package org.jbpm.formModeler.service.bb.mvc.components.handling.mocks;

import org.jbpm.formModeler.service.LocaleManager;
import org.jbpm.formModeler.service.bb.mvc.components.CurrentComponentRenderer;
import org.jbpm.formModeler.service.bb.mvc.components.handling.BaseUIComponent;
import org.jbpm.formModeler.service.bb.mvc.controller.CommandRequest;
import org.jbpm.formModeler.service.bb.mvc.controller.CommandResponse;
import org.jbpm.formModeler.service.bb.mvc.controller.responses.DoNothingResponse;
import org.jbpm.formModeler.service.bb.mvc.controller.responses.SendStreamResponse;

import static org.mockito.Mockito.mock;

public class MyBaseUIComponent extends BaseUIComponent {

protected CurrentComponentRenderer renderer;

public MyBaseUIComponent( LocaleManager localeManager, CurrentComponentRenderer renderer ) {
this.localeManager = localeManager;
this.renderer = renderer;

this.setEnabledForActionHandling( true );
this.setEnableDoubleClickControl( false );

start();
}

@Override
public String getBaseComponentJSP() {
return "/test/myComponent.jsp";
}

@Override
public void doStart( CommandRequest request ) {

}

public CommandResponse actionWithResponse( CommandRequest request ) {
return new DoNothingResponse();
}

public void actionWithoutResponse( CommandRequest request ) {

}

public SendStreamResponse actionDownload( CommandRequest request ) {
return mock( SendStreamResponse.class );
}

@Override
public String getBeanJSP() {
return getBaseComponentJSP();
}

@Override
protected CurrentComponentRenderer getCurrentComponentRenderer() {
return renderer;
}
}
@@ -0,0 +1,41 @@
package org.jbpm.formModeler.service.bb.mvc.components.handling.mocks;

import org.jbpm.formModeler.service.bb.mvc.components.CurrentComponentRenderer;
import org.jbpm.formModeler.service.bb.mvc.components.handling.BeanHandler;
import org.jbpm.formModeler.service.bb.mvc.controller.CommandRequest;
import org.jbpm.formModeler.service.bb.mvc.controller.CommandResponse;
import org.jbpm.formModeler.service.bb.mvc.controller.responses.DoNothingResponse;
import org.jbpm.formModeler.service.bb.mvc.controller.responses.SendStreamResponse;

import static org.mockito.Mockito.*;

public class MyBeanHandler extends BeanHandler {

protected CurrentComponentRenderer renderer;

public MyBeanHandler( CurrentComponentRenderer renderer ) {
this.renderer = renderer;

this.setEnabledForActionHandling( true );
this.setEnableDoubleClickControl( false );

this.start();
}

public CommandResponse actionWithResponse( CommandRequest request ) {
return new DoNothingResponse();
}

public void actionWithoutResponse( CommandRequest request ) {

}

public SendStreamResponse actionDownload( CommandRequest request ) {
return mock( SendStreamResponse.class );
}

@Override
protected CurrentComponentRenderer getCurrentComponentRenderer() {
return renderer;
}
}

0 comments on commit f731f9e

Please sign in to comment.