diff --git a/oscm-app-sample/javasrc/org/oscm/app/sample/controller/SampleController.java b/oscm-app-sample/javasrc/org/oscm/app/sample/controller/SampleController.java
index 5a932d26c..5dae341e7 100644
--- a/oscm-app-sample/javasrc/org/oscm/app/sample/controller/SampleController.java
+++ b/oscm-app-sample/javasrc/org/oscm/app/sample/controller/SampleController.java
@@ -1,6 +1,6 @@
/*******************************************************************************
*
- * Copyright FUJITSU LIMITED 2017
+ * Copyright FUJITSU LIMITED 2018
*
* Sample controller implementation for the
* Asynchronous Provisioning Platform (APP)
@@ -11,6 +11,7 @@
package org.oscm.app.sample.controller;
+import java.util.Arrays;
import java.util.List;
import java.util.Properties;
@@ -31,6 +32,8 @@
import org.oscm.app.v2_0.data.ProvisioningSettings;
import org.oscm.app.v2_0.data.ServiceUser;
import org.oscm.app.v2_0.exceptions.APPlatformException;
+import org.oscm.app.v2_0.exceptions.AbortException;
+import org.oscm.app.v2_0.exceptions.SuspendException;
import org.oscm.app.v2_0.intf.APPlatformController;
import org.oscm.app.v2_0.intf.APPlatformService;
import org.slf4j.Logger;
@@ -63,6 +66,8 @@ public class SampleController implements APPlatformController {
public static final String ID = "ess.sample";
private APPlatformService platformService;
+
+ final String REASON = "Reason:";
/**
* Retrieves an APPlatformService instance.
@@ -181,12 +186,57 @@ public InstanceStatus modifyInstance(String instanceId,
// Set status to store for application instance
paramHandler.setState(Status.MODIFICATION_REQUESTED);
+ simulateErrorMessage(paramHandler);
+
InstanceStatus result = new InstanceStatus();
result.setChangedParameters(newSettings.getParameters());
result.setChangedAttributes(newSettings.getAttributes());
return result;
}
+ private void simulateErrorMessage(PropertyHandler ph)
+ throws APPlatformException {
+
+ String msg = ph.getMessage();
+
+ if (!mayContainGivenErrorMessage(msg))
+ return;
+
+ if (msg.startsWith(SuspendException.class.getSimpleName() + ":")) {
+ String details = msg.substring(msg.indexOf(":") + 1);
+
+ throwSuspendException(details);
+ }
+
+ if (msg.startsWith(AbortException.class.getSimpleName() + ":")) {
+
+ String details = msg.substring(msg.indexOf(":") + 1);
+
+ String adminMsg = details;
+ String customerMsg = details;
+
+ if (msg.contains(REASON)) {
+ adminMsg = msg.substring(msg.indexOf(REASON) + 1);
+ customerMsg = details.substring(0, msg.indexOf(REASON));
+ }
+
+ throwAbortException(customerMsg, adminMsg);
+ }
+
+ if (msg.startsWith(APPlatformException.class.getSimpleName() + ":")) {
+
+ throwAPPlatformException(msg);
+ }
+
+ }
+
+
+ private boolean mayContainGivenErrorMessage(String msg) {
+ int minLen = msg.indexOf(":") + 2;
+
+ return (minLen >= 2 && msg.length() > minLen);
+ }
+
/**
* Returns the current overall status of the application instance.
*
@@ -431,4 +481,23 @@ public void setControllerSettings(ControllerSettings settings) { // not applicable } + private void throwAPPlatformException(String msg) + throws APPlatformException { + throw new APPlatformException(msg.substring(msg.indexOf(":") + 1)); + } + + protected void throwSuspendException(String details) + throws SuspendException { + LocalizedText lt = new LocalizedText("en", details); + throw new SuspendException(Arrays.asList(new LocalizedText[] { lt })); + } + + protected void throwAbortException(String customerMsg, String providerMsg) + throws AbortException { + LocalizedText ltc = new LocalizedText("en", customerMsg); + LocalizedText ltp = new LocalizedText("en", providerMsg); + throw new AbortException(Arrays.asList(new LocalizedText[] { ltc }), + Arrays.asList(new LocalizedText[] { ltp })); + } + } diff --git a/oscm-app-startup/javasrc/org/oscm/app/ui/serviceinstance/ManageServiceInstanceCtrl.java b/oscm-app-startup/javasrc/org/oscm/app/ui/serviceinstance/ManageServiceInstanceCtrl.java index 009df9fc8..9ac41e26e 100644 --- a/oscm-app-startup/javasrc/org/oscm/app/ui/serviceinstance/ManageServiceInstanceCtrl.java +++ b/oscm-app-startup/javasrc/org/oscm/app/ui/serviceinstance/ManageServiceInstanceCtrl.java @@ -1,6 +1,6 @@ /******************************************************************************* * - * Copyright FUJITSU LIMITED 2017 + * Copyright FUJITSU LIMITED 2019 * * Creation Date: 2014-2-25 * @@ -211,6 +211,8 @@ boolean filterOperation(InstanceOperation operation, switch (operation) { case RESUME: + isOperationAllowed = true; + break; case ABORT_PENDING: if (!runWithTimer && !controllerReady) { isOperationAllowed = true; diff --git a/oscm-app-unittests/javasrc/org/oscm/app/ui/serviceinstance/ManageServiceInstanceCtrlTest.java b/oscm-app-unittests/javasrc/org/oscm/app/ui/serviceinstance/ManageServiceInstanceCtrlTest.java index 5756204dd..c46e7f3a3 100644 --- a/oscm-app-unittests/javasrc/org/oscm/app/ui/serviceinstance/ManageServiceInstanceCtrlTest.java +++ b/oscm-app-unittests/javasrc/org/oscm/app/ui/serviceinstance/ManageServiceInstanceCtrlTest.java @@ -140,7 +140,7 @@ public void filterOperation_Failed() throws Exception { serviceInstance); // then - assertEquals(Boolean.FALSE, Boolean.valueOf(result)); + assertEquals(Boolean.TRUE, Boolean.valueOf(result)); } @Test diff --git a/oscm-app/javasrc/org/oscm/app/v2_0/service/ServiceInstanceServiceBean.java b/oscm-app/javasrc/org/oscm/app/v2_0/service/ServiceInstanceServiceBean.java index 886b5e139..fca609c20 100644 --- a/oscm-app/javasrc/org/oscm/app/v2_0/service/ServiceInstanceServiceBean.java +++ b/oscm-app/javasrc/org/oscm/app/v2_0/service/ServiceInstanceServiceBean.java @@ -1,6 +1,6 @@ /******************************************************************************* * - * Copyright FUJITSU LIMITED 2017 + * Copyright FUJITSU LIMITED 2019 * * Creation Date: 2014-02-25 * @@ -405,6 +405,7 @@ void completePendingInstance(ServiceInstance serviceInstance, String locale) throws ServiceInstanceException { try { ServiceInstance dbInstance = dao.find(serviceInstance); + dbInstance.setRunWithTimer(true); if (dbInstance.isControllerReady()) { switch (dbInstance.getProvisioningStatus()) { case WAITING_FOR_SYSTEM_CREATION: