diff --git a/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/container/ContainerPresenter.java b/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/container/ContainerPresenter.java index a0fbf7c6c36..39227b4f884 100644 --- a/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/container/ContainerPresenter.java +++ b/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/container/ContainerPresenter.java @@ -17,7 +17,9 @@ package org.kie.workbench.common.screens.server.management.client.container; import java.util.Collection; +import java.util.Collections; import java.util.Map; +import java.util.Optional; import javax.annotation.PostConstruct; import javax.enterprise.context.Dependent; @@ -30,6 +32,8 @@ import org.jboss.errai.common.client.api.ErrorCallback; import org.jboss.errai.common.client.api.RemoteCallback; import org.kie.server.api.model.KieContainerStatus; +import org.kie.server.api.model.Message; +import org.kie.server.api.model.Severity; import org.kie.server.controller.api.model.events.ServerInstanceUpdated; import org.kie.server.controller.api.model.runtime.Container; import org.kie.server.controller.api.model.spec.Capability; @@ -147,6 +151,7 @@ public void loadContainers(@Observes final ContainerSpecData content) { containerSpec != null && containerSpec.getId() != null && containerSpec.getId().equals(content.getContainerSpec().getId())) { + resetReleaseIdForFailedContainers(content.getContainers(), content.getContainerSpec()); setup(content.getContainerSpec(), content.getContainers()); } else { @@ -154,6 +159,20 @@ public void loadContainers(@Observes final ContainerSpecData content) { } } + private void resetReleaseIdForFailedContainers(Collection containers, ContainerSpec containerSpec) { + containers.forEach(container -> { + if (KieContainerStatus.FAILED == container.getStatus() || container.getResolvedReleasedId() == null) { + container.setResolvedReleasedId(containerSpec.getReleasedId()); + container.addMessage(new Message(Severity.ERROR, Collections.emptyList())); + } + }); + Optional optionalContainer = containers.stream().filter(container -> KieContainerStatus.FAILED != container.getStatus()).findFirst(); + if (!optionalContainer.isPresent() && containers.size() > 0) { + containerSpec.setStatus(KieContainerStatus.FAILED); + } + } + + public void refreshOnContainerUpdateEvent(@Observes final ContainerUpdateEvent updateEvent) { final ContainerRuntimeOperation runtimeOperation = updateEvent.getContainerRuntimeOperation(); @@ -242,11 +261,17 @@ protected void updateStatus(final KieContainerStatus status) { break; case STOPPED: view.updateToggleActivationButton(false); + view.setContainerStartState(State.DISABLED); + view.setContainerStopState(State.ENABLED); + view.enableRemoveButton(); + view.disableToggleActivationButton(); + break; case DISPOSING: case FAILED: view.enableRemoveButton(); + view.updateToggleActivationButton(false); view.setContainerStartState(State.DISABLED); - view.setContainerStopState(State.ENABLED); + view.setContainerStopState(State.DISABLED); view.disableToggleActivationButton(); break; } @@ -413,5 +438,7 @@ public interface View extends UberView { String getStartContainerErrorMessage(); String getCanNotStopContainerMessage(); + + String getFailedContainerErrrMessage(); } } diff --git a/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/container/ContainerView.java b/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/container/ContainerView.java index a4b67c1cce9..f5e75847521 100644 --- a/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/container/ContainerView.java +++ b/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/container/ContainerView.java @@ -280,6 +280,11 @@ public String getCanNotStopContainerMessage() { return translationService.format(Constants.CanNot_Stop_Container); } + @Override + public String getFailedContainerErrrMessage() { + return translationService.format(Constants.NewContainer_FailedContainer); + } + private String getConfirmRemovePopupMessage() { return translationService.format(Constants.ContainerView_ConfirmRemovePopupMessage); } diff --git a/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/resources/i18n/Constants.java b/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/resources/i18n/Constants.java index ebc4bb80768..82b961572e2 100644 --- a/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/resources/i18n/Constants.java +++ b/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/java/org/kie/workbench/common/screens/server/management/client/resources/i18n/Constants.java @@ -254,4 +254,7 @@ public class Constants { @TranslationKey(defaultValue = "") public static final String CanNot_Stop_Container = "CanNot_Stop_Container"; + @TranslationKey(defaultValue = "") + public static final String NewContainer_FailedContainer = "NewContainer.FailedContainer"; + } diff --git a/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/resources/org/kie/workbench/common/screens/server/management/client/resources/i18n/Constants.properties b/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/resources/org/kie/workbench/common/screens/server/management/client/resources/i18n/Constants.properties index 455242b1455..b513aeac033 100644 --- a/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/resources/org/kie/workbench/common/screens/server/management/client/resources/i18n/Constants.properties +++ b/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/main/resources/org/kie/workbench/common/screens/server/management/client/resources/i18n/Constants.properties @@ -153,3 +153,4 @@ NewContainer.Save=Ok NewContainer.SaveContainerSpec=Save Container Spec NewContainer.Deploying={0} is deploying CanNot_Stop_Container=It is not possible to stop the container due to running process instance. +NewContainer.FailedContainer=The Container failed on kie server. diff --git a/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/test/java/org/kie/workbench/common/screens/server/management/client/container/ContainerPresenterTest.java b/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/test/java/org/kie/workbench/common/screens/server/management/client/container/ContainerPresenterTest.java index b973e874e8e..211547c4045 100644 --- a/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/test/java/org/kie/workbench/common/screens/server/management/client/container/ContainerPresenterTest.java +++ b/kie-wb-common-screens/kie-wb-common-server-ui/kie-wb-common-server-ui-client/src/test/java/org/kie/workbench/common/screens/server/management/client/container/ContainerPresenterTest.java @@ -204,6 +204,7 @@ public void testInit() { @Test public void testStartContainer() { presenter.loadContainers(containerSpecData); + presenter.startContainer(); verify(view).setContainerStartState(State.ENABLED); @@ -314,8 +315,7 @@ public void testDeactivateThenActivateContainerFromStartedState() { public void testLoadContainersEmpty() { presenter.loadContainers(containerSpecData); - verifyLoad(true, - 1); + verifyLoad(true, 1, false); } @Test @@ -330,14 +330,12 @@ public void testLoadContainersOnlyOnSelectedContainerEvent() { presenter.setContainerSpec(containerSpec1); presenter.loadContainers(containerSpecData); - verifyLoad(true, - 0); + verifyLoad(true, 0, false); presenter.setContainerSpec(containerSpec); presenter.loadContainers(containerSpecData); - verifyLoad(true, - 1); + verifyLoad(true, 1, false); } @@ -351,8 +349,7 @@ public void testRefresh() { presenter.loadContainers(containerSpecData); presenter.refresh(); - verifyLoad(true, - 2); + verifyLoad(true, 2, false); } @Test @@ -366,8 +363,7 @@ public void testLoadContainers() { containerSpecData.getContainers().add(container); presenter.loadContainers(containerSpecData); - verifyLoad(true, - 1); + verifyLoad(true, 1, false); } @Test @@ -382,12 +378,29 @@ public void testLoadContainersNonStoped() { containerSpecData.getContainers().add(container); presenter.loadContainers(containerSpecData); - verifyLoad(false, - 1); + verifyLoad(false, 1, false); } - private void verifyLoad(boolean empty, - int times) { + @Test + public void testLoadContainersHasFailed() { + final Container container = new Container("containerSpecId", + "containerName", + new ServerInstanceKey(), + Collections.emptyList(), + null, + null); + container.setStatus(KieContainerStatus.FAILED); + containerSpecData.getContainers().add(container); + assertNull(container.getResolvedReleasedId()); + presenter.loadContainers(containerSpecData); + + assertEquals(KieContainerStatus.FAILED, containerSpecData.getContainerSpec().getStatus()); + assertNotNull(container.getResolvedReleasedId()); + + verifyLoad(false, 1, true); + } + + private void verifyLoad(boolean empty, int times, boolean hasFailed) { verify(containerStatusEmptyPresenter, times(times)).setup(containerSpec); verify(containerRemoteStatusPresenter, @@ -421,8 +434,11 @@ private void verifyLoad(boolean empty, verify(view, times(times)).setContainerStartState(State.DISABLED); - verify(view, - times(times)).setContainerStopState(State.ENABLED); + if (!hasFailed) { + verify(view, times(times)).setContainerStopState(State.ENABLED); + } else { + verify(view, times(times)).setContainerStopState(State.DISABLED); + } verify(containerProcessConfigPresenter, times(times)).setup(containerSpec, @@ -440,8 +456,7 @@ public void testLoad() { presenter.load(new ContainerSpecSelected(containerSpec)); - verifyLoad(true, - 1); + verifyLoad(true, 1, false); } @Test @@ -514,8 +529,7 @@ public void testOnRefresh() { presenter.onRefresh(new RefreshRemoteServers(containerSpec)); - verifyLoad(true, - 1); + verifyLoad(true, 1, false); } @Test @@ -599,7 +613,7 @@ public void testUpdateStatusForFailed() { verify(view).enableRemoveButton(); verify(view).setContainerStartState(State.DISABLED); - verify(view).setContainerStopState(State.ENABLED); + verify(view).setContainerStopState(State.DISABLED); verify(view).disableToggleActivationButton(); }