class ProductionBuildAndDeployExecutor extends AbstractBuildAndDeployExecutor {

    private void buildAndDeploy(final BuildExecutionContext context, final DeploymentMode deploymentMode) {
        showBuildMessage();
        buildServiceCaller.call((RemoteCallback<BuildResults>) buildResults -> onBuildDeploySuccess(context, buildResults),
                                (ErrorCallback<Message>) (message, throwable) -> {
                                    onBuildDeployError(context, throwable);
                                    return false;
                                }).buildAndDeploy(context.getModule(), deploymentMode);
    }

    public  ProductionBuildAndDeployExecutor(final Caller<BuildService> buildServiceCaller,
                                            final Event<BuildResults> buildResultsEvent,
                                            final Event<NotificationEvent> notificationEvent,
                                            final BuildDialog buildDialog,
                                            final DeploymentPopup deploymentPopup,
                                            final Caller<SpecManagementService> specManagementService,
                                            final ConflictingRepositoriesPopup conflictingRepositoriesPopup);

}